This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3100:找不到 CSS 文件

Guru**** 2387830 points
Other Parts Discussed in Thread: CC3100, UNIFLASH, CC3200, CC3100SDK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1011841/cc3100-unable-to-find-css-file

器件型号:CC3100
主题中讨论的其他器件: UNIFLASHCC3200

当我将 html 页面、图像和.CSS 文件加载到闪存中时、.CSS 文件对 html 似乎没有影响。

我已将设备配置为 AP 模式。
html 和.css 都加载到 www 目录中。
这些图像加载到 www/images 目录中。
正确访问并使用 html 和图像。

我尝试在已连接的设备浏览器中使用 domain/styles.css URL 照常打开.CSS 文件、这会显示 "找不到文件"错误。

如果我对内置的.CSS 文件与 URL 域/simple_link.css 尝试相同、则浏览器会正确打开并显示此内容。

html 文件和.CSS 文件使用相同的例程将它们写入闪存、并且所有报告都成功。

我是否可能错过了一些东西、例如在 www/CSS 中使用.CSS 文件、似乎没有解决这个问题?

谢谢、

Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请注意、我已经能够读回.css 文件并确认它与我期望的文件匹配。

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现 CC3235有类似问题(LAUNCHXL-CC3235SF:服务器不提供映像、"www"文件夹(NWP)中的 CSS 或 javascript)、但我看不到 CC3100支持安全文件、尽管它包含有关此类文件的"未来"规定。

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

      系统似乎确实会显示保存到 www/CSS 文件夹中的 CCS 文件、但访问被拒绝。
    如果我在此处创建 simple_link.css、则无法再在浏览器中加载内置副本、并且我们收到 "找不到文件"错误。
    如果在 www 文件夹中创建了内置副本、则仍可访问、但新副本不可访问。

    我已经了解 到、当前使用 FS_MODE_OPEN_CREATE 的 SL_FsOpen 的唯一标志是 _FS_FILE_OPEN_FLAG_COMMIT、如下所示:

    _i32        fileHandle = -1;
    _i32        retVal = -1;
    _u32        Token = 0;
    
    retVal = sl_FsOpen((_u8 *)"www/css/simple_link.css",FS_MODE_OPEN_CREATE((4096-512),_FS_FILE_OPEN_FLAG_COMMIT), &Token, &fileHandle);

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    正确的做法是、CC3100不支持安全文件(已添加到 CC3x20器件中)。 当您将文件添加到 www/CSS 文件夹中时、当您尝试访问该文件时会出现什么错误?

    此外、请确保已刷写最新的服务包。

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    我能够使用文件系统 API 访问文件、而不会出现任何问题: sl_FsOpen、 sl_FsClose、 sl_FsDel、 sl_FsGetInfo、 sl_FsRead 和 sl_FsWrite All report Success、我也可以使用 CCS Uniflash 查看生成的文件。

    但是、当使用 http 服务器访问 html 文件时、它们会在不使用任何 CSS 格式的情况下加载。

    通常、您可以将 CSS 文件 URL 放入浏览器中、它将显示文件的内容、与图像等类似
    在这种情况下、浏览器无法找到并显示 CSS 文件。 错误消息取决于使用的浏览器。

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    我使用 CC3200 Out_for_Box 演示和用户文件对此进行了测试、并按预期工作。

    您正在使用什么 CC3100 SDK 或主机驱动程序版本? 什么服务包会刷写到器件中? 请确保在格式化串行闪存后应用此功能。

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    我正在使用 CC3100SDK_1.3.0和服务包 CC3100_CC3200_ServicePack_1.0.1.15-2.14.0.0、我相信这两个都是最新的。

    我的代码读回以下值以验证这一点、如果服务包不匹配、则更新它们:
      NWP 版本:2.14.0.0
      固件版本:1.6.0.2
      PHY 版本:1.0.3.37

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    您可以向我发送您正在使用的 CSS 文件吗? 我可以在我的设置中尝试它。 您使用的是什么主机?

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    我正在使用 http_server 示例的修改版本、但我已关闭 http 身份验证。
    我使用 file_operations 示例的一个版本将 html、image 和 CSS 文件写入闪存中的文件系统。

    我在使用  out_for_box 示例中的 CSS 时遇到了相同的问题、正如您所做的那样。

    此外、当使用 CSS 源从文本数组或二进制数组进行传输时、我无法同时打开 CSS。

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    如果您在 UniFlash 中添加 CSS 文件而不是从应用程序中添加 CSS 文件、您是否会看到相同的问题? 我正在尝试弄清楚我们的设置可能有什么不同、因为服务包版本是唯一 能够真正改变 内部 HTTP 服务器的东西。

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    加载 Uniflash 后、可以正常打开。
    我在 CCS Uniflash 中找不到一个选项来下载我使用  file_operations 示例上传的副本、以便进行比较。

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    对于 CC3100器件、您只能从 UniFlash 查看文件系统列表、而不能查看内容。 您可以尝试使用 UniFlash 刷写一个文件、并写入另一个文件、然后将两者读回以打印到终端。

    您能否共享使用创建和写入文件的代码片段? 请确保在写入后关闭文件。

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    似乎 使用应用软件添加的副本只被部分写入闪存、因此当我仍希望从文件中读取某些数据时、我会收到"读取 CSS 文件(-15)时出错"、因此我需要检查该代码、 这对我的 html 文件来说是可以的。

    我注意 到、对于大小为8775字节的 CSS 示例(根据 Windows 10)、CCS Uniflash 分配了4个块、如下所示。
    这是有原因的吗? 我希望要求8775加512、四舍五入到最接近的4096字节块、即3个块。

    [15:44:53] INFO: 	file	start	size	fail	total size	filename
    [15:44:53] INFO: 	index	block	[BLKs]	safe	[BLKs]
    [15:44:53] INFO: ----------------------------------------------------------------------------
    [15:44:53] INFO: 	N/A	0	5	N/A	5		FATFS
    [15:44:53] INFO: 	4	5	5	yes	10		/tmp/phy.cal
    [15:44:53] INFO: 	6	15	4	no	4		www/css/style.css

    这是我在 CCS Uniflash 中没有正确设置的吗?

    谢谢、

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    您可以尝试在 UniFlash 中手动设置最大大小吗?

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    我发现 out_for_box 示例中的 CSS 文件在252行中有\0,因此我已将文件转换为二进制文件并设置长度,而不是使用字符数组和 PAL_strlen()。

    现在、当使用 CCS Uniflash 或应用程序代码从闪存读回并发送到控制台输出时、我会得到相同的文件。
    但是、我仍然只能在浏览器中看到使用 CCS Uniflash 加载的版本。

    我已包含所有适当的应用程序代码:

    const uint8_t g_pui8styles_ccs[] = {
    0x40, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x20, 0x22, 0x75, 0x74, 0x66, 0x2D, 0x38, 0x22,
    0x3B, 0x0D, 0x0A, 0x2F, 0x2A, 0x20, 0x43, 0x53, 0x53, 0x20, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65,
    0x6E, 0x74, 0x20, 0x2A, 0x2F, 0x0D, 0x0A, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x7B, 0x20,
    0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x30, 0x3B, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73,
    0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x66,
    0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x41, 0x72, 0x69, 0x61, 0x6C, 0x2C, 0x20, 0x48, 0x65, 0x6C,
    0x76, 0x65, 0x74, 0x69, 0x63, 0x61, 0x2C, 0x20, 0x73, 0x61, 0x6E, 0x73, 0x2D, 0x73, 0x65, 0x72,
    0x69, 0x66, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x68, 0x31, 0x20, 0x7B, 0x20, 0x66, 0x6F,
    0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x36, 0x70, 0x78, 0x3B, 0x20, 0x66,
    0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F, 0x6C, 0x64, 0x3B,
    0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x20, 0x7B, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x64, 0x65, 0x63,
    0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x20, 0x7D, 0x0D,
    0x0A, 0x61, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A,
    0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x3A, 0x76, 0x69,
    0x73, 0x69, 0x74, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x30,
    0x30, 0x30, 0x30, 0x30, 0x30, 0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x3A, 0x68, 0x6F, 0x76, 0x65, 0x72,
    0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30,
    0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x61, 0x3A, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7B, 0x20,
    0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3B, 0x20, 0x7D,
    0x0D, 0x0A, 0x68, 0x32, 0x20, 0x7B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x25, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x69,
    0x2D, 0x6C, 0x6F, 0x67, 0x6F, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73,
    0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x32, 0x30, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B,
    0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D,
    0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61,
    0x67, 0x65, 0x73, 0x2F, 0x74, 0x69, 0x2D, 0x6C, 0x6F, 0x67, 0x6F, 0x2E, 0x70, 0x6E, 0x67, 0x22,
    0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
    0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65,
    0x72, 0x20, 0x2E, 0x72, 0x65, 0x64, 0x2D, 0x62, 0x61, 0x72, 0x2C, 0x20, 0x2E, 0x66, 0x6F, 0x6F,
    0x74, 0x65, 0x72, 0x20, 0x2E, 0x72, 0x65, 0x64, 0x2D, 0x62, 0x61, 0x72, 0x20, 0x7B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20,
    0x6E, 0x6F, 0x6E, 0x65, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x73, 0x63, 0x72, 0x6F,
    0x6C, 0x6C, 0x20, 0x30, 0x20, 0x30, 0x20, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46,
    0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73,
    0x74, 0x79, 0x6C, 0x65, 0x3A, 0x20, 0x69, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20,
    0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68,
    0x74, 0x3A, 0x20, 0x32, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69,
    0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31, 0x2E, 0x36, 0x65, 0x6D,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30,
    0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C, 0x65,
    0x66, 0x74, 0x3A, 0x20, 0x31, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A,
    0x2E, 0x66, 0x6F, 0x6F, 0x74, 0x65, 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70,
    0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2D,
    0x62, 0x61, 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67,
    0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43,
    0x43, 0x43, 0x43, 0x43, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65,
    0x72, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67,
    0x68, 0x74, 0x3A, 0x20, 0x31, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x35,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20,
    0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69,
    0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73,
    0x74, 0x61, 0x74, 0x75, 0x73, 0x2D, 0x62, 0x61, 0x72, 0x2E, 0x6F, 0x6E, 0x6C, 0x69, 0x6E, 0x65,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75,
    0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x30, 0x30, 0x39, 0x39, 0x33,
    0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74,
    0x6F, 0x70, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23, 0x46,
    0x46, 0x46, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F,
    0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F,
    0x61, 0x74, 0x3A, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77,
    0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61,
    0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20,
    0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x74,
    0x61, 0x62, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0x67, 0x69, 0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A,
    0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69,
    0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65,
    0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x75, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x6C,
    0x69, 0x73, 0x74, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x20,
    0x6F, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x6E, 0x6F,
    0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67,
    0x3A, 0x20, 0x35, 0x70, 0x78, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x35, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31,
    0x2E, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20,
    0x6C, 0x69, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61,
    0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x61, 0x20,
    0x7B, 0x0D, 0x0A, 0x20, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x2D, 0x31, 0x31, 0x38,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D,
    0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66,
    0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x62, 0x6F, 0x6C, 0x64,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x2E, 0x61, 0x63, 0x74,
    0x69, 0x76, 0x65, 0x20, 0x61, 0x20, 0x73, 0x70, 0x61, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73,
    0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x20, 0x2D, 0x31, 0x31, 0x39,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20,
    0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61,
    0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x3A, 0x20, 0x37, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x61, 0x20, 0x7B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x74,
    0x74, 0x6F, 0x6D, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23,
    0x39, 0x45, 0x39, 0x44, 0x39, 0x44, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F,
    0x61, 0x74, 0x3A, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6D,
    0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70,
    0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x37, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x64, 0x65, 0x63,
    0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x2D, 0x73, 0x70, 0x61, 0x63, 0x65, 0x3A,
    0x20, 0x6E, 0x6F, 0x77, 0x72, 0x61, 0x70, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67,
    0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C,
    0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x74, 0x69, 0x63, 0x6F,
    0x6D, 0x33, 0x2D, 0x74, 0x61, 0x62, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x2E, 0x67, 0x69, 0x66, 0x22,
    0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D,
    0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x74, 0x61, 0x62, 0x73, 0x20, 0x61, 0x20, 0x73, 0x70,
    0x61, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A,
    0x20, 0x23, 0x35, 0x38, 0x35, 0x38, 0x35, 0x38, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x64,
    0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x31, 0x30, 0x70,
    0x78, 0x20, 0x39, 0x70, 0x78, 0x20, 0x36, 0x70, 0x78, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x62,
    0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A,
    0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F,
    0x74, 0x69, 0x63, 0x6F, 0x6D, 0x33, 0x2D, 0x74, 0x61, 0x62, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x74,
    0x2E, 0x67, 0x69, 0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72,
    0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72,
    0x69, 0x67, 0x68, 0x74, 0x20, 0x74, 0x6F, 0x70, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B,
    0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F,
    0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E,
    0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x7B, 0x20, 0x6D, 0x69, 0x6E, 0x2D, 0x68, 0x65,
    0x69, 0x67, 0x68, 0x74, 0x3A, 0x32, 0x30, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x63, 0x6C, 0x65, 0x61,
    0x72, 0x3A, 0x62, 0x6F, 0x74, 0x68, 0x3B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A,
    0x20, 0x31, 0x35, 0x70, 0x78, 0x3B, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65,
    0x3A, 0x31, 0x32, 0x70, 0x78, 0x3B, 0x20, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68,
    0x3A, 0x39, 0x30, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x63, 0x6F, 0x6E, 0x74, 0x65,
    0x6E, 0x74, 0x20, 0x2E, 0x68, 0x69, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x2D, 0x74, 0x65, 0x78, 0x74,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69,
    0x67, 0x68, 0x74, 0x3A, 0x20, 0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D,
    0x0A, 0x2E, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x7B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x2F, 0x2A, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65,
    0x3A, 0x20, 0x64, 0x69, 0x73, 0x63, 0x20, 0x6F, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x75,
    0x72, 0x6C, 0x28, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x74,
    0x69, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2F, 0x69, 0x6D, 0x61,
    0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x5F, 0x6C,
    0x5F, 0x68, 0x74, 0x6D, 0x6C, 0x5F, 0x61, 0x2E, 0x70, 0x6E, 0x67, 0x22, 0x29, 0x3B, 0x20, 0x2A,
    0x2F, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2D, 0x6C, 0x69, 0x73,
    0x74, 0x20, 0x3E, 0x20, 0x6C, 0x69, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69,
    0x73, 0x74, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x20, 0x6F,
    0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x31, 0x30,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67,
    0x2D, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62,
    0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A,
    0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F,
    0x69, 0x63, 0x6F, 0x6E, 0x5F, 0x6C, 0x5F, 0x68, 0x74, 0x6D, 0x6C, 0x5F, 0x61, 0x2E, 0x70, 0x6E,
    0x67, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65,
    0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x6C, 0x69,
    0x6E, 0x6B, 0x73, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x6C, 0x69, 0x20, 0x61, 0x20, 0x7B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43, 0x30,
    0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x74, 0x62, 0x6C, 0x2D,
    0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F,
    0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x62,
    0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E,
    0x67, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x0D, 0x0A, 0x2E, 0x74, 0x62, 0x6C, 0x2D, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2E, 0x74, 0x6F,
    0x70, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70,
    0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65,
    0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20,
    0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31,
    0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61,
    0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x20, 0x35, 0x70, 0x78, 0x20, 0x35, 0x70,
    0x78, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64,
    0x69, 0x6E, 0x67, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x30, 0x25, 0x3B, 0x0D,
    0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72,
    0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x7B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30,
    0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
    0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C,
    0x65, 0x20, 0x74, 0x64, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x20, 0x35, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64,
    0x65, 0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
    0x2E, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x75, 0x6D, 0x20,
    0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
    0x3A, 0x20, 0x38, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x76, 0x69,
    0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x2E, 0x73, 0x65,
    0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x0A,
    0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C,
    0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65,
    0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09,
    0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x35, 0x70, 0x78, 0x20, 0x31, 0x30, 0x70, 0x78,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x2F, 0x2A, 0x20, 0x64, 0x65, 0x6D,
    0x6F, 0x73, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x2A, 0x2F, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D,
    0x6F, 0x4D, 0x65, 0x6E, 0x75, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A,
    0x33, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F,
    0x4C, 0x69, 0x6E, 0x6B, 0x2E, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20,
    0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69,
    0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D,
    0x61, 0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x68,
    0x6F, 0x6D, 0x65, 0x41, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x67, 0x69,
    0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E,
    0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65,
    0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C,
    0x69, 0x6E, 0x6B, 0x2E, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x7B,
    0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D,
    0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61,
    0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x68, 0x6F,
    0x6D, 0x65, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x2E, 0x67, 0x69, 0x66,
    0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61,
    0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C, 0x69,
    0x6E, 0x6B, 0x2E, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61,
    0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20,
    0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x69,
    0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x2E,
    0x67, 0x69, 0x66, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F,
    0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70,
    0x78, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F,
    0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65,
    0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D,
    0x6F, 0x4C, 0x69, 0x6E, 0x6B, 0x2E, 0x73, 0x6D, 0x61, 0x72, 0x74, 0x45, 0x6E, 0x65, 0x72, 0x67,
    0x79, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F,
    0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x6D, 0x6F,
    0x2D, 0x73, 0x6D, 0x61, 0x72, 0x74, 0x45, 0x6E, 0x65, 0x72, 0x67, 0x79, 0x2E, 0x67, 0x69, 0x66,
    0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x20, 0x30,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61,
    0x74, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C, 0x69,
    0x6E, 0x6B, 0x3A, 0x68, 0x6F, 0x76, 0x65, 0x72, 0x2C, 0x20, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C,
    0x69, 0x6E, 0x6B, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62,
    0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69,
    0x6F, 0x6E, 0x3A, 0x30, 0x20, 0x2D, 0x37, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x4C, 0x69, 0x6E, 0x6B, 0x20, 0x7B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x62, 0x6C, 0x6F, 0x63,
    0x6B, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
    0x3A, 0x20, 0x37, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64,
    0x74, 0x68, 0x3A, 0x20, 0x37, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67,
    0x69, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x09, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x65, 0x6D, 0x6F, 0x20, 0x7B, 0x0D,
    0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F,
    0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x3A, 0x20,
    0x62, 0x6F, 0x74, 0x68, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
    0x6E, 0x67, 0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x44, 0x72, 0x79, 0x65, 0x72, 0x20, 0x7B, 0x0D, 0x0A,
    0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x33, 0x30, 0x30, 0x70, 0x78,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x65, 0x72, 0x54, 0x65, 0x78,
    0x74, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A,
    0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x3B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64,
    0x69, 0x75, 0x73, 0x3A, 0x20, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63,
    0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x43, 0x43, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72,
    0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61,
    0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x39, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09,
    0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A,
    0x2E, 0x64, 0x72, 0x79, 0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x43, 0x43, 0x43, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62,
    0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x34, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23,
    0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x20, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6F,
    0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20,
    0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A,
    0x20, 0x39, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x6C,
    0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68,
    0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66,
    0x6C, 0x6F, 0x61, 0x74, 0x3A, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x0D, 0x0A, 0x23, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x6D, 0x61, 0x67, 0x65,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75,
    0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20, 0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E,
    0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x64, 0x65, 0x6D, 0x6F, 0x2D, 0x6C, 0x69,
    0x67, 0x68, 0x74, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2E, 0x6A, 0x70, 0x67, 0x22, 0x29, 0x3B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64,
    0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x2D, 0x37, 0x32,
    0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F,
    0x75, 0x6E, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3A, 0x6E, 0x6F, 0x2D, 0x72, 0x65,
    0x70, 0x65, 0x61, 0x74, 0x3B, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64,
    0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x20, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x63, 0x75,
    0x72, 0x73, 0x6F, 0x72, 0x3A, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x37, 0x30, 0x70,
    0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x23, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x6D,
    0x61, 0x67, 0x65, 0x2E, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61,
    0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x3A, 0x20,
    0x75, 0x72, 0x6C, 0x28, 0x22, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x64,
    0x65, 0x6D, 0x6F, 0x2D, 0x6C, 0x69, 0x67, 0x68, 0x74, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2E,
    0x6A, 0x70, 0x67, 0x22, 0x29, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B,
    0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A,
    0x20, 0x30, 0x70, 0x78, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73,
    0x70, 0x72, 0x69, 0x6E, 0x6B, 0x6C, 0x65, 0x72, 0x4F, 0x6E, 0x2C, 0x20, 0x2E, 0x73, 0x70, 0x72,
    0x69, 0x6E, 0x6B, 0x6C, 0x65, 0x72, 0x4F, 0x66, 0x66, 0x2C, 0x20, 0x2E, 0x61, 0x6C, 0x61, 0x72,
    0x6D, 0x73, 0x4F, 0x6E, 0x2C, 0x20, 0x2E, 0x61, 0x6C, 0x61, 0x72, 0x6D, 0x73, 0x4F, 0x66, 0x66,
    0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x70, 0x6F, 0x69, 0x6E,
    0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x23, 0x73, 0x70, 0x72, 0x69, 0x6E, 0x6B,
    0x6C, 0x65, 0x72, 0x20, 0x69, 0x6D, 0x67, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67,
    0x68, 0x74, 0x3A, 0x33, 0x34, 0x32, 0x70, 0x78, 0x5C, 0x30, 0x2F, 0x49, 0x45, 0x38, 0x2B, 0x39,
    0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74,
    0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x75, 0x73, 0x65,
    0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x6E,
    0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6B, 0x68, 0x74, 0x6D, 0x6C,
    0x2D, 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x3A,
    0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x77, 0x65, 0x62,
    0x6B, 0x69, 0x74, 0x2D, 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20,
    0x20, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6F,
    0x2D, 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x20,
    0x20, 0x20, 0x20, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20,
    0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D,
    0x0A, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x61, 0x20,
    0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x30, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20,
    0x30, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74,
    0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x35, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72,
    0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D,
    0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20,
    0x69, 0x6E, 0x70, 0x75, 0x74, 0x5B, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74,
    0x22, 0x5D, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73,
    0x69, 0x7A, 0x65, 0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62,
    0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65,
    0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
    0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74,
    0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x6D, 0x69, 0x64, 0x64,
    0x6C, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49,
    0x6E, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x5B, 0x74, 0x79, 0x70, 0x65, 0x3D,
    0x22, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x22, 0x5D, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B,
    0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x6E, 0x6F,
    0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C,
    0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x33, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x20,
    0x20, 0x20, 0x20, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67,
    0x6E, 0x3A, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x0D,
    0x0A, 0x2E, 0x64, 0x69, 0x64, 0x59, 0x6F, 0x75, 0x4B, 0x6E, 0x6F, 0x77, 0x20, 0x7B, 0x0D, 0x0A,
    0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75,
    0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72,
    0x64, 0x65, 0x72, 0x3A, 0x20, 0x32, 0x70, 0x78, 0x20, 0x73, 0x6F, 0x6C, 0x69, 0x64, 0x20, 0x23,
    0x33, 0x33, 0x33, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A,
    0x20, 0x33, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64,
    0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20,
    0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x33, 0x65,
    0x6D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75,
    0x6E, 0x64, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x46, 0x41, 0x41, 0x3B, 0x0D, 0x0A, 0x09, 0x66,
    0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x32, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x64, 0x69, 0x64, 0x59, 0x6F, 0x75, 0x4B, 0x6E, 0x6F, 0x77,
    0x20, 0x73, 0x70, 0x61, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77,
    0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x62, 0x6F, 0x6C, 0x64, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F,
    0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D,
    0x0D, 0x0A, 0x2E, 0x62, 0x75, 0x62, 0x62, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x6E, 0x6F, 0x6E,
    0x65, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x73, 0x63, 0x72, 0x6F, 0x6C, 0x6C, 0x20,
    0x30, 0x20, 0x30, 0x20, 0x23, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x32, 0x70, 0x78, 0x20, 0x73, 0x6F,
    0x6C, 0x69, 0x64, 0x20, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3B, 0x0D, 0x0A, 0x20, 0x20,
    0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A,
    0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69,
    0x6E, 0x67, 0x3A, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70,
    0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76,
    0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x33,
    0x30, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x7A, 0x2D, 0x69, 0x6E, 0x64,
    0x65, 0x78, 0x3A, 0x20, 0x39, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64,
    0x49, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x3E, 0x20, 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x2E, 0x68, 0x77,
    0x64, 0x69, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6D,
    0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D,
    0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x09,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x2E, 0x6F, 0x66, 0x66, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70,
    0x6C, 0x61, 0x79, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62,
    0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x20, 0x7B, 0x20, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x72, 0x69, 0x67,
    0x68, 0x74, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67,
    0x2D, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20,
    0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x38, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A,
    0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x2E, 0x73, 0x65,
    0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69,
    0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E,
    0x62, 0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x20, 0x61, 0x3A, 0x76, 0x69, 0x73, 0x69,
    0x74, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x43, 0x43, 0x30,
    0x30, 0x30, 0x30, 0x20, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30,
    0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D,
    0x34, 0x36, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70,
    0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x32, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x38, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x34, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x2D, 0x32, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A,
    0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30,
    0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D,
    0x31, 0x39, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70,
    0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x36, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x32, 0x33, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x32, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x20, 0x77, 0x69, 0x64,
    0x74, 0x68, 0x3A, 0x31, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64,
    0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70,
    0x3A, 0x20, 0x2D, 0x36, 0x30, 0x70, 0x78, 0x3B, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39,
    0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20,
    0x23, 0x64, 0x65, 0x73, 0x63, 0x39, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33,
    0x30, 0x70, 0x78, 0x3B, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B,
    0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73,
    0x63, 0x31, 0x30, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33, 0x30, 0x70, 0x78,
    0x3B, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x34, 0x36, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x32,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x33, 0x38, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x2D, 0x33, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A,
    0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30,
    0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x34, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D,
    0x32, 0x35, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70,
    0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x39, 0x33, 0x70,
    0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D,
    0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x36,
    0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x31, 0x32, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C,
    0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x31, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33,
    0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A,
    0x20, 0x2D, 0x31, 0x32, 0x33, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39,
    0x30, 0x70, 0x78, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20,
    0x23, 0x64, 0x65, 0x73, 0x63, 0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x2D, 0x36, 0x30,
    0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x39, 0x30, 0x70, 0x78, 0x3B, 0x7D,
    0x0D, 0x0A, 0x0D, 0x0A, 0x40, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20,
    0x73, 0x63, 0x72, 0x65, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x6D, 0x61, 0x78, 0x2D,
    0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x38, 0x30, 0x70, 0x78, 0x29, 0x20, 0x7B, 0x0D,
    0x0A, 0x09, 0x2E, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20,
    0x7B, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x62, 0x75, 0x62, 0x62, 0x6C, 0x65, 0x20, 0x7B, 0x62, 0x6F, 0x72, 0x64, 0x65,
    0x72, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x20, 0x6D, 0x61, 0x78, 0x2D, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x38, 0x30, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x32, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x34, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x36, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32,
    0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D,
    0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x32, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63,
    0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A,
    0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x31, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x32, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x33, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x34, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x35, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x36, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62,
    0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64, 0x65, 0x73, 0x63, 0x37, 0x20, 0x7B, 0x74, 0x6F,
    0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B,
    0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x73, 0x62, 0x64, 0x33, 0x31, 0x30, 0x30, 0x20, 0x23, 0x64,
    0x65, 0x73, 0x63, 0x38, 0x20, 0x7B, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x20,
    0x6C, 0x65, 0x66, 0x74, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6C,
    0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x7D, 0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x09,
    0x2E, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2D, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69,
    0x65, 0x73, 0x20, 0x7B, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25,
    0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x23, 0x74, 0x65, 0x6D, 0x70, 0x49, 0x6E, 0x70, 0x75, 0x74,
    0x20, 0x61, 0x20, 0x7B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x6C, 0x65, 0x66,
    0x74, 0x3A, 0x30, 0x20, 0x3B, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x2D, 0x72, 0x69,
    0x67, 0x68, 0x74, 0x3A, 0x20, 0x30, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x23, 0x74, 0x65, 0x6D,
    0x70, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x5B, 0x74, 0x79, 0x70,
    0x65, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x5D, 0x20, 0x7B, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x20, 0x31, 0x2E, 0x35, 0x65, 0x6D, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x64,
    0x69, 0x64, 0x59, 0x6F, 0x75, 0x4B, 0x6E, 0x6F, 0x77, 0x20, 0x7B, 0x20, 0x77, 0x69, 0x64, 0x74,
    0x68, 0x3A, 0x32, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A,
    0x30, 0x20, 0x30, 0x20, 0x30, 0x20, 0x30, 0x2E, 0x32, 0x35, 0x65, 0x6D, 0x3B, 0x20, 0x7D, 0x0D,
    0x0A, 0x20, 0x20, 0x20, 0x20, 0x2E, 0x62, 0x61, 0x63, 0x6B, 0x54, 0x6F, 0x54, 0x6F, 0x70, 0x20,
    0x7B, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x20, 0x7D,
    0x0D, 0x0A, 0x09, 0x0D, 0x0A, 0x09, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x44, 0x72, 0x79, 0x65, 0x72,
    0x20, 0x69, 0x6D, 0x67, 0x20, 0x7B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x2D, 0x31, 0x39,
    0x70, 0x78, 0x3B, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65,
    0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x64, 0x72, 0x79,
    0x65, 0x72, 0x54, 0x65, 0x78, 0x74, 0x20, 0x7B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x35,
    0x30, 0x70, 0x78, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x09, 0x2E, 0x77, 0x61, 0x73, 0x68, 0x65, 0x72,
    0x54, 0x65, 0x78, 0x74, 0x20, 0x7B, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x70,
    0x78, 0x3B, 0x20, 0x7D, 0x0D, 0x0A, 0x7D
    };
    
    #define NUM_HTTP_FILES          1
    
    typedef struct HTTP_FILE
    {
        char* FileName;
        const uint8_t* DataArray;
        uint32_t DataByteSize;
        uint32_t fsByteAllocation;
    } HTTP_FILE;
    
    HTTP_FILE Http_Files[NUM_HTTP_FILES] =
    {
     {.FileName = "www/css/styles.ccs", .DataArray = g_pui8styles_ccs, .DataByteSize = 8775, .fsByteAllocation = 16384}
    };
    
    bool g_hasPassed = true;
    
    bool Update_Files(void)
    {
        _i32        fileHandle = -1;
        _i32        retVal = -1;
        _u32        Token = 0;
        _u32        Idx = 0;
        SlFsFileInfo_t myFileInfo;
        _u32        CreateFlags = 0
                //|_FS_FILE_OPEN_FLAG_COMMIT
                //|_FS_FILE_OPEN_FLAG_SECURE
                //|_FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST
                //|_FS_FILE_OPEN_FLAG_STATIC
                //|_FS_FILE_OPEN_FLAG_VENDOR
                |_FS_FILE_PUBLIC_WRITE
                //|_FS_FILE_PUBLIC_READ
                ;
    
        // Step through the array of images and load each to the file system
        for (Idx=0; Idx<NUM_HTTP_FILES; Idx++)
        {
    #ifdef DEBUG
    		printf("Source File %d: Name=%s, Size=%d\n", Idx, Http_Files[Idx].FileName,
    			   pal_Strlen(Http_Files[Idx].DataArray));
    #endif
    		// Check the current allocated file size
    		retVal = sl_FsGetInfo((_u8 *)Http_Files[Idx].FileName, Token, &myFileInfo);
    		// File found
    		if (retVal == 0)
    		{
    #ifdef DEBUG
    			printf("Previous version of %s found. Length=%d, Allocated=%d\n",
    				   Http_Files[Idx].FileName , myFileInfo.FileLen, myFileInfo.AllocatedLen);
    #endif
    			// Check for difference in size allocated
    			if (Http_Files[Idx].fsByteAllocation != (myFileInfo.AllocatedLen + FILE_HEADER_BYTE_SIZE))
    			{
    				// Delete the previous version
    				retVal = sl_FsDel((_u8 *)Http_Files[Idx].FileName, Token);
    				if(retVal < 0)
    				{
    #ifdef DEBUG
    					printf("Error in deleting file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    					g_hasPassed = false;
    				}
    				else
    				{
    					// Create a new one
    					retVal = sl_FsOpen((_u8 *)Http_Files[Idx].FileName,
    									   FS_MODE_OPEN_CREATE((Http_Files[Idx].fsByteAllocation-METADATA_SIZE),CreateFlags),
    									   &Token, &fileHandle);
    					if(retVal < 0)
    					{
    #ifdef DEBUG
    						printf("Error in creating file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    						g_hasPassed = false;
    					}
    #ifdef DEBUG
    					// Check File Size Allocation
    					retVal = sl_FsGetInfo((_u8 *)Http_Files[Idx].FileName, Token, &myFileInfo);
    					if (retVal == 0)
    					{
    						if (myFileInfo.AllocatedLen != (Http_Files[Idx].fsByteAllocation-FILE_HEADER_BYTE_SIZE))
    						{
    							printf("File allocated %d not %d\n", (myFileInfo.AllocatedLen+FILE_HEADER_BYTE_SIZE), Http_Files[Idx].fsByteAllocation);
    						}
    					}
    #endif
    				}
    			}
    			else
    			{
    				// Open the image file for writing
    				retVal = sl_FsOpen((_u8 *)Http_Files[Idx].FileName,
    								   FS_MODE_OPEN_WRITE, &Token, &fileHandle);
    				if(retVal < 0)
    				{
    #ifdef DEBUG
    					printf("Error in opening file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    					g_hasPassed = false;
    				}
    			}
    		}
    		else
    		{
    			// File Doesn't exist, so create a new one
    			retVal = sl_FsOpen((_u8 *)Http_Files[Idx].FileName,
    							   FS_MODE_OPEN_CREATE((Http_Files[Idx].fsByteAllocation-METADATA_SIZE),CreateFlags),
    							   &Token, &fileHandle);
    			if(retVal < 0)
    			{
    #ifdef DEBUG
    				printf("Error in creating file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    				g_hasPassed = false;
    			}
    #ifdef DEBUG
    			// Check File Size Allocation
    			retVal = sl_FsGetInfo((_u8 *)Http_Files[Idx].FileName, Token, &myFileInfo);
    			if (retVal == 0)
    			{
    				if (myFileInfo.AllocatedLen != (Http_Files[Idx].fsByteAllocation-FILE_HEADER_BYTE_SIZE))
    				{
    					printf("File allocated %d not %d\n", (myFileInfo.AllocatedLen+FILE_HEADER_BYTE_SIZE), Http_Files[Idx].fsByteAllocation);
    				}
    			}
    #endif
    		}
    
    		if (g_hasPassed)
    		{
    			// Write file
    			retVal = sl_FsWrite(fileHandle, (_u32)0,
    								(_u8 *)Http_Files[Idx].DataArray, Http_Files[Idx].DataByteSize);
    			if (retVal < 0)
    			{
    #ifdef DEBUG
    				printf("Error in writing file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    				g_hasPassed = false;
    			}
    			else
    			{
    #ifdef DEBUG
    				printf("Written %d bytes of %d for %s\n", retVal, pal_Strlen(Http_Files[Idx].DataArray), Http_Files[Idx].FileName);
    #endif
    			}
    
    			/* Close the user file */
    			retVal = sl_FsClose(fileHandle, 0, 0, 0);
    			if (retVal < 0)
    			{
    #ifdef DEBUG
    				printf("Error in closing file %s (%d)\n", Http_Files[Idx].FileName, retVal);
    #endif
    				g_hasPassed = false;
    			}
    		}
        }
    
        return g_hasPassed;
    }
    

    谢谢、

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    感谢您提供代码。 我将在1-2天内查看并返回给您。

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    我看到类似的结果。 我假设文件本身的内容不能正确呈现。

    通常、用户文件在生产过程中通过串行闪存加载、而不是从应用代码中写入。 用户文件也可通过 OTA 方法进行更新。 这是适合您的选择吗?

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sarah、

    遗憾的是、这是对仅用作 AP 的器件的现场升级、因此我无法使用这些方法。
    我还认为、通过从微控制器向下按来对 CC3100闪存进行编程可以节省生产一步、因此也是我的首选。

    我已经尝试将 CSS 文件缩减为我的 html 文件中的文件、我一直使用它来解决这个问题、这也是同样的问题。
    这意味着这些函数可以正确地用于 html、但不能用于 CSS、内容完全相同、因此似乎与 CSS 文件名/类型有关。

    我现在发现 javascript .js 文件的情况完全相同。
    我一直在使用 out_for_box 示例和 JQuery、并且还必须使用 CCS Uniflash 才能成功加载该示例。
    为了解决此问题、我还必须将 javascript 嵌入到 html 中、这意味着从 JQuery 转换到本机 javascript、这比内部 CSS 变通办法要困难一些。

    到目前为止、文件系统驱动程序似乎只能写入 html 和 png 图像文件、我已经尝试过这些文件。

    此致、

    Kevin。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kevin:

    您能否尝试通过 UniFlash 刷写文件、 将该文件读回阵列、然后使用该阵列创建新文件? 我希望我们能够确定问题是否是格式化问题。

    如果您可以捕获 NWP 日志、以查看是否存在我们缺失的内部错误、也会有所帮助。 请参阅 用户指南的捕获 NWP 日志部分。

    此致、

    Sarah