summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/Python-ast.c239
-rw-r--r--Python/_warnings.c221
-rw-r--r--Python/ast.c1248
-rw-r--r--Python/bltinmodule.c13
-rw-r--r--Python/ceval.c77
-rw-r--r--Python/compile.c236
-rw-r--r--Python/dtoa.c6
-rw-r--r--Python/dynload_win.c8
-rw-r--r--Python/fileutils.c16
-rw-r--r--Python/formatter_unicode.c2
-rw-r--r--Python/frozenmain.c4
-rw-r--r--Python/future.c5
-rw-r--r--Python/getargs.c96
-rw-r--r--Python/graminit.c106
-rw-r--r--Python/import.c68
-rw-r--r--Python/importdl.c4
-rw-r--r--Python/importlib.h950
-rw-r--r--Python/importlib_external.h4995
-rwxr-xr-xPython/makeopcodetargets.py48
-rw-r--r--Python/marshal.c118
-rw-r--r--Python/modsupport.c4
-rw-r--r--Python/mystrtoul.c6
-rw-r--r--Python/opcode_targets.h2
-rw-r--r--Python/peephole.c55
-rw-r--r--Python/pylifecycle.c91
-rw-r--r--Python/pystate.c32
-rw-r--r--Python/pystrtod.c9
-rw-r--r--Python/pythonrun.c22
-rw-r--r--Python/pytime.c274
-rw-r--r--Python/random.c2
-rw-r--r--Python/symtable.c13
-rw-r--r--Python/sysmodule.c25
-rw-r--r--Python/traceback.c183
33 files changed, 5465 insertions, 3713 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index edfcbad..1193c7c 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -285,6 +285,18 @@ _Py_IDENTIFIER(s);
static char *Str_fields[]={
"s",
};
+static PyTypeObject *FormattedValue_type;
+_Py_IDENTIFIER(conversion);
+_Py_IDENTIFIER(format_spec);
+static char *FormattedValue_fields[]={
+ "value",
+ "conversion",
+ "format_spec",
+};
+static PyTypeObject *JoinedStr_type;
+static char *JoinedStr_fields[]={
+ "values",
+};
static PyTypeObject *Bytes_type;
static char *Bytes_fields[]={
"s",
@@ -294,6 +306,10 @@ static char *NameConstant_fields[]={
"value",
};
static PyTypeObject *Ellipsis_type;
+static PyTypeObject *Constant_type;
+static char *Constant_fields[]={
+ "value",
+};
static PyTypeObject *Attribute_type;
_Py_IDENTIFIER(attr);
_Py_IDENTIFIER(ctx);
@@ -697,6 +713,7 @@ static PyObject* ast2obj_object(void *o)
return (PyObject*)o;
}
#define ast2obj_singleton ast2obj_object
+#define ast2obj_constant ast2obj_object
#define ast2obj_identifier ast2obj_object
#define ast2obj_string ast2obj_object
#define ast2obj_bytes ast2obj_object
@@ -734,6 +751,19 @@ static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena)
return 0;
}
+static int obj2ast_constant(PyObject* obj, PyObject** out, PyArena* arena)
+{
+ if (obj) {
+ if (PyArena_AddPyObject(arena, obj) < 0) {
+ *out = NULL;
+ return -1;
+ }
+ Py_INCREF(obj);
+ }
+ *out = obj;
+ return 0;
+}
+
static int obj2ast_identifier(PyObject* obj, PyObject** out, PyArena* arena)
{
if (!PyUnicode_CheckExact(obj) && obj != Py_None) {
@@ -769,7 +799,7 @@ static int obj2ast_int(PyObject* obj, int* out, PyArena* arena)
return 1;
}
- i = (int)PyLong_AsLong(obj);
+ i = _PyLong_AsInt(obj);
if (i == -1 && PyErr_Occurred())
return 1;
*out = i;
@@ -917,6 +947,11 @@ static int init_types(void)
if (!Num_type) return 0;
Str_type = make_type("Str", expr_type, Str_fields, 1);
if (!Str_type) return 0;
+ FormattedValue_type = make_type("FormattedValue", expr_type,
+ FormattedValue_fields, 3);
+ if (!FormattedValue_type) return 0;
+ JoinedStr_type = make_type("JoinedStr", expr_type, JoinedStr_fields, 1);
+ if (!JoinedStr_type) return 0;
Bytes_type = make_type("Bytes", expr_type, Bytes_fields, 1);
if (!Bytes_type) return 0;
NameConstant_type = make_type("NameConstant", expr_type,
@@ -924,6 +959,8 @@ static int init_types(void)
if (!NameConstant_type) return 0;
Ellipsis_type = make_type("Ellipsis", expr_type, NULL, 0);
if (!Ellipsis_type) return 0;
+ Constant_type = make_type("Constant", expr_type, Constant_fields, 1);
+ if (!Constant_type) return 0;
Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3);
if (!Attribute_type) return 0;
Subscript_type = make_type("Subscript", expr_type, Subscript_fields, 3);
@@ -2063,6 +2100,42 @@ Str(string s, int lineno, int col_offset, PyArena *arena)
}
expr_ty
+FormattedValue(expr_ty value, int conversion, expr_ty format_spec, int lineno,
+ int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field value is required for FormattedValue");
+ return NULL;
+ }
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = FormattedValue_kind;
+ p->v.FormattedValue.value = value;
+ p->v.FormattedValue.conversion = conversion;
+ p->v.FormattedValue.format_spec = format_spec;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
+JoinedStr(asdl_seq * values, int lineno, int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = JoinedStr_kind;
+ p->v.JoinedStr.values = values;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
Bytes(bytes s, int lineno, int col_offset, PyArena *arena)
{
expr_ty p;
@@ -2114,6 +2187,25 @@ Ellipsis(int lineno, int col_offset, PyArena *arena)
}
expr_ty
+Constant(constant value, int lineno, int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field value is required for Constant");
+ return NULL;
+ }
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = Constant_kind;
+ p->v.Constant.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno, int
col_offset, PyArena *arena)
{
@@ -3164,6 +3256,34 @@ ast2obj_expr(void* _o)
goto failed;
Py_DECREF(value);
break;
+ case FormattedValue_kind:
+ result = PyType_GenericNew(FormattedValue_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_expr(o->v.FormattedValue.value);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(o->v.FormattedValue.conversion);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_conversion, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_expr(o->v.FormattedValue.format_spec);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_format_spec, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
+ case JoinedStr_kind:
+ result = PyType_GenericNew(JoinedStr_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_list(o->v.JoinedStr.values, ast2obj_expr);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_values, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
case Bytes_kind:
result = PyType_GenericNew(Bytes_type, NULL, NULL);
if (!result) goto failed;
@@ -3186,6 +3306,15 @@ ast2obj_expr(void* _o)
result = PyType_GenericNew(Ellipsis_type, NULL, NULL);
if (!result) goto failed;
break;
+ case Constant_kind:
+ result = PyType_GenericNew(Constant_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_constant(o->v.Constant.value);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
case Attribute_kind:
result = PyType_GenericNew(Attribute_type, NULL, NULL);
if (!result) goto failed;
@@ -6025,6 +6154,86 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
if (*out == NULL) goto failed;
return 0;
}
+ isinstance = PyObject_IsInstance(obj, (PyObject*)FormattedValue_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ expr_ty value;
+ int conversion;
+ expr_ty format_spec;
+
+ if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_value);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_expr(tmp, &value, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from FormattedValue");
+ return 1;
+ }
+ if (exists_not_none(obj, &PyId_conversion)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_conversion);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_int(tmp, &conversion, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ conversion = 0;
+ }
+ if (exists_not_none(obj, &PyId_format_spec)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_format_spec);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_expr(tmp, &format_spec, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ format_spec = NULL;
+ }
+ *out = FormattedValue(value, conversion, format_spec, lineno,
+ col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
+ isinstance = PyObject_IsInstance(obj, (PyObject*)JoinedStr_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ asdl_seq* values;
+
+ if (_PyObject_HasAttrId(obj, &PyId_values)) {
+ int res;
+ Py_ssize_t len;
+ Py_ssize_t i;
+ tmp = _PyObject_GetAttrId(obj, &PyId_values);
+ if (tmp == NULL) goto failed;
+ if (!PyList_Check(tmp)) {
+ PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must be a list, not a %.200s", tmp->ob_type->tp_name);
+ goto failed;
+ }
+ len = PyList_GET_SIZE(tmp);
+ values = _Py_asdl_seq_new(len, arena);
+ if (values == NULL) goto failed;
+ for (i = 0; i < len; i++) {
+ expr_ty value;
+ res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena);
+ if (res != 0) goto failed;
+ asdl_seq_SET(values, i, value);
+ }
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"values\" missing from JoinedStr");
+ return 1;
+ }
+ *out = JoinedStr(values, lineno, col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
isinstance = PyObject_IsInstance(obj, (PyObject*)Bytes_type);
if (isinstance == -1) {
return 1;
@@ -6079,6 +6288,28 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
if (*out == NULL) goto failed;
return 0;
}
+ isinstance = PyObject_IsInstance(obj, (PyObject*)Constant_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ constant value;
+
+ if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_value);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_constant(tmp, &value, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Constant");
+ return 1;
+ }
+ *out = Constant(value, lineno, col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
if (isinstance == -1) {
return 1;
@@ -7346,12 +7577,18 @@ PyInit__ast(void)
if (PyDict_SetItemString(d, "Call", (PyObject*)Call_type) < 0) return NULL;
if (PyDict_SetItemString(d, "Num", (PyObject*)Num_type) < 0) return NULL;
if (PyDict_SetItemString(d, "Str", (PyObject*)Str_type) < 0) return NULL;
+ if (PyDict_SetItemString(d, "FormattedValue",
+ (PyObject*)FormattedValue_type) < 0) return NULL;
+ if (PyDict_SetItemString(d, "JoinedStr", (PyObject*)JoinedStr_type) < 0)
+ return NULL;
if (PyDict_SetItemString(d, "Bytes", (PyObject*)Bytes_type) < 0) return
NULL;
if (PyDict_SetItemString(d, "NameConstant", (PyObject*)NameConstant_type) <
0) return NULL;
if (PyDict_SetItemString(d, "Ellipsis", (PyObject*)Ellipsis_type) < 0)
return NULL;
+ if (PyDict_SetItemString(d, "Constant", (PyObject*)Constant_type) < 0)
+ return NULL;
if (PyDict_SetItemString(d, "Attribute", (PyObject*)Attribute_type) < 0)
return NULL;
if (PyDict_SetItemString(d, "Subscript", (PyObject*)Subscript_type) < 0)
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 978bad1..40f5c8e 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -40,12 +40,11 @@ check_matched(PyObject *obj, PyObject *arg)
A NULL return value can mean false or an error.
*/
static PyObject *
-get_warnings_attr(const char *attr)
+get_warnings_attr(const char *attr, int try_import)
{
static PyObject *warnings_str = NULL;
PyObject *all_modules;
- PyObject *warnings_module;
- int result;
+ PyObject *warnings_module, *obj;
if (warnings_str == NULL) {
warnings_str = PyUnicode_InternFromString("warnings");
@@ -53,15 +52,34 @@ get_warnings_attr(const char *attr)
return NULL;
}
- all_modules = PyImport_GetModuleDict();
- result = PyDict_Contains(all_modules, warnings_str);
- if (result == -1 || result == 0)
- return NULL;
+ /* don't try to import after the start of the Python finallization */
+ if (try_import && _Py_Finalizing == NULL) {
+ warnings_module = PyImport_Import(warnings_str);
+ if (warnings_module == NULL) {
+ /* Fallback to the C implementation if we cannot get
+ the Python implementation */
+ PyErr_Clear();
+ return NULL;
+ }
+ }
+ else {
+ all_modules = PyImport_GetModuleDict();
- warnings_module = PyDict_GetItem(all_modules, warnings_str);
- if (!PyObject_HasAttrString(warnings_module, attr))
+ warnings_module = PyDict_GetItem(all_modules, warnings_str);
+ if (warnings_module == NULL)
return NULL;
- return PyObject_GetAttrString(warnings_module, attr);
+
+ Py_INCREF(warnings_module);
+ }
+
+ if (!PyObject_HasAttrString(warnings_module, attr)) {
+ Py_DECREF(warnings_module);
+ return NULL;
+ }
+
+ obj = PyObject_GetAttrString(warnings_module, attr);
+ Py_DECREF(warnings_module);
+ return obj;
}
@@ -70,7 +88,7 @@ get_once_registry(void)
{
PyObject *registry;
- registry = get_warnings_attr("onceregistry");
+ registry = get_warnings_attr("onceregistry", 0);
if (registry == NULL) {
if (PyErr_Occurred())
return NULL;
@@ -87,7 +105,7 @@ get_default_action(void)
{
PyObject *default_action;
- default_action = get_warnings_attr("defaultaction");
+ default_action = get_warnings_attr("defaultaction", 0);
if (default_action == NULL) {
if (PyErr_Occurred()) {
return NULL;
@@ -110,7 +128,7 @@ get_filter(PyObject *category, PyObject *text, Py_ssize_t lineno,
Py_ssize_t i;
PyObject *warnings_filters;
- warnings_filters = get_warnings_attr("filters");
+ warnings_filters = get_warnings_attr("filters", 0);
if (warnings_filters == NULL) {
if (PyErr_Occurred())
return NULL;
@@ -287,8 +305,8 @@ update_registry(PyObject *registry, PyObject *text, PyObject *category,
}
static void
-show_warning(PyObject *filename, int lineno, PyObject *text, PyObject
- *category, PyObject *sourceline)
+show_warning(PyObject *filename, int lineno, PyObject *text,
+ PyObject *category, PyObject *sourceline)
{
PyObject *f_stderr;
PyObject *name;
@@ -359,10 +377,64 @@ error:
PyErr_Clear();
}
+static int
+call_show_warning(PyObject *category, PyObject *text, PyObject *message,
+ PyObject *filename, int lineno, PyObject *lineno_obj,
+ PyObject *sourceline, PyObject *source)
+{
+ PyObject *show_fn, *msg, *res, *warnmsg_cls = NULL;
+
+ /* If the source parameter is set, try to get the Python implementation.
+ The Python implementation is able to log the traceback where the source
+ was allocated, whereas the C implementation doesnt. */
+ show_fn = get_warnings_attr("_showwarnmsg", source != NULL);
+ if (show_fn == NULL) {
+ if (PyErr_Occurred())
+ return -1;
+ show_warning(filename, lineno, text, category, sourceline);
+ return 0;
+ }
+
+ if (!PyCallable_Check(show_fn)) {
+ PyErr_SetString(PyExc_TypeError,
+ "warnings._showwarnmsg() must be set to a callable");
+ goto error;
+ }
+
+ warnmsg_cls = get_warnings_attr("WarningMessage", 0);
+ if (warnmsg_cls == NULL) {
+ PyErr_SetString(PyExc_RuntimeError,
+ "unable to get warnings.WarningMessage");
+ goto error;
+ }
+
+ msg = PyObject_CallFunctionObjArgs(warnmsg_cls, message, category,
+ filename, lineno_obj, Py_None, Py_None, source,
+ NULL);
+ Py_DECREF(warnmsg_cls);
+ if (msg == NULL)
+ goto error;
+
+ res = PyObject_CallFunctionObjArgs(show_fn, msg, NULL);
+ Py_DECREF(show_fn);
+ Py_DECREF(msg);
+
+ if (res == NULL)
+ return -1;
+
+ Py_DECREF(res);
+ return 0;
+
+error:
+ Py_XDECREF(show_fn);
+ return -1;
+}
+
static PyObject *
warn_explicit(PyObject *category, PyObject *message,
PyObject *filename, int lineno,
- PyObject *module, PyObject *registry, PyObject *sourceline)
+ PyObject *module, PyObject *registry, PyObject *sourceline,
+ PyObject *source)
{
PyObject *key = NULL, *text = NULL, *result = NULL, *lineno_obj = NULL;
PyObject *item = NULL;
@@ -470,31 +542,9 @@ warn_explicit(PyObject *category, PyObject *message,
if (rc == 1) /* Already warned for this module. */
goto return_none;
if (rc == 0) {
- PyObject *show_fxn = get_warnings_attr("showwarning");
- if (show_fxn == NULL) {
- if (PyErr_Occurred())
- goto cleanup;
- show_warning(filename, lineno, text, category, sourceline);
- }
- else {
- PyObject *res;
-
- if (!PyCallable_Check(show_fxn)) {
- PyErr_SetString(PyExc_TypeError,
- "warnings.showwarning() must be set to a "
- "callable");
- Py_DECREF(show_fxn);
- goto cleanup;
- }
-
- res = PyObject_CallFunctionObjArgs(show_fxn, message, category,
- filename, lineno_obj,
- NULL);
- Py_DECREF(show_fxn);
- Py_XDECREF(res);
- if (res == NULL)
- goto cleanup;
- }
+ if (call_show_warning(category, text, message, filename, lineno,
+ lineno_obj, sourceline, source) < 0)
+ goto cleanup;
}
else /* if (rc == -1) */
goto cleanup;
@@ -738,7 +788,8 @@ get_category(PyObject *message, PyObject *category)
}
static PyObject *
-do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
+do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level,
+ PyObject *source)
{
PyObject *filename, *module, *registry, *res;
int lineno;
@@ -747,7 +798,7 @@ do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
return NULL;
res = warn_explicit(category, message, filename, lineno, module, registry,
- NULL);
+ NULL, source);
Py_DECREF(filename);
Py_DECREF(registry);
Py_DECREF(module);
@@ -757,25 +808,27 @@ do_warn(PyObject *message, PyObject *category, Py_ssize_t stack_level)
static PyObject *
warnings_warn(PyObject *self, PyObject *args, PyObject *kwds)
{
- static char *kw_list[] = { "message", "category", "stacklevel", 0 };
- PyObject *message, *category = NULL;
+ static char *kw_list[] = {"message", "category", "stacklevel",
+ "source", NULL};
+ PyObject *message, *category = NULL, *source = NULL;
Py_ssize_t stack_level = 1;
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|On:warn", kw_list,
- &message, &category, &stack_level))
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|OnO:warn", kw_list,
+ &message, &category, &stack_level, &source))
return NULL;
category = get_category(message, category);
if (category == NULL)
return NULL;
- return do_warn(message, category, stack_level);
+ return do_warn(message, category, stack_level, source);
}
static PyObject *
warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
{
static char *kwd_list[] = {"message", "category", "filename", "lineno",
- "module", "registry", "module_globals", 0};
+ "module", "registry", "module_globals",
+ "source", 0};
PyObject *message;
PyObject *category;
PyObject *filename;
@@ -783,10 +836,11 @@ warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
PyObject *module = NULL;
PyObject *registry = NULL;
PyObject *module_globals = NULL;
+ PyObject *sourceobj = NULL;
- if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOUi|OOO:warn_explicit",
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "OOUi|OOOO:warn_explicit",
kwd_list, &message, &category, &filename, &lineno, &module,
- &registry, &module_globals))
+ &registry, &module_globals, &sourceobj))
return NULL;
if (module_globals) {
@@ -842,14 +896,14 @@ warnings_warn_explicit(PyObject *self, PyObject *args, PyObject *kwds)
/* Handle the warning. */
returned = warn_explicit(category, message, filename, lineno, module,
- registry, source_line);
+ registry, source_line, sourceobj);
Py_DECREF(source_list);
return returned;
}
standard_call:
return warn_explicit(category, message, filename, lineno, module,
- registry, NULL);
+ registry, NULL, sourceobj);
}
static PyObject *
@@ -864,14 +918,14 @@ warnings_filters_mutated(PyObject *self, PyObject *args)
static int
warn_unicode(PyObject *category, PyObject *message,
- Py_ssize_t stack_level)
+ Py_ssize_t stack_level, PyObject *source)
{
PyObject *res;
if (category == NULL)
category = PyExc_RuntimeWarning;
- res = do_warn(message, category, stack_level);
+ res = do_warn(message, category, stack_level, source);
if (res == NULL)
return -1;
Py_DECREF(res);
@@ -879,12 +933,28 @@ warn_unicode(PyObject *category, PyObject *message,
return 0;
}
+static int
+_PyErr_WarnFormatV(PyObject *source,
+ PyObject *category, Py_ssize_t stack_level,
+ const char *format, va_list vargs)
+{
+ PyObject *message;
+ int res;
+
+ message = PyUnicode_FromFormatV(format, vargs);
+ if (message == NULL)
+ return -1;
+
+ res = warn_unicode(category, message, stack_level, source);
+ Py_DECREF(message);
+ return res;
+}
+
int
PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level,
const char *format, ...)
{
- int ret;
- PyObject *message;
+ int res;
va_list vargs;
#ifdef HAVE_STDARG_PROTOTYPES
@@ -892,25 +962,38 @@ PyErr_WarnFormat(PyObject *category, Py_ssize_t stack_level,
#else
va_start(vargs);
#endif
- message = PyUnicode_FromFormatV(format, vargs);
- if (message != NULL) {
- ret = warn_unicode(category, message, stack_level);
- Py_DECREF(message);
- }
- else
- ret = -1;
+ res = _PyErr_WarnFormatV(NULL, category, stack_level, format, vargs);
va_end(vargs);
- return ret;
+ return res;
}
int
+PyErr_ResourceWarning(PyObject *source, Py_ssize_t stack_level,
+ const char *format, ...)
+{
+ int res;
+ va_list vargs;
+
+#ifdef HAVE_STDARG_PROTOTYPES
+ va_start(vargs, format);
+#else
+ va_start(vargs);
+#endif
+ res = _PyErr_WarnFormatV(source, PyExc_ResourceWarning,
+ stack_level, format, vargs);
+ va_end(vargs);
+ return res;
+}
+
+
+int
PyErr_WarnEx(PyObject *category, const char *text, Py_ssize_t stack_level)
{
int ret;
PyObject *message = PyUnicode_FromString(text);
if (message == NULL)
return -1;
- ret = warn_unicode(category, message, stack_level);
+ ret = warn_unicode(category, message, stack_level, NULL);
Py_DECREF(message);
return ret;
}
@@ -921,7 +1004,7 @@ PyErr_WarnEx(PyObject *category, const char *text, Py_ssize_t stack_level)
#undef PyErr_Warn
PyAPI_FUNC(int)
-PyErr_Warn(PyObject *category, char *text)
+PyErr_Warn(PyObject *category, const char *text)
{
return PyErr_WarnEx(category, text, 1);
}
@@ -936,7 +1019,7 @@ PyErr_WarnExplicitObject(PyObject *category, PyObject *message,
if (category == NULL)
category = PyExc_RuntimeWarning;
res = warn_explicit(category, message, filename, lineno,
- module, registry, NULL);
+ module, registry, NULL, NULL);
if (res == NULL)
return -1;
Py_DECREF(res);
@@ -1000,7 +1083,7 @@ PyErr_WarnExplicitFormat(PyObject *category,
if (message != NULL) {
PyObject *res;
res = warn_explicit(category, message, filename, lineno,
- module, registry, NULL);
+ module, registry, NULL, NULL);
Py_DECREF(message);
if (res != NULL) {
Py_DECREF(res);
diff --git a/Python/ast.c b/Python/ast.c
index 7743c31..ad771cf 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -132,6 +132,52 @@ validate_arguments(arguments_ty args)
}
static int
+validate_constant(PyObject *value)
+{
+ if (value == Py_None || value == Py_Ellipsis)
+ return 1;
+
+ if (PyLong_CheckExact(value)
+ || PyFloat_CheckExact(value)
+ || PyComplex_CheckExact(value)
+ || PyBool_Check(value)
+ || PyUnicode_CheckExact(value)
+ || PyBytes_CheckExact(value))
+ return 1;
+
+ if (PyTuple_CheckExact(value) || PyFrozenSet_CheckExact(value)) {
+ PyObject *it;
+
+ it = PyObject_GetIter(value);
+ if (it == NULL)
+ return 0;
+
+ while (1) {
+ PyObject *item = PyIter_Next(it);
+ if (item == NULL) {
+ if (PyErr_Occurred()) {
+ Py_DECREF(it);
+ return 0;
+ }
+ break;
+ }
+
+ if (!validate_constant(item)) {
+ Py_DECREF(it);
+ Py_DECREF(item);
+ return 0;
+ }
+ Py_DECREF(item);
+ }
+
+ Py_DECREF(it);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int
validate_expr(expr_ty exp, expr_context_ty ctx)
{
int check_ctx = 1;
@@ -240,6 +286,14 @@ validate_expr(expr_ty exp, expr_context_ty ctx)
return validate_expr(exp->v.Call.func, Load) &&
validate_exprs(exp->v.Call.args, Load, 0) &&
validate_keywords(exp->v.Call.keywords);
+ case Constant_kind:
+ if (!validate_constant(exp->v.Constant.value)) {
+ PyErr_Format(PyExc_TypeError,
+ "got an invalid type in Constant: %s",
+ Py_TYPE(exp->v.Constant.value)->tp_name);
+ return 0;
+ }
+ return 1;
case Num_kind: {
PyObject *n = exp->v.Num.n;
if (!PyLong_CheckExact(n) && !PyFloat_CheckExact(n) &&
@@ -257,6 +311,14 @@ validate_expr(expr_ty exp, expr_context_ty ctx)
}
return 1;
}
+ case JoinedStr_kind:
+ return validate_exprs(exp->v.JoinedStr.values, Load, 0);
+ case FormattedValue_kind:
+ if (validate_expr(exp->v.FormattedValue.value, Load) == 0)
+ return 0;
+ if (exp->v.FormattedValue.format_spec)
+ return validate_expr(exp->v.FormattedValue.format_spec, Load);
+ return 1;
case Bytes_kind: {
PyObject *b = exp->v.Bytes.s;
if (!PyBytes_CheckExact(b)) {
@@ -512,8 +574,7 @@ PyAST_Validate(mod_ty mod)
/* Data structure used internally */
struct compiling {
- char *c_encoding; /* source encoding */
- PyArena *c_arena; /* arena for allocating memeory */
+ PyArena *c_arena; /* Arena for allocating memory. */
PyObject *c_filename; /* filename */
PyObject *c_normalize; /* Normalization function from unicodedata. */
PyObject *c_normalize_args; /* Normalization argument tuple. */
@@ -535,9 +596,7 @@ static stmt_ty ast_for_for_stmt(struct compiling *, const node *, int);
static expr_ty ast_for_call(struct compiling *, const node *, expr_ty);
static PyObject *parsenumber(struct compiling *, const char *);
-static PyObject *parsestr(struct compiling *, const node *n, int *bytesmode);
-static PyObject *parsestrplus(struct compiling *, const node *n,
- int *bytesmode);
+static expr_ty parsestrplus(struct compiling *, const node *n);
#define COMP_GENEXP 0
#define COMP_LISTCOMP 1
@@ -701,23 +760,11 @@ PyAST_FromNodeObject(const node *n, PyCompilerFlags *flags,
c.c_arena = arena;
/* borrowed reference */
c.c_filename = filename;
- c.c_normalize = c.c_normalize_args = NULL;
- if (flags && flags->cf_flags & PyCF_SOURCE_IS_UTF8) {
- c.c_encoding = "utf-8";
- if (TYPE(n) == encoding_decl) {
-#if 0
- ast_error(c, n, "encoding declaration in Unicode string");
- goto out;
-#endif
- n = CHILD(n, 0);
- }
- } else if (TYPE(n) == encoding_decl) {
- c.c_encoding = STR(n);
+ c.c_normalize = NULL;
+ c.c_normalize_args = NULL;
+
+ if (TYPE(n) == encoding_decl)
n = CHILD(n, 0);
- } else {
- /* PEP 3120 */
- c.c_encoding = "utf-8";
- }
k = 0;
switch (TYPE(n)) {
@@ -864,7 +911,7 @@ get_operator(const node *n)
}
}
-static const char* FORBIDDEN[] = {
+static const char * const FORBIDDEN[] = {
"None",
"True",
"False",
@@ -881,7 +928,7 @@ forbidden_name(struct compiling *c, identifier name, const node *n,
return 1;
}
if (full_checks) {
- const char **p;
+ const char * const *p;
for (p = FORBIDDEN; *p; p++) {
if (PyUnicode_CompareWithASCIIString(name, *p) == 0) {
ast_error(c, n, "assignment to keyword");
@@ -986,6 +1033,8 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
case Num_kind:
case Str_kind:
case Bytes_kind:
+ case JoinedStr_kind:
+ case FormattedValue_kind:
expr_name = "literal";
break;
case NameConstant_kind:
@@ -1259,16 +1308,20 @@ ast_for_arguments(struct compiling *c, const node *n)
and varargslist (lambda definition).
parameters: '(' [typedargslist] ')'
- typedargslist: ((tfpdef ['=' test] ',')*
- ('*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef]
- | '**' tfpdef)
- | tfpdef ['=' test] (',' tfpdef ['=' test])* [','])
+ typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' [
+ '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]]
+ | '**' tfpdef [',']]]
+ | '*' [tfpdef] (',' tfpdef ['=' test])* [',' ['**' tfpdef [',']]]
+ | '**' tfpdef [','])
tfpdef: NAME [':' test]
- varargslist: ((vfpdef ['=' test] ',')*
- ('*' [vfpdef] (',' vfpdef ['=' test])* [',' '**' vfpdef]
- | '**' vfpdef)
- | vfpdef ['=' test] (',' vfpdef ['=' test])* [','])
+ varargslist: (vfpdef ['=' test] (',' vfpdef ['=' test])* [',' [
+ '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]]
+ | '**' vfpdef [',']]]
+ | '*' [vfpdef] (',' vfpdef ['=' test])* [',' ['**' vfpdef [',']]]
+ | '**' vfpdef [',']
+ )
vfpdef: NAME
+
*/
int i, j, k, nposargs = 0, nkwonlyargs = 0;
int nposdefaults = 0, found_default = 0;
@@ -1370,7 +1423,8 @@ ast_for_arguments(struct compiling *c, const node *n)
i += 2; /* the name and the comma */
break;
case STAR:
- if (i+1 >= NCH(n)) {
+ if (i+1 >= NCH(n) ||
+ (i+2 == NCH(n) && TYPE(CHILD(n, i+1)) == COMMA)) {
ast_error(c, CHILD(n, i),
"named arguments must follow bare *");
return NULL;
@@ -1993,7 +2047,6 @@ ast_for_atom(struct compiling *c, const node *n)
| '...' | 'None' | 'True' | 'False'
*/
node *ch = CHILD(n, 0);
- int bytesmode = 0;
switch (TYPE(ch)) {
case NAME: {
@@ -2015,7 +2068,7 @@ ast_for_atom(struct compiling *c, const node *n)
return Name(name, Load, LINENO(n), n->n_col_offset, c->c_arena);
}
case STRING: {
- PyObject *str = parsestrplus(c, n, &bytesmode);
+ expr_ty str = parsestrplus(c, n);
if (!str) {
const char *errtype = NULL;
if (PyErr_ExceptionMatches(PyExc_UnicodeError))
@@ -2032,6 +2085,7 @@ ast_for_atom(struct compiling *c, const node *n)
PyOS_snprintf(buf, sizeof(buf), "(%s) %s", errtype, s);
Py_DECREF(errstr);
} else {
+ PyErr_Clear();
PyOS_snprintf(buf, sizeof(buf), "(%s) unknown error", errtype);
}
ast_error(c, n, buf);
@@ -2041,14 +2095,7 @@ ast_for_atom(struct compiling *c, const node *n)
}
return NULL;
}
- if (PyArena_AddPyObject(c->c_arena, str) < 0) {
- Py_DECREF(str);
- return NULL;
- }
- if (bytesmode)
- return Bytes(str, LINENO(n), n->n_col_offset, c->c_arena);
- else
- return Str(str, LINENO(n), n->n_col_offset, c->c_arena);
+ return str;
}
case NUMBER: {
PyObject *pynum = parsenumber(c, STR(ch));
@@ -3208,14 +3255,14 @@ ast_for_import_stmt(struct compiling *c, const node *n)
alias_ty import_alias = alias_for_import_name(c, n, 1);
if (!import_alias)
return NULL;
- asdl_seq_SET(aliases, 0, import_alias);
+ asdl_seq_SET(aliases, 0, import_alias);
}
else {
for (i = 0; i < NCH(n); i += 2) {
alias_ty import_alias = alias_for_import_name(c, CHILD(n, i), 1);
if (!import_alias)
return NULL;
- asdl_seq_SET(aliases, i / 2, import_alias);
+ asdl_seq_SET(aliases, i / 2, import_alias);
}
}
if (mod != NULL)
@@ -3935,82 +3982,932 @@ decode_utf8(struct compiling *c, const char **sPtr, const char *end)
}
static PyObject *
-decode_unicode(struct compiling *c, const char *s, size_t len, int rawmode, const char *encoding)
+decode_unicode_with_escapes(struct compiling *c, const char *s, size_t len)
{
PyObject *v, *u;
char *buf;
char *p;
const char *end;
- if (encoding == NULL) {
- u = NULL;
+ /* check for integer overflow */
+ if (len > PY_SIZE_MAX / 6)
+ return NULL;
+ /* "ä" (2 bytes) may become "\U000000E4" (10 bytes), or 1:5
+ "\ä" (3 bytes) may become "\u005c\U000000E4" (16 bytes), or ~1:6 */
+ u = PyBytes_FromStringAndSize((char *)NULL, len * 6);
+ if (u == NULL)
+ return NULL;
+ p = buf = PyBytes_AsString(u);
+ end = s + len;
+ while (s < end) {
+ if (*s == '\\') {
+ *p++ = *s++;
+ if (*s & 0x80) {
+ strcpy(p, "u005c");
+ p += 5;
+ }
+ }
+ if (*s & 0x80) { /* XXX inefficient */
+ PyObject *w;
+ int kind;
+ void *data;
+ Py_ssize_t len, i;
+ w = decode_utf8(c, &s, end);
+ if (w == NULL) {
+ Py_DECREF(u);
+ return NULL;
+ }
+ kind = PyUnicode_KIND(w);
+ data = PyUnicode_DATA(w);
+ len = PyUnicode_GET_LENGTH(w);
+ for (i = 0; i < len; i++) {
+ Py_UCS4 chr = PyUnicode_READ(kind, data, i);
+ sprintf(p, "\\U%08x", chr);
+ p += 10;
+ }
+ /* Should be impossible to overflow */
+ assert(p - buf <= Py_SIZE(u));
+ Py_DECREF(w);
+ } else {
+ *p++ = *s++;
+ }
+ }
+ len = p - buf;
+ s = buf;
+
+ v = PyUnicode_DecodeUnicodeEscape(s, len, NULL);
+ Py_XDECREF(u);
+ return v;
+}
+
+/* Compile this expression in to an expr_ty. We know that we can
+ temporarily modify the character before the start of this string
+ (it's '{'), and we know we can temporarily modify the character
+ after this string (it is a '}'). Leverage this to create a
+ sub-string with enough room for us to add parens around the
+ expression. This is to allow strings with embedded newlines, for
+ example. */
+static expr_ty
+fstring_compile_expr(PyObject *str, Py_ssize_t expr_start,
+ Py_ssize_t expr_end, struct compiling *c, const node *n)
+
+{
+ PyCompilerFlags cf;
+ mod_ty mod;
+ char *utf_expr;
+ Py_ssize_t i;
+ Py_UCS4 end_ch = -1;
+ int all_whitespace;
+ PyObject *sub = NULL;
+
+ /* We only decref sub if we allocated it with a PyUnicode_Substring.
+ decref_sub records that. */
+ int decref_sub = 0;
+
+ assert(str);
+
+ assert(expr_start >= 0 && expr_start < PyUnicode_GET_LENGTH(str));
+ assert(expr_end >= 0 && expr_end < PyUnicode_GET_LENGTH(str));
+ assert(expr_end >= expr_start);
+
+ /* There has to be at least one character on each side of the
+ expression inside this str. This will have been caught before
+ we're called. */
+ assert(expr_start >= 1);
+ assert(expr_end <= PyUnicode_GET_LENGTH(str)-1);
+
+ /* If the substring is all whitespace, it's an error. We need to
+ catch this here, and not when we call PyParser_ASTFromString,
+ because turning the expression '' in to '()' would go from
+ being invalid to valid. */
+ /* Note that this code says an empty string is all
+ whitespace. That's important. There's a test for it: f'{}'. */
+ all_whitespace = 1;
+ for (i = expr_start; i < expr_end; i++) {
+ if (!Py_UNICODE_ISSPACE(PyUnicode_READ_CHAR(str, i))) {
+ all_whitespace = 0;
+ break;
+ }
+ }
+ if (all_whitespace) {
+ ast_error(c, n, "f-string: empty expression not allowed");
+ goto error;
+ }
+
+ /* If the substring will be the entire source string, we can't use
+ PyUnicode_Substring, since it will return another reference to
+ our original string. Because we're modifying the string in
+ place, that's a no-no. So, detect that case and just use our
+ string directly. */
+
+ if (expr_start-1 == 0 && expr_end+1 == PyUnicode_GET_LENGTH(str)) {
+ /* If str is well formed, then the first and last chars must
+ be '{' and '}', respectively. But, if there's a syntax
+ error, for example f'{3!', then the last char won't be a
+ closing brace. So, remember the last character we read in
+ order for us to restore it. */
+ end_ch = PyUnicode_ReadChar(str, expr_end-expr_start+1);
+ assert(end_ch != (Py_UCS4)-1);
+
+ /* In all cases, however, start_ch must be '{'. */
+ assert(PyUnicode_ReadChar(str, 0) == '{');
+
+ sub = str;
} else {
- /* check for integer overflow */
- if (len > PY_SIZE_MAX / 6)
- return NULL;
- /* "ä" (2 bytes) may become "\U000000E4" (10 bytes), or 1:5
- "\ä" (3 bytes) may become "\u005c\U000000E4" (16 bytes), or ~1:6 */
- u = PyBytes_FromStringAndSize((char *)NULL, len * 6);
- if (u == NULL)
- return NULL;
- p = buf = PyBytes_AsString(u);
- end = s + len;
- while (s < end) {
- if (*s == '\\') {
- *p++ = *s++;
- if (*s & 0x80) {
- strcpy(p, "u005c");
- p += 5;
+ /* Create a substring object. It must be a new object, with
+ refcount==1, so that we can modify it. */
+ sub = PyUnicode_Substring(str, expr_start-1, expr_end+1);
+ if (!sub)
+ goto error;
+ assert(sub != str); /* Make sure it's a new string. */
+ decref_sub = 1; /* Remember to deallocate it on error. */
+ }
+
+ /* Put () around the expression. */
+ if (PyUnicode_WriteChar(sub, 0, '(') < 0 ||
+ PyUnicode_WriteChar(sub, expr_end-expr_start+1, ')') < 0)
+ goto error;
+
+ /* No need to free the memory returned here: it's managed by the
+ string. */
+ utf_expr = PyUnicode_AsUTF8(sub);
+ if (!utf_expr)
+ goto error;
+
+ cf.cf_flags = PyCF_ONLY_AST;
+ mod = PyParser_ASTFromString(utf_expr, "<fstring>",
+ Py_eval_input, &cf, c->c_arena);
+ if (!mod)
+ goto error;
+
+ if (sub != str)
+ /* Clear instead of decref in case we ever modify this code to change
+ the error handling: this is safest because the XDECREF won't try
+ and decref it when it's NULL. */
+ /* No need to restore the chars in sub, since we know it's getting
+ ready to get deleted (refcount must be 1, since we got a new string
+ in PyUnicode_Substring). */
+ Py_CLEAR(sub);
+ else {
+ assert(!decref_sub);
+ assert(end_ch != (Py_UCS4)-1);
+ /* Restore str, which we earlier modified directly. */
+ if (PyUnicode_WriteChar(str, 0, '{') < 0 ||
+ PyUnicode_WriteChar(str, expr_end-expr_start+1, end_ch) < 0)
+ goto error;
+ }
+ return mod->v.Expression.body;
+
+error:
+ /* Only decref sub if it was the result of a call to SubString. */
+ if (decref_sub)
+ Py_XDECREF(sub);
+
+ if (end_ch != (Py_UCS4)-1) {
+ /* We only get here if we modified str. Make sure that's the
+ case: str will be equal to sub. */
+ if (str == sub) {
+ /* Don't check the error, because we've already set the
+ error state (that's why we're in 'error', after
+ all). */
+ PyUnicode_WriteChar(str, 0, '{');
+ PyUnicode_WriteChar(str, expr_end-expr_start+1, end_ch);
+ }
+ }
+ return NULL;
+}
+
+/* Return -1 on error.
+
+ Return 0 if we reached the end of the literal.
+
+ Return 1 if we haven't reached the end of the literal, but we want
+ the caller to process the literal up to this point. Used for
+ doubled braces.
+*/
+static int
+fstring_find_literal(PyObject *str, Py_ssize_t *ofs, PyObject **literal,
+ int recurse_lvl, struct compiling *c, const node *n)
+{
+ /* Get any literal string. It ends when we hit an un-doubled brace, or the
+ end of the string. */
+
+ Py_ssize_t literal_start, literal_end;
+ int result = 0;
+
+ enum PyUnicode_Kind kind = PyUnicode_KIND(str);
+ void *data = PyUnicode_DATA(str);
+
+ assert(*literal == NULL);
+
+ literal_start = *ofs;
+ for (; *ofs < PyUnicode_GET_LENGTH(str); *ofs += 1) {
+ Py_UCS4 ch = PyUnicode_READ(kind, data, *ofs);
+ if (ch == '{' || ch == '}') {
+ /* Check for doubled braces, but only at the top level. If
+ we checked at every level, then f'{0:{3}}' would fail
+ with the two closing braces. */
+ if (recurse_lvl == 0) {
+ if (*ofs + 1 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs + 1) == ch) {
+ /* We're going to tell the caller that the literal ends
+ here, but that they should continue scanning. But also
+ skip over the second brace when we resume scanning. */
+ literal_end = *ofs + 1;
+ *ofs += 2;
+ result = 1;
+ goto done;
}
- }
- if (*s & 0x80) { /* XXX inefficient */
- PyObject *w;
- int kind;
- void *data;
- Py_ssize_t len, i;
- w = decode_utf8(c, &s, end);
- if (w == NULL) {
- Py_DECREF(u);
- return NULL;
+
+ /* Where a single '{' is the start of a new expression, a
+ single '}' is not allowed. */
+ if (ch == '}') {
+ ast_error(c, n, "f-string: single '}' is not allowed");
+ return -1;
}
- kind = PyUnicode_KIND(w);
- data = PyUnicode_DATA(w);
- len = PyUnicode_GET_LENGTH(w);
- for (i = 0; i < len; i++) {
- Py_UCS4 chr = PyUnicode_READ(kind, data, i);
- sprintf(p, "\\U%08x", chr);
- p += 10;
+ }
+
+ /* We're either at a '{', which means we're starting another
+ expression; or a '}', which means we're at the end of this
+ f-string (for a nested format_spec). */
+ break;
+ }
+ }
+ literal_end = *ofs;
+
+ assert(*ofs == PyUnicode_GET_LENGTH(str) ||
+ PyUnicode_READ(kind, data, *ofs) == '{' ||
+ PyUnicode_READ(kind, data, *ofs) == '}');
+done:
+ if (literal_start != literal_end) {
+ *literal = PyUnicode_Substring(str, literal_start, literal_end);
+ if (!*literal)
+ return -1;
+ }
+
+ return result;
+}
+
+/* Forward declaration because parsing is recursive. */
+static expr_ty
+fstring_parse(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ struct compiling *c, const node *n);
+
+/* Parse the f-string str, starting at ofs. We know *ofs starts an
+ expression (so it must be a '{'). Returns the FormattedValue node,
+ which includes the expression, conversion character, and
+ format_spec expression.
+
+ Note that I don't do a perfect job here: I don't make sure that a
+ closing brace doesn't match an opening paren, for example. It
+ doesn't need to error on all invalid expressions, just correctly
+ find the end of all valid ones. Any errors inside the expression
+ will be caught when we parse it later. */
+static int
+fstring_find_expr(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ expr_ty *expression, struct compiling *c, const node *n)
+{
+ /* Return -1 on error, else 0. */
+
+ Py_ssize_t expr_start;
+ Py_ssize_t expr_end;
+ expr_ty simple_expression;
+ expr_ty format_spec = NULL; /* Optional format specifier. */
+ Py_UCS4 conversion = -1; /* The conversion char. -1 if not specified. */
+
+ enum PyUnicode_Kind kind = PyUnicode_KIND(str);
+ void *data = PyUnicode_DATA(str);
+
+ /* 0 if we're not in a string, else the quote char we're trying to
+ match (single or double quote). */
+ Py_UCS4 quote_char = 0;
+
+ /* If we're inside a string, 1=normal, 3=triple-quoted. */
+ int string_type = 0;
+
+ /* Keep track of nesting level for braces/parens/brackets in
+ expressions. */
+ Py_ssize_t nested_depth = 0;
+
+ /* Can only nest one level deep. */
+ if (recurse_lvl >= 2) {
+ ast_error(c, n, "f-string: expressions nested too deeply");
+ return -1;
+ }
+
+ /* The first char must be a left brace, or we wouldn't have gotten
+ here. Skip over it. */
+ assert(PyUnicode_READ(kind, data, *ofs) == '{');
+ *ofs += 1;
+
+ expr_start = *ofs;
+ for (; *ofs < PyUnicode_GET_LENGTH(str); *ofs += 1) {
+ Py_UCS4 ch;
+
+ /* Loop invariants. */
+ assert(nested_depth >= 0);
+ assert(*ofs >= expr_start);
+ if (quote_char)
+ assert(string_type == 1 || string_type == 3);
+ else
+ assert(string_type == 0);
+
+ ch = PyUnicode_READ(kind, data, *ofs);
+ if (quote_char) {
+ /* We're inside a string. See if we're at the end. */
+ /* This code needs to implement the same non-error logic
+ as tok_get from tokenizer.c, at the letter_quote
+ label. To actually share that code would be a
+ nightmare. But, it's unlikely to change and is small,
+ so duplicate it here. Note we don't need to catch all
+ of the errors, since they'll be caught when parsing the
+ expression. We just need to match the non-error
+ cases. Thus we can ignore \n in single-quoted strings,
+ for example. Or non-terminated strings. */
+ if (ch == quote_char) {
+ /* Does this match the string_type (single or triple
+ quoted)? */
+ if (string_type == 3) {
+ if (*ofs+2 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs+1) == ch &&
+ PyUnicode_READ(kind, data, *ofs+2) == ch) {
+ /* We're at the end of a triple quoted string. */
+ *ofs += 2;
+ string_type = 0;
+ quote_char = 0;
+ continue;
+ }
+ } else {
+ /* We're at the end of a normal string. */
+ quote_char = 0;
+ string_type = 0;
+ continue;
}
- /* Should be impossible to overflow */
- assert(p - buf <= Py_SIZE(u));
- Py_DECREF(w);
+ }
+ /* We're inside a string, and not finished with the
+ string. If this is a backslash, skip the next char (it
+ might be an end quote that needs skipping). Otherwise,
+ just consume this character normally. */
+ if (ch == '\\' && *ofs+1 < PyUnicode_GET_LENGTH(str)) {
+ /* Just skip the next char, whatever it is. */
+ *ofs += 1;
+ }
+ } else if (ch == '\'' || ch == '"') {
+ /* Is this a triple quoted string? */
+ if (*ofs+2 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs+1) == ch &&
+ PyUnicode_READ(kind, data, *ofs+2) == ch) {
+ string_type = 3;
+ *ofs += 2;
} else {
- *p++ = *s++;
+ /* Start of a normal string. */
+ string_type = 1;
}
+ /* Start looking for the end of the string. */
+ quote_char = ch;
+ } else if (ch == '[' || ch == '{' || ch == '(') {
+ nested_depth++;
+ } else if (nested_depth != 0 &&
+ (ch == ']' || ch == '}' || ch == ')')) {
+ nested_depth--;
+ } else if (ch == '#') {
+ /* Error: can't include a comment character, inside parens
+ or not. */
+ ast_error(c, n, "f-string cannot include '#'");
+ return -1;
+ } else if (nested_depth == 0 &&
+ (ch == '!' || ch == ':' || ch == '}')) {
+ /* First, test for the special case of "!=". Since '=' is
+ not an allowed conversion character, nothing is lost in
+ this test. */
+ if (ch == '!' && *ofs+1 < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ(kind, data, *ofs+1) == '=')
+ /* This isn't a conversion character, just continue. */
+ continue;
+
+ /* Normal way out of this loop. */
+ break;
+ } else {
+ /* Just consume this char and loop around. */
}
- len = p - buf;
- s = buf;
}
- if (rawmode)
- v = PyUnicode_DecodeRawUnicodeEscape(s, len, NULL);
- else
- v = PyUnicode_DecodeUnicodeEscape(s, len, NULL);
- Py_XDECREF(u);
- return v;
+ expr_end = *ofs;
+ /* If we leave this loop in a string or with mismatched parens, we
+ don't care. We'll get a syntax error when compiling the
+ expression. But, we can produce a better error message, so
+ let's just do that.*/
+ if (quote_char) {
+ ast_error(c, n, "f-string: unterminated string");
+ return -1;
+ }
+ if (nested_depth) {
+ ast_error(c, n, "f-string: mismatched '(', '{', or '['");
+ return -1;
+ }
+
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+
+ /* Compile the expression as soon as possible, so we show errors
+ related to the expression before errors related to the
+ conversion or format_spec. */
+ simple_expression = fstring_compile_expr(str, expr_start, expr_end, c, n);
+ if (!simple_expression)
+ return -1;
+
+ /* Check for a conversion char, if present. */
+ if (PyUnicode_READ(kind, data, *ofs) == '!') {
+ *ofs += 1;
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+
+ conversion = PyUnicode_READ(kind, data, *ofs);
+ *ofs += 1;
+
+ /* Validate the conversion. */
+ if (!(conversion == 's' || conversion == 'r'
+ || conversion == 'a')) {
+ ast_error(c, n, "f-string: invalid conversion character: "
+ "expected 's', 'r', or 'a'");
+ return -1;
+ }
+ }
+
+ /* Check for the format spec, if present. */
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+ if (PyUnicode_READ(kind, data, *ofs) == ':') {
+ *ofs += 1;
+ if (*ofs >= PyUnicode_GET_LENGTH(str))
+ goto unexpected_end_of_string;
+
+ /* Parse the format spec. */
+ format_spec = fstring_parse(str, ofs, recurse_lvl+1, c, n);
+ if (!format_spec)
+ return -1;
+ }
+
+ if (*ofs >= PyUnicode_GET_LENGTH(str) ||
+ PyUnicode_READ(kind, data, *ofs) != '}')
+ goto unexpected_end_of_string;
+
+ /* We're at a right brace. Consume it. */
+ assert(*ofs < PyUnicode_GET_LENGTH(str));
+ assert(PyUnicode_READ(kind, data, *ofs) == '}');
+ *ofs += 1;
+
+ /* And now create the FormattedValue node that represents this entire
+ expression with the conversion and format spec. */
+ *expression = FormattedValue(simple_expression, (int)conversion,
+ format_spec, LINENO(n), n->n_col_offset,
+ c->c_arena);
+ if (!*expression)
+ return -1;
+
+ return 0;
+
+unexpected_end_of_string:
+ ast_error(c, n, "f-string: expecting '}'");
+ return -1;
}
-/* s is a Python string literal, including the bracketing quote characters,
- * and r &/or b prefixes (if any), and embedded escape sequences (if any).
- * parsestr parses it, and returns the decoded Python string object.
- */
+/* Return -1 on error.
+
+ Return 0 if we have a literal (possible zero length) and an
+ expression (zero length if at the end of the string.
+
+ Return 1 if we have a literal, but no expression, and we want the
+ caller to call us again. This is used to deal with doubled
+ braces.
+
+ When called multiple times on the string 'a{{b{0}c', this function
+ will return:
+
+ 1. the literal 'a{' with no expression, and a return value
+ of 1. Despite the fact that there's no expression, the return
+ value of 1 means we're not finished yet.
+
+ 2. the literal 'b' and the expression '0', with a return value of
+ 0. The fact that there's an expression means we're not finished.
+
+ 3. literal 'c' with no expression and a return value of 0. The
+ combination of the return value of 0 with no expression means
+ we're finished.
+*/
+static int
+fstring_find_literal_and_expr(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ PyObject **literal, expr_ty *expression,
+ struct compiling *c, const node *n)
+{
+ int result;
+
+ assert(*literal == NULL && *expression == NULL);
+
+ /* Get any literal string. */
+ result = fstring_find_literal(str, ofs, literal, recurse_lvl, c, n);
+ if (result < 0)
+ goto error;
+
+ assert(result == 0 || result == 1);
+
+ if (result == 1)
+ /* We have a literal, but don't look at the expression. */
+ return 1;
+
+ assert(*ofs <= PyUnicode_GET_LENGTH(str));
+
+ if (*ofs >= PyUnicode_GET_LENGTH(str) ||
+ PyUnicode_READ_CHAR(str, *ofs) == '}')
+ /* We're at the end of the string or the end of a nested
+ f-string: no expression. The top-level error case where we
+ expect to be at the end of the string but we're at a '}' is
+ handled later. */
+ return 0;
+
+ /* We must now be the start of an expression, on a '{'. */
+ assert(*ofs < PyUnicode_GET_LENGTH(str) &&
+ PyUnicode_READ_CHAR(str, *ofs) == '{');
+
+ if (fstring_find_expr(str, ofs, recurse_lvl, expression, c, n) < 0)
+ goto error;
+
+ return 0;
+
+error:
+ Py_CLEAR(*literal);
+ return -1;
+}
+
+#define EXPRLIST_N_CACHED 64
+
+typedef struct {
+ /* Incrementally build an array of expr_ty, so be used in an
+ asdl_seq. Cache some small but reasonably sized number of
+ expr_ty's, and then after that start dynamically allocating,
+ doubling the number allocated each time. Note that the f-string
+ f'{0}a{1}' contains 3 expr_ty's: 2 FormattedValue's, and one
+ Str for the literal 'a'. So you add expr_ty's about twice as
+ fast as you add exressions in an f-string. */
+
+ Py_ssize_t allocated; /* Number we've allocated. */
+ Py_ssize_t size; /* Number we've used. */
+ expr_ty *p; /* Pointer to the memory we're actually
+ using. Will point to 'data' until we
+ start dynamically allocating. */
+ expr_ty data[EXPRLIST_N_CACHED];
+} ExprList;
+
+#ifdef NDEBUG
+#define ExprList_check_invariants(l)
+#else
+static void
+ExprList_check_invariants(ExprList *l)
+{
+ /* Check our invariants. Make sure this object is "live", and
+ hasn't been deallocated. */
+ assert(l->size >= 0);
+ assert(l->p != NULL);
+ if (l->size <= EXPRLIST_N_CACHED)
+ assert(l->data == l->p);
+}
+#endif
+
+static void
+ExprList_Init(ExprList *l)
+{
+ l->allocated = EXPRLIST_N_CACHED;
+ l->size = 0;
+
+ /* Until we start allocating dynamically, p points to data. */
+ l->p = l->data;
+
+ ExprList_check_invariants(l);
+}
+
+static int
+ExprList_Append(ExprList *l, expr_ty exp)
+{
+ ExprList_check_invariants(l);
+ if (l->size >= l->allocated) {
+ /* We need to alloc (or realloc) the memory. */
+ Py_ssize_t new_size = l->allocated * 2;
+
+ /* See if we've ever allocated anything dynamically. */
+ if (l->p == l->data) {
+ Py_ssize_t i;
+ /* We're still using the cached data. Switch to
+ alloc-ing. */
+ l->p = PyMem_RawMalloc(sizeof(expr_ty) * new_size);
+ if (!l->p)
+ return -1;
+ /* Copy the cached data into the new buffer. */
+ for (i = 0; i < l->size; i++)
+ l->p[i] = l->data[i];
+ } else {
+ /* Just realloc. */
+ expr_ty *tmp = PyMem_RawRealloc(l->p, sizeof(expr_ty) * new_size);
+ if (!tmp) {
+ PyMem_RawFree(l->p);
+ l->p = NULL;
+ return -1;
+ }
+ l->p = tmp;
+ }
+
+ l->allocated = new_size;
+ assert(l->allocated == 2 * l->size);
+ }
+
+ l->p[l->size++] = exp;
+
+ ExprList_check_invariants(l);
+ return 0;
+}
+
+static void
+ExprList_Dealloc(ExprList *l)
+{
+ ExprList_check_invariants(l);
+
+ /* If there's been an error, or we've never dynamically allocated,
+ do nothing. */
+ if (!l->p || l->p == l->data) {
+ /* Do nothing. */
+ } else {
+ /* We have dynamically allocated. Free the memory. */
+ PyMem_RawFree(l->p);
+ }
+ l->p = NULL;
+ l->size = -1;
+}
+
+static asdl_seq *
+ExprList_Finish(ExprList *l, PyArena *arena)
+{
+ asdl_seq *seq;
+
+ ExprList_check_invariants(l);
+
+ /* Allocate the asdl_seq and copy the expressions in to it. */
+ seq = _Py_asdl_seq_new(l->size, arena);
+ if (seq) {
+ Py_ssize_t i;
+ for (i = 0; i < l->size; i++)
+ asdl_seq_SET(seq, i, l->p[i]);
+ }
+ ExprList_Dealloc(l);
+ return seq;
+}
+
+/* The FstringParser is designed to add a mix of strings and
+ f-strings, and concat them together as needed. Ultimately, it
+ generates an expr_ty. */
+typedef struct {
+ PyObject *last_str;
+ ExprList expr_list;
+} FstringParser;
+
+#ifdef NDEBUG
+#define FstringParser_check_invariants(state)
+#else
+static void
+FstringParser_check_invariants(FstringParser *state)
+{
+ if (state->last_str)
+ assert(PyUnicode_CheckExact(state->last_str));
+ ExprList_check_invariants(&state->expr_list);
+}
+#endif
+
+static void
+FstringParser_Init(FstringParser *state)
+{
+ state->last_str = NULL;
+ ExprList_Init(&state->expr_list);
+ FstringParser_check_invariants(state);
+}
+
+static void
+FstringParser_Dealloc(FstringParser *state)
+{
+ FstringParser_check_invariants(state);
+
+ Py_XDECREF(state->last_str);
+ ExprList_Dealloc(&state->expr_list);
+}
+
+/* Make a Str node, but decref the PyUnicode object being added. */
+static expr_ty
+make_str_node_and_del(PyObject **str, struct compiling *c, const node* n)
+{
+ PyObject *s = *str;
+ *str = NULL;
+ assert(PyUnicode_CheckExact(s));
+ if (PyArena_AddPyObject(c->c_arena, s) < 0) {
+ Py_DECREF(s);
+ return NULL;
+ }
+ return Str(s, LINENO(n), n->n_col_offset, c->c_arena);
+}
+
+/* Add a non-f-string (that is, a regular literal string). str is
+ decref'd. */
+static int
+FstringParser_ConcatAndDel(FstringParser *state, PyObject *str)
+{
+ FstringParser_check_invariants(state);
+
+ assert(PyUnicode_CheckExact(str));
+
+ if (PyUnicode_GET_LENGTH(str) == 0) {
+ Py_DECREF(str);
+ return 0;
+ }
+
+ if (!state->last_str) {
+ /* We didn't have a string before, so just remember this one. */
+ state->last_str = str;
+ } else {
+ /* Concatenate this with the previous string. */
+ PyUnicode_AppendAndDel(&state->last_str, str);
+ if (!state->last_str)
+ return -1;
+ }
+ FstringParser_check_invariants(state);
+ return 0;
+}
+
+/* Parse an f-string. The f-string is in str, starting at ofs, with no 'f'
+ or quotes. str is not decref'd, since we don't know if it's used elsewhere.
+ And if we're only looking at a part of a string, then decref'ing is
+ definitely not the right thing to do! */
+static int
+FstringParser_ConcatFstring(FstringParser *state, PyObject *str,
+ Py_ssize_t *ofs, int recurse_lvl,
+ struct compiling *c, const node *n)
+{
+ FstringParser_check_invariants(state);
+
+ /* Parse the f-string. */
+ while (1) {
+ PyObject *literal = NULL;
+ expr_ty expression = NULL;
+
+ /* If there's a zero length literal in front of the
+ expression, literal will be NULL. If we're at the end of
+ the f-string, expression will be NULL (unless result == 1,
+ see below). */
+ int result = fstring_find_literal_and_expr(str, ofs, recurse_lvl,
+ &literal, &expression,
+ c, n);
+ if (result < 0)
+ return -1;
+
+ /* Add the literal, if any. */
+ if (!literal) {
+ /* Do nothing. Just leave last_str alone (and possibly
+ NULL). */
+ } else if (!state->last_str) {
+ state->last_str = literal;
+ literal = NULL;
+ } else {
+ /* We have a literal, concatenate it. */
+ assert(PyUnicode_GET_LENGTH(literal) != 0);
+ if (FstringParser_ConcatAndDel(state, literal) < 0)
+ return -1;
+ literal = NULL;
+ }
+ assert(!state->last_str ||
+ PyUnicode_GET_LENGTH(state->last_str) != 0);
+
+ /* We've dealt with the literal now. It can't be leaked on further
+ errors. */
+ assert(literal == NULL);
+
+ /* See if we should just loop around to get the next literal
+ and expression, while ignoring the expression this
+ time. This is used for un-doubling braces, as an
+ optimization. */
+ if (result == 1)
+ continue;
+
+ if (!expression)
+ /* We're done with this f-string. */
+ break;
+
+ /* We know we have an expression. Convert any existing string
+ to a Str node. */
+ if (!state->last_str) {
+ /* Do nothing. No previous literal. */
+ } else {
+ /* Convert the existing last_str literal to a Str node. */
+ expr_ty str = make_str_node_and_del(&state->last_str, c, n);
+ if (!str || ExprList_Append(&state->expr_list, str) < 0)
+ return -1;
+ }
+
+ if (ExprList_Append(&state->expr_list, expression) < 0)
+ return -1;
+ }
+
+ assert(*ofs <= PyUnicode_GET_LENGTH(str));
+
+ /* If recurse_lvl is zero, then we must be at the end of the
+ string. Otherwise, we must be at a right brace. */
+
+ if (recurse_lvl == 0 && *ofs < PyUnicode_GET_LENGTH(str)) {
+ ast_error(c, n, "f-string: unexpected end of string");
+ return -1;
+ }
+ if (recurse_lvl != 0 && PyUnicode_READ_CHAR(str, *ofs) != '}') {
+ ast_error(c, n, "f-string: expecting '}'");
+ return -1;
+ }
+
+ FstringParser_check_invariants(state);
+ return 0;
+}
+
+/* Convert the partial state reflected in last_str and expr_list to an
+ expr_ty. The expr_ty can be a Str, or a JoinedStr. */
+static expr_ty
+FstringParser_Finish(FstringParser *state, struct compiling *c,
+ const node *n)
+{
+ asdl_seq *seq;
+
+ FstringParser_check_invariants(state);
+
+ /* If we're just a constant string with no expressions, return
+ that. */
+ if(state->expr_list.size == 0) {
+ if (!state->last_str) {
+ /* Create a zero length string. */
+ state->last_str = PyUnicode_FromStringAndSize(NULL, 0);
+ if (!state->last_str)
+ goto error;
+ }
+ return make_str_node_and_del(&state->last_str, c, n);
+ }
+
+ /* Create a Str node out of last_str, if needed. It will be the
+ last node in our expression list. */
+ if (state->last_str) {
+ expr_ty str = make_str_node_and_del(&state->last_str, c, n);
+ if (!str || ExprList_Append(&state->expr_list, str) < 0)
+ goto error;
+ }
+ /* This has already been freed. */
+ assert(state->last_str == NULL);
+
+ seq = ExprList_Finish(&state->expr_list, c->c_arena);
+ if (!seq)
+ goto error;
+
+ /* If there's only one expression, return it. Otherwise, we need
+ to join them together. */
+ if (seq->size == 1)
+ return seq->elements[0];
+
+ return JoinedStr(seq, LINENO(n), n->n_col_offset, c->c_arena);
+
+error:
+ FstringParser_Dealloc(state);
+ return NULL;
+}
+
+/* Given an f-string (with no 'f' or quotes) that's in str starting at
+ ofs, parse it into an expr_ty. Return NULL on error. Does not
+ decref str. */
+static expr_ty
+fstring_parse(PyObject *str, Py_ssize_t *ofs, int recurse_lvl,
+ struct compiling *c, const node *n)
+{
+ FstringParser state;
+
+ FstringParser_Init(&state);
+ if (FstringParser_ConcatFstring(&state, str, ofs, recurse_lvl,
+ c, n) < 0) {
+ FstringParser_Dealloc(&state);
+ return NULL;
+ }
+
+ return FstringParser_Finish(&state, c, n);
+}
+
+/* n is a Python string literal, including the bracketing quote
+ characters, and r, b, u, &/or f prefixes (if any), and embedded
+ escape sequences (if any). parsestr parses it, and returns the
+ decoded Python string object. If the string is an f-string, set
+ *fmode and return the unparsed string object.
+*/
static PyObject *
-parsestr(struct compiling *c, const node *n, int *bytesmode)
+parsestr(struct compiling *c, const node *n, int *bytesmode, int *fmode)
{
size_t len;
const char *s = STR(n);
int quote = Py_CHARMASK(*s);
int rawmode = 0;
- int need_encoding;
if (Py_ISALPHA(quote)) {
while (!*bytesmode || !rawmode) {
if (quote == 'b' || quote == 'B') {
@@ -4024,15 +4921,24 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
quote = *++s;
rawmode = 1;
}
+ else if (quote == 'f' || quote == 'F') {
+ quote = *++s;
+ *fmode = 1;
+ }
else {
break;
}
}
}
+ if (*fmode && *bytesmode) {
+ PyErr_BadInternalCall();
+ return NULL;
+ }
if (quote != '\'' && quote != '\"') {
PyErr_BadInternalCall();
return NULL;
}
+ /* Skip the leading quote char. */
s++;
len = strlen(s);
if (len > INT_MAX) {
@@ -4041,22 +4947,26 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
return NULL;
}
if (s[--len] != quote) {
+ /* Last quote char must match the first. */
PyErr_BadInternalCall();
return NULL;
}
if (len >= 4 && s[0] == quote && s[1] == quote) {
+ /* A triple quoted string. We've already skipped one quote at
+ the start and one at the end of the string. Now skip the
+ two at the start. */
s += 2;
len -= 2;
+ /* And check that the last two match. */
if (s[--len] != quote || s[--len] != quote) {
PyErr_BadInternalCall();
return NULL;
}
}
- if (!*bytesmode && !rawmode) {
- return decode_unicode(c, s, len, rawmode, c->c_encoding);
- }
+ /* Avoid invoking escape decoding routines if possible. */
+ rawmode = rawmode || strchr(s, '\\') == NULL;
if (*bytesmode) {
- /* Disallow non-ascii characters (but not escapes) */
+ /* Disallow non-ASCII characters. */
const char *ch;
for (ch = s; *ch; ch++) {
if (Py_CHARMASK(*ch) >= 0x80) {
@@ -4065,71 +4975,93 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)
return NULL;
}
}
- }
- need_encoding = (!*bytesmode && c->c_encoding != NULL &&
- strcmp(c->c_encoding, "utf-8") != 0);
- if (rawmode || strchr(s, '\\') == NULL) {
- if (need_encoding) {
- PyObject *v, *u = PyUnicode_DecodeUTF8(s, len, NULL);
- if (u == NULL || !*bytesmode)
- return u;
- v = PyUnicode_AsEncodedString(u, c->c_encoding, NULL);
- Py_DECREF(u);
- return v;
- } else if (*bytesmode) {
+ if (rawmode)
return PyBytes_FromStringAndSize(s, len);
- } else if (strcmp(c->c_encoding, "utf-8") == 0) {
- return PyUnicode_FromStringAndSize(s, len);
- } else {
- return PyUnicode_DecodeLatin1(s, len, NULL);
- }
+ else
+ return PyBytes_DecodeEscape(s, len, NULL, /* ignored */ 0, NULL);
+ } else {
+ if (rawmode)
+ return PyUnicode_DecodeUTF8Stateful(s, len, NULL, NULL);
+ else
+ return decode_unicode_with_escapes(c, s, len);
}
- return PyBytes_DecodeEscape(s, len, NULL, 1,
- need_encoding ? c->c_encoding : NULL);
}
-/* Build a Python string object out of a STRING+ atom. This takes care of
- * compile-time literal catenation, calling parsestr() on each piece, and
- * pasting the intermediate results together.
- */
-static PyObject *
-parsestrplus(struct compiling *c, const node *n, int *bytesmode)
+/* Accepts a STRING+ atom, and produces an expr_ty node. Run through
+ each STRING atom, and process it as needed. For bytes, just
+ concatenate them together, and the result will be a Bytes node. For
+ normal strings and f-strings, concatenate them together. The result
+ will be a Str node if there were no f-strings; a FormattedValue
+ node if there's just an f-string (with no leading or trailing
+ literals), or a JoinedStr node if there are multiple f-strings or
+ any literals involved. */
+static expr_ty
+parsestrplus(struct compiling *c, const node *n)
{
- PyObject *v;
+ int bytesmode = 0;
+ PyObject *bytes_str = NULL;
int i;
- REQ(CHILD(n, 0), STRING);
- v = parsestr(c, CHILD(n, 0), bytesmode);
- if (v != NULL) {
- /* String literal concatenation */
- for (i = 1; i < NCH(n); i++) {
- PyObject *s;
- int subbm = 0;
- s = parsestr(c, CHILD(n, i), &subbm);
- if (s == NULL)
- goto onError;
- if (*bytesmode != subbm) {
- ast_error(c, n, "cannot mix bytes and nonbytes literals");
- Py_DECREF(s);
- goto onError;
- }
- if (PyBytes_Check(v) && PyBytes_Check(s)) {
- PyBytes_ConcatAndDel(&v, s);
- if (v == NULL)
- goto onError;
- }
- else {
- PyObject *temp = PyUnicode_Concat(v, s);
- Py_DECREF(s);
- Py_DECREF(v);
- v = temp;
- if (v == NULL)
- goto onError;
+
+ FstringParser state;
+ FstringParser_Init(&state);
+
+ for (i = 0; i < NCH(n); i++) {
+ int this_bytesmode = 0;
+ int this_fmode = 0;
+ PyObject *s;
+
+ REQ(CHILD(n, i), STRING);
+ s = parsestr(c, CHILD(n, i), &this_bytesmode, &this_fmode);
+ if (!s)
+ goto error;
+
+ /* Check that we're not mixing bytes with unicode. */
+ if (i != 0 && bytesmode != this_bytesmode) {
+ ast_error(c, n, "cannot mix bytes and nonbytes literals");
+ Py_DECREF(s);
+ goto error;
+ }
+ bytesmode = this_bytesmode;
+
+ assert(bytesmode ? PyBytes_CheckExact(s) : PyUnicode_CheckExact(s));
+
+ if (bytesmode) {
+ /* For bytes, concat as we go. */
+ if (i == 0) {
+ /* First time, just remember this value. */
+ bytes_str = s;
+ } else {
+ PyBytes_ConcatAndDel(&bytes_str, s);
+ if (!bytes_str)
+ goto error;
}
+ } else if (this_fmode) {
+ /* This is an f-string. Concatenate and decref it. */
+ Py_ssize_t ofs = 0;
+ int result = FstringParser_ConcatFstring(&state, s, &ofs, 0, c, n);
+ Py_DECREF(s);
+ if (result < 0)
+ goto error;
+ } else {
+ /* This is a regular string. Concatenate it. */
+ if (FstringParser_ConcatAndDel(&state, s) < 0)
+ goto error;
}
}
- return v;
+ if (bytesmode) {
+ /* Just return the bytes object and we're done. */
+ if (PyArena_AddPyObject(c->c_arena, bytes_str) < 0)
+ goto error;
+ return Bytes(bytes_str, LINENO(n), n->n_col_offset, c->c_arena);
+ }
+
+ /* We're not a bytes string, bytes_str should never have been set. */
+ assert(bytes_str == NULL);
+
+ return FstringParser_Finish(&state, c, n);
- onError:
- Py_XDECREF(v);
+error:
+ Py_XDECREF(bytes_str);
+ FstringParser_Dealloc(&state);
return NULL;
}
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index a06ef61..31d9e0e 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -331,7 +331,7 @@ builtin_any(PyModuleDef *module, PyObject *iterable)
Py_DECREF(it);
return NULL;
}
- if (cmp == 1) {
+ if (cmp > 0) {
Py_DECREF(it);
Py_RETURN_TRUE;
}
@@ -469,6 +469,7 @@ filter_next(filterobject *lz)
PyObject *it = lz->it;
long ok;
PyObject *(*iternext)(PyObject *);
+ int checktrue = lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type;
iternext = *Py_TYPE(it)->tp_iternext;
for (;;) {
@@ -476,12 +477,11 @@ filter_next(filterobject *lz)
if (item == NULL)
return NULL;
- if (lz->func == Py_None || lz->func == (PyObject *)&PyBool_Type) {
+ if (checktrue) {
ok = PyObject_IsTrue(item);
} else {
PyObject *good;
- good = PyObject_CallFunctionObjArgs(lz->func,
- item, NULL);
+ good = PyObject_CallFunctionObjArgs(lz->func, item, NULL);
if (good == NULL) {
Py_DECREF(item);
return NULL;
@@ -1174,13 +1174,14 @@ map_next(mapobject *lz)
PyObject *result;
Py_ssize_t numargs, i;
- numargs = PyTuple_Size(lz->iters);
+ numargs = PyTuple_GET_SIZE(lz->iters);
argtuple = PyTuple_New(numargs);
if (argtuple == NULL)
return NULL;
for (i=0 ; i<numargs ; i++) {
- val = PyIter_Next(PyTuple_GET_ITEM(lz->iters, i));
+ PyObject *it = PyTuple_GET_ITEM(lz->iters, i);
+ val = Py_TYPE(it)->tp_iternext(it);
if (val == NULL) {
Py_DECREF(argtuple);
return NULL;
diff --git a/Python/ceval.c b/Python/ceval.c
index ee79c21..d69b8d6 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -125,7 +125,7 @@ static PyObject * load_args(PyObject ***, int);
#ifdef LLTRACE
static int lltrace;
-static int prtrace(PyObject *, char *);
+static int prtrace(PyObject *, const char *);
#endif
static int call_trace(Py_tracefunc, PyObject *,
PyThreadState *, PyFrameObject *,
@@ -2322,7 +2322,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
else {
v = PyObject_GetItem(locals, name);
- if (v == NULL && _PyErr_OCCURRED()) {
+ if (v == NULL) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
@@ -2362,26 +2362,33 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
PyObject *name = GETITEM(names, oparg);
PyObject *v;
if (PyDict_CheckExact(f->f_globals)
- && PyDict_CheckExact(f->f_builtins)) {
+ && PyDict_CheckExact(f->f_builtins))
+ {
v = _PyDict_LoadGlobal((PyDictObject *)f->f_globals,
(PyDictObject *)f->f_builtins,
name);
if (v == NULL) {
- if (!_PyErr_OCCURRED())
+ if (!_PyErr_OCCURRED()) {
+ /* _PyDict_LoadGlobal() returns NULL without raising
+ * an exception if the key doesn't exist */
format_exc_check_arg(PyExc_NameError,
NAME_ERROR_MSG, name);
+ }
goto error;
}
Py_INCREF(v);
}
else {
/* Slow-path if globals or builtins is not a dict */
+
+ /* namespace 1: globals */
v = PyObject_GetItem(f->f_globals, name);
if (v == NULL) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
+ /* namespace 2: builtins */
v = PyObject_GetItem(f->f_builtins, name);
if (v == NULL) {
if (PyErr_ExceptionMatches(PyExc_KeyError))
@@ -2441,7 +2448,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
else {
value = PyObject_GetItem(locals, name);
- if (value == NULL && PyErr_Occurred()) {
+ if (value == NULL) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
@@ -3381,6 +3388,64 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
+ TARGET(FORMAT_VALUE) {
+ /* Handles f-string value formatting. */
+ PyObject *result;
+ PyObject *fmt_spec;
+ PyObject *value;
+ PyObject *(*conv_fn)(PyObject *);
+ int which_conversion = oparg & FVC_MASK;
+ int have_fmt_spec = (oparg & FVS_MASK) == FVS_HAVE_SPEC;
+
+ fmt_spec = have_fmt_spec ? POP() : NULL;
+ value = POP();
+
+ /* See if any conversion is specified. */
+ switch (which_conversion) {
+ case FVC_STR: conv_fn = PyObject_Str; break;
+ case FVC_REPR: conv_fn = PyObject_Repr; break;
+ case FVC_ASCII: conv_fn = PyObject_ASCII; break;
+
+ /* Must be 0 (meaning no conversion), since only four
+ values are allowed by (oparg & FVC_MASK). */
+ default: conv_fn = NULL; break;
+ }
+
+ /* If there's a conversion function, call it and replace
+ value with that result. Otherwise, just use value,
+ without conversion. */
+ if (conv_fn != NULL) {
+ result = conv_fn(value);
+ Py_DECREF(value);
+ if (result == NULL) {
+ Py_XDECREF(fmt_spec);
+ goto error;
+ }
+ value = result;
+ }
+
+ /* If value is a unicode object, and there's no fmt_spec,
+ then we know the result of format(value) is value
+ itself. In that case, skip calling format(). I plan to
+ move this optimization in to PyObject_Format()
+ itself. */
+ if (PyUnicode_CheckExact(value) && fmt_spec == NULL) {
+ /* Do nothing, just transfer ownership to result. */
+ result = value;
+ } else {
+ /* Actually call format(). */
+ result = PyObject_Format(value, fmt_spec);
+ Py_DECREF(value);
+ Py_XDECREF(fmt_spec);
+ if (result == NULL) {
+ goto error;
+ }
+ }
+
+ PUSH(result);
+ DISPATCH();
+ }
+
TARGET(EXTENDED_ARG) {
opcode = NEXTOP();
oparg = oparg<<16 | NEXTARG();
@@ -4259,7 +4324,7 @@ Error:
#ifdef LLTRACE
static int
-prtrace(PyObject *v, char *str)
+prtrace(PyObject *v, const char *str)
{
printf("%s ", str);
if (PyObject_Print(v, stdout, 0) != 0)
diff --git a/Python/compile.c b/Python/compile.c
index 1e720ea..29a2ade 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -171,7 +171,6 @@ static int compiler_addop(struct compiler *, int);
static int compiler_addop_o(struct compiler *, int, PyObject *, PyObject *);
static int compiler_addop_i(struct compiler *, int, Py_ssize_t);
static int compiler_addop_j(struct compiler *, int, basicblock *, int);
-static basicblock *compiler_use_new_block(struct compiler *);
static int compiler_error(struct compiler *, const char *);
static int compiler_nameop(struct compiler *, identifier, expr_context_ty);
@@ -196,7 +195,7 @@ static int expr_constant(struct compiler *, expr_ty);
static int compiler_with(struct compiler *, stmt_ty, int);
static int compiler_async_with(struct compiler *, stmt_ty, int);
static int compiler_async_for(struct compiler *, stmt_ty);
-static int compiler_call_helper(struct compiler *c, Py_ssize_t n,
+static int compiler_call_helper(struct compiler *c, int n,
asdl_seq *args,
asdl_seq *keywords);
static int compiler_try_except(struct compiler *, stmt_ty);
@@ -477,9 +476,9 @@ compiler_unit_check(struct compiler_unit *u)
{
basicblock *block;
for (block = u->u_blocks; block != NULL; block = block->b_list) {
- assert((void *)block != (void *)0xcbcbcbcb);
- assert((void *)block != (void *)0xfbfbfbfb);
- assert((void *)block != (void *)0xdbdbdbdb);
+ assert((Py_uintptr_t)block != 0xcbcbcbcbU);
+ assert((Py_uintptr_t)block != 0xfbfbfbfbU);
+ assert((Py_uintptr_t)block != 0xdbdbdbdbU);
if (block->b_instr != NULL) {
assert(block->b_ialloc > 0);
assert(block->b_iused > 0);
@@ -523,6 +522,7 @@ compiler_enter_scope(struct compiler *c, identifier name,
int scope_type, void *key, int lineno)
{
struct compiler_unit *u;
+ basicblock *block;
u = (struct compiler_unit *)PyObject_Malloc(sizeof(
struct compiler_unit));
@@ -620,8 +620,11 @@ compiler_enter_scope(struct compiler *c, identifier name,
c->u = u;
c->c_nestlevel++;
- if (compiler_use_new_block(c) == NULL)
+
+ block = compiler_new_block(c);
+ if (block == NULL)
return 0;
+ c->u->u_curblock = block;
if (u->u_scope_type != COMPILER_SCOPE_MODULE) {
if (!compiler_set_qualname(c))
@@ -731,6 +734,7 @@ compiler_set_qualname(struct compiler *c)
return 1;
}
+
/* Allocate a new block and return a pointer to it.
Returns NULL on error.
*/
@@ -755,16 +759,6 @@ compiler_new_block(struct compiler *c)
}
static basicblock *
-compiler_use_new_block(struct compiler *c)
-{
- basicblock *block = compiler_new_block(c);
- if (block == NULL)
- return NULL;
- c->u->u_curblock = block;
- return block;
-}
-
-static basicblock *
compiler_next_block(struct compiler *c)
{
basicblock *block = compiler_new_block(c);
@@ -1066,6 +1060,10 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return 1;
case GET_YIELD_FROM_ITER:
return 0;
+ case FORMAT_VALUE:
+ /* If there's a fmt_spec on the stack, we go from 2->1,
+ else 1->1. */
+ return (oparg & FVS_MASK) == FVS_HAVE_SPEC ? -1 : 0;
default:
return PY_INVALID_STACK_EFFECT;
}
@@ -1165,10 +1163,14 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
struct instr *i;
int off;
- /* Integer arguments are limit to 16-bit. There is an extension for 32-bit
- integer arguments. */
- assert((-2147483647-1) <= oparg);
- assert(oparg <= 2147483647);
+ /* oparg value is unsigned, but a signed C int is usually used to store
+ it in the C code (like Python/ceval.c).
+
+ Limit to 32-bit signed C int (rather than INT_MAX) for portability.
+
+ The argument of a concrete bytecode instruction is limited to 16-bit.
+ EXTENDED_ARG is used for 32-bit arguments. */
+ assert(0 <= oparg && oparg <= 2147483647);
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
@@ -1203,22 +1205,12 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
return 1;
}
-/* The distinction between NEW_BLOCK and NEXT_BLOCK is subtle. (I'd
- like to find better names.) NEW_BLOCK() creates a new block and sets
- it as the current block. NEXT_BLOCK() also creates an implicit jump
- from the current block to the new block.
-*/
+/* NEXT_BLOCK() creates an implicit jump from the current block
+ to the new block.
-/* The returns inside these macros make it impossible to decref objects
- created in the local function. Local objects should use the arena.
+ The returns inside this macro make it impossible to decref objects
+ created in the local function. Local objects should use the arena.
*/
-
-
-#define NEW_BLOCK(C) { \
- if (compiler_use_new_block((C)) == NULL) \
- return 0; \
-}
-
#define NEXT_BLOCK(C) { \
if (compiler_next_block((C)) == NULL) \
return 0; \
@@ -1309,7 +1301,11 @@ compiler_isdocstring(stmt_ty s)
{
if (s->kind != Expr_kind)
return 0;
- return s->v.Expr.value->kind == Str_kind;
+ if (s->v.Expr.value->kind == Str_kind)
+ return 1;
+ if (s->v.Expr.value->kind == Constant_kind)
+ return PyUnicode_CheckExact(s->v.Expr.value->v.Constant.value);
+ return 0;
}
/* Compile a sequence of statements, checking for a docstring. */
@@ -1683,8 +1679,12 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
st = (stmt_ty)asdl_seq_GET(body, 0);
docstring = compiler_isdocstring(st);
- if (docstring && c->c_optimize < 2)
- first_const = st->v.Expr.value->v.Str.s;
+ if (docstring && c->c_optimize < 2) {
+ if (st->v.Expr.value->kind == Constant_kind)
+ first_const = st->v.Expr.value->v.Constant.value;
+ else
+ first_const = st->v.Expr.value->v.Str.s;
+ }
if (compiler_add_o(c, c->u->u_consts, first_const) < 0) {
compiler_exit_scope(c);
return 0;
@@ -2595,6 +2595,35 @@ compiler_assert(struct compiler *c, stmt_ty s)
}
static int
+compiler_visit_stmt_expr(struct compiler *c, expr_ty value)
+{
+ if (c->c_interactive && c->c_nestlevel <= 1) {
+ VISIT(c, expr, value);
+ ADDOP(c, PRINT_EXPR);
+ return 1;
+ }
+
+ switch (value->kind)
+ {
+ case Str_kind:
+ case Num_kind:
+ case Ellipsis_kind:
+ case Bytes_kind:
+ case NameConstant_kind:
+ case Constant_kind:
+ /* ignore constant statement */
+ return 1;
+
+ default:
+ break;
+ }
+
+ VISIT(c, expr, value);
+ ADDOP(c, POP_TOP);
+ return 1;
+}
+
+static int
compiler_visit_stmt(struct compiler *c, stmt_ty s)
{
Py_ssize_t i, n;
@@ -2664,16 +2693,7 @@ compiler_visit_stmt(struct compiler *c, stmt_ty s)
case Nonlocal_kind:
break;
case Expr_kind:
- if (c->c_interactive && c->c_nestlevel <= 1) {
- VISIT(c, expr, s->v.Expr.value);
- ADDOP(c, PRINT_EXPR);
- }
- else if (s->v.Expr.value->kind != Str_kind &&
- s->v.Expr.value->kind != Num_kind) {
- VISIT(c, expr, s->v.Expr.value);
- ADDOP(c, POP_TOP);
- }
- break;
+ return compiler_visit_stmt_expr(c, s->v.Expr.value);
case Pass_kind:
break;
case Break_kind:
@@ -3077,7 +3097,8 @@ compiler_set(struct compiler *c, expr_ty e)
static int
compiler_dict(struct compiler *c, expr_ty e)
{
- Py_ssize_t i, n, containers, elements;
+ Py_ssize_t i, n, elements;
+ int containers;
int is_unpacking = 0;
n = asdl_seq_LEN(e->v.Dict.values);
containers = 0;
@@ -3169,15 +3190,91 @@ compiler_call(struct compiler *c, expr_ty e)
e->v.Call.keywords);
}
+static int
+compiler_joined_str(struct compiler *c, expr_ty e)
+{
+ /* Concatenate parts of a string using ''.join(parts). There are
+ probably better ways of doing this.
+
+ This is used for constructs like "'x=' f'{42}'", which have to
+ be evaluated at compile time. */
+
+ static PyObject *empty_string;
+ static PyObject *join_string;
+
+ if (!empty_string) {
+ empty_string = PyUnicode_FromString("");
+ if (!empty_string)
+ return 0;
+ }
+ if (!join_string) {
+ join_string = PyUnicode_FromString("join");
+ if (!join_string)
+ return 0;
+ }
+
+ ADDOP_O(c, LOAD_CONST, empty_string, consts);
+ ADDOP_NAME(c, LOAD_ATTR, join_string, names);
+ VISIT_SEQ(c, expr, e->v.JoinedStr.values);
+ ADDOP_I(c, BUILD_LIST, asdl_seq_LEN(e->v.JoinedStr.values));
+ ADDOP_I(c, CALL_FUNCTION, 1);
+ return 1;
+}
+
+/* Used to implement f-strings. Format a single value. */
+static int
+compiler_formatted_value(struct compiler *c, expr_ty e)
+{
+ /* Our oparg encodes 2 pieces of information: the conversion
+ character, and whether or not a format_spec was provided.
+
+ Convert the conversion char to 2 bits:
+ None: 000 0x0 FVC_NONE
+ !s : 001 0x1 FVC_STR
+ !r : 010 0x2 FVC_REPR
+ !a : 011 0x3 FVC_ASCII
+
+ next bit is whether or not we have a format spec:
+ yes : 100 0x4
+ no : 000 0x0
+ */
+
+ int oparg;
+
+ /* Evaluate the expression to be formatted. */
+ VISIT(c, expr, e->v.FormattedValue.value);
+
+ switch (e->v.FormattedValue.conversion) {
+ case 's': oparg = FVC_STR; break;
+ case 'r': oparg = FVC_REPR; break;
+ case 'a': oparg = FVC_ASCII; break;
+ case -1: oparg = FVC_NONE; break;
+ default:
+ PyErr_SetString(PyExc_SystemError,
+ "Unrecognized conversion character");
+ return 0;
+ }
+ if (e->v.FormattedValue.format_spec) {
+ /* Evaluate the format spec, and update our opcode arg. */
+ VISIT(c, expr, e->v.FormattedValue.format_spec);
+ oparg |= FVS_HAVE_SPEC;
+ }
+
+ /* And push our opcode and oparg */
+ ADDOP_I(c, FORMAT_VALUE, oparg);
+ return 1;
+}
+
/* shared code between compiler_call and compiler_class */
static int
compiler_call_helper(struct compiler *c,
- Py_ssize_t n, /* Args already pushed */
+ int n, /* Args already pushed */
asdl_seq *args,
asdl_seq *keywords)
{
int code = 0;
- Py_ssize_t nelts, i, nseen, nkw;
+ Py_ssize_t nelts, i, nseen;
+ int nkw;
/* the number of tuples and dictionaries on the stack */
Py_ssize_t nsubargs = 0, nsubkwargs = 0;
@@ -3545,6 +3642,8 @@ expr_constant(struct compiler *c, expr_ty e)
switch (e->kind) {
case Ellipsis_kind:
return 1;
+ case Constant_kind:
+ return PyObject_IsTrue(e->v.Constant.value);
case Num_kind:
return PyObject_IsTrue(e->v.Num.n);
case Str_kind:
@@ -3588,9 +3687,9 @@ expr_constant(struct compiler *c, expr_ty e)
BLOCK
finally:
if an exception was raised:
- exc = copy of (exception, instance, traceback)
+ exc = copy of (exception, instance, traceback)
else:
- exc = (None, None, None)
+ exc = (None, None, None)
if not (await exit(*exc)):
raise
*/
@@ -3832,12 +3931,19 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
return compiler_compare(c, e);
case Call_kind:
return compiler_call(c, e);
+ case Constant_kind:
+ ADDOP_O(c, LOAD_CONST, e->v.Constant.value, consts);
+ break;
case Num_kind:
ADDOP_O(c, LOAD_CONST, e->v.Num.n, consts);
break;
case Str_kind:
ADDOP_O(c, LOAD_CONST, e->v.Str.s, consts);
break;
+ case JoinedStr_kind:
+ return compiler_joined_str(c, e);
+ case FormattedValue_kind:
+ return compiler_formatted_value(c, e);
case Bytes_kind:
ADDOP_O(c, LOAD_CONST, e->v.Bytes.s, consts);
break;
@@ -4329,7 +4435,6 @@ assemble_lnotab(struct assembler *a, struct instr *i)
d_lineno = i->i_lineno - a->a_lineno;
assert(d_bytecode >= 0);
- assert(d_lineno >= 0);
if(d_bytecode == 0 && d_lineno == 0)
return 1;
@@ -4359,9 +4464,21 @@ assemble_lnotab(struct assembler *a, struct instr *i)
d_bytecode -= ncodes * 255;
a->a_lnotab_off += ncodes * 2;
}
- assert(d_bytecode <= 255);
- if (d_lineno > 255) {
- int j, nbytes, ncodes = d_lineno / 255;
+ assert(0 <= d_bytecode && d_bytecode <= 255);
+
+ if (d_lineno < -128 || 127 < d_lineno) {
+ int j, nbytes, ncodes, k;
+ if (d_lineno < 0) {
+ k = -128;
+ /* use division on positive numbers */
+ ncodes = (-d_lineno) / 128;
+ }
+ else {
+ k = 127;
+ ncodes = d_lineno / 127;
+ }
+ d_lineno -= ncodes * k;
+ assert(ncodes >= 1);
nbytes = a->a_lnotab_off + 2 * ncodes;
len = PyBytes_GET_SIZE(a->a_lnotab);
if (nbytes >= len) {
@@ -4379,15 +4496,15 @@ assemble_lnotab(struct assembler *a, struct instr *i)
lnotab = (unsigned char *)
PyBytes_AS_STRING(a->a_lnotab) + a->a_lnotab_off;
*lnotab++ = d_bytecode;
- *lnotab++ = 255;
+ *lnotab++ = k;
d_bytecode = 0;
for (j = 1; j < ncodes; j++) {
*lnotab++ = 0;
- *lnotab++ = 255;
+ *lnotab++ = k;
}
- d_lineno -= ncodes * 255;
a->a_lnotab_off += ncodes * 2;
}
+ assert(-128 <= d_lineno && d_lineno <= 127);
len = PyBytes_GET_SIZE(a->a_lnotab);
if (a->a_lnotab_off + 2 >= len) {
@@ -4745,4 +4862,3 @@ PyAST_Compile(mod_ty mod, const char *filename, PyCompilerFlags *flags,
{
return PyAST_CompileEx(mod, filename, flags, -1, arena);
}
-
diff --git a/Python/dtoa.c b/Python/dtoa.c
index 3da546e..e0665b6 100644
--- a/Python/dtoa.c
+++ b/Python/dtoa.c
@@ -747,7 +747,7 @@ pow5mult(Bigint *b, int k)
{
Bigint *b1, *p5, *p51;
int i;
- static int p05[3] = { 5, 25, 125 };
+ static const int p05[3] = { 5, 25, 125 };
if ((i = k & 3)) {
b = multadd(b, p05[i-1], 0);
@@ -803,7 +803,7 @@ pow5mult(Bigint *b, int k)
{
Bigint *b1, *p5, *p51;
int i;
- static int p05[3] = { 5, 25, 125 };
+ static const int p05[3] = { 5, 25, 125 };
if ((i = k & 3)) {
b = multadd(b, p05[i-1], 0);
@@ -2315,7 +2315,7 @@ rv_alloc(int i)
}
static char *
-nrv_alloc(char *s, char **rve, int n)
+nrv_alloc(const char *s, char **rve, int n)
{
char *rv, *t;
diff --git a/Python/dynload_win.c b/Python/dynload_win.c
index f2c796e..05050cf 100644
--- a/Python/dynload_win.c
+++ b/Python/dynload_win.c
@@ -24,12 +24,10 @@ void _Py_DeactivateActCtx(ULONG_PTR cookie);
#define PYD_DEBUG_SUFFIX ""
#endif
-#define STRINGIZE2(x) #x
-#define STRINGIZE(x) STRINGIZE2(x)
#ifdef PYD_PLATFORM_TAG
-#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd"
+#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd"
#else
-#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) ".pyd"
+#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) ".pyd"
#endif
#define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd"
@@ -43,7 +41,7 @@ const char *_PyImport_DynLoadFiletab[] = {
/* Case insensitive string compare, to avoid any dependencies on particular
C RTL implementations */
-static int strcasecmp (char *string1, char *string2)
+static int strcasecmp (const char *string1, const char *string2)
{
int first, second;
diff --git a/Python/fileutils.c b/Python/fileutils.c
index 06d632a..a710c99 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -683,6 +683,10 @@ _Py_fstat(int fd, struct _Py_stat_struct *status)
{
int res;
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
Py_BEGIN_ALLOW_THREADS
res = _Py_fstat_noraise(fd, status);
Py_END_ALLOW_THREADS
@@ -1164,6 +1168,10 @@ _Py_read(int fd, void *buf, size_t count)
int err;
int async_err = 0;
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
/* _Py_read() must not be called with an exception set, otherwise the
* caller may think that read() was interrupted by a signal and the signal
* handler raised an exception. */
@@ -1319,6 +1327,10 @@ _Py_write_impl(int fd, const void *buf, size_t count, int gil_held)
Py_ssize_t
_Py_write(int fd, const void *buf, size_t count)
{
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
/* _Py_write() must not be called with an exception set, otherwise the
* caller may think that write() was interrupted by a signal and the signal
* handler raised an exception. */
@@ -1468,6 +1480,10 @@ _Py_dup(int fd)
DWORD ftype;
#endif
+#ifdef WITH_THREAD
+ assert(PyGILState_Check());
+#endif
+
if (!_PyVerify_fd(fd)) {
PyErr_SetFromErrno(PyExc_OSError);
return -1;
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
index 056bb76..a428fbe 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -656,7 +656,7 @@ fill_number(_PyUnicodeWriter *writer, const NumberFieldWidths *spec,
return 0;
}
-static char no_grouping[1] = {CHAR_MAX};
+static const char no_grouping[1] = {CHAR_MAX};
/* Find the decimal point character(s?), thousands_separator(s?), and
grouping description, either for the current locale if type is
diff --git a/Python/frozenmain.c b/Python/frozenmain.c
index de8bd35..769b33d 100644
--- a/Python/frozenmain.c
+++ b/Python/frozenmain.c
@@ -99,7 +99,9 @@ Py_FrozenMain(int argc, char **argv)
#ifdef MS_WINDOWS
PyWinFreeze_ExeTerm();
#endif
- Py_Finalize();
+ if (Py_FinalizeEx() < 0) {
+ sts = 120;
+ }
error:
PyMem_RawFree(argv_copy);
diff --git a/Python/future.c b/Python/future.c
index 163f87f..75f2107 100644
--- a/Python/future.c
+++ b/Python/future.c
@@ -79,7 +79,10 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, PyObject *filename)
i = 0;
first = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i);
- if (first->kind == Expr_kind && first->v.Expr.value->kind == Str_kind)
+ if (first->kind == Expr_kind
+ && (first->v.Expr.value->kind == Str_kind
+ || (first->v.Expr.value->kind == Constant_kind
+ && PyUnicode_CheckExact(first->v.Expr.value->v.Constant.value))))
i++;
diff --git a/Python/getargs.c b/Python/getargs.c
index 8aab067..05ec27b 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -20,12 +20,12 @@ int PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
#ifdef HAVE_DECLSPEC_DLL
/* Export functions */
-PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, char *, ...);
-PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, char *, ...);
+PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, const char *, ...);
+PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, const char *, ...);
PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
const char *, char **, ...);
PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
-PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, char *, va_list);
+PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, const char *, va_list);
PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
const char *, char **, va_list);
#endif
@@ -56,18 +56,18 @@ typedef struct {
/* Forward */
static int vgetargs1(PyObject *, const char *, va_list *, int);
static void seterror(Py_ssize_t, const char *, int *, const char *, const char *);
-static char *convertitem(PyObject *, const char **, va_list *, int, int *,
- char *, size_t, freelist_t *);
-static char *converttuple(PyObject *, const char **, va_list *, int,
- int *, char *, size_t, int, freelist_t *);
-static char *convertsimple(PyObject *, const char **, va_list *, int, char *,
- size_t, freelist_t *);
-static Py_ssize_t convertbuffer(PyObject *, void **p, char **);
-static int getbuffer(PyObject *, Py_buffer *, char**);
+static const char *convertitem(PyObject *, const char **, va_list *, int, int *,
+ char *, size_t, freelist_t *);
+static const char *converttuple(PyObject *, const char **, va_list *, int,
+ int *, char *, size_t, int, freelist_t *);
+static const char *convertsimple(PyObject *, const char **, va_list *, int,
+ char *, size_t, freelist_t *);
+static Py_ssize_t convertbuffer(PyObject *, void **p, const char **);
+static int getbuffer(PyObject *, Py_buffer *, const char**);
static int vgetargskeywords(PyObject *, PyObject *,
const char *, char **, va_list *, int);
-static char *skipitem(const char **, va_list *, int);
+static const char *skipitem(const char **, va_list *, int);
int
PyArg_Parse(PyObject *args, const char *format, ...)
@@ -82,7 +82,7 @@ PyArg_Parse(PyObject *args, const char *format, ...)
}
int
-_PyArg_Parse_SizeT(PyObject *args, char *format, ...)
+_PyArg_Parse_SizeT(PyObject *args, const char *format, ...)
{
int retval;
va_list va;
@@ -107,7 +107,7 @@ PyArg_ParseTuple(PyObject *args, const char *format, ...)
}
int
-_PyArg_ParseTuple_SizeT(PyObject *args, char *format, ...)
+_PyArg_ParseTuple_SizeT(PyObject *args, const char *format, ...)
{
int retval;
va_list va;
@@ -130,7 +130,7 @@ PyArg_VaParse(PyObject *args, const char *format, va_list va)
}
int
-_PyArg_VaParse_SizeT(PyObject *args, char *format, va_list va)
+_PyArg_VaParse_SizeT(PyObject *args, const char *format, va_list va)
{
va_list lva;
@@ -208,7 +208,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
int endfmt = 0;
const char *formatsave = format;
Py_ssize_t i, len;
- char *msg;
+ const char *msg;
int compat = flags & FLAG_COMPAT;
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
freelist_t freelist;
@@ -394,7 +394,12 @@ seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
PyOS_snprintf(p, sizeof(buf) - (p - buf), " %.256s", msg);
message = buf;
}
- PyErr_SetString(PyExc_TypeError, message);
+ if (msg[0] == '(') {
+ PyErr_SetString(PyExc_SystemError, message);
+ }
+ else {
+ PyErr_SetString(PyExc_TypeError, message);
+ }
}
@@ -416,7 +421,7 @@ seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
and msgbuf is returned.
*/
-static char *
+static const char *
converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
int *levels, char *msgbuf, size_t bufsize, int toplevel,
freelist_t *freelist)
@@ -474,7 +479,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
format = *p_format;
for (i = 0; i < n; i++) {
- char *msg;
+ const char *msg;
PyObject *item;
item = PySequence_GetItem(arg, i);
if (item == NULL) {
@@ -501,11 +506,11 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
/* Convert a single item. */
-static char *
+static const char *
convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
int *levels, char *msgbuf, size_t bufsize, freelist_t *freelist)
{
- char *msg;
+ const char *msg;
const char *format = *p_format;
if (*format == '(' /* ')' */) {
@@ -530,7 +535,7 @@ convertitem(PyObject *arg, const char **p_format, va_list *p_va, int flags,
/* Format an error message generated by convertsimple(). */
-static char *
+static const char *
converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize)
{
assert(expected != NULL);
@@ -572,7 +577,7 @@ float_argument_error(PyObject *arg)
When you add new format codes, please don't forget poor skipitem() below.
*/
-static char *
+static const char *
convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
char *msgbuf, size_t bufsize, freelist_t *freelist)
{
@@ -857,7 +862,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
case 'y': {/* any bytes-like object */
void **p = (void **)va_arg(*p_va, char **);
- char *buf;
+ const char *buf;
Py_ssize_t count;
if (*format == '*') {
if (getbuffer(arg, (Py_buffer*)p, &buf) < 0)
@@ -904,7 +909,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
PyBuffer_FillInfo(p, arg, sarg, len, 1, 0);
}
else { /* any bytes-like object */
- char *buf;
+ const char *buf;
if (getbuffer(arg, p, &buf) < 0)
return converterr(buf, arg, msgbuf, bufsize);
}
@@ -934,7 +939,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
}
else { /* read-only bytes-like object */
/* XXX Really? */
- char *buf;
+ const char *buf;
Py_ssize_t count = convertbuffer(arg, p, &buf);
if (count < 0)
return converterr(buf, arg, msgbuf, bufsize);
@@ -1129,7 +1134,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
} else {
if (size + 1 > BUFFER_LEN) {
Py_DECREF(s);
- PyErr_Format(PyExc_TypeError,
+ PyErr_Format(PyExc_ValueError,
"encoded string too long "
"(%zd, maximum length %zd)",
(Py_ssize_t)size, (Py_ssize_t)(BUFFER_LEN-1));
@@ -1283,7 +1288,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
}
static Py_ssize_t
-convertbuffer(PyObject *arg, void **p, char **errmsg)
+convertbuffer(PyObject *arg, void **p, const char **errmsg)
{
PyBufferProcs *pb = Py_TYPE(arg)->tp_as_buffer;
Py_ssize_t count;
@@ -1305,7 +1310,7 @@ convertbuffer(PyObject *arg, void **p, char **errmsg)
}
static int
-getbuffer(PyObject *arg, Py_buffer *view, char **errmsg)
+getbuffer(PyObject *arg, Py_buffer *view, const char **errmsg)
{
if (PyObject_GetBuffer(arg, view, PyBUF_SIMPLE) != 0) {
*errmsg = "bytes-like object";
@@ -1507,7 +1512,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
keyword = kwlist[i];
if (*format == '|') {
if (min != INT_MAX) {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_SystemError,
"Invalid format string (| specified twice)");
return cleanreturn(0, &freelist);
}
@@ -1516,14 +1521,14 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
format++;
if (max != INT_MAX) {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_SystemError,
"Invalid format string ($ before |)");
return cleanreturn(0, &freelist);
}
}
if (*format == '$') {
if (max != INT_MAX) {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_SystemError,
"Invalid format string ($ specified twice)");
return cleanreturn(0, &freelist);
}
@@ -1541,7 +1546,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
}
}
if (IS_END_OF_FORMAT(*format)) {
- PyErr_Format(PyExc_RuntimeError,
+ PyErr_Format(PyExc_SystemError,
"More keyword list entries (%d) than "
"format specifiers (%d)", len, i);
return cleanreturn(0, &freelist);
@@ -1593,14 +1598,14 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
* keyword args */
msg = skipitem(&format, p_va, flags);
if (msg) {
- PyErr_Format(PyExc_RuntimeError, "%s: '%s'", msg,
+ PyErr_Format(PyExc_SystemError, "%s: '%s'", msg,
format);
return cleanreturn(0, &freelist);
}
}
if (!IS_END_OF_FORMAT(*format) && (*format != '|') && (*format != '$')) {
- PyErr_Format(PyExc_RuntimeError,
+ PyErr_Format(PyExc_SystemError,
"more argument specifiers than keyword list entries "
"(remaining format:'%s')", format);
return cleanreturn(0, &freelist);
@@ -1637,7 +1642,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
}
-static char *
+static const char *
skipitem(const char **p_format, va_list *p_va, int flags)
{
const char *format = *p_format;
@@ -1730,7 +1735,7 @@ skipitem(const char **p_format, va_list *p_va, int flags)
case '(': /* bypass tuple, not handled at all previously */
{
- char *msg;
+ const char *msg;
for (;;) {
if (*format==')')
break;
@@ -1766,16 +1771,9 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
PyObject **o;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
- va_start(vargs, max);
-#else
- va_start(vargs);
-#endif
-
assert(min >= 0);
assert(min <= max);
if (!PyTuple_Check(args)) {
- va_end(vargs);
PyErr_SetString(PyExc_SystemError,
"PyArg_UnpackTuple() argument list is not a tuple");
return 0;
@@ -1793,9 +1791,10 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
"unpacked tuple should have %s%zd elements,"
" but has %zd",
(min == max ? "" : "at least "), min, l);
- va_end(vargs);
return 0;
}
+ if (l == 0)
+ return 1;
if (l > max) {
if (name != NULL)
PyErr_Format(
@@ -1808,9 +1807,14 @@ PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t m
"unpacked tuple should have %s%zd elements,"
" but has %zd",
(min == max ? "" : "at most "), max, l);
- va_end(vargs);
return 0;
}
+
+#ifdef HAVE_STDARG_PROTOTYPES
+ va_start(vargs, max);
+#else
+ va_start(vargs);
+#endif
for (i = 0; i < l; i++) {
o = va_arg(vargs, PyObject **);
*o = PyTuple_GET_ITEM(args, i);
diff --git a/Python/graminit.c b/Python/graminit.c
index 8212b2a..354dc12 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -204,11 +204,13 @@ static arc arcs_9_6[2] = {
{32, 7},
{0, 6},
};
-static arc arcs_9_7[2] = {
+static arc arcs_9_7[3] = {
{30, 12},
{34, 3},
+ {0, 7},
};
-static arc arcs_9_8[1] = {
+static arc arcs_9_8[2] = {
+ {32, 13},
{0, 8},
};
static arc arcs_9_9[2] = {
@@ -221,35 +223,39 @@ static arc arcs_9_10[3] = {
{0, 10},
};
static arc arcs_9_11[3] = {
- {30, 13},
- {32, 14},
+ {30, 14},
+ {32, 15},
{0, 11},
};
static arc arcs_9_12[3] = {
{32, 7},
- {31, 15},
+ {31, 16},
{0, 12},
};
-static arc arcs_9_13[2] = {
- {32, 14},
+static arc arcs_9_13[1] = {
{0, 13},
};
static arc arcs_9_14[2] = {
- {30, 16},
+ {32, 15},
+ {0, 14},
+};
+static arc arcs_9_15[3] = {
+ {30, 17},
{34, 3},
+ {0, 15},
};
-static arc arcs_9_15[1] = {
+static arc arcs_9_16[1] = {
{26, 6},
};
-static arc arcs_9_16[3] = {
- {32, 14},
- {31, 17},
- {0, 16},
+static arc arcs_9_17[3] = {
+ {32, 15},
+ {31, 18},
+ {0, 17},
};
-static arc arcs_9_17[1] = {
- {26, 13},
+static arc arcs_9_18[1] = {
+ {26, 14},
};
-static state states_9[18] = {
+static state states_9[19] = {
{3, arcs_9_0},
{3, arcs_9_1},
{3, arcs_9_2},
@@ -257,17 +263,18 @@ static state states_9[18] = {
{1, arcs_9_4},
{4, arcs_9_5},
{2, arcs_9_6},
- {2, arcs_9_7},
- {1, arcs_9_8},
+ {3, arcs_9_7},
+ {2, arcs_9_8},
{2, arcs_9_9},
{3, arcs_9_10},
{3, arcs_9_11},
{3, arcs_9_12},
- {2, arcs_9_13},
+ {1, arcs_9_13},
{2, arcs_9_14},
- {1, arcs_9_15},
- {3, arcs_9_16},
- {1, arcs_9_17},
+ {3, arcs_9_15},
+ {1, arcs_9_16},
+ {3, arcs_9_17},
+ {1, arcs_9_18},
};
static arc arcs_10_0[1] = {
{23, 1},
@@ -319,11 +326,13 @@ static arc arcs_11_6[2] = {
{32, 7},
{0, 6},
};
-static arc arcs_11_7[2] = {
+static arc arcs_11_7[3] = {
{36, 12},
{34, 3},
+ {0, 7},
};
-static arc arcs_11_8[1] = {
+static arc arcs_11_8[2] = {
+ {32, 13},
{0, 8},
};
static arc arcs_11_9[2] = {
@@ -336,35 +345,39 @@ static arc arcs_11_10[3] = {
{0, 10},
};
static arc arcs_11_11[3] = {
- {36, 13},
- {32, 14},
+ {36, 14},
+ {32, 15},
{0, 11},
};
static arc arcs_11_12[3] = {
{32, 7},
- {31, 15},
+ {31, 16},
{0, 12},
};
-static arc arcs_11_13[2] = {
- {32, 14},
+static arc arcs_11_13[1] = {
{0, 13},
};
static arc arcs_11_14[2] = {
- {36, 16},
+ {32, 15},
+ {0, 14},
+};
+static arc arcs_11_15[3] = {
+ {36, 17},
{34, 3},
+ {0, 15},
};
-static arc arcs_11_15[1] = {
+static arc arcs_11_16[1] = {
{26, 6},
};
-static arc arcs_11_16[3] = {
- {32, 14},
- {31, 17},
- {0, 16},
+static arc arcs_11_17[3] = {
+ {32, 15},
+ {31, 18},
+ {0, 17},
};
-static arc arcs_11_17[1] = {
- {26, 13},
+static arc arcs_11_18[1] = {
+ {26, 14},
};
-static state states_11[18] = {
+static state states_11[19] = {
{3, arcs_11_0},
{3, arcs_11_1},
{3, arcs_11_2},
@@ -372,17 +385,18 @@ static state states_11[18] = {
{1, arcs_11_4},
{4, arcs_11_5},
{2, arcs_11_6},
- {2, arcs_11_7},
- {1, arcs_11_8},
+ {3, arcs_11_7},
+ {2, arcs_11_8},
{2, arcs_11_9},
{3, arcs_11_10},
{3, arcs_11_11},
{3, arcs_11_12},
- {2, arcs_11_13},
+ {1, arcs_11_13},
{2, arcs_11_14},
- {1, arcs_11_15},
- {3, arcs_11_16},
- {1, arcs_11_17},
+ {3, arcs_11_15},
+ {1, arcs_11_16},
+ {3, arcs_11_17},
+ {1, arcs_11_18},
};
static arc arcs_12_0[1] = {
{23, 1},
@@ -1879,11 +1893,11 @@ static dfa dfas[85] = {
"\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{264, "parameters", 0, 4, states_8,
"\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
- {265, "typedargslist", 0, 18, states_9,
+ {265, "typedargslist", 0, 19, states_9,
"\000\000\200\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{266, "tfpdef", 0, 4, states_10,
"\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
- {267, "varargslist", 0, 18, states_11,
+ {267, "varargslist", 0, 19, states_11,
"\000\000\200\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{268, "vfpdef", 0, 2, states_12,
"\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
diff --git a/Python/import.c b/Python/import.c
index 0b843da..0608924 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -320,7 +320,7 @@ PyImport_GetModuleDict(void)
/* List of names to clear in sys */
-static char* sys_deletes[] = {
+static const char * const sys_deletes[] = {
"path", "argv", "ps1", "ps2",
"last_type", "last_value", "last_traceback",
"path_hooks", "path_importer_cache", "meta_path",
@@ -330,7 +330,7 @@ static char* sys_deletes[] = {
NULL
};
-static char* sys_files[] = {
+static const char * const sys_files[] = {
"stdin", "__stdin__",
"stdout", "__stdout__",
"stderr", "__stderr__",
@@ -347,7 +347,7 @@ PyImport_Cleanup(void)
PyInterpreterState *interp = PyThreadState_GET()->interp;
PyObject *modules = interp->modules;
PyObject *weaklist = NULL;
- char **p;
+ const char * const *p;
if (modules == NULL)
return; /* Already done */
@@ -883,10 +883,8 @@ update_code_filenames(PyCodeObject *co, PyObject *oldname, PyObject *newname)
if (PyUnicode_Compare(co->co_filename, oldname))
return;
- tmp = co->co_filename;
- co->co_filename = newname;
- Py_INCREF(co->co_filename);
- Py_DECREF(tmp);
+ Py_INCREF(newname);
+ Py_XSETREF(co->co_filename, newname);
constants = co->co_consts;
n = PyTuple_GET_SIZE(constants);
@@ -1331,10 +1329,8 @@ remove_importlib_frames(void)
(always_trim ||
PyUnicode_CompareWithASCIIString(code->co_name,
remove_frames) == 0)) {
- PyObject *tmp = *outer_link;
- *outer_link = next;
Py_XINCREF(next);
- Py_DECREF(tmp);
+ Py_XSETREF(*outer_link, next);
prev_link = outer_link;
}
else {
@@ -1367,6 +1363,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
PyObject *final_mod = NULL;
PyObject *mod = NULL;
PyObject *package = NULL;
+ PyObject *spec = NULL;
PyObject *globals = NULL;
PyObject *fromlist = NULL;
PyInterpreterState *interp = PyThreadState_GET()->interp;
@@ -1423,23 +1420,63 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
}
else if (level > 0) {
package = _PyDict_GetItemId(globals, &PyId___package__);
+ spec = _PyDict_GetItemId(globals, &PyId___spec__);
+
if (package != NULL && package != Py_None) {
Py_INCREF(package);
if (!PyUnicode_Check(package)) {
PyErr_SetString(PyExc_TypeError, "package must be a string");
goto error;
}
+ else if (spec != NULL && spec != Py_None) {
+ int equal;
+ PyObject *parent = PyObject_GetAttrString(spec, "parent");
+ if (parent == NULL) {
+ goto error;
+ }
+
+ equal = PyObject_RichCompareBool(package, parent, Py_EQ);
+ Py_DECREF(parent);
+ if (equal < 0) {
+ goto error;
+ }
+ else if (equal == 0) {
+ if (PyErr_WarnEx(PyExc_ImportWarning,
+ "__package__ != __spec__.parent", 1) < 0) {
+ goto error;
+ }
+ }
+ }
+ }
+ else if (spec != NULL && spec != Py_None) {
+ package = PyObject_GetAttrString(spec, "parent");
+ if (package == NULL) {
+ goto error;
+ }
+ else if (!PyUnicode_Check(package)) {
+ PyErr_SetString(PyExc_TypeError,
+ "__spec__.parent must be a string");
+ goto error;
+ }
}
else {
+ if (PyErr_WarnEx(PyExc_ImportWarning,
+ "can't resolve package from __spec__ or __package__, "
+ "falling back on __name__ and __path__", 1) < 0) {
+ goto error;
+ }
+
package = _PyDict_GetItemId(globals, &PyId___name__);
if (package == NULL) {
PyErr_SetString(PyExc_KeyError, "'__name__' not in globals");
goto error;
}
- else if (!PyUnicode_Check(package)) {
+
+ Py_INCREF(package);
+ if (!PyUnicode_Check(package)) {
PyErr_SetString(PyExc_TypeError, "__name__ must be a string");
+ goto error;
}
- Py_INCREF(package);
if (_PyDict_GetItemId(globals, &PyId___path__) == NULL) {
PyObject *partition = NULL;
@@ -1458,7 +1495,12 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
}
}
- if (PyDict_GetItem(interp->modules, package) == NULL) {
+ if (PyUnicode_CompareWithASCIIString(package, "") == 0) {
+ PyErr_SetString(PyExc_ImportError,
+ "attempted relative import with no known parent package");
+ goto error;
+ }
+ else if (PyDict_GetItem(interp->modules, package) == NULL) {
PyErr_Format(PyExc_SystemError,
"Parent module %R not loaded, cannot perform relative "
"import", package);
diff --git a/Python/importdl.c b/Python/importdl.c
index 1aa585d..ac03289 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -23,8 +23,8 @@ extern dl_funcptr _PyImport_FindSharedFuncptr(const char *prefix,
const char *pathname, FILE *fp);
#endif
-static const char *ascii_only_prefix = "PyInit";
-static const char *nonascii_prefix = "PyInitU";
+static const char * const ascii_only_prefix = "PyInit";
+static const char * const nonascii_prefix = "PyInitU";
/* Get the variable part of a module's export symbol name.
* Returns a bytes instance. For non-ASCII-named modules, the name is
diff --git a/Python/importlib.h b/Python/importlib.h
index fab4358..685c51a 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -1057,7 +1057,7 @@ const unsigned char _Py_M__importlib[] = {
100,101,114,115,32,100,101,102,105,110,105,110,103,32,101,120,
101,99,95,109,111,100,117,108,101,40,41,32,109,117,115,116,
32,97,108,115,111,32,100,101,102,105,110,101,32,99,114,101,
- 97,116,101,95,109,111,100,117,108,101,40,41,90,10,115,116,
+ 97,116,101,95,109,111,100,117,108,101,40,41,218,10,115,116,
97,99,107,108,101,118,101,108,233,2,0,0,0,41,9,114,
4,0,0,0,114,99,0,0,0,114,138,0,0,0,218,9,
95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,218,
@@ -1067,7 +1067,7 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,114,10,0,0,0,114,11,0,0,0,218,16,109,
111,100,117,108,101,95,102,114,111,109,95,115,112,101,99,58,
2,0,0,115,20,0,0,0,0,3,6,1,18,3,21,1,
- 18,1,9,2,13,1,12,1,15,1,13,1,114,144,0,0,
+ 18,1,9,2,13,1,12,1,15,1,13,1,114,145,0,0,
0,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,
0,0,67,0,0,0,115,149,0,0,0,124,0,0,106,0,
0,100,1,0,107,8,0,114,21,0,100,2,0,110,6,0,
@@ -1149,7 +1149,7 @@ const unsigned char _Py_M__importlib[] = {
0,1,1,1,89,110,1,0,88,124,1,0,83,41,7,78,
114,91,0,0,0,114,134,0,0,0,114,131,0,0,0,114,
121,0,0,0,114,33,0,0,0,114,95,0,0,0,41,13,
- 114,99,0,0,0,114,146,0,0,0,114,15,0,0,0,114,
+ 114,99,0,0,0,114,147,0,0,0,114,15,0,0,0,114,
14,0,0,0,114,21,0,0,0,114,6,0,0,0,114,91,
0,0,0,114,96,0,0,0,114,1,0,0,0,114,134,0,
0,0,114,4,0,0,0,114,122,0,0,0,114,95,0,0,
@@ -1159,7 +1159,7 @@ const unsigned char _Py_M__importlib[] = {
112,97,116,105,98,108,101,118,2,0,0,115,40,0,0,0,
0,4,19,2,16,1,24,1,3,1,16,1,13,1,5,1,
24,1,3,4,12,1,15,1,29,1,13,1,5,1,24,1,
- 3,1,13,1,13,1,5,1,114,148,0,0,0,99,1,0,
+ 3,1,13,1,13,1,5,1,114,149,0,0,0,99,1,0,
0,0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,
0,0,115,159,0,0,0,124,0,0,106,0,0,100,0,0,
107,9,0,114,43,0,116,1,0,124,0,0,106,0,0,100,
@@ -1174,14 +1174,14 @@ const unsigned char _Py_M__importlib[] = {
0,106,7,0,25,83,41,4,78,114,139,0,0,0,122,14,
109,105,115,115,105,110,103,32,108,111,97,100,101,114,114,15,
0,0,0,41,11,114,99,0,0,0,114,4,0,0,0,114,
- 148,0,0,0,114,144,0,0,0,114,102,0,0,0,114,110,
+ 149,0,0,0,114,145,0,0,0,114,102,0,0,0,114,110,
0,0,0,114,77,0,0,0,114,15,0,0,0,114,139,0,
0,0,114,14,0,0,0,114,21,0,0,0,41,2,114,88,
0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,
0,0,114,11,0,0,0,218,14,95,108,111,97,100,95,117,
110,108,111,99,107,101,100,147,2,0,0,115,20,0,0,0,
0,2,15,2,18,1,10,2,12,1,13,1,15,1,15,1,
- 24,3,23,5,114,149,0,0,0,99,1,0,0,0,0,0,
+ 24,3,23,5,114,150,0,0,0,99,1,0,0,0,0,0,
0,0,1,0,0,0,9,0,0,0,67,0,0,0,115,47,
0,0,0,116,0,0,106,1,0,131,0,0,1,116,2,0,
124,0,0,106,3,0,131,1,0,143,15,0,1,116,4,0,
@@ -1198,8 +1198,8 @@ const unsigned char _Py_M__importlib[] = {
100,117,108,101,115,44,32,116,104,97,116,32,101,120,105,115,
116,105,110,103,32,109,111,100,117,108,101,32,103,101,116,115,
10,32,32,32,32,99,108,111,98,98,101,114,101,100,46,10,
- 10,32,32,32,32,78,41,5,114,57,0,0,0,114,145,0,
- 0,0,114,54,0,0,0,114,15,0,0,0,114,149,0,0,
+ 10,32,32,32,32,78,41,5,114,57,0,0,0,114,146,0,
+ 0,0,114,54,0,0,0,114,15,0,0,0,114,150,0,0,
0,41,1,114,88,0,0,0,114,10,0,0,0,114,10,0,
0,0,114,11,0,0,0,114,87,0,0,0,170,2,0,0,
115,6,0,0,0,0,9,10,1,16,1,114,87,0,0,0,
@@ -1274,8 +1274,8 @@ const unsigned char _Py_M__importlib[] = {
112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,102,
105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,
97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,2,
- 114,154,0,0,0,114,99,0,0,0,41,4,114,151,0,0,
- 0,114,78,0,0,0,114,152,0,0,0,114,88,0,0,0,
+ 114,155,0,0,0,114,99,0,0,0,41,4,114,152,0,0,
+ 0,114,78,0,0,0,114,153,0,0,0,114,88,0,0,0,
114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,
11,102,105,110,100,95,109,111,100,117,108,101,213,2,0,0,
115,4,0,0,0,0,9,18,1,122,27,66,117,105,108,116,
@@ -1315,7 +1315,7 @@ const unsigned char _Py_M__importlib[] = {
32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,
117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101,
32,99,111,100,101,32,111,98,106,101,99,116,115,46,78,114,
- 10,0,0,0,41,2,114,151,0,0,0,114,78,0,0,0,
+ 10,0,0,0,41,2,114,152,0,0,0,114,78,0,0,0,
114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,
8,103,101,116,95,99,111,100,101,238,2,0,0,115,2,0,
0,0,0,4,122,24,66,117,105,108,116,105,110,73,109,112,
@@ -1326,7 +1326,7 @@ const unsigned char _Py_M__importlib[] = {
117,105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,
100,111,32,110,111,116,32,104,97,118,101,32,115,111,117,114,
99,101,32,99,111,100,101,46,78,114,10,0,0,0,41,2,
- 114,151,0,0,0,114,78,0,0,0,114,10,0,0,0,114,
+ 114,152,0,0,0,114,78,0,0,0,114,10,0,0,0,114,
10,0,0,0,114,11,0,0,0,218,10,103,101,116,95,115,
111,117,114,99,101,244,2,0,0,115,2,0,0,0,0,4,
122,26,66,117,105,108,116,105,110,73,109,112,111,114,116,101,
@@ -1336,7 +1336,7 @@ const unsigned char _Py_M__importlib[] = {
116,117,114,110,32,70,97,108,115,101,32,97,115,32,98,117,
105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,
114,101,32,110,101,118,101,114,32,112,97,99,107,97,103,101,
- 115,46,70,114,10,0,0,0,41,2,114,151,0,0,0,114,
+ 115,46,70,114,10,0,0,0,41,2,114,152,0,0,0,114,
78,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
0,0,0,114,109,0,0,0,250,2,0,0,115,2,0,0,
0,0,4,122,26,66,117,105,108,116,105,110,73,109,112,111,
@@ -1344,14 +1344,14 @@ const unsigned char _Py_M__importlib[] = {
17,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,
114,3,0,0,0,218,12,115,116,97,116,105,99,109,101,116,
104,111,100,114,92,0,0,0,218,11,99,108,97,115,115,109,
- 101,116,104,111,100,114,154,0,0,0,114,155,0,0,0,114,
- 138,0,0,0,114,139,0,0,0,114,81,0,0,0,114,156,
- 0,0,0,114,157,0,0,0,114,109,0,0,0,114,90,0,
- 0,0,114,146,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,114,150,0,0,0,
+ 101,116,104,111,100,114,155,0,0,0,114,156,0,0,0,114,
+ 138,0,0,0,114,139,0,0,0,114,81,0,0,0,114,157,
+ 0,0,0,114,158,0,0,0,114,109,0,0,0,114,90,0,
+ 0,0,114,147,0,0,0,114,10,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,151,0,0,0,
186,2,0,0,115,30,0,0,0,12,7,6,2,18,9,3,
1,21,8,3,1,18,11,18,8,18,5,3,1,21,5,3,
- 1,21,5,3,1,21,5,114,150,0,0,0,99,0,0,0,
+ 1,21,5,3,1,21,5,114,151,0,0,0,99,0,0,0,
0,0,0,0,0,0,0,0,0,5,0,0,0,64,0,0,
0,115,211,0,0,0,101,0,0,90,1,0,100,0,0,90,
2,0,100,1,0,90,3,0,101,4,0,100,2,0,100,3,
@@ -1399,9 +1399,9 @@ const unsigned char _Py_M__importlib[] = {
124,0,0,100,1,0,100,2,0,131,2,1,83,100,0,0,
83,100,0,0,83,41,3,78,114,107,0,0,0,90,6,102,
114,111,122,101,110,41,3,114,57,0,0,0,114,82,0,0,
- 0,114,85,0,0,0,41,4,114,151,0,0,0,114,78,0,
- 0,0,114,152,0,0,0,114,153,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,114,154,0,0,0,
+ 0,114,85,0,0,0,41,4,114,152,0,0,0,114,78,0,
+ 0,0,114,153,0,0,0,114,154,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,155,0,0,0,
21,3,0,0,115,6,0,0,0,0,2,15,1,19,2,122,
24,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,
102,105,110,100,95,115,112,101,99,99,3,0,0,0,0,0,
@@ -1414,9 +1414,9 @@ const unsigned char _Py_M__importlib[] = {
101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110,
100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100,
46,10,10,32,32,32,32,32,32,32,32,78,41,2,114,57,
- 0,0,0,114,82,0,0,0,41,3,114,151,0,0,0,114,
- 78,0,0,0,114,152,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,155,0,0,0,28,3,0,
+ 0,0,0,114,82,0,0,0,41,3,114,152,0,0,0,114,
+ 78,0,0,0,114,153,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,156,0,0,0,28,3,0,
0,115,2,0,0,0,0,7,122,26,70,114,111,122,101,110,
73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111,
100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,
@@ -1424,7 +1424,7 @@ const unsigned char _Py_M__importlib[] = {
0,83,41,2,122,42,85,115,101,32,100,101,102,97,117,108,
116,32,115,101,109,97,110,116,105,99,115,32,102,111,114,32,
109,111,100,117,108,101,32,99,114,101,97,116,105,111,110,46,
- 78,114,10,0,0,0,41,2,114,151,0,0,0,114,88,0,
+ 78,114,10,0,0,0,41,2,114,152,0,0,0,114,88,0,
0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
0,114,138,0,0,0,37,3,0,0,115,0,0,0,0,122,
28,70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,
@@ -1457,8 +1457,8 @@ const unsigned char _Py_M__importlib[] = {
99,97,116,101,100,46,32,32,85,115,101,32,101,120,101,99,
95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,
100,46,10,10,32,32,32,32,32,32,32,32,41,1,114,90,
- 0,0,0,41,2,114,151,0,0,0,114,78,0,0,0,114,
- 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,146,
+ 0,0,0,41,2,114,152,0,0,0,114,78,0,0,0,114,
+ 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,147,
0,0,0,50,3,0,0,115,2,0,0,0,0,7,122,26,
70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,108,
111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,0,
@@ -1467,9 +1467,9 @@ const unsigned char _Py_M__importlib[] = {
83,41,1,122,45,82,101,116,117,114,110,32,116,104,101,32,
99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32,
116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,
- 101,46,41,2,114,57,0,0,0,114,162,0,0,0,41,2,
- 114,151,0,0,0,114,78,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,156,0,0,0,59,3,
+ 101,46,41,2,114,57,0,0,0,114,163,0,0,0,41,2,
+ 114,152,0,0,0,114,78,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,114,157,0,0,0,59,3,
0,0,115,2,0,0,0,0,4,122,23,70,114,111,122,101,
110,73,109,112,111,114,116,101,114,46,103,101,116,95,99,111,
100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,
@@ -1478,8 +1478,8 @@ const unsigned char _Py_M__importlib[] = {
97,115,32,102,114,111,122,101,110,32,109,111,100,117,108,101,
115,32,100,111,32,110,111,116,32,104,97,118,101,32,115,111,
117,114,99,101,32,99,111,100,101,46,78,114,10,0,0,0,
- 41,2,114,151,0,0,0,114,78,0,0,0,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,114,157,0,0,0,
+ 41,2,114,152,0,0,0,114,78,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,158,0,0,0,
65,3,0,0,115,2,0,0,0,0,4,122,25,70,114,111,
122,101,110,73,109,112,111,114,116,101,114,46,103,101,116,95,
115,111,117,114,99,101,99,2,0,0,0,0,0,0,0,2,
@@ -1489,21 +1489,21 @@ const unsigned char _Py_M__importlib[] = {
116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108,
101,32,105,115,32,97,32,112,97,99,107,97,103,101,46,41,
2,114,57,0,0,0,90,17,105,115,95,102,114,111,122,101,
- 110,95,112,97,99,107,97,103,101,41,2,114,151,0,0,0,
+ 110,95,112,97,99,107,97,103,101,41,2,114,152,0,0,0,
114,78,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
11,0,0,0,114,109,0,0,0,71,3,0,0,115,2,0,
0,0,0,4,122,25,70,114,111,122,101,110,73,109,112,111,
114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,41,
16,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,
- 114,3,0,0,0,114,158,0,0,0,114,92,0,0,0,114,
- 159,0,0,0,114,154,0,0,0,114,155,0,0,0,114,138,
- 0,0,0,114,139,0,0,0,114,146,0,0,0,114,84,0,
- 0,0,114,156,0,0,0,114,157,0,0,0,114,109,0,0,
+ 114,3,0,0,0,114,159,0,0,0,114,92,0,0,0,114,
+ 160,0,0,0,114,155,0,0,0,114,156,0,0,0,114,138,
+ 0,0,0,114,139,0,0,0,114,147,0,0,0,114,84,0,
+ 0,0,114,157,0,0,0,114,158,0,0,0,114,109,0,0,
0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,11,0,0,0,114,160,0,0,0,3,3,0,0,115,30,
+ 114,11,0,0,0,114,161,0,0,0,3,3,0,0,115,30,
0,0,0,12,7,6,2,18,9,3,1,21,6,3,1,18,
8,18,4,18,9,18,9,3,1,21,5,3,1,21,5,3,
- 1,114,160,0,0,0,99,0,0,0,0,0,0,0,0,0,
+ 1,114,161,0,0,0,99,0,0,0,0,0,0,0,0,0,
0,0,0,2,0,0,0,64,0,0,0,115,46,0,0,0,
101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,
3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,
@@ -1516,7 +1516,7 @@ const unsigned char _Py_M__importlib[] = {
14,0,0,0,116,0,0,106,1,0,131,0,0,1,100,1,
0,83,41,2,122,24,65,99,113,117,105,114,101,32,116,104,
101,32,105,109,112,111,114,116,32,108,111,99,107,46,78,41,
- 2,114,57,0,0,0,114,145,0,0,0,41,1,114,19,0,
+ 2,114,57,0,0,0,114,146,0,0,0,41,1,114,19,0,
0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
0,114,23,0,0,0,84,3,0,0,115,2,0,0,0,0,
2,122,28,95,73,109,112,111,114,116,76,111,99,107,67,111,
@@ -1538,8 +1538,8 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,114,0,0,0,0,114,2,0,0,0,114,3,0,
0,0,114,23,0,0,0,114,30,0,0,0,114,10,0,0,
0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
- 114,165,0,0,0,80,3,0,0,115,6,0,0,0,12,2,
- 6,2,12,4,114,165,0,0,0,99,3,0,0,0,0,0,
+ 114,166,0,0,0,80,3,0,0,115,6,0,0,0,12,2,
+ 6,2,12,4,114,166,0,0,0,99,3,0,0,0,0,0,
0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,88,
0,0,0,124,1,0,106,0,0,100,1,0,124,2,0,100,
2,0,24,131,2,0,125,3,0,116,1,0,124,3,0,131,
@@ -1562,428 +1562,460 @@ const unsigned char _Py_M__importlib[] = {
0,0,0,114,10,0,0,0,114,11,0,0,0,218,13,95,
114,101,115,111,108,118,101,95,110,97,109,101,93,3,0,0,
115,10,0,0,0,0,2,22,1,18,1,12,1,10,1,114,
- 171,0,0,0,99,3,0,0,0,0,0,0,0,4,0,0,
+ 172,0,0,0,99,3,0,0,0,0,0,0,0,4,0,0,
0,3,0,0,0,67,0,0,0,115,47,0,0,0,124,0,
0,106,0,0,124,1,0,124,2,0,131,2,0,125,3,0,
124,3,0,100,0,0,107,8,0,114,34,0,100,0,0,83,
116,1,0,124,1,0,124,3,0,131,2,0,83,41,1,78,
- 41,2,114,155,0,0,0,114,85,0,0,0,41,4,218,6,
- 102,105,110,100,101,114,114,15,0,0,0,114,152,0,0,0,
+ 41,2,114,156,0,0,0,114,85,0,0,0,41,4,218,6,
+ 102,105,110,100,101,114,114,15,0,0,0,114,153,0,0,0,
114,99,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
11,0,0,0,218,17,95,102,105,110,100,95,115,112,101,99,
95,108,101,103,97,99,121,102,3,0,0,115,8,0,0,0,
- 0,3,18,1,12,1,4,1,114,173,0,0,0,99,3,0,
- 0,0,0,0,0,0,9,0,0,0,27,0,0,0,67,0,
- 0,0,115,42,1,0,0,116,0,0,106,1,0,100,1,0,
- 107,9,0,114,41,0,116,0,0,106,1,0,12,114,41,0,
- 116,2,0,106,3,0,100,2,0,116,4,0,131,2,0,1,
- 124,0,0,116,0,0,106,5,0,107,6,0,125,3,0,120,
- 235,0,116,0,0,106,1,0,68,93,220,0,125,4,0,116,
- 6,0,131,0,0,143,90,0,1,121,13,0,124,4,0,106,
- 7,0,125,5,0,87,110,51,0,4,116,8,0,107,10,0,
- 114,148,0,1,1,1,116,9,0,124,4,0,124,0,0,124,
- 1,0,131,3,0,125,6,0,124,6,0,100,1,0,107,8,
- 0,114,144,0,119,66,0,89,110,19,0,88,124,5,0,124,
- 0,0,124,1,0,124,2,0,131,3,0,125,6,0,87,100,
- 1,0,81,82,88,124,6,0,100,1,0,107,9,0,114,66,
- 0,124,3,0,12,114,26,1,124,0,0,116,0,0,106,5,
- 0,107,6,0,114,26,1,116,0,0,106,5,0,124,0,0,
- 25,125,7,0,121,13,0,124,7,0,106,10,0,125,8,0,
- 87,110,22,0,4,116,8,0,107,10,0,114,2,1,1,1,
- 1,124,6,0,83,89,113,30,1,88,124,8,0,100,1,0,
- 107,8,0,114,19,1,124,6,0,83,124,8,0,83,113,66,
- 0,124,6,0,83,113,66,0,87,100,1,0,83,100,1,0,
- 83,41,3,122,23,70,105,110,100,32,97,32,109,111,100,117,
- 108,101,39,115,32,108,111,97,100,101,114,46,78,122,22,115,
- 121,115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,
- 101,109,112,116,121,41,11,114,14,0,0,0,218,9,109,101,
- 116,97,95,112,97,116,104,114,141,0,0,0,114,142,0,0,
- 0,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103,
- 114,21,0,0,0,114,165,0,0,0,114,154,0,0,0,114,
- 96,0,0,0,114,173,0,0,0,114,95,0,0,0,41,9,
- 114,15,0,0,0,114,152,0,0,0,114,153,0,0,0,90,
- 9,105,115,95,114,101,108,111,97,100,114,172,0,0,0,114,
- 154,0,0,0,114,88,0,0,0,114,89,0,0,0,114,95,
- 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,
- 0,0,218,10,95,102,105,110,100,95,115,112,101,99,111,3,
- 0,0,115,48,0,0,0,0,2,25,1,16,4,15,1,16,
- 1,10,1,3,1,13,1,13,1,18,1,12,1,8,2,25,
- 1,12,2,22,1,13,1,3,1,13,1,13,4,9,2,12,
- 1,4,2,7,2,8,2,114,176,0,0,0,99,3,0,0,
- 0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,
- 0,115,185,0,0,0,116,0,0,124,0,0,116,1,0,131,
- 2,0,115,42,0,116,2,0,100,1,0,106,3,0,116,4,
- 0,124,0,0,131,1,0,131,1,0,131,1,0,130,1,0,
- 124,2,0,100,2,0,107,0,0,114,66,0,116,5,0,100,
- 3,0,131,1,0,130,1,0,124,2,0,100,2,0,107,4,
- 0,114,150,0,116,0,0,124,1,0,116,1,0,131,2,0,
- 115,108,0,116,2,0,100,4,0,131,1,0,130,1,0,110,
- 42,0,124,1,0,116,6,0,106,7,0,107,7,0,114,150,
- 0,100,5,0,125,3,0,116,8,0,124,3,0,106,3,0,
- 124,1,0,131,1,0,131,1,0,130,1,0,124,0,0,12,
- 114,181,0,124,2,0,100,2,0,107,2,0,114,181,0,116,
- 5,0,100,6,0,131,1,0,130,1,0,100,7,0,83,41,
- 8,122,28,86,101,114,105,102,121,32,97,114,103,117,109,101,
- 110,116,115,32,97,114,101,32,34,115,97,110,101,34,46,122,
- 31,109,111,100,117,108,101,32,110,97,109,101,32,109,117,115,
- 116,32,98,101,32,115,116,114,44,32,110,111,116,32,123,125,
- 114,33,0,0,0,122,18,108,101,118,101,108,32,109,117,115,
- 116,32,98,101,32,62,61,32,48,122,31,95,95,112,97,99,
- 107,97,103,101,95,95,32,110,111,116,32,115,101,116,32,116,
- 111,32,97,32,115,116,114,105,110,103,122,61,80,97,114,101,
- 110,116,32,109,111,100,117,108,101,32,123,33,114,125,32,110,
- 111,116,32,108,111,97,100,101,100,44,32,99,97,110,110,111,
- 116,32,112,101,114,102,111,114,109,32,114,101,108,97,116,105,
- 118,101,32,105,109,112,111,114,116,122,17,69,109,112,116,121,
- 32,109,111,100,117,108,101,32,110,97,109,101,78,41,9,218,
- 10,105,115,105,110,115,116,97,110,99,101,218,3,115,116,114,
- 218,9,84,121,112,101,69,114,114,111,114,114,50,0,0,0,
- 114,13,0,0,0,114,168,0,0,0,114,14,0,0,0,114,
- 21,0,0,0,218,11,83,121,115,116,101,109,69,114,114,111,
- 114,41,4,114,15,0,0,0,114,169,0,0,0,114,170,0,
- 0,0,114,147,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,218,13,95,115,97,110,105,116,121,95,
- 99,104,101,99,107,151,3,0,0,115,24,0,0,0,0,2,
- 15,1,27,1,12,1,12,1,12,1,15,1,15,1,15,1,
- 6,2,21,1,19,1,114,181,0,0,0,122,16,78,111,32,
- 109,111,100,117,108,101,32,110,97,109,101,100,32,122,4,123,
- 33,114,125,99,2,0,0,0,0,0,0,0,8,0,0,0,
- 12,0,0,0,67,0,0,0,115,40,1,0,0,100,0,0,
- 125,2,0,124,0,0,106,0,0,100,1,0,131,1,0,100,
- 2,0,25,125,3,0,124,3,0,114,175,0,124,3,0,116,
- 1,0,106,2,0,107,7,0,114,59,0,116,3,0,124,1,
- 0,124,3,0,131,2,0,1,124,0,0,116,1,0,106,2,
- 0,107,6,0,114,85,0,116,1,0,106,2,0,124,0,0,
- 25,83,116,1,0,106,2,0,124,3,0,25,125,4,0,121,
- 13,0,124,4,0,106,4,0,125,2,0,87,110,61,0,4,
- 116,5,0,107,10,0,114,174,0,1,1,1,116,6,0,100,
- 3,0,23,106,7,0,124,0,0,124,3,0,131,2,0,125,
- 5,0,116,8,0,124,5,0,100,4,0,124,0,0,131,1,
- 1,100,0,0,130,2,0,89,110,1,0,88,116,9,0,124,
- 0,0,124,2,0,131,2,0,125,6,0,124,6,0,100,0,
- 0,107,8,0,114,232,0,116,8,0,116,6,0,106,7,0,
- 124,0,0,131,1,0,100,4,0,124,0,0,131,1,1,130,
- 1,0,110,12,0,116,10,0,124,6,0,131,1,0,125,7,
- 0,124,3,0,114,36,1,116,1,0,106,2,0,124,3,0,
- 25,125,4,0,116,11,0,124,4,0,124,0,0,106,0,0,
- 100,1,0,131,1,0,100,5,0,25,124,7,0,131,3,0,
- 1,124,7,0,83,41,6,78,114,121,0,0,0,114,33,0,
- 0,0,122,23,59,32,123,33,114,125,32,105,115,32,110,111,
- 116,32,97,32,112,97,99,107,97,103,101,114,15,0,0,0,
- 114,140,0,0,0,41,12,114,122,0,0,0,114,14,0,0,
- 0,114,21,0,0,0,114,65,0,0,0,114,131,0,0,0,
- 114,96,0,0,0,218,8,95,69,82,82,95,77,83,71,114,
- 50,0,0,0,114,77,0,0,0,114,176,0,0,0,114,149,
- 0,0,0,114,5,0,0,0,41,8,114,15,0,0,0,218,
- 7,105,109,112,111,114,116,95,114,152,0,0,0,114,123,0,
- 0,0,90,13,112,97,114,101,110,116,95,109,111,100,117,108,
- 101,114,147,0,0,0,114,88,0,0,0,114,89,0,0,0,
- 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,
- 23,95,102,105,110,100,95,97,110,100,95,108,111,97,100,95,
- 117,110,108,111,99,107,101,100,171,3,0,0,115,42,0,0,
- 0,0,1,6,1,19,1,6,1,15,1,13,2,15,1,11,
- 1,13,1,3,1,13,1,13,1,22,1,26,1,15,1,12,
- 1,30,2,12,1,6,2,13,1,29,1,114,184,0,0,0,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,10,0,0,
- 0,67,0,0,0,115,37,0,0,0,116,0,0,124,0,0,
- 131,1,0,143,18,0,1,116,1,0,124,0,0,124,1,0,
- 131,2,0,83,87,100,1,0,81,82,88,100,1,0,83,41,
- 2,122,54,70,105,110,100,32,97,110,100,32,108,111,97,100,
- 32,116,104,101,32,109,111,100,117,108,101,44,32,97,110,100,
- 32,114,101,108,101,97,115,101,32,116,104,101,32,105,109,112,
- 111,114,116,32,108,111,99,107,46,78,41,2,114,54,0,0,
- 0,114,184,0,0,0,41,2,114,15,0,0,0,114,183,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,
- 100,198,3,0,0,115,4,0,0,0,0,2,13,1,114,185,
- 0,0,0,114,33,0,0,0,99,3,0,0,0,0,0,0,
- 0,5,0,0,0,4,0,0,0,67,0,0,0,115,166,0,
- 0,0,116,0,0,124,0,0,124,1,0,124,2,0,131,3,
- 0,1,124,2,0,100,1,0,107,4,0,114,46,0,116,1,
- 0,124,0,0,124,1,0,124,2,0,131,3,0,125,0,0,
- 116,2,0,106,3,0,131,0,0,1,124,0,0,116,4,0,
- 106,5,0,107,7,0,114,84,0,116,6,0,124,0,0,116,
- 7,0,131,2,0,83,116,4,0,106,5,0,124,0,0,25,
- 125,3,0,124,3,0,100,2,0,107,8,0,114,152,0,116,
- 2,0,106,8,0,131,0,0,1,100,3,0,106,9,0,124,
- 0,0,131,1,0,125,4,0,116,10,0,124,4,0,100,4,
- 0,124,0,0,131,1,1,130,1,0,116,11,0,124,0,0,
- 131,1,0,1,124,3,0,83,41,5,97,50,1,0,0,73,
- 109,112,111,114,116,32,97,110,100,32,114,101,116,117,114,110,
- 32,116,104,101,32,109,111,100,117,108,101,32,98,97,115,101,
- 100,32,111,110,32,105,116,115,32,110,97,109,101,44,32,116,
- 104,101,32,112,97,99,107,97,103,101,32,116,104,101,32,99,
- 97,108,108,32,105,115,10,32,32,32,32,98,101,105,110,103,
- 32,109,97,100,101,32,102,114,111,109,44,32,97,110,100,32,
- 116,104,101,32,108,101,118,101,108,32,97,100,106,117,115,116,
- 109,101,110,116,46,10,10,32,32,32,32,84,104,105,115,32,
- 102,117,110,99,116,105,111,110,32,114,101,112,114,101,115,101,
- 110,116,115,32,116,104,101,32,103,114,101,97,116,101,115,116,
- 32,99,111,109,109,111,110,32,100,101,110,111,109,105,110,97,
- 116,111,114,32,111,102,32,102,117,110,99,116,105,111,110,97,
- 108,105,116,121,10,32,32,32,32,98,101,116,119,101,101,110,
- 32,105,109,112,111,114,116,95,109,111,100,117,108,101,32,97,
- 110,100,32,95,95,105,109,112,111,114,116,95,95,46,32,84,
- 104,105,115,32,105,110,99,108,117,100,101,115,32,115,101,116,
- 116,105,110,103,32,95,95,112,97,99,107,97,103,101,95,95,
- 32,105,102,10,32,32,32,32,116,104,101,32,108,111,97,100,
- 101,114,32,100,105,100,32,110,111,116,46,10,10,32,32,32,
- 32,114,33,0,0,0,78,122,40,105,109,112,111,114,116,32,
- 111,102,32,123,125,32,104,97,108,116,101,100,59,32,78,111,
- 110,101,32,105,110,32,115,121,115,46,109,111,100,117,108,101,
- 115,114,15,0,0,0,41,12,114,181,0,0,0,114,171,0,
- 0,0,114,57,0,0,0,114,145,0,0,0,114,14,0,0,
- 0,114,21,0,0,0,114,185,0,0,0,218,11,95,103,99,
- 100,95,105,109,112,111,114,116,114,58,0,0,0,114,50,0,
- 0,0,114,77,0,0,0,114,63,0,0,0,41,5,114,15,
- 0,0,0,114,169,0,0,0,114,170,0,0,0,114,89,0,
- 0,0,114,74,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,186,0,0,0,204,3,0,0,115,
- 28,0,0,0,0,9,16,1,12,1,18,1,10,1,15,1,
- 13,1,13,1,12,1,10,1,6,1,9,1,18,1,10,1,
- 114,186,0,0,0,99,3,0,0,0,0,0,0,0,6,0,
- 0,0,17,0,0,0,67,0,0,0,115,239,0,0,0,116,
- 0,0,124,0,0,100,1,0,131,2,0,114,235,0,100,2,
- 0,124,1,0,107,6,0,114,83,0,116,1,0,124,1,0,
- 131,1,0,125,1,0,124,1,0,106,2,0,100,2,0,131,
- 1,0,1,116,0,0,124,0,0,100,3,0,131,2,0,114,
- 83,0,124,1,0,106,3,0,124,0,0,106,4,0,131,1,
- 0,1,120,149,0,124,1,0,68,93,141,0,125,3,0,116,
- 0,0,124,0,0,124,3,0,131,2,0,115,90,0,100,4,
- 0,106,5,0,124,0,0,106,6,0,124,3,0,131,2,0,
- 125,4,0,121,17,0,116,7,0,124,2,0,124,4,0,131,
- 2,0,1,87,113,90,0,4,116,8,0,107,10,0,114,230,
- 0,1,125,5,0,1,122,47,0,116,9,0,124,5,0,131,
- 1,0,106,10,0,116,11,0,131,1,0,114,209,0,124,5,
- 0,106,12,0,124,4,0,107,2,0,114,209,0,119,90,0,
- 130,0,0,87,89,100,5,0,100,5,0,125,5,0,126,5,
- 0,88,113,90,0,88,113,90,0,87,124,0,0,83,41,6,
- 122,238,70,105,103,117,114,101,32,111,117,116,32,119,104,97,
- 116,32,95,95,105,109,112,111,114,116,95,95,32,115,104,111,
- 117,108,100,32,114,101,116,117,114,110,46,10,10,32,32,32,
- 32,84,104,101,32,105,109,112,111,114,116,95,32,112,97,114,
- 97,109,101,116,101,114,32,105,115,32,97,32,99,97,108,108,
- 97,98,108,101,32,119,104,105,99,104,32,116,97,107,101,115,
- 32,116,104,101,32,110,97,109,101,32,111,102,32,109,111,100,
- 117,108,101,32,116,111,10,32,32,32,32,105,109,112,111,114,
- 116,46,32,73,116,32,105,115,32,114,101,113,117,105,114,101,
- 100,32,116,111,32,100,101,99,111,117,112,108,101,32,116,104,
- 101,32,102,117,110,99,116,105,111,110,32,102,114,111,109,32,
- 97,115,115,117,109,105,110,103,32,105,109,112,111,114,116,108,
- 105,98,39,115,10,32,32,32,32,105,109,112,111,114,116,32,
- 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,105,
- 115,32,100,101,115,105,114,101,100,46,10,10,32,32,32,32,
- 114,131,0,0,0,250,1,42,218,7,95,95,97,108,108,95,
- 95,122,5,123,125,46,123,125,78,41,13,114,4,0,0,0,
- 114,130,0,0,0,218,6,114,101,109,111,118,101,218,6,101,
- 120,116,101,110,100,114,188,0,0,0,114,50,0,0,0,114,
- 1,0,0,0,114,65,0,0,0,114,77,0,0,0,114,178,
- 0,0,0,114,71,0,0,0,218,15,95,69,82,82,95,77,
- 83,71,95,80,82,69,70,73,88,114,15,0,0,0,41,6,
- 114,89,0,0,0,218,8,102,114,111,109,108,105,115,116,114,
- 183,0,0,0,218,1,120,90,9,102,114,111,109,95,110,97,
- 109,101,90,3,101,120,99,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,218,16,95,104,97,110,100,108,101,95,
- 102,114,111,109,108,105,115,116,228,3,0,0,115,34,0,0,
- 0,0,10,15,1,12,1,12,1,13,1,15,1,16,1,13,
- 1,15,1,21,1,3,1,17,1,18,4,21,1,15,1,3,
- 1,26,1,114,194,0,0,0,99,1,0,0,0,0,0,0,
- 0,2,0,0,0,2,0,0,0,67,0,0,0,115,72,0,
- 0,0,124,0,0,106,0,0,100,1,0,131,1,0,125,1,
- 0,124,1,0,100,2,0,107,8,0,114,68,0,124,0,0,
- 100,3,0,25,125,1,0,100,4,0,124,0,0,107,7,0,
- 114,68,0,124,1,0,106,1,0,100,5,0,131,1,0,100,
- 6,0,25,125,1,0,124,1,0,83,41,7,122,167,67,97,
- 108,99,117,108,97,116,101,32,119,104,97,116,32,95,95,112,
- 97,99,107,97,103,101,95,95,32,115,104,111,117,108,100,32,
- 98,101,46,10,10,32,32,32,32,95,95,112,97,99,107,97,
- 103,101,95,95,32,105,115,32,110,111,116,32,103,117,97,114,
- 97,110,116,101,101,100,32,116,111,32,98,101,32,100,101,102,
- 105,110,101,100,32,111,114,32,99,111,117,108,100,32,98,101,
- 32,115,101,116,32,116,111,32,78,111,110,101,10,32,32,32,
- 32,116,111,32,114,101,112,114,101,115,101,110,116,32,116,104,
- 97,116,32,105,116,115,32,112,114,111,112,101,114,32,118,97,
- 108,117,101,32,105,115,32,117,110,107,110,111,119,110,46,10,
- 10,32,32,32,32,114,134,0,0,0,78,114,1,0,0,0,
- 114,131,0,0,0,114,121,0,0,0,114,33,0,0,0,41,
- 2,114,42,0,0,0,114,122,0,0,0,41,2,218,7,103,
- 108,111,98,97,108,115,114,169,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,218,17,95,99,97,108,
- 99,95,95,95,112,97,99,107,97,103,101,95,95,4,4,0,
- 0,115,12,0,0,0,0,7,15,1,12,1,10,1,12,1,
- 19,1,114,196,0,0,0,99,5,0,0,0,0,0,0,0,
- 9,0,0,0,5,0,0,0,67,0,0,0,115,227,0,0,
- 0,124,4,0,100,1,0,107,2,0,114,27,0,116,0,0,
- 124,0,0,131,1,0,125,5,0,110,54,0,124,1,0,100,
- 2,0,107,9,0,114,45,0,124,1,0,110,3,0,105,0,
- 0,125,6,0,116,1,0,124,6,0,131,1,0,125,7,0,
- 116,0,0,124,0,0,124,7,0,124,4,0,131,3,0,125,
- 5,0,124,3,0,115,207,0,124,4,0,100,1,0,107,2,
- 0,114,122,0,116,0,0,124,0,0,106,2,0,100,3,0,
- 131,1,0,100,1,0,25,131,1,0,83,124,0,0,115,132,
- 0,124,5,0,83,116,3,0,124,0,0,131,1,0,116,3,
- 0,124,0,0,106,2,0,100,3,0,131,1,0,100,1,0,
- 25,131,1,0,24,125,8,0,116,4,0,106,5,0,124,5,
- 0,106,6,0,100,2,0,116,3,0,124,5,0,106,6,0,
- 131,1,0,124,8,0,24,133,2,0,25,25,83,110,16,0,
- 116,7,0,124,5,0,124,3,0,116,0,0,131,3,0,83,
- 100,2,0,83,41,4,97,214,1,0,0,73,109,112,111,114,
- 116,32,97,32,109,111,100,117,108,101,46,10,10,32,32,32,
- 32,84,104,101,32,39,103,108,111,98,97,108,115,39,32,97,
- 114,103,117,109,101,110,116,32,105,115,32,117,115,101,100,32,
- 116,111,32,105,110,102,101,114,32,119,104,101,114,101,32,116,
- 104,101,32,105,109,112,111,114,116,32,105,115,32,111,99,99,
- 117,114,105,110,103,32,102,114,111,109,10,32,32,32,32,116,
- 111,32,104,97,110,100,108,101,32,114,101,108,97,116,105,118,
- 101,32,105,109,112,111,114,116,115,46,32,84,104,101,32,39,
- 108,111,99,97,108,115,39,32,97,114,103,117,109,101,110,116,
- 32,105,115,32,105,103,110,111,114,101,100,46,32,84,104,101,
- 10,32,32,32,32,39,102,114,111,109,108,105,115,116,39,32,
- 97,114,103,117,109,101,110,116,32,115,112,101,99,105,102,105,
- 101,115,32,119,104,97,116,32,115,104,111,117,108,100,32,101,
- 120,105,115,116,32,97,115,32,97,116,116,114,105,98,117,116,
- 101,115,32,111,110,32,116,104,101,32,109,111,100,117,108,101,
- 10,32,32,32,32,98,101,105,110,103,32,105,109,112,111,114,
- 116,101,100,32,40,101,46,103,46,32,96,96,102,114,111,109,
- 32,109,111,100,117,108,101,32,105,109,112,111,114,116,32,60,
- 102,114,111,109,108,105,115,116,62,96,96,41,46,32,32,84,
- 104,101,32,39,108,101,118,101,108,39,10,32,32,32,32,97,
- 114,103,117,109,101,110,116,32,114,101,112,114,101,115,101,110,
- 116,115,32,116,104,101,32,112,97,99,107,97,103,101,32,108,
- 111,99,97,116,105,111,110,32,116,111,32,105,109,112,111,114,
- 116,32,102,114,111,109,32,105,110,32,97,32,114,101,108,97,
- 116,105,118,101,10,32,32,32,32,105,109,112,111,114,116,32,
- 40,101,46,103,46,32,96,96,102,114,111,109,32,46,46,112,
- 107,103,32,105,109,112,111,114,116,32,109,111,100,96,96,32,
- 119,111,117,108,100,32,104,97,118,101,32,97,32,39,108,101,
- 118,101,108,39,32,111,102,32,50,41,46,10,10,32,32,32,
- 32,114,33,0,0,0,78,114,121,0,0,0,41,8,114,186,
- 0,0,0,114,196,0,0,0,218,9,112,97,114,116,105,116,
- 105,111,110,114,167,0,0,0,114,14,0,0,0,114,21,0,
- 0,0,114,1,0,0,0,114,194,0,0,0,41,9,114,15,
- 0,0,0,114,195,0,0,0,218,6,108,111,99,97,108,115,
- 114,192,0,0,0,114,170,0,0,0,114,89,0,0,0,90,
- 8,103,108,111,98,97,108,115,95,114,169,0,0,0,90,7,
- 99,117,116,95,111,102,102,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,218,10,95,95,105,109,112,111,114,116,
- 95,95,19,4,0,0,115,26,0,0,0,0,11,12,1,15,
- 2,24,1,12,1,18,1,6,3,12,1,23,1,6,1,4,
- 4,35,3,40,2,114,199,0,0,0,99,1,0,0,0,0,
- 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,
- 53,0,0,0,116,0,0,106,1,0,124,0,0,131,1,0,
- 125,1,0,124,1,0,100,0,0,107,8,0,114,43,0,116,
- 2,0,100,1,0,124,0,0,23,131,1,0,130,1,0,116,
- 3,0,124,1,0,131,1,0,83,41,2,78,122,25,110,111,
- 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,
- 32,110,97,109,101,100,32,41,4,114,150,0,0,0,114,154,
- 0,0,0,114,77,0,0,0,114,149,0,0,0,41,2,114,
- 15,0,0,0,114,88,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,218,18,95,98,117,105,108,116,
- 105,110,95,102,114,111,109,95,110,97,109,101,54,4,0,0,
- 115,8,0,0,0,0,1,15,1,12,1,16,1,114,200,0,
- 0,0,99,2,0,0,0,0,0,0,0,12,0,0,0,12,
- 0,0,0,67,0,0,0,115,74,1,0,0,124,1,0,97,
- 0,0,124,0,0,97,1,0,116,2,0,116,1,0,131,1,
- 0,125,2,0,120,123,0,116,1,0,106,3,0,106,4,0,
- 131,0,0,68,93,106,0,92,2,0,125,3,0,125,4,0,
- 116,5,0,124,4,0,124,2,0,131,2,0,114,40,0,124,
- 3,0,116,1,0,106,6,0,107,6,0,114,91,0,116,7,
- 0,125,5,0,110,27,0,116,0,0,106,8,0,124,3,0,
- 131,1,0,114,40,0,116,9,0,125,5,0,110,3,0,113,
- 40,0,116,10,0,124,4,0,124,5,0,131,2,0,125,6,
- 0,116,11,0,124,6,0,124,4,0,131,2,0,1,113,40,
- 0,87,116,1,0,106,3,0,116,12,0,25,125,7,0,120,
- 73,0,100,5,0,68,93,65,0,125,8,0,124,8,0,116,
- 1,0,106,3,0,107,7,0,114,206,0,116,13,0,124,8,
- 0,131,1,0,125,9,0,110,13,0,116,1,0,106,3,0,
- 124,8,0,25,125,9,0,116,14,0,124,7,0,124,8,0,
- 124,9,0,131,3,0,1,113,170,0,87,121,16,0,116,13,
- 0,100,2,0,131,1,0,125,10,0,87,110,24,0,4,116,
- 15,0,107,10,0,114,25,1,1,1,1,100,3,0,125,10,
- 0,89,110,1,0,88,116,14,0,124,7,0,100,2,0,124,
- 10,0,131,3,0,1,116,13,0,100,4,0,131,1,0,125,
- 11,0,116,14,0,124,7,0,100,4,0,124,11,0,131,3,
- 0,1,100,3,0,83,41,6,122,250,83,101,116,117,112,32,
- 105,109,112,111,114,116,108,105,98,32,98,121,32,105,109,112,
- 111,114,116,105,110,103,32,110,101,101,100,101,100,32,98,117,
- 105,108,116,45,105,110,32,109,111,100,117,108,101,115,32,97,
- 110,100,32,105,110,106,101,99,116,105,110,103,32,116,104,101,
- 109,10,32,32,32,32,105,110,116,111,32,116,104,101,32,103,
- 108,111,98,97,108,32,110,97,109,101,115,112,97,99,101,46,
- 10,10,32,32,32,32,65,115,32,115,121,115,32,105,115,32,
- 110,101,101,100,101,100,32,102,111,114,32,115,121,115,46,109,
- 111,100,117,108,101,115,32,97,99,99,101,115,115,32,97,110,
- 100,32,95,105,109,112,32,105,115,32,110,101,101,100,101,100,
- 32,116,111,32,108,111,97,100,32,98,117,105,108,116,45,105,
- 110,10,32,32,32,32,109,111,100,117,108,101,115,44,32,116,
- 104,111,115,101,32,116,119,111,32,109,111,100,117,108,101,115,
- 32,109,117,115,116,32,98,101,32,101,120,112,108,105,99,105,
- 116,108,121,32,112,97,115,115,101,100,32,105,110,46,10,10,
- 32,32,32,32,114,141,0,0,0,114,34,0,0,0,78,114,
- 62,0,0,0,41,1,122,9,95,119,97,114,110,105,110,103,
- 115,41,16,114,57,0,0,0,114,14,0,0,0,114,13,0,
- 0,0,114,21,0,0,0,218,5,105,116,101,109,115,114,177,
- 0,0,0,114,76,0,0,0,114,150,0,0,0,114,82,0,
- 0,0,114,160,0,0,0,114,132,0,0,0,114,137,0,0,
- 0,114,1,0,0,0,114,200,0,0,0,114,5,0,0,0,
- 114,77,0,0,0,41,12,218,10,115,121,115,95,109,111,100,
- 117,108,101,218,11,95,105,109,112,95,109,111,100,117,108,101,
- 90,11,109,111,100,117,108,101,95,116,121,112,101,114,15,0,
- 0,0,114,89,0,0,0,114,99,0,0,0,114,88,0,0,
- 0,90,11,115,101,108,102,95,109,111,100,117,108,101,90,12,
- 98,117,105,108,116,105,110,95,110,97,109,101,90,14,98,117,
- 105,108,116,105,110,95,109,111,100,117,108,101,90,13,116,104,
- 114,101,97,100,95,109,111,100,117,108,101,90,14,119,101,97,
- 107,114,101,102,95,109,111,100,117,108,101,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,218,6,95,115,101,116,
- 117,112,61,4,0,0,115,50,0,0,0,0,9,6,1,6,
- 3,12,1,28,1,15,1,15,1,9,1,15,1,9,2,3,
- 1,15,1,17,3,13,1,13,1,15,1,15,2,13,1,20,
- 3,3,1,16,1,13,2,11,1,16,3,12,1,114,204,0,
- 0,0,99,2,0,0,0,0,0,0,0,3,0,0,0,3,
- 0,0,0,67,0,0,0,115,87,0,0,0,116,0,0,124,
- 0,0,124,1,0,131,2,0,1,116,1,0,106,2,0,106,
- 3,0,116,4,0,131,1,0,1,116,1,0,106,2,0,106,
- 3,0,116,5,0,131,1,0,1,100,1,0,100,2,0,108,
- 6,0,125,2,0,124,2,0,97,7,0,124,2,0,106,8,
- 0,116,1,0,106,9,0,116,10,0,25,131,1,0,1,100,
- 2,0,83,41,3,122,50,73,110,115,116,97,108,108,32,105,
- 109,112,111,114,116,108,105,98,32,97,115,32,116,104,101,32,
- 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,
- 102,32,105,109,112,111,114,116,46,114,33,0,0,0,78,41,
- 11,114,204,0,0,0,114,14,0,0,0,114,174,0,0,0,
- 114,113,0,0,0,114,150,0,0,0,114,160,0,0,0,218,
- 26,95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,
- 105,98,95,101,120,116,101,114,110,97,108,114,119,0,0,0,
- 218,8,95,105,110,115,116,97,108,108,114,21,0,0,0,114,
- 1,0,0,0,41,3,114,202,0,0,0,114,203,0,0,0,
- 114,205,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
- 11,0,0,0,114,206,0,0,0,108,4,0,0,115,12,0,
- 0,0,0,2,13,2,16,1,16,3,12,1,6,1,114,206,
- 0,0,0,41,51,114,3,0,0,0,114,119,0,0,0,114,
- 12,0,0,0,114,16,0,0,0,114,17,0,0,0,114,59,
- 0,0,0,114,41,0,0,0,114,48,0,0,0,114,31,0,
- 0,0,114,32,0,0,0,114,53,0,0,0,114,54,0,0,
- 0,114,56,0,0,0,114,63,0,0,0,114,65,0,0,0,
- 114,75,0,0,0,114,81,0,0,0,114,84,0,0,0,114,
- 90,0,0,0,114,101,0,0,0,114,102,0,0,0,114,106,
- 0,0,0,114,85,0,0,0,218,6,111,98,106,101,99,116,
- 90,9,95,80,79,80,85,76,65,84,69,114,132,0,0,0,
- 114,137,0,0,0,114,144,0,0,0,114,97,0,0,0,114,
- 86,0,0,0,114,148,0,0,0,114,149,0,0,0,114,87,
- 0,0,0,114,150,0,0,0,114,160,0,0,0,114,165,0,
- 0,0,114,171,0,0,0,114,173,0,0,0,114,176,0,0,
- 0,114,181,0,0,0,114,191,0,0,0,114,182,0,0,0,
- 114,184,0,0,0,114,185,0,0,0,114,186,0,0,0,114,
- 194,0,0,0,114,196,0,0,0,114,199,0,0,0,114,200,
- 0,0,0,114,204,0,0,0,114,206,0,0,0,114,10,0,
+ 0,3,18,1,12,1,4,1,114,174,0,0,0,99,3,0,
+ 0,0,0,0,0,0,10,0,0,0,27,0,0,0,67,0,
+ 0,0,115,53,1,0,0,116,0,0,106,1,0,125,3,0,
+ 124,3,0,100,1,0,107,8,0,114,33,0,116,2,0,100,
+ 2,0,131,1,0,130,1,0,124,3,0,115,55,0,116,3,
+ 0,106,4,0,100,3,0,116,5,0,131,2,0,1,124,0,
+ 0,116,0,0,106,6,0,107,6,0,125,4,0,120,232,0,
+ 124,3,0,68,93,220,0,125,5,0,116,7,0,131,0,0,
+ 143,90,0,1,121,13,0,124,5,0,106,8,0,125,6,0,
+ 87,110,51,0,4,116,9,0,107,10,0,114,159,0,1,1,
+ 1,116,10,0,124,5,0,124,0,0,124,1,0,131,3,0,
+ 125,7,0,124,7,0,100,1,0,107,8,0,114,155,0,119,
+ 77,0,89,110,19,0,88,124,6,0,124,0,0,124,1,0,
+ 124,2,0,131,3,0,125,7,0,87,100,1,0,81,82,88,
+ 124,7,0,100,1,0,107,9,0,114,77,0,124,4,0,12,
+ 114,37,1,124,0,0,116,0,0,106,6,0,107,6,0,114,
+ 37,1,116,0,0,106,6,0,124,0,0,25,125,8,0,121,
+ 13,0,124,8,0,106,11,0,125,9,0,87,110,22,0,4,
+ 116,9,0,107,10,0,114,13,1,1,1,1,124,7,0,83,
+ 89,113,41,1,88,124,9,0,100,1,0,107,8,0,114,30,
+ 1,124,7,0,83,124,9,0,83,113,77,0,124,7,0,83,
+ 113,77,0,87,100,1,0,83,100,1,0,83,41,4,122,23,
+ 70,105,110,100,32,97,32,109,111,100,117,108,101,39,115,32,
+ 108,111,97,100,101,114,46,78,122,53,115,121,115,46,109,101,
+ 116,97,95,112,97,116,104,32,105,115,32,78,111,110,101,44,
+ 32,80,121,116,104,111,110,32,105,115,32,108,105,107,101,108,
+ 121,32,115,104,117,116,116,105,110,103,32,100,111,119,110,122,
+ 22,115,121,115,46,109,101,116,97,95,112,97,116,104,32,105,
+ 115,32,101,109,112,116,121,41,12,114,14,0,0,0,218,9,
+ 109,101,116,97,95,112,97,116,104,114,77,0,0,0,114,142,
+ 0,0,0,114,143,0,0,0,218,13,73,109,112,111,114,116,
+ 87,97,114,110,105,110,103,114,21,0,0,0,114,166,0,0,
+ 0,114,155,0,0,0,114,96,0,0,0,114,174,0,0,0,
+ 114,95,0,0,0,41,10,114,15,0,0,0,114,153,0,0,
+ 0,114,154,0,0,0,114,175,0,0,0,90,9,105,115,95,
+ 114,101,108,111,97,100,114,173,0,0,0,114,155,0,0,0,
+ 114,88,0,0,0,114,89,0,0,0,114,95,0,0,0,114,
+ 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,10,
+ 95,102,105,110,100,95,115,112,101,99,111,3,0,0,115,54,
+ 0,0,0,0,2,9,1,12,2,12,3,6,1,16,5,15,
+ 1,13,1,10,1,3,1,13,1,13,1,18,1,12,1,8,
+ 2,25,1,12,2,22,1,13,1,3,1,13,1,13,4,9,
+ 2,12,1,4,2,7,2,8,2,114,177,0,0,0,99,3,
+ 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,
+ 0,0,0,115,206,0,0,0,116,0,0,124,0,0,116,1,
+ 0,131,2,0,115,42,0,116,2,0,100,1,0,106,3,0,
+ 116,4,0,124,0,0,131,1,0,131,1,0,131,1,0,130,
+ 1,0,124,2,0,100,2,0,107,0,0,114,66,0,116,5,
+ 0,100,3,0,131,1,0,130,1,0,124,2,0,100,2,0,
+ 107,4,0,114,171,0,116,0,0,124,1,0,116,1,0,131,
+ 2,0,115,108,0,116,2,0,100,4,0,131,1,0,130,1,
+ 0,110,63,0,124,1,0,115,129,0,116,6,0,100,5,0,
+ 131,1,0,130,1,0,110,42,0,124,1,0,116,7,0,106,
+ 8,0,107,7,0,114,171,0,100,6,0,125,3,0,116,9,
+ 0,124,3,0,106,3,0,124,1,0,131,1,0,131,1,0,
+ 130,1,0,124,0,0,12,114,202,0,124,2,0,100,2,0,
+ 107,2,0,114,202,0,116,5,0,100,7,0,131,1,0,130,
+ 1,0,100,8,0,83,41,9,122,28,86,101,114,105,102,121,
+ 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,34,
+ 115,97,110,101,34,46,122,31,109,111,100,117,108,101,32,110,
+ 97,109,101,32,109,117,115,116,32,98,101,32,115,116,114,44,
+ 32,110,111,116,32,123,125,114,33,0,0,0,122,18,108,101,
+ 118,101,108,32,109,117,115,116,32,98,101,32,62,61,32,48,
+ 122,31,95,95,112,97,99,107,97,103,101,95,95,32,110,111,
+ 116,32,115,101,116,32,116,111,32,97,32,115,116,114,105,110,
+ 103,122,54,97,116,116,101,109,112,116,101,100,32,114,101,108,
+ 97,116,105,118,101,32,105,109,112,111,114,116,32,119,105,116,
+ 104,32,110,111,32,107,110,111,119,110,32,112,97,114,101,110,
+ 116,32,112,97,99,107,97,103,101,122,61,80,97,114,101,110,
+ 116,32,109,111,100,117,108,101,32,123,33,114,125,32,110,111,
+ 116,32,108,111,97,100,101,100,44,32,99,97,110,110,111,116,
+ 32,112,101,114,102,111,114,109,32,114,101,108,97,116,105,118,
+ 101,32,105,109,112,111,114,116,122,17,69,109,112,116,121,32,
+ 109,111,100,117,108,101,32,110,97,109,101,78,41,10,218,10,
+ 105,115,105,110,115,116,97,110,99,101,218,3,115,116,114,218,
+ 9,84,121,112,101,69,114,114,111,114,114,50,0,0,0,114,
+ 13,0,0,0,114,169,0,0,0,114,77,0,0,0,114,14,
+ 0,0,0,114,21,0,0,0,218,11,83,121,115,116,101,109,
+ 69,114,114,111,114,41,4,114,15,0,0,0,114,170,0,0,
+ 0,114,171,0,0,0,114,148,0,0,0,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,218,13,95,115,97,110,
+ 105,116,121,95,99,104,101,99,107,158,3,0,0,115,28,0,
+ 0,0,0,2,15,1,27,1,12,1,12,1,12,1,15,1,
+ 15,1,6,1,15,2,15,1,6,2,21,1,19,1,114,182,
+ 0,0,0,122,16,78,111,32,109,111,100,117,108,101,32,110,
+ 97,109,101,100,32,122,4,123,33,114,125,99,2,0,0,0,
+ 0,0,0,0,8,0,0,0,12,0,0,0,67,0,0,0,
+ 115,40,1,0,0,100,0,0,125,2,0,124,0,0,106,0,
+ 0,100,1,0,131,1,0,100,2,0,25,125,3,0,124,3,
+ 0,114,175,0,124,3,0,116,1,0,106,2,0,107,7,0,
+ 114,59,0,116,3,0,124,1,0,124,3,0,131,2,0,1,
+ 124,0,0,116,1,0,106,2,0,107,6,0,114,85,0,116,
+ 1,0,106,2,0,124,0,0,25,83,116,1,0,106,2,0,
+ 124,3,0,25,125,4,0,121,13,0,124,4,0,106,4,0,
+ 125,2,0,87,110,61,0,4,116,5,0,107,10,0,114,174,
+ 0,1,1,1,116,6,0,100,3,0,23,106,7,0,124,0,
+ 0,124,3,0,131,2,0,125,5,0,116,8,0,124,5,0,
+ 100,4,0,124,0,0,131,1,1,100,0,0,130,2,0,89,
+ 110,1,0,88,116,9,0,124,0,0,124,2,0,131,2,0,
+ 125,6,0,124,6,0,100,0,0,107,8,0,114,232,0,116,
+ 8,0,116,6,0,106,7,0,124,0,0,131,1,0,100,4,
+ 0,124,0,0,131,1,1,130,1,0,110,12,0,116,10,0,
+ 124,6,0,131,1,0,125,7,0,124,3,0,114,36,1,116,
+ 1,0,106,2,0,124,3,0,25,125,4,0,116,11,0,124,
+ 4,0,124,0,0,106,0,0,100,1,0,131,1,0,100,5,
+ 0,25,124,7,0,131,3,0,1,124,7,0,83,41,6,78,
+ 114,121,0,0,0,114,33,0,0,0,122,23,59,32,123,33,
+ 114,125,32,105,115,32,110,111,116,32,97,32,112,97,99,107,
+ 97,103,101,114,15,0,0,0,114,141,0,0,0,41,12,114,
+ 122,0,0,0,114,14,0,0,0,114,21,0,0,0,114,65,
+ 0,0,0,114,131,0,0,0,114,96,0,0,0,218,8,95,
+ 69,82,82,95,77,83,71,114,50,0,0,0,114,77,0,0,
+ 0,114,177,0,0,0,114,150,0,0,0,114,5,0,0,0,
+ 41,8,114,15,0,0,0,218,7,105,109,112,111,114,116,95,
+ 114,153,0,0,0,114,123,0,0,0,90,13,112,97,114,101,
+ 110,116,95,109,111,100,117,108,101,114,148,0,0,0,114,88,
+ 0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,218,23,95,102,105,110,100,95,97,
+ 110,100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,
+ 181,3,0,0,115,42,0,0,0,0,1,6,1,19,1,6,
+ 1,15,1,13,2,15,1,11,1,13,1,3,1,13,1,13,
+ 1,22,1,26,1,15,1,12,1,30,2,12,1,6,2,13,
+ 1,29,1,114,185,0,0,0,99,2,0,0,0,0,0,0,
+ 0,2,0,0,0,10,0,0,0,67,0,0,0,115,37,0,
+ 0,0,116,0,0,124,0,0,131,1,0,143,18,0,1,116,
+ 1,0,124,0,0,124,1,0,131,2,0,83,87,100,1,0,
+ 81,82,88,100,1,0,83,41,2,122,54,70,105,110,100,32,
+ 97,110,100,32,108,111,97,100,32,116,104,101,32,109,111,100,
+ 117,108,101,44,32,97,110,100,32,114,101,108,101,97,115,101,
+ 32,116,104,101,32,105,109,112,111,114,116,32,108,111,99,107,
+ 46,78,41,2,114,54,0,0,0,114,185,0,0,0,41,2,
+ 114,15,0,0,0,114,184,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,218,14,95,102,105,110,100,
+ 95,97,110,100,95,108,111,97,100,208,3,0,0,115,4,0,
+ 0,0,0,2,13,1,114,186,0,0,0,114,33,0,0,0,
+ 99,3,0,0,0,0,0,0,0,5,0,0,0,4,0,0,
+ 0,67,0,0,0,115,166,0,0,0,116,0,0,124,0,0,
+ 124,1,0,124,2,0,131,3,0,1,124,2,0,100,1,0,
+ 107,4,0,114,46,0,116,1,0,124,0,0,124,1,0,124,
+ 2,0,131,3,0,125,0,0,116,2,0,106,3,0,131,0,
+ 0,1,124,0,0,116,4,0,106,5,0,107,7,0,114,84,
+ 0,116,6,0,124,0,0,116,7,0,131,2,0,83,116,4,
+ 0,106,5,0,124,0,0,25,125,3,0,124,3,0,100,2,
+ 0,107,8,0,114,152,0,116,2,0,106,8,0,131,0,0,
+ 1,100,3,0,106,9,0,124,0,0,131,1,0,125,4,0,
+ 116,10,0,124,4,0,100,4,0,124,0,0,131,1,1,130,
+ 1,0,116,11,0,124,0,0,131,1,0,1,124,3,0,83,
+ 41,5,97,50,1,0,0,73,109,112,111,114,116,32,97,110,
+ 100,32,114,101,116,117,114,110,32,116,104,101,32,109,111,100,
+ 117,108,101,32,98,97,115,101,100,32,111,110,32,105,116,115,
+ 32,110,97,109,101,44,32,116,104,101,32,112,97,99,107,97,
+ 103,101,32,116,104,101,32,99,97,108,108,32,105,115,10,32,
+ 32,32,32,98,101,105,110,103,32,109,97,100,101,32,102,114,
+ 111,109,44,32,97,110,100,32,116,104,101,32,108,101,118,101,
+ 108,32,97,100,106,117,115,116,109,101,110,116,46,10,10,32,
+ 32,32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,
+ 32,114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,
+ 103,114,101,97,116,101,115,116,32,99,111,109,109,111,110,32,
+ 100,101,110,111,109,105,110,97,116,111,114,32,111,102,32,102,
+ 117,110,99,116,105,111,110,97,108,105,116,121,10,32,32,32,
+ 32,98,101,116,119,101,101,110,32,105,109,112,111,114,116,95,
+ 109,111,100,117,108,101,32,97,110,100,32,95,95,105,109,112,
+ 111,114,116,95,95,46,32,84,104,105,115,32,105,110,99,108,
+ 117,100,101,115,32,115,101,116,116,105,110,103,32,95,95,112,
+ 97,99,107,97,103,101,95,95,32,105,102,10,32,32,32,32,
+ 116,104,101,32,108,111,97,100,101,114,32,100,105,100,32,110,
+ 111,116,46,10,10,32,32,32,32,114,33,0,0,0,78,122,
+ 40,105,109,112,111,114,116,32,111,102,32,123,125,32,104,97,
+ 108,116,101,100,59,32,78,111,110,101,32,105,110,32,115,121,
+ 115,46,109,111,100,117,108,101,115,114,15,0,0,0,41,12,
+ 114,182,0,0,0,114,172,0,0,0,114,57,0,0,0,114,
+ 146,0,0,0,114,14,0,0,0,114,21,0,0,0,114,186,
+ 0,0,0,218,11,95,103,99,100,95,105,109,112,111,114,116,
+ 114,58,0,0,0,114,50,0,0,0,114,77,0,0,0,114,
+ 63,0,0,0,41,5,114,15,0,0,0,114,170,0,0,0,
+ 114,171,0,0,0,114,89,0,0,0,114,74,0,0,0,114,
+ 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,187,
+ 0,0,0,214,3,0,0,115,28,0,0,0,0,9,16,1,
+ 12,1,18,1,10,1,15,1,13,1,13,1,12,1,10,1,
+ 6,1,9,1,18,1,10,1,114,187,0,0,0,99,3,0,
+ 0,0,0,0,0,0,6,0,0,0,17,0,0,0,67,0,
+ 0,0,115,239,0,0,0,116,0,0,124,0,0,100,1,0,
+ 131,2,0,114,235,0,100,2,0,124,1,0,107,6,0,114,
+ 83,0,116,1,0,124,1,0,131,1,0,125,1,0,124,1,
+ 0,106,2,0,100,2,0,131,1,0,1,116,0,0,124,0,
+ 0,100,3,0,131,2,0,114,83,0,124,1,0,106,3,0,
+ 124,0,0,106,4,0,131,1,0,1,120,149,0,124,1,0,
+ 68,93,141,0,125,3,0,116,0,0,124,0,0,124,3,0,
+ 131,2,0,115,90,0,100,4,0,106,5,0,124,0,0,106,
+ 6,0,124,3,0,131,2,0,125,4,0,121,17,0,116,7,
+ 0,124,2,0,124,4,0,131,2,0,1,87,113,90,0,4,
+ 116,8,0,107,10,0,114,230,0,1,125,5,0,1,122,47,
+ 0,116,9,0,124,5,0,131,1,0,106,10,0,116,11,0,
+ 131,1,0,114,209,0,124,5,0,106,12,0,124,4,0,107,
+ 2,0,114,209,0,119,90,0,130,0,0,87,89,100,5,0,
+ 100,5,0,125,5,0,126,5,0,88,113,90,0,88,113,90,
+ 0,87,124,0,0,83,41,6,122,238,70,105,103,117,114,101,
+ 32,111,117,116,32,119,104,97,116,32,95,95,105,109,112,111,
+ 114,116,95,95,32,115,104,111,117,108,100,32,114,101,116,117,
+ 114,110,46,10,10,32,32,32,32,84,104,101,32,105,109,112,
+ 111,114,116,95,32,112,97,114,97,109,101,116,101,114,32,105,
+ 115,32,97,32,99,97,108,108,97,98,108,101,32,119,104,105,
+ 99,104,32,116,97,107,101,115,32,116,104,101,32,110,97,109,
+ 101,32,111,102,32,109,111,100,117,108,101,32,116,111,10,32,
+ 32,32,32,105,109,112,111,114,116,46,32,73,116,32,105,115,
+ 32,114,101,113,117,105,114,101,100,32,116,111,32,100,101,99,
+ 111,117,112,108,101,32,116,104,101,32,102,117,110,99,116,105,
+ 111,110,32,102,114,111,109,32,97,115,115,117,109,105,110,103,
+ 32,105,109,112,111,114,116,108,105,98,39,115,10,32,32,32,
+ 32,105,109,112,111,114,116,32,105,109,112,108,101,109,101,110,
+ 116,97,116,105,111,110,32,105,115,32,100,101,115,105,114,101,
+ 100,46,10,10,32,32,32,32,114,131,0,0,0,250,1,42,
+ 218,7,95,95,97,108,108,95,95,122,5,123,125,46,123,125,
+ 78,41,13,114,4,0,0,0,114,130,0,0,0,218,6,114,
+ 101,109,111,118,101,218,6,101,120,116,101,110,100,114,189,0,
+ 0,0,114,50,0,0,0,114,1,0,0,0,114,65,0,0,
+ 0,114,77,0,0,0,114,179,0,0,0,114,71,0,0,0,
+ 218,15,95,69,82,82,95,77,83,71,95,80,82,69,70,73,
+ 88,114,15,0,0,0,41,6,114,89,0,0,0,218,8,102,
+ 114,111,109,108,105,115,116,114,184,0,0,0,218,1,120,90,
+ 9,102,114,111,109,95,110,97,109,101,90,3,101,120,99,114,
+ 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,16,
+ 95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,116,
+ 238,3,0,0,115,34,0,0,0,0,10,15,1,12,1,12,
+ 1,13,1,15,1,16,1,13,1,15,1,21,1,3,1,17,
+ 1,18,4,21,1,15,1,3,1,26,1,114,195,0,0,0,
+ 99,1,0,0,0,0,0,0,0,3,0,0,0,7,0,0,
+ 0,67,0,0,0,115,214,0,0,0,124,0,0,106,0,0,
+ 100,1,0,131,1,0,125,1,0,124,0,0,106,0,0,100,
+ 2,0,131,1,0,125,2,0,124,1,0,100,3,0,107,9,
+ 0,114,128,0,124,2,0,100,3,0,107,9,0,114,124,0,
+ 124,1,0,124,2,0,106,1,0,107,3,0,114,124,0,116,
+ 2,0,106,3,0,100,4,0,106,4,0,100,5,0,124,1,
+ 0,155,2,0,100,6,0,124,2,0,106,1,0,155,2,0,
+ 100,7,0,103,5,0,131,1,0,116,5,0,100,8,0,100,
+ 9,0,131,2,1,1,124,1,0,83,124,2,0,100,3,0,
+ 107,9,0,114,147,0,124,2,0,106,1,0,83,116,2,0,
+ 106,3,0,100,10,0,116,5,0,100,8,0,100,9,0,131,
+ 2,1,1,124,0,0,100,11,0,25,125,1,0,100,12,0,
+ 124,0,0,107,7,0,114,210,0,124,1,0,106,6,0,100,
+ 13,0,131,1,0,100,14,0,25,125,1,0,124,1,0,83,
+ 41,15,122,167,67,97,108,99,117,108,97,116,101,32,119,104,
+ 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115,
+ 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95,
+ 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111,
+ 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32,
+ 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111,
+ 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111,
+ 110,101,10,32,32,32,32,116,111,32,114,101,112,114,101,115,
+ 101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111,
+ 112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107,
+ 110,111,119,110,46,10,10,32,32,32,32,114,134,0,0,0,
+ 114,95,0,0,0,78,218,0,122,32,95,95,112,97,99,107,
+ 97,103,101,95,95,32,33,61,32,95,95,115,112,101,99,95,
+ 95,46,112,97,114,101,110,116,32,40,122,4,32,33,61,32,
+ 250,1,41,114,140,0,0,0,233,3,0,0,0,122,89,99,
+ 97,110,39,116,32,114,101,115,111,108,118,101,32,112,97,99,
+ 107,97,103,101,32,102,114,111,109,32,95,95,115,112,101,99,
+ 95,95,32,111,114,32,95,95,112,97,99,107,97,103,101,95,
+ 95,44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,
+ 111,110,32,95,95,110,97,109,101,95,95,32,97,110,100,32,
+ 95,95,112,97,116,104,95,95,114,1,0,0,0,114,131,0,
+ 0,0,114,121,0,0,0,114,33,0,0,0,41,7,114,42,
+ 0,0,0,114,123,0,0,0,114,142,0,0,0,114,143,0,
+ 0,0,114,115,0,0,0,114,176,0,0,0,114,122,0,0,
+ 0,41,3,218,7,103,108,111,98,97,108,115,114,170,0,0,
+ 0,114,88,0,0,0,114,10,0,0,0,114,10,0,0,0,
+ 114,11,0,0,0,218,17,95,99,97,108,99,95,95,95,112,
+ 97,99,107,97,103,101,95,95,14,4,0,0,115,30,0,0,
+ 0,0,7,15,1,15,1,12,1,27,1,42,2,13,1,4,
+ 1,12,1,7,2,9,2,13,1,10,1,12,1,19,1,114,
+ 200,0,0,0,99,5,0,0,0,0,0,0,0,9,0,0,
+ 0,5,0,0,0,67,0,0,0,115,227,0,0,0,124,4,
+ 0,100,1,0,107,2,0,114,27,0,116,0,0,124,0,0,
+ 131,1,0,125,5,0,110,54,0,124,1,0,100,2,0,107,
+ 9,0,114,45,0,124,1,0,110,3,0,105,0,0,125,6,
+ 0,116,1,0,124,6,0,131,1,0,125,7,0,116,0,0,
+ 124,0,0,124,7,0,124,4,0,131,3,0,125,5,0,124,
+ 3,0,115,207,0,124,4,0,100,1,0,107,2,0,114,122,
+ 0,116,0,0,124,0,0,106,2,0,100,3,0,131,1,0,
+ 100,1,0,25,131,1,0,83,124,0,0,115,132,0,124,5,
+ 0,83,116,3,0,124,0,0,131,1,0,116,3,0,124,0,
+ 0,106,2,0,100,3,0,131,1,0,100,1,0,25,131,1,
+ 0,24,125,8,0,116,4,0,106,5,0,124,5,0,106,6,
+ 0,100,2,0,116,3,0,124,5,0,106,6,0,131,1,0,
+ 124,8,0,24,133,2,0,25,25,83,110,16,0,116,7,0,
+ 124,5,0,124,3,0,116,0,0,131,3,0,83,100,2,0,
+ 83,41,4,97,214,1,0,0,73,109,112,111,114,116,32,97,
+ 32,109,111,100,117,108,101,46,10,10,32,32,32,32,84,104,
+ 101,32,39,103,108,111,98,97,108,115,39,32,97,114,103,117,
+ 109,101,110,116,32,105,115,32,117,115,101,100,32,116,111,32,
+ 105,110,102,101,114,32,119,104,101,114,101,32,116,104,101,32,
+ 105,109,112,111,114,116,32,105,115,32,111,99,99,117,114,105,
+ 110,103,32,102,114,111,109,10,32,32,32,32,116,111,32,104,
+ 97,110,100,108,101,32,114,101,108,97,116,105,118,101,32,105,
+ 109,112,111,114,116,115,46,32,84,104,101,32,39,108,111,99,
+ 97,108,115,39,32,97,114,103,117,109,101,110,116,32,105,115,
+ 32,105,103,110,111,114,101,100,46,32,84,104,101,10,32,32,
+ 32,32,39,102,114,111,109,108,105,115,116,39,32,97,114,103,
+ 117,109,101,110,116,32,115,112,101,99,105,102,105,101,115,32,
+ 119,104,97,116,32,115,104,111,117,108,100,32,101,120,105,115,
+ 116,32,97,115,32,97,116,116,114,105,98,117,116,101,115,32,
+ 111,110,32,116,104,101,32,109,111,100,117,108,101,10,32,32,
+ 32,32,98,101,105,110,103,32,105,109,112,111,114,116,101,100,
+ 32,40,101,46,103,46,32,96,96,102,114,111,109,32,109,111,
+ 100,117,108,101,32,105,109,112,111,114,116,32,60,102,114,111,
+ 109,108,105,115,116,62,96,96,41,46,32,32,84,104,101,32,
+ 39,108,101,118,101,108,39,10,32,32,32,32,97,114,103,117,
+ 109,101,110,116,32,114,101,112,114,101,115,101,110,116,115,32,
+ 116,104,101,32,112,97,99,107,97,103,101,32,108,111,99,97,
+ 116,105,111,110,32,116,111,32,105,109,112,111,114,116,32,102,
+ 114,111,109,32,105,110,32,97,32,114,101,108,97,116,105,118,
+ 101,10,32,32,32,32,105,109,112,111,114,116,32,40,101,46,
+ 103,46,32,96,96,102,114,111,109,32,46,46,112,107,103,32,
+ 105,109,112,111,114,116,32,109,111,100,96,96,32,119,111,117,
+ 108,100,32,104,97,118,101,32,97,32,39,108,101,118,101,108,
+ 39,32,111,102,32,50,41,46,10,10,32,32,32,32,114,33,
+ 0,0,0,78,114,121,0,0,0,41,8,114,187,0,0,0,
+ 114,200,0,0,0,218,9,112,97,114,116,105,116,105,111,110,
+ 114,168,0,0,0,114,14,0,0,0,114,21,0,0,0,114,
+ 1,0,0,0,114,195,0,0,0,41,9,114,15,0,0,0,
+ 114,199,0,0,0,218,6,108,111,99,97,108,115,114,193,0,
+ 0,0,114,171,0,0,0,114,89,0,0,0,90,8,103,108,
+ 111,98,97,108,115,95,114,170,0,0,0,90,7,99,117,116,
+ 95,111,102,102,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,218,10,95,95,105,109,112,111,114,116,95,95,41,
+ 4,0,0,115,26,0,0,0,0,11,12,1,15,2,24,1,
+ 12,1,18,1,6,3,12,1,23,1,6,1,4,4,35,3,
+ 40,2,114,203,0,0,0,99,1,0,0,0,0,0,0,0,
+ 2,0,0,0,3,0,0,0,67,0,0,0,115,53,0,0,
+ 0,116,0,0,106,1,0,124,0,0,131,1,0,125,1,0,
+ 124,1,0,100,0,0,107,8,0,114,43,0,116,2,0,100,
+ 1,0,124,0,0,23,131,1,0,130,1,0,116,3,0,124,
+ 1,0,131,1,0,83,41,2,78,122,25,110,111,32,98,117,
+ 105,108,116,45,105,110,32,109,111,100,117,108,101,32,110,97,
+ 109,101,100,32,41,4,114,151,0,0,0,114,155,0,0,0,
+ 114,77,0,0,0,114,150,0,0,0,41,2,114,15,0,0,
+ 0,114,88,0,0,0,114,10,0,0,0,114,10,0,0,0,
+ 114,11,0,0,0,218,18,95,98,117,105,108,116,105,110,95,
+ 102,114,111,109,95,110,97,109,101,76,4,0,0,115,8,0,
+ 0,0,0,1,15,1,12,1,16,1,114,204,0,0,0,99,
+ 2,0,0,0,0,0,0,0,12,0,0,0,12,0,0,0,
+ 67,0,0,0,115,74,1,0,0,124,1,0,97,0,0,124,
+ 0,0,97,1,0,116,2,0,116,1,0,131,1,0,125,2,
+ 0,120,123,0,116,1,0,106,3,0,106,4,0,131,0,0,
+ 68,93,106,0,92,2,0,125,3,0,125,4,0,116,5,0,
+ 124,4,0,124,2,0,131,2,0,114,40,0,124,3,0,116,
+ 1,0,106,6,0,107,6,0,114,91,0,116,7,0,125,5,
+ 0,110,27,0,116,0,0,106,8,0,124,3,0,131,1,0,
+ 114,40,0,116,9,0,125,5,0,110,3,0,113,40,0,116,
+ 10,0,124,4,0,124,5,0,131,2,0,125,6,0,116,11,
+ 0,124,6,0,124,4,0,131,2,0,1,113,40,0,87,116,
+ 1,0,106,3,0,116,12,0,25,125,7,0,120,73,0,100,
+ 5,0,68,93,65,0,125,8,0,124,8,0,116,1,0,106,
+ 3,0,107,7,0,114,206,0,116,13,0,124,8,0,131,1,
+ 0,125,9,0,110,13,0,116,1,0,106,3,0,124,8,0,
+ 25,125,9,0,116,14,0,124,7,0,124,8,0,124,9,0,
+ 131,3,0,1,113,170,0,87,121,16,0,116,13,0,100,2,
+ 0,131,1,0,125,10,0,87,110,24,0,4,116,15,0,107,
+ 10,0,114,25,1,1,1,1,100,3,0,125,10,0,89,110,
+ 1,0,88,116,14,0,124,7,0,100,2,0,124,10,0,131,
+ 3,0,1,116,13,0,100,4,0,131,1,0,125,11,0,116,
+ 14,0,124,7,0,100,4,0,124,11,0,131,3,0,1,100,
+ 3,0,83,41,6,122,250,83,101,116,117,112,32,105,109,112,
+ 111,114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,
+ 105,110,103,32,110,101,101,100,101,100,32,98,117,105,108,116,
+ 45,105,110,32,109,111,100,117,108,101,115,32,97,110,100,32,
+ 105,110,106,101,99,116,105,110,103,32,116,104,101,109,10,32,
+ 32,32,32,105,110,116,111,32,116,104,101,32,103,108,111,98,
+ 97,108,32,110,97,109,101,115,112,97,99,101,46,10,10,32,
+ 32,32,32,65,115,32,115,121,115,32,105,115,32,110,101,101,
+ 100,101,100,32,102,111,114,32,115,121,115,46,109,111,100,117,
+ 108,101,115,32,97,99,99,101,115,115,32,97,110,100,32,95,
+ 105,109,112,32,105,115,32,110,101,101,100,101,100,32,116,111,
+ 32,108,111,97,100,32,98,117,105,108,116,45,105,110,10,32,
+ 32,32,32,109,111,100,117,108,101,115,44,32,116,104,111,115,
+ 101,32,116,119,111,32,109,111,100,117,108,101,115,32,109,117,
+ 115,116,32,98,101,32,101,120,112,108,105,99,105,116,108,121,
+ 32,112,97,115,115,101,100,32,105,110,46,10,10,32,32,32,
+ 32,114,142,0,0,0,114,34,0,0,0,78,114,62,0,0,
+ 0,41,1,122,9,95,119,97,114,110,105,110,103,115,41,16,
+ 114,57,0,0,0,114,14,0,0,0,114,13,0,0,0,114,
+ 21,0,0,0,218,5,105,116,101,109,115,114,178,0,0,0,
+ 114,76,0,0,0,114,151,0,0,0,114,82,0,0,0,114,
+ 161,0,0,0,114,132,0,0,0,114,137,0,0,0,114,1,
+ 0,0,0,114,204,0,0,0,114,5,0,0,0,114,77,0,
+ 0,0,41,12,218,10,115,121,115,95,109,111,100,117,108,101,
+ 218,11,95,105,109,112,95,109,111,100,117,108,101,90,11,109,
+ 111,100,117,108,101,95,116,121,112,101,114,15,0,0,0,114,
+ 89,0,0,0,114,99,0,0,0,114,88,0,0,0,90,11,
+ 115,101,108,102,95,109,111,100,117,108,101,90,12,98,117,105,
+ 108,116,105,110,95,110,97,109,101,90,14,98,117,105,108,116,
+ 105,110,95,109,111,100,117,108,101,90,13,116,104,114,101,97,
+ 100,95,109,111,100,117,108,101,90,14,119,101,97,107,114,101,
+ 102,95,109,111,100,117,108,101,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,218,6,95,115,101,116,117,112,83,
+ 4,0,0,115,50,0,0,0,0,9,6,1,6,3,12,1,
+ 28,1,15,1,15,1,9,1,15,1,9,2,3,1,15,1,
+ 17,3,13,1,13,1,15,1,15,2,13,1,20,3,3,1,
+ 16,1,13,2,11,1,16,3,12,1,114,208,0,0,0,99,
+ 2,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,
+ 67,0,0,0,115,87,0,0,0,116,0,0,124,0,0,124,
+ 1,0,131,2,0,1,116,1,0,106,2,0,106,3,0,116,
+ 4,0,131,1,0,1,116,1,0,106,2,0,106,3,0,116,
+ 5,0,131,1,0,1,100,1,0,100,2,0,108,6,0,125,
+ 2,0,124,2,0,97,7,0,124,2,0,106,8,0,116,1,
+ 0,106,9,0,116,10,0,25,131,1,0,1,100,2,0,83,
+ 41,3,122,50,73,110,115,116,97,108,108,32,105,109,112,111,
+ 114,116,108,105,98,32,97,115,32,116,104,101,32,105,109,112,
+ 108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,105,
+ 109,112,111,114,116,46,114,33,0,0,0,78,41,11,114,208,
+ 0,0,0,114,14,0,0,0,114,175,0,0,0,114,113,0,
+ 0,0,114,151,0,0,0,114,161,0,0,0,218,26,95,102,
+ 114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,95,
+ 101,120,116,101,114,110,97,108,114,119,0,0,0,218,8,95,
+ 105,110,115,116,97,108,108,114,21,0,0,0,114,1,0,0,
+ 0,41,3,114,206,0,0,0,114,207,0,0,0,114,209,0,
0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,218,8,60,109,111,100,117,108,101,62,8,0,0,0,115,
- 96,0,0,0,6,17,6,2,12,8,12,4,19,20,6,2,
- 6,3,22,4,19,68,19,21,19,19,12,19,12,19,12,11,
- 18,8,12,11,12,12,12,16,12,36,19,27,19,101,24,26,
- 9,3,18,45,18,60,12,18,12,17,12,25,12,29,12,23,
- 12,16,19,73,19,77,19,13,12,9,12,9,15,40,12,17,
- 6,1,10,2,12,27,12,6,18,24,12,32,12,15,24,35,
- 12,7,12,47,
+ 0,114,210,0,0,0,130,4,0,0,115,12,0,0,0,0,
+ 2,13,2,16,1,16,3,12,1,6,1,114,210,0,0,0,
+ 41,51,114,3,0,0,0,114,119,0,0,0,114,12,0,0,
+ 0,114,16,0,0,0,114,17,0,0,0,114,59,0,0,0,
+ 114,41,0,0,0,114,48,0,0,0,114,31,0,0,0,114,
+ 32,0,0,0,114,53,0,0,0,114,54,0,0,0,114,56,
+ 0,0,0,114,63,0,0,0,114,65,0,0,0,114,75,0,
+ 0,0,114,81,0,0,0,114,84,0,0,0,114,90,0,0,
+ 0,114,101,0,0,0,114,102,0,0,0,114,106,0,0,0,
+ 114,85,0,0,0,218,6,111,98,106,101,99,116,90,9,95,
+ 80,79,80,85,76,65,84,69,114,132,0,0,0,114,137,0,
+ 0,0,114,145,0,0,0,114,97,0,0,0,114,86,0,0,
+ 0,114,149,0,0,0,114,150,0,0,0,114,87,0,0,0,
+ 114,151,0,0,0,114,161,0,0,0,114,166,0,0,0,114,
+ 172,0,0,0,114,174,0,0,0,114,177,0,0,0,114,182,
+ 0,0,0,114,192,0,0,0,114,183,0,0,0,114,185,0,
+ 0,0,114,186,0,0,0,114,187,0,0,0,114,195,0,0,
+ 0,114,200,0,0,0,114,203,0,0,0,114,204,0,0,0,
+ 114,208,0,0,0,114,210,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,8,
+ 60,109,111,100,117,108,101,62,8,0,0,0,115,96,0,0,
+ 0,6,17,6,2,12,8,12,4,19,20,6,2,6,3,22,
+ 4,19,68,19,21,19,19,12,19,12,19,12,11,18,8,12,
+ 11,12,12,12,16,12,36,19,27,19,101,24,26,9,3,18,
+ 45,18,60,12,18,12,17,12,25,12,29,12,23,12,16,19,
+ 73,19,77,19,13,12,9,12,9,15,47,12,20,6,1,10,
+ 2,12,27,12,6,18,24,12,32,12,27,24,35,12,7,12,
+ 47,
};
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
index b20ce17..840e9c4 100644
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -1,8 +1,8 @@
/* Auto-generated by Programs/_freeze_importlib.c */
const unsigned char _Py_M__importlib_external[] = {
99,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,
- 0,64,0,0,0,115,228,2,0,0,100,0,0,90,0,0,
- 100,96,0,90,1,0,100,4,0,100,5,0,132,0,0,90,
+ 0,64,0,0,0,115,210,2,0,0,100,0,0,90,0,0,
+ 100,92,0,90,1,0,100,4,0,100,5,0,132,0,0,90,
2,0,100,6,0,100,7,0,132,0,0,90,3,0,100,8,
0,100,9,0,132,0,0,90,4,0,100,10,0,100,11,0,
132,0,0,90,5,0,100,12,0,100,13,0,132,0,0,90,
@@ -20,563 +20,541 @@ const unsigned char _Py_M__importlib_external[] = {
1,1,90,26,0,100,37,0,100,38,0,132,0,0,90,27,
0,100,39,0,100,40,0,132,0,0,90,28,0,100,41,0,
100,42,0,132,0,0,90,29,0,100,43,0,100,44,0,132,
- 0,0,90,30,0,100,45,0,100,46,0,100,47,0,100,48,
- 0,132,0,1,90,31,0,100,49,0,100,50,0,132,0,0,
- 90,32,0,100,51,0,100,52,0,132,0,0,90,33,0,100,
- 33,0,100,33,0,100,33,0,100,53,0,100,54,0,132,3,
- 0,90,34,0,100,33,0,100,33,0,100,33,0,100,55,0,
- 100,56,0,132,3,0,90,35,0,100,57,0,100,57,0,100,
- 58,0,100,59,0,132,2,0,90,36,0,100,60,0,100,61,
- 0,132,0,0,90,37,0,101,38,0,131,0,0,90,39,0,
- 100,33,0,100,62,0,100,33,0,100,63,0,101,39,0,100,
- 64,0,100,65,0,132,1,2,90,40,0,71,100,66,0,100,
- 67,0,132,0,0,100,67,0,131,2,0,90,41,0,71,100,
- 68,0,100,69,0,132,0,0,100,69,0,131,2,0,90,42,
- 0,71,100,70,0,100,71,0,132,0,0,100,71,0,101,42,
- 0,131,3,0,90,43,0,71,100,72,0,100,73,0,132,0,
- 0,100,73,0,131,2,0,90,44,0,71,100,74,0,100,75,
- 0,132,0,0,100,75,0,101,44,0,101,43,0,131,4,0,
- 90,45,0,71,100,76,0,100,77,0,132,0,0,100,77,0,
- 101,44,0,101,42,0,131,4,0,90,46,0,103,0,0,90,
- 47,0,71,100,78,0,100,79,0,132,0,0,100,79,0,101,
- 44,0,101,42,0,131,4,0,90,48,0,71,100,80,0,100,
- 81,0,132,0,0,100,81,0,131,2,0,90,49,0,71,100,
- 82,0,100,83,0,132,0,0,100,83,0,131,2,0,90,50,
- 0,71,100,84,0,100,85,0,132,0,0,100,85,0,131,2,
- 0,90,51,0,71,100,86,0,100,87,0,132,0,0,100,87,
- 0,131,2,0,90,52,0,100,33,0,100,88,0,100,89,0,
- 132,1,0,90,53,0,100,90,0,100,91,0,132,0,0,90,
- 54,0,100,92,0,100,93,0,132,0,0,90,55,0,100,94,
- 0,100,95,0,132,0,0,90,56,0,100,33,0,83,41,97,
- 97,94,1,0,0,67,111,114,101,32,105,109,112,108,101,109,
- 101,110,116,97,116,105,111,110,32,111,102,32,112,97,116,104,
- 45,98,97,115,101,100,32,105,109,112,111,114,116,46,10,10,
- 84,104,105,115,32,109,111,100,117,108,101,32,105,115,32,78,
- 79,84,32,109,101,97,110,116,32,116,111,32,98,101,32,100,
- 105,114,101,99,116,108,121,32,105,109,112,111,114,116,101,100,
- 33,32,73,116,32,104,97,115,32,98,101,101,110,32,100,101,
- 115,105,103,110,101,100,32,115,117,99,104,10,116,104,97,116,
- 32,105,116,32,99,97,110,32,98,101,32,98,111,111,116,115,
- 116,114,97,112,112,101,100,32,105,110,116,111,32,80,121,116,
- 104,111,110,32,97,115,32,116,104,101,32,105,109,112,108,101,
- 109,101,110,116,97,116,105,111,110,32,111,102,32,105,109,112,
- 111,114,116,46,32,65,115,10,115,117,99,104,32,105,116,32,
- 114,101,113,117,105,114,101,115,32,116,104,101,32,105,110,106,
- 101,99,116,105,111,110,32,111,102,32,115,112,101,99,105,102,
- 105,99,32,109,111,100,117,108,101,115,32,97,110,100,32,97,
- 116,116,114,105,98,117,116,101,115,32,105,110,32,111,114,100,
- 101,114,32,116,111,10,119,111,114,107,46,32,79,110,101,32,
- 115,104,111,117,108,100,32,117,115,101,32,105,109,112,111,114,
- 116,108,105,98,32,97,115,32,116,104,101,32,112,117,98,108,
- 105,99,45,102,97,99,105,110,103,32,118,101,114,115,105,111,
- 110,32,111,102,32,116,104,105,115,32,109,111,100,117,108,101,
- 46,10,10,218,3,119,105,110,218,6,99,121,103,119,105,110,
- 218,6,100,97,114,119,105,110,99,0,0,0,0,0,0,0,
- 0,1,0,0,0,2,0,0,0,67,0,0,0,115,49,0,
- 0,0,116,0,0,106,1,0,106,2,0,116,3,0,131,1,
- 0,114,33,0,100,1,0,100,2,0,132,0,0,125,0,0,
- 110,12,0,100,3,0,100,2,0,132,0,0,125,0,0,124,
- 0,0,83,41,4,78,99,0,0,0,0,0,0,0,0,0,
- 0,0,0,2,0,0,0,83,0,0,0,115,13,0,0,0,
- 100,1,0,116,0,0,106,1,0,107,6,0,83,41,2,122,
- 53,84,114,117,101,32,105,102,32,102,105,108,101,110,97,109,
- 101,115,32,109,117,115,116,32,98,101,32,99,104,101,99,107,
- 101,100,32,99,97,115,101,45,105,110,115,101,110,115,105,116,
- 105,118,101,108,121,46,115,12,0,0,0,80,89,84,72,79,
- 78,67,65,83,69,79,75,41,2,218,3,95,111,115,90,7,
- 101,110,118,105,114,111,110,169,0,114,4,0,0,0,114,4,
- 0,0,0,250,38,60,102,114,111,122,101,110,32,105,109,112,
- 111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,
- 112,95,101,120,116,101,114,110,97,108,62,218,11,95,114,101,
- 108,97,120,95,99,97,115,101,30,0,0,0,115,2,0,0,
- 0,0,2,122,37,95,109,97,107,101,95,114,101,108,97,120,
- 95,99,97,115,101,46,60,108,111,99,97,108,115,62,46,95,
- 114,101,108,97,120,95,99,97,115,101,99,0,0,0,0,0,
- 0,0,0,0,0,0,0,1,0,0,0,83,0,0,0,115,
- 4,0,0,0,100,1,0,83,41,2,122,53,84,114,117,101,
- 32,105,102,32,102,105,108,101,110,97,109,101,115,32,109,117,
- 115,116,32,98,101,32,99,104,101,99,107,101,100,32,99,97,
- 115,101,45,105,110,115,101,110,115,105,116,105,118,101,108,121,
- 46,70,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,5,0,0,0,114,6,0,0,0,
- 34,0,0,0,115,2,0,0,0,0,2,41,4,218,3,115,
- 121,115,218,8,112,108,97,116,102,111,114,109,218,10,115,116,
- 97,114,116,115,119,105,116,104,218,27,95,67,65,83,69,95,
- 73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,84,
- 70,79,82,77,83,41,1,114,6,0,0,0,114,4,0,0,
- 0,114,4,0,0,0,114,5,0,0,0,218,16,95,109,97,
- 107,101,95,114,101,108,97,120,95,99,97,115,101,28,0,0,
- 0,115,8,0,0,0,0,1,18,1,15,4,12,3,114,11,
+ 0,0,90,30,0,100,45,0,100,46,0,132,0,0,90,31,
+ 0,100,47,0,100,48,0,132,0,0,90,32,0,100,33,0,
+ 100,33,0,100,33,0,100,49,0,100,50,0,132,3,0,90,
+ 33,0,100,33,0,100,33,0,100,33,0,100,51,0,100,52,
+ 0,132,3,0,90,34,0,100,53,0,100,53,0,100,54,0,
+ 100,55,0,132,2,0,90,35,0,100,56,0,100,57,0,132,
+ 0,0,90,36,0,101,37,0,131,0,0,90,38,0,100,33,
+ 0,100,58,0,100,33,0,100,59,0,101,38,0,100,60,0,
+ 100,61,0,132,1,2,90,39,0,71,100,62,0,100,63,0,
+ 132,0,0,100,63,0,131,2,0,90,40,0,71,100,64,0,
+ 100,65,0,132,0,0,100,65,0,131,2,0,90,41,0,71,
+ 100,66,0,100,67,0,132,0,0,100,67,0,101,41,0,131,
+ 3,0,90,42,0,71,100,68,0,100,69,0,132,0,0,100,
+ 69,0,131,2,0,90,43,0,71,100,70,0,100,71,0,132,
+ 0,0,100,71,0,101,43,0,101,42,0,131,4,0,90,44,
+ 0,71,100,72,0,100,73,0,132,0,0,100,73,0,101,43,
+ 0,101,41,0,131,4,0,90,45,0,103,0,0,90,46,0,
+ 71,100,74,0,100,75,0,132,0,0,100,75,0,101,43,0,
+ 101,41,0,131,4,0,90,47,0,71,100,76,0,100,77,0,
+ 132,0,0,100,77,0,131,2,0,90,48,0,71,100,78,0,
+ 100,79,0,132,0,0,100,79,0,131,2,0,90,49,0,71,
+ 100,80,0,100,81,0,132,0,0,100,81,0,131,2,0,90,
+ 50,0,71,100,82,0,100,83,0,132,0,0,100,83,0,131,
+ 2,0,90,51,0,100,33,0,100,84,0,100,85,0,132,1,
+ 0,90,52,0,100,86,0,100,87,0,132,0,0,90,53,0,
+ 100,88,0,100,89,0,132,0,0,90,54,0,100,90,0,100,
+ 91,0,132,0,0,90,55,0,100,33,0,83,41,93,97,94,
+ 1,0,0,67,111,114,101,32,105,109,112,108,101,109,101,110,
+ 116,97,116,105,111,110,32,111,102,32,112,97,116,104,45,98,
+ 97,115,101,100,32,105,109,112,111,114,116,46,10,10,84,104,
+ 105,115,32,109,111,100,117,108,101,32,105,115,32,78,79,84,
+ 32,109,101,97,110,116,32,116,111,32,98,101,32,100,105,114,
+ 101,99,116,108,121,32,105,109,112,111,114,116,101,100,33,32,
+ 73,116,32,104,97,115,32,98,101,101,110,32,100,101,115,105,
+ 103,110,101,100,32,115,117,99,104,10,116,104,97,116,32,105,
+ 116,32,99,97,110,32,98,101,32,98,111,111,116,115,116,114,
+ 97,112,112,101,100,32,105,110,116,111,32,80,121,116,104,111,
+ 110,32,97,115,32,116,104,101,32,105,109,112,108,101,109,101,
+ 110,116,97,116,105,111,110,32,111,102,32,105,109,112,111,114,
+ 116,46,32,65,115,10,115,117,99,104,32,105,116,32,114,101,
+ 113,117,105,114,101,115,32,116,104,101,32,105,110,106,101,99,
+ 116,105,111,110,32,111,102,32,115,112,101,99,105,102,105,99,
+ 32,109,111,100,117,108,101,115,32,97,110,100,32,97,116,116,
+ 114,105,98,117,116,101,115,32,105,110,32,111,114,100,101,114,
+ 32,116,111,10,119,111,114,107,46,32,79,110,101,32,115,104,
+ 111,117,108,100,32,117,115,101,32,105,109,112,111,114,116,108,
+ 105,98,32,97,115,32,116,104,101,32,112,117,98,108,105,99,
+ 45,102,97,99,105,110,103,32,118,101,114,115,105,111,110,32,
+ 111,102,32,116,104,105,115,32,109,111,100,117,108,101,46,10,
+ 10,218,3,119,105,110,218,6,99,121,103,119,105,110,218,6,
+ 100,97,114,119,105,110,99,0,0,0,0,0,0,0,0,1,
+ 0,0,0,2,0,0,0,67,0,0,0,115,49,0,0,0,
+ 116,0,0,106,1,0,106,2,0,116,3,0,131,1,0,114,
+ 33,0,100,1,0,100,2,0,132,0,0,125,0,0,110,12,
+ 0,100,3,0,100,2,0,132,0,0,125,0,0,124,0,0,
+ 83,41,4,78,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,83,0,0,0,115,13,0,0,0,100,1,
+ 0,116,0,0,106,1,0,107,6,0,83,41,2,122,53,84,
+ 114,117,101,32,105,102,32,102,105,108,101,110,97,109,101,115,
+ 32,109,117,115,116,32,98,101,32,99,104,101,99,107,101,100,
+ 32,99,97,115,101,45,105,110,115,101,110,115,105,116,105,118,
+ 101,108,121,46,115,12,0,0,0,80,89,84,72,79,78,67,
+ 65,83,69,79,75,41,2,218,3,95,111,115,90,7,101,110,
+ 118,105,114,111,110,169,0,114,4,0,0,0,114,4,0,0,
+ 0,250,38,60,102,114,111,122,101,110,32,105,109,112,111,114,
+ 116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,95,
+ 101,120,116,101,114,110,97,108,62,218,11,95,114,101,108,97,
+ 120,95,99,97,115,101,30,0,0,0,115,2,0,0,0,0,
+ 2,122,37,95,109,97,107,101,95,114,101,108,97,120,95,99,
+ 97,115,101,46,60,108,111,99,97,108,115,62,46,95,114,101,
+ 108,97,120,95,99,97,115,101,99,0,0,0,0,0,0,0,
+ 0,0,0,0,0,1,0,0,0,83,0,0,0,115,4,0,
+ 0,0,100,1,0,83,41,2,122,53,84,114,117,101,32,105,
+ 102,32,102,105,108,101,110,97,109,101,115,32,109,117,115,116,
+ 32,98,101,32,99,104,101,99,107,101,100,32,99,97,115,101,
+ 45,105,110,115,101,110,115,105,116,105,118,101,108,121,46,70,
+ 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,6,0,0,0,34,0,
+ 0,0,115,2,0,0,0,0,2,41,4,218,3,115,121,115,
+ 218,8,112,108,97,116,102,111,114,109,218,10,115,116,97,114,
+ 116,115,119,105,116,104,218,27,95,67,65,83,69,95,73,78,
+ 83,69,78,83,73,84,73,86,69,95,80,76,65,84,70,79,
+ 82,77,83,41,1,114,6,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,218,16,95,109,97,107,101,
+ 95,114,101,108,97,120,95,99,97,115,101,28,0,0,0,115,
+ 8,0,0,0,0,1,18,1,15,4,12,3,114,11,0,0,
+ 0,99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,
+ 0,0,67,0,0,0,115,26,0,0,0,116,0,0,124,0,
+ 0,131,1,0,100,1,0,64,106,1,0,100,2,0,100,3,
+ 0,131,2,0,83,41,4,122,42,67,111,110,118,101,114,116,
+ 32,97,32,51,50,45,98,105,116,32,105,110,116,101,103,101,
+ 114,32,116,111,32,108,105,116,116,108,101,45,101,110,100,105,
+ 97,110,46,108,3,0,0,0,255,127,255,127,3,0,233,4,
+ 0,0,0,218,6,108,105,116,116,108,101,41,2,218,3,105,
+ 110,116,218,8,116,111,95,98,121,116,101,115,41,1,218,1,
+ 120,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 218,7,95,119,95,108,111,110,103,40,0,0,0,115,2,0,
+ 0,0,0,2,114,17,0,0,0,99,1,0,0,0,0,0,
+ 0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,16,
+ 0,0,0,116,0,0,106,1,0,124,0,0,100,1,0,131,
+ 2,0,83,41,2,122,47,67,111,110,118,101,114,116,32,52,
+ 32,98,121,116,101,115,32,105,110,32,108,105,116,116,108,101,
+ 45,101,110,100,105,97,110,32,116,111,32,97,110,32,105,110,
+ 116,101,103,101,114,46,114,13,0,0,0,41,2,114,14,0,
+ 0,0,218,10,102,114,111,109,95,98,121,116,101,115,41,1,
+ 90,9,105,110,116,95,98,121,116,101,115,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,7,95,114,95,108,
+ 111,110,103,45,0,0,0,115,2,0,0,0,0,2,114,19,
+ 0,0,0,99,0,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,71,0,0,0,115,26,0,0,0,116,0,0,
+ 106,1,0,100,1,0,100,2,0,132,0,0,124,0,0,68,
+ 131,1,0,131,1,0,83,41,3,122,31,82,101,112,108,97,
+ 99,101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,
+ 116,104,46,106,111,105,110,40,41,46,99,1,0,0,0,0,
+ 0,0,0,2,0,0,0,4,0,0,0,83,0,0,0,115,
+ 37,0,0,0,103,0,0,124,0,0,93,27,0,125,1,0,
+ 124,1,0,114,6,0,124,1,0,106,0,0,116,1,0,131,
+ 1,0,145,2,0,113,6,0,83,114,4,0,0,0,41,2,
+ 218,6,114,115,116,114,105,112,218,15,112,97,116,104,95,115,
+ 101,112,97,114,97,116,111,114,115,41,2,218,2,46,48,218,
+ 4,112,97,114,116,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,250,10,60,108,105,115,116,99,111,109,112,62,
+ 52,0,0,0,115,2,0,0,0,9,1,122,30,95,112,97,
+ 116,104,95,106,111,105,110,46,60,108,111,99,97,108,115,62,
+ 46,60,108,105,115,116,99,111,109,112,62,41,2,218,8,112,
+ 97,116,104,95,115,101,112,218,4,106,111,105,110,41,1,218,
+ 10,112,97,116,104,95,112,97,114,116,115,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,10,95,112,97,116,
+ 104,95,106,111,105,110,50,0,0,0,115,4,0,0,0,0,
+ 2,15,1,114,28,0,0,0,99,1,0,0,0,0,0,0,
+ 0,5,0,0,0,5,0,0,0,67,0,0,0,115,134,0,
+ 0,0,116,0,0,116,1,0,131,1,0,100,1,0,107,2,
+ 0,114,52,0,124,0,0,106,2,0,116,3,0,131,1,0,
+ 92,3,0,125,1,0,125,2,0,125,3,0,124,1,0,124,
+ 3,0,102,2,0,83,120,69,0,116,4,0,124,0,0,131,
+ 1,0,68,93,55,0,125,4,0,124,4,0,116,1,0,107,
+ 6,0,114,65,0,124,0,0,106,5,0,124,4,0,100,2,
+ 0,100,1,0,131,1,1,92,2,0,125,1,0,125,3,0,
+ 124,1,0,124,3,0,102,2,0,83,113,65,0,87,100,3,
+ 0,124,0,0,102,2,0,83,41,4,122,32,82,101,112,108,
+ 97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,112,
+ 97,116,104,46,115,112,108,105,116,40,41,46,233,1,0,0,
+ 0,90,8,109,97,120,115,112,108,105,116,218,0,41,6,218,
+ 3,108,101,110,114,21,0,0,0,218,10,114,112,97,114,116,
+ 105,116,105,111,110,114,25,0,0,0,218,8,114,101,118,101,
+ 114,115,101,100,218,6,114,115,112,108,105,116,41,5,218,4,
+ 112,97,116,104,90,5,102,114,111,110,116,218,1,95,218,4,
+ 116,97,105,108,114,16,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,218,11,95,112,97,116,104,95,
+ 115,112,108,105,116,56,0,0,0,115,16,0,0,0,0,2,
+ 18,1,24,1,10,1,19,1,12,1,27,1,14,1,114,38,
0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 3,0,0,0,67,0,0,0,115,26,0,0,0,116,0,0,
- 124,0,0,131,1,0,100,1,0,64,106,1,0,100,2,0,
- 100,3,0,131,2,0,83,41,4,122,42,67,111,110,118,101,
- 114,116,32,97,32,51,50,45,98,105,116,32,105,110,116,101,
- 103,101,114,32,116,111,32,108,105,116,116,108,101,45,101,110,
- 100,105,97,110,46,108,3,0,0,0,255,127,255,127,3,0,
- 233,4,0,0,0,218,6,108,105,116,116,108,101,41,2,218,
- 3,105,110,116,218,8,116,111,95,98,121,116,101,115,41,1,
- 218,1,120,114,4,0,0,0,114,4,0,0,0,114,5,0,
- 0,0,218,7,95,119,95,108,111,110,103,40,0,0,0,115,
- 2,0,0,0,0,2,114,17,0,0,0,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,
- 115,16,0,0,0,116,0,0,106,1,0,124,0,0,100,1,
- 0,131,2,0,83,41,2,122,47,67,111,110,118,101,114,116,
- 32,52,32,98,121,116,101,115,32,105,110,32,108,105,116,116,
- 108,101,45,101,110,100,105,97,110,32,116,111,32,97,110,32,
- 105,110,116,101,103,101,114,46,114,13,0,0,0,41,2,114,
- 14,0,0,0,218,10,102,114,111,109,95,98,121,116,101,115,
- 41,1,90,9,105,110,116,95,98,121,116,101,115,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,218,7,95,114,
- 95,108,111,110,103,45,0,0,0,115,2,0,0,0,0,2,
- 114,19,0,0,0,99,0,0,0,0,0,0,0,0,1,0,
- 0,0,3,0,0,0,71,0,0,0,115,26,0,0,0,116,
- 0,0,106,1,0,100,1,0,100,2,0,132,0,0,124,0,
- 0,68,131,1,0,131,1,0,83,41,3,122,31,82,101,112,
+ 2,0,0,0,67,0,0,0,115,13,0,0,0,116,0,0,
+ 106,1,0,124,0,0,131,1,0,83,41,1,122,126,83,116,
+ 97,116,32,116,104,101,32,112,97,116,104,46,10,10,32,32,
+ 32,32,77,97,100,101,32,97,32,115,101,112,97,114,97,116,
+ 101,32,102,117,110,99,116,105,111,110,32,116,111,32,109,97,
+ 107,101,32,105,116,32,101,97,115,105,101,114,32,116,111,32,
+ 111,118,101,114,114,105,100,101,32,105,110,32,101,120,112,101,
+ 114,105,109,101,110,116,115,10,32,32,32,32,40,101,46,103,
+ 46,32,99,97,99,104,101,32,115,116,97,116,32,114,101,115,
+ 117,108,116,115,41,46,10,10,32,32,32,32,41,2,114,3,
+ 0,0,0,90,4,115,116,97,116,41,1,114,35,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
+ 10,95,112,97,116,104,95,115,116,97,116,68,0,0,0,115,
+ 2,0,0,0,0,7,114,39,0,0,0,99,2,0,0,0,
+ 0,0,0,0,3,0,0,0,11,0,0,0,67,0,0,0,
+ 115,58,0,0,0,121,16,0,116,0,0,124,0,0,131,1,
+ 0,125,2,0,87,110,22,0,4,116,1,0,107,10,0,114,
+ 40,0,1,1,1,100,1,0,83,89,110,1,0,88,124,2,
+ 0,106,2,0,100,2,0,64,124,1,0,107,2,0,83,41,
+ 3,122,49,84,101,115,116,32,119,104,101,116,104,101,114,32,
+ 116,104,101,32,112,97,116,104,32,105,115,32,116,104,101,32,
+ 115,112,101,99,105,102,105,101,100,32,109,111,100,101,32,116,
+ 121,112,101,46,70,105,0,240,0,0,41,3,114,39,0,0,
+ 0,218,7,79,83,69,114,114,111,114,218,7,115,116,95,109,
+ 111,100,101,41,3,114,35,0,0,0,218,4,109,111,100,101,
+ 90,9,115,116,97,116,95,105,110,102,111,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,18,95,112,97,116,
+ 104,95,105,115,95,109,111,100,101,95,116,121,112,101,78,0,
+ 0,0,115,10,0,0,0,0,2,3,1,16,1,13,1,9,
+ 1,114,43,0,0,0,99,1,0,0,0,0,0,0,0,1,
+ 0,0,0,3,0,0,0,67,0,0,0,115,13,0,0,0,
+ 116,0,0,124,0,0,100,1,0,131,2,0,83,41,2,122,
+ 31,82,101,112,108,97,99,101,109,101,110,116,32,102,111,114,
+ 32,111,115,46,112,97,116,104,46,105,115,102,105,108,101,46,
+ 105,0,128,0,0,41,1,114,43,0,0,0,41,1,114,35,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,218,12,95,112,97,116,104,95,105,115,102,105,108,101,
+ 87,0,0,0,115,2,0,0,0,0,2,114,44,0,0,0,
+ 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,
+ 0,67,0,0,0,115,31,0,0,0,124,0,0,115,18,0,
+ 116,0,0,106,1,0,131,0,0,125,0,0,116,2,0,124,
+ 0,0,100,1,0,131,2,0,83,41,2,122,30,82,101,112,
108,97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,
- 112,97,116,104,46,106,111,105,110,40,41,46,99,1,0,0,
- 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0,
- 0,115,37,0,0,0,103,0,0,124,0,0,93,27,0,125,
- 1,0,124,1,0,114,6,0,124,1,0,106,0,0,116,1,
- 0,131,1,0,145,2,0,113,6,0,83,114,4,0,0,0,
- 41,2,218,6,114,115,116,114,105,112,218,15,112,97,116,104,
- 95,115,101,112,97,114,97,116,111,114,115,41,2,218,2,46,
- 48,218,4,112,97,114,116,114,4,0,0,0,114,4,0,0,
- 0,114,5,0,0,0,250,10,60,108,105,115,116,99,111,109,
- 112,62,52,0,0,0,115,2,0,0,0,9,1,122,30,95,
- 112,97,116,104,95,106,111,105,110,46,60,108,111,99,97,108,
- 115,62,46,60,108,105,115,116,99,111,109,112,62,41,2,218,
- 8,112,97,116,104,95,115,101,112,218,4,106,111,105,110,41,
- 1,218,10,112,97,116,104,95,112,97,114,116,115,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,218,10,95,112,
- 97,116,104,95,106,111,105,110,50,0,0,0,115,4,0,0,
- 0,0,2,15,1,114,28,0,0,0,99,1,0,0,0,0,
- 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,
- 134,0,0,0,116,0,0,116,1,0,131,1,0,100,1,0,
- 107,2,0,114,52,0,124,0,0,106,2,0,116,3,0,131,
- 1,0,92,3,0,125,1,0,125,2,0,125,3,0,124,1,
- 0,124,3,0,102,2,0,83,120,69,0,116,4,0,124,0,
- 0,131,1,0,68,93,55,0,125,4,0,124,4,0,116,1,
- 0,107,6,0,114,65,0,124,0,0,106,5,0,124,4,0,
- 100,2,0,100,1,0,131,1,1,92,2,0,125,1,0,125,
- 3,0,124,1,0,124,3,0,102,2,0,83,113,65,0,87,
- 100,3,0,124,0,0,102,2,0,83,41,4,122,32,82,101,
- 112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,115,
- 46,112,97,116,104,46,115,112,108,105,116,40,41,46,233,1,
- 0,0,0,90,8,109,97,120,115,112,108,105,116,218,0,41,
- 6,218,3,108,101,110,114,21,0,0,0,218,10,114,112,97,
- 114,116,105,116,105,111,110,114,25,0,0,0,218,8,114,101,
- 118,101,114,115,101,100,218,6,114,115,112,108,105,116,41,5,
- 218,4,112,97,116,104,90,5,102,114,111,110,116,218,1,95,
- 218,4,116,97,105,108,114,16,0,0,0,114,4,0,0,0,
+ 112,97,116,104,46,105,115,100,105,114,46,105,0,64,0,0,
+ 41,3,114,3,0,0,0,218,6,103,101,116,99,119,100,114,
+ 43,0,0,0,41,1,114,35,0,0,0,114,4,0,0,0,
114,4,0,0,0,114,5,0,0,0,218,11,95,112,97,116,
- 104,95,115,112,108,105,116,56,0,0,0,115,16,0,0,0,
- 0,2,18,1,24,1,10,1,19,1,12,1,27,1,14,1,
- 114,38,0,0,0,99,1,0,0,0,0,0,0,0,1,0,
- 0,0,2,0,0,0,67,0,0,0,115,13,0,0,0,116,
- 0,0,106,1,0,124,0,0,131,1,0,83,41,1,122,126,
- 83,116,97,116,32,116,104,101,32,112,97,116,104,46,10,10,
- 32,32,32,32,77,97,100,101,32,97,32,115,101,112,97,114,
- 97,116,101,32,102,117,110,99,116,105,111,110,32,116,111,32,
- 109,97,107,101,32,105,116,32,101,97,115,105,101,114,32,116,
- 111,32,111,118,101,114,114,105,100,101,32,105,110,32,101,120,
- 112,101,114,105,109,101,110,116,115,10,32,32,32,32,40,101,
- 46,103,46,32,99,97,99,104,101,32,115,116,97,116,32,114,
- 101,115,117,108,116,115,41,46,10,10,32,32,32,32,41,2,
- 114,3,0,0,0,90,4,115,116,97,116,41,1,114,35,0,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,218,10,95,112,97,116,104,95,115,116,97,116,68,0,0,
- 0,115,2,0,0,0,0,7,114,39,0,0,0,99,2,0,
- 0,0,0,0,0,0,3,0,0,0,11,0,0,0,67,0,
- 0,0,115,58,0,0,0,121,16,0,116,0,0,124,0,0,
- 131,1,0,125,2,0,87,110,22,0,4,116,1,0,107,10,
- 0,114,40,0,1,1,1,100,1,0,83,89,110,1,0,88,
- 124,2,0,106,2,0,100,2,0,64,124,1,0,107,2,0,
- 83,41,3,122,49,84,101,115,116,32,119,104,101,116,104,101,
- 114,32,116,104,101,32,112,97,116,104,32,105,115,32,116,104,
- 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,101,
- 32,116,121,112,101,46,70,105,0,240,0,0,41,3,114,39,
- 0,0,0,218,7,79,83,69,114,114,111,114,218,7,115,116,
- 95,109,111,100,101,41,3,114,35,0,0,0,218,4,109,111,
- 100,101,90,9,115,116,97,116,95,105,110,102,111,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,218,18,95,112,
- 97,116,104,95,105,115,95,109,111,100,101,95,116,121,112,101,
- 78,0,0,0,115,10,0,0,0,0,2,3,1,16,1,13,
- 1,9,1,114,43,0,0,0,99,1,0,0,0,0,0,0,
- 0,1,0,0,0,3,0,0,0,67,0,0,0,115,13,0,
- 0,0,116,0,0,124,0,0,100,1,0,131,2,0,83,41,
- 2,122,31,82,101,112,108,97,99,101,109,101,110,116,32,102,
- 111,114,32,111,115,46,112,97,116,104,46,105,115,102,105,108,
- 101,46,105,0,128,0,0,41,1,114,43,0,0,0,41,1,
- 114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,12,95,112,97,116,104,95,105,115,102,105,
- 108,101,87,0,0,0,115,2,0,0,0,0,2,114,44,0,
- 0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,3,
- 0,0,0,67,0,0,0,115,31,0,0,0,124,0,0,115,
- 18,0,116,0,0,106,1,0,131,0,0,125,0,0,116,2,
- 0,124,0,0,100,1,0,131,2,0,83,41,2,122,30,82,
- 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,
- 115,46,112,97,116,104,46,105,115,100,105,114,46,105,0,64,
- 0,0,41,3,114,3,0,0,0,218,6,103,101,116,99,119,
- 100,114,43,0,0,0,41,1,114,35,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,218,11,95,112,
- 97,116,104,95,105,115,100,105,114,92,0,0,0,115,6,0,
- 0,0,0,2,6,1,12,1,114,46,0,0,0,105,182,1,
- 0,0,99,3,0,0,0,0,0,0,0,6,0,0,0,17,
- 0,0,0,67,0,0,0,115,193,0,0,0,100,1,0,106,
- 0,0,124,0,0,116,1,0,124,0,0,131,1,0,131,2,
- 0,125,3,0,116,2,0,106,3,0,124,3,0,116,2,0,
- 106,4,0,116,2,0,106,5,0,66,116,2,0,106,6,0,
- 66,124,2,0,100,2,0,64,131,3,0,125,4,0,121,61,
- 0,116,7,0,106,8,0,124,4,0,100,3,0,131,2,0,
- 143,20,0,125,5,0,124,5,0,106,9,0,124,1,0,131,
- 1,0,1,87,100,4,0,81,82,88,116,2,0,106,10,0,
- 124,3,0,124,0,0,131,2,0,1,87,110,59,0,4,116,
- 11,0,107,10,0,114,188,0,1,1,1,121,17,0,116,2,
- 0,106,12,0,124,3,0,131,1,0,1,87,110,18,0,4,
- 116,11,0,107,10,0,114,180,0,1,1,1,89,110,1,0,
- 88,130,0,0,89,110,1,0,88,100,4,0,83,41,5,122,
- 162,66,101,115,116,45,101,102,102,111,114,116,32,102,117,110,
- 99,116,105,111,110,32,116,111,32,119,114,105,116,101,32,100,
- 97,116,97,32,116,111,32,97,32,112,97,116,104,32,97,116,
- 111,109,105,99,97,108,108,121,46,10,32,32,32,32,66,101,
- 32,112,114,101,112,97,114,101,100,32,116,111,32,104,97,110,
- 100,108,101,32,97,32,70,105,108,101,69,120,105,115,116,115,
- 69,114,114,111,114,32,105,102,32,99,111,110,99,117,114,114,
- 101,110,116,32,119,114,105,116,105,110,103,32,111,102,32,116,
- 104,101,10,32,32,32,32,116,101,109,112,111,114,97,114,121,
- 32,102,105,108,101,32,105,115,32,97,116,116,101,109,112,116,
- 101,100,46,122,5,123,125,46,123,125,105,182,1,0,0,90,
- 2,119,98,78,41,13,218,6,102,111,114,109,97,116,218,2,
- 105,100,114,3,0,0,0,90,4,111,112,101,110,90,6,79,
- 95,69,88,67,76,90,7,79,95,67,82,69,65,84,90,8,
- 79,95,87,82,79,78,76,89,218,3,95,105,111,218,6,70,
- 105,108,101,73,79,218,5,119,114,105,116,101,218,7,114,101,
- 112,108,97,99,101,114,40,0,0,0,90,6,117,110,108,105,
- 110,107,41,6,114,35,0,0,0,218,4,100,97,116,97,114,
- 42,0,0,0,90,8,112,97,116,104,95,116,109,112,90,2,
- 102,100,218,4,102,105,108,101,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,218,13,95,119,114,105,116,101,95,
- 97,116,111,109,105,99,99,0,0,0,115,26,0,0,0,0,
- 5,24,1,9,1,33,1,3,3,21,1,20,1,20,1,13,
- 1,3,1,17,1,13,1,5,1,114,55,0,0,0,105,22,
- 13,0,0,233,2,0,0,0,114,13,0,0,0,115,2,0,
- 0,0,13,10,90,11,95,95,112,121,99,97,99,104,101,95,
- 95,122,4,111,112,116,45,122,3,46,112,121,122,4,46,112,
- 121,99,78,218,12,111,112,116,105,109,105,122,97,116,105,111,
- 110,99,2,0,0,0,1,0,0,0,11,0,0,0,6,0,
- 0,0,67,0,0,0,115,87,1,0,0,124,1,0,100,1,
- 0,107,9,0,114,76,0,116,0,0,106,1,0,100,2,0,
- 116,2,0,131,2,0,1,124,2,0,100,1,0,107,9,0,
- 114,58,0,100,3,0,125,3,0,116,3,0,124,3,0,131,
- 1,0,130,1,0,124,1,0,114,70,0,100,4,0,110,3,
- 0,100,5,0,125,2,0,116,4,0,124,0,0,131,1,0,
- 92,2,0,125,4,0,125,5,0,124,5,0,106,5,0,100,
- 6,0,131,1,0,92,3,0,125,6,0,125,7,0,125,8,
- 0,116,6,0,106,7,0,106,8,0,125,9,0,124,9,0,
- 100,1,0,107,8,0,114,154,0,116,9,0,100,7,0,131,
- 1,0,130,1,0,100,4,0,106,10,0,124,6,0,114,172,
- 0,124,6,0,110,3,0,124,8,0,124,7,0,124,9,0,
- 103,3,0,131,1,0,125,10,0,124,2,0,100,1,0,107,
- 8,0,114,241,0,116,6,0,106,11,0,106,12,0,100,8,
- 0,107,2,0,114,229,0,100,4,0,125,2,0,110,12,0,
- 116,6,0,106,11,0,106,12,0,125,2,0,116,13,0,124,
- 2,0,131,1,0,125,2,0,124,2,0,100,4,0,107,3,
- 0,114,63,1,124,2,0,106,14,0,131,0,0,115,42,1,
- 116,15,0,100,9,0,106,16,0,124,2,0,131,1,0,131,
- 1,0,130,1,0,100,10,0,106,16,0,124,10,0,116,17,
- 0,124,2,0,131,3,0,125,10,0,116,18,0,124,4,0,
- 116,19,0,124,10,0,116,20,0,100,8,0,25,23,131,3,
- 0,83,41,11,97,254,2,0,0,71,105,118,101,110,32,116,
- 104,101,32,112,97,116,104,32,116,111,32,97,32,46,112,121,
- 32,102,105,108,101,44,32,114,101,116,117,114,110,32,116,104,
- 101,32,112,97,116,104,32,116,111,32,105,116,115,32,46,112,
- 121,99,32,102,105,108,101,46,10,10,32,32,32,32,84,104,
- 101,32,46,112,121,32,102,105,108,101,32,100,111,101,115,32,
- 110,111,116,32,110,101,101,100,32,116,111,32,101,120,105,115,
- 116,59,32,116,104,105,115,32,115,105,109,112,108,121,32,114,
- 101,116,117,114,110,115,32,116,104,101,32,112,97,116,104,32,
- 116,111,32,116,104,101,10,32,32,32,32,46,112,121,99,32,
- 102,105,108,101,32,99,97,108,99,117,108,97,116,101,100,32,
- 97,115,32,105,102,32,116,104,101,32,46,112,121,32,102,105,
- 108,101,32,119,101,114,101,32,105,109,112,111,114,116,101,100,
- 46,10,10,32,32,32,32,84,104,101,32,39,111,112,116,105,
- 109,105,122,97,116,105,111,110,39,32,112,97,114,97,109,101,
- 116,101,114,32,99,111,110,116,114,111,108,115,32,116,104,101,
- 32,112,114,101,115,117,109,101,100,32,111,112,116,105,109,105,
- 122,97,116,105,111,110,32,108,101,118,101,108,32,111,102,10,
- 32,32,32,32,116,104,101,32,98,121,116,101,99,111,100,101,
- 32,102,105,108,101,46,32,73,102,32,39,111,112,116,105,109,
- 105,122,97,116,105,111,110,39,32,105,115,32,110,111,116,32,
- 78,111,110,101,44,32,116,104,101,32,115,116,114,105,110,103,
- 32,114,101,112,114,101,115,101,110,116,97,116,105,111,110,10,
- 32,32,32,32,111,102,32,116,104,101,32,97,114,103,117,109,
- 101,110,116,32,105,115,32,116,97,107,101,110,32,97,110,100,
- 32,118,101,114,105,102,105,101,100,32,116,111,32,98,101,32,
- 97,108,112,104,97,110,117,109,101,114,105,99,32,40,101,108,
- 115,101,32,86,97,108,117,101,69,114,114,111,114,10,32,32,
- 32,32,105,115,32,114,97,105,115,101,100,41,46,10,10,32,
- 32,32,32,84,104,101,32,100,101,98,117,103,95,111,118,101,
- 114,114,105,100,101,32,112,97,114,97,109,101,116,101,114,32,
- 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,73,
- 102,32,100,101,98,117,103,95,111,118,101,114,114,105,100,101,
- 32,105,115,32,110,111,116,32,78,111,110,101,44,10,32,32,
- 32,32,97,32,84,114,117,101,32,118,97,108,117,101,32,105,
- 115,32,116,104,101,32,115,97,109,101,32,97,115,32,115,101,
- 116,116,105,110,103,32,39,111,112,116,105,109,105,122,97,116,
- 105,111,110,39,32,116,111,32,116,104,101,32,101,109,112,116,
- 121,32,115,116,114,105,110,103,10,32,32,32,32,119,104,105,
- 108,101,32,97,32,70,97,108,115,101,32,118,97,108,117,101,
- 32,105,115,32,101,113,117,105,118,97,108,101,110,116,32,116,
- 111,32,115,101,116,116,105,110,103,32,39,111,112,116,105,109,
- 105,122,97,116,105,111,110,39,32,116,111,32,39,49,39,46,
- 10,10,32,32,32,32,73,102,32,115,121,115,46,105,109,112,
- 108,101,109,101,110,116,97,116,105,111,110,46,99,97,99,104,
- 101,95,116,97,103,32,105,115,32,78,111,110,101,32,116,104,
- 101,110,32,78,111,116,73,109,112,108,101,109,101,110,116,101,
- 100,69,114,114,111,114,32,105,115,32,114,97,105,115,101,100,
- 46,10,10,32,32,32,32,78,122,70,116,104,101,32,100,101,
- 98,117,103,95,111,118,101,114,114,105,100,101,32,112,97,114,
- 97,109,101,116,101,114,32,105,115,32,100,101,112,114,101,99,
- 97,116,101,100,59,32,117,115,101,32,39,111,112,116,105,109,
- 105,122,97,116,105,111,110,39,32,105,110,115,116,101,97,100,
- 122,50,100,101,98,117,103,95,111,118,101,114,114,105,100,101,
- 32,111,114,32,111,112,116,105,109,105,122,97,116,105,111,110,
- 32,109,117,115,116,32,98,101,32,115,101,116,32,116,111,32,
- 78,111,110,101,114,30,0,0,0,114,29,0,0,0,218,1,
- 46,122,36,115,121,115,46,105,109,112,108,101,109,101,110,116,
- 97,116,105,111,110,46,99,97,99,104,101,95,116,97,103,32,
- 105,115,32,78,111,110,101,233,0,0,0,0,122,24,123,33,
- 114,125,32,105,115,32,110,111,116,32,97,108,112,104,97,110,
- 117,109,101,114,105,99,122,7,123,125,46,123,125,123,125,41,
- 21,218,9,95,119,97,114,110,105,110,103,115,218,4,119,97,
- 114,110,218,18,68,101,112,114,101,99,97,116,105,111,110,87,
- 97,114,110,105,110,103,218,9,84,121,112,101,69,114,114,111,
- 114,114,38,0,0,0,114,32,0,0,0,114,7,0,0,0,
- 218,14,105,109,112,108,101,109,101,110,116,97,116,105,111,110,
- 218,9,99,97,99,104,101,95,116,97,103,218,19,78,111,116,
- 73,109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,
- 114,26,0,0,0,218,5,102,108,97,103,115,218,8,111,112,
- 116,105,109,105,122,101,218,3,115,116,114,218,7,105,115,97,
- 108,110,117,109,218,10,86,97,108,117,101,69,114,114,111,114,
- 114,47,0,0,0,218,4,95,79,80,84,114,28,0,0,0,
- 218,8,95,80,89,67,65,67,72,69,218,17,66,89,84,69,
- 67,79,68,69,95,83,85,70,70,73,88,69,83,41,11,114,
- 35,0,0,0,90,14,100,101,98,117,103,95,111,118,101,114,
- 114,105,100,101,114,57,0,0,0,218,7,109,101,115,115,97,
- 103,101,218,4,104,101,97,100,114,37,0,0,0,90,4,98,
- 97,115,101,218,3,115,101,112,218,4,114,101,115,116,90,3,
- 116,97,103,90,15,97,108,109,111,115,116,95,102,105,108,101,
- 110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,218,17,99,97,99,104,101,95,102,114,111,109,95,
- 115,111,117,114,99,101,243,0,0,0,115,46,0,0,0,0,
- 18,12,1,9,1,7,1,12,1,6,1,12,1,18,1,18,
- 1,24,1,12,1,12,1,12,1,36,1,12,1,18,1,9,
- 2,12,1,12,1,12,1,12,1,21,1,21,1,114,79,0,
- 0,0,99,1,0,0,0,0,0,0,0,8,0,0,0,5,
- 0,0,0,67,0,0,0,115,62,1,0,0,116,0,0,106,
- 1,0,106,2,0,100,1,0,107,8,0,114,30,0,116,3,
- 0,100,2,0,131,1,0,130,1,0,116,4,0,124,0,0,
- 131,1,0,92,2,0,125,1,0,125,2,0,116,4,0,124,
- 1,0,131,1,0,92,2,0,125,1,0,125,3,0,124,3,
- 0,116,5,0,107,3,0,114,102,0,116,6,0,100,3,0,
- 106,7,0,116,5,0,124,0,0,131,2,0,131,1,0,130,
- 1,0,124,2,0,106,8,0,100,4,0,131,1,0,125,4,
- 0,124,4,0,100,11,0,107,7,0,114,153,0,116,6,0,
- 100,7,0,106,7,0,124,2,0,131,1,0,131,1,0,130,
- 1,0,110,125,0,124,4,0,100,6,0,107,2,0,114,22,
- 1,124,2,0,106,9,0,100,4,0,100,5,0,131,2,0,
- 100,12,0,25,125,5,0,124,5,0,106,10,0,116,11,0,
- 131,1,0,115,223,0,116,6,0,100,8,0,106,7,0,116,
- 11,0,131,1,0,131,1,0,130,1,0,124,5,0,116,12,
- 0,116,11,0,131,1,0,100,1,0,133,2,0,25,125,6,
- 0,124,6,0,106,13,0,131,0,0,115,22,1,116,6,0,
- 100,9,0,106,7,0,124,5,0,131,1,0,131,1,0,130,
- 1,0,124,2,0,106,14,0,100,4,0,131,1,0,100,10,
- 0,25,125,7,0,116,15,0,124,1,0,124,7,0,116,16,
- 0,100,10,0,25,23,131,2,0,83,41,13,97,110,1,0,
- 0,71,105,118,101,110,32,116,104,101,32,112,97,116,104,32,
- 116,111,32,97,32,46,112,121,99,46,32,102,105,108,101,44,
- 32,114,101,116,117,114,110,32,116,104,101,32,112,97,116,104,
- 32,116,111,32,105,116,115,32,46,112,121,32,102,105,108,101,
- 46,10,10,32,32,32,32,84,104,101,32,46,112,121,99,32,
- 102,105,108,101,32,100,111,101,115,32,110,111,116,32,110,101,
- 101,100,32,116,111,32,101,120,105,115,116,59,32,116,104,105,
- 115,32,115,105,109,112,108,121,32,114,101,116,117,114,110,115,
- 32,116,104,101,32,112,97,116,104,32,116,111,10,32,32,32,
- 32,116,104,101,32,46,112,121,32,102,105,108,101,32,99,97,
- 108,99,117,108,97,116,101,100,32,116,111,32,99,111,114,114,
- 101,115,112,111,110,100,32,116,111,32,116,104,101,32,46,112,
- 121,99,32,102,105,108,101,46,32,32,73,102,32,112,97,116,
- 104,32,100,111,101,115,10,32,32,32,32,110,111,116,32,99,
- 111,110,102,111,114,109,32,116,111,32,80,69,80,32,51,49,
- 52,55,47,52,56,56,32,102,111,114,109,97,116,44,32,86,
- 97,108,117,101,69,114,114,111,114,32,119,105,108,108,32,98,
- 101,32,114,97,105,115,101,100,46,32,73,102,10,32,32,32,
- 32,115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,
+ 104,95,105,115,100,105,114,92,0,0,0,115,6,0,0,0,
+ 0,2,6,1,12,1,114,46,0,0,0,105,182,1,0,0,
+ 99,3,0,0,0,0,0,0,0,6,0,0,0,17,0,0,
+ 0,67,0,0,0,115,193,0,0,0,100,1,0,106,0,0,
+ 124,0,0,116,1,0,124,0,0,131,1,0,131,2,0,125,
+ 3,0,116,2,0,106,3,0,124,3,0,116,2,0,106,4,
+ 0,116,2,0,106,5,0,66,116,2,0,106,6,0,66,124,
+ 2,0,100,2,0,64,131,3,0,125,4,0,121,61,0,116,
+ 7,0,106,8,0,124,4,0,100,3,0,131,2,0,143,20,
+ 0,125,5,0,124,5,0,106,9,0,124,1,0,131,1,0,
+ 1,87,100,4,0,81,82,88,116,2,0,106,10,0,124,3,
+ 0,124,0,0,131,2,0,1,87,110,59,0,4,116,11,0,
+ 107,10,0,114,188,0,1,1,1,121,17,0,116,2,0,106,
+ 12,0,124,3,0,131,1,0,1,87,110,18,0,4,116,11,
+ 0,107,10,0,114,180,0,1,1,1,89,110,1,0,88,130,
+ 0,0,89,110,1,0,88,100,4,0,83,41,5,122,162,66,
+ 101,115,116,45,101,102,102,111,114,116,32,102,117,110,99,116,
+ 105,111,110,32,116,111,32,119,114,105,116,101,32,100,97,116,
+ 97,32,116,111,32,97,32,112,97,116,104,32,97,116,111,109,
+ 105,99,97,108,108,121,46,10,32,32,32,32,66,101,32,112,
+ 114,101,112,97,114,101,100,32,116,111,32,104,97,110,100,108,
+ 101,32,97,32,70,105,108,101,69,120,105,115,116,115,69,114,
+ 114,111,114,32,105,102,32,99,111,110,99,117,114,114,101,110,
+ 116,32,119,114,105,116,105,110,103,32,111,102,32,116,104,101,
+ 10,32,32,32,32,116,101,109,112,111,114,97,114,121,32,102,
+ 105,108,101,32,105,115,32,97,116,116,101,109,112,116,101,100,
+ 46,122,5,123,125,46,123,125,105,182,1,0,0,90,2,119,
+ 98,78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,
+ 114,3,0,0,0,90,4,111,112,101,110,90,6,79,95,69,
+ 88,67,76,90,7,79,95,67,82,69,65,84,90,8,79,95,
+ 87,82,79,78,76,89,218,3,95,105,111,218,6,70,105,108,
+ 101,73,79,218,5,119,114,105,116,101,218,7,114,101,112,108,
+ 97,99,101,114,40,0,0,0,90,6,117,110,108,105,110,107,
+ 41,6,114,35,0,0,0,218,4,100,97,116,97,114,42,0,
+ 0,0,90,8,112,97,116,104,95,116,109,112,90,2,102,100,
+ 218,4,102,105,108,101,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,218,13,95,119,114,105,116,101,95,97,116,
+ 111,109,105,99,99,0,0,0,115,26,0,0,0,0,5,24,
+ 1,9,1,33,1,3,3,21,1,20,1,20,1,13,1,3,
+ 1,17,1,13,1,5,1,114,55,0,0,0,105,33,13,0,
+ 0,233,2,0,0,0,114,13,0,0,0,115,2,0,0,0,
+ 13,10,90,11,95,95,112,121,99,97,99,104,101,95,95,122,
+ 4,111,112,116,45,122,3,46,112,121,122,4,46,112,121,99,
+ 78,218,12,111,112,116,105,109,105,122,97,116,105,111,110,99,
+ 2,0,0,0,1,0,0,0,11,0,0,0,6,0,0,0,
+ 67,0,0,0,115,87,1,0,0,124,1,0,100,1,0,107,
+ 9,0,114,76,0,116,0,0,106,1,0,100,2,0,116,2,
+ 0,131,2,0,1,124,2,0,100,1,0,107,9,0,114,58,
+ 0,100,3,0,125,3,0,116,3,0,124,3,0,131,1,0,
+ 130,1,0,124,1,0,114,70,0,100,4,0,110,3,0,100,
+ 5,0,125,2,0,116,4,0,124,0,0,131,1,0,92,2,
+ 0,125,4,0,125,5,0,124,5,0,106,5,0,100,6,0,
+ 131,1,0,92,3,0,125,6,0,125,7,0,125,8,0,116,
+ 6,0,106,7,0,106,8,0,125,9,0,124,9,0,100,1,
+ 0,107,8,0,114,154,0,116,9,0,100,7,0,131,1,0,
+ 130,1,0,100,4,0,106,10,0,124,6,0,114,172,0,124,
+ 6,0,110,3,0,124,8,0,124,7,0,124,9,0,103,3,
+ 0,131,1,0,125,10,0,124,2,0,100,1,0,107,8,0,
+ 114,241,0,116,6,0,106,11,0,106,12,0,100,8,0,107,
+ 2,0,114,229,0,100,4,0,125,2,0,110,12,0,116,6,
+ 0,106,11,0,106,12,0,125,2,0,116,13,0,124,2,0,
+ 131,1,0,125,2,0,124,2,0,100,4,0,107,3,0,114,
+ 63,1,124,2,0,106,14,0,131,0,0,115,42,1,116,15,
+ 0,100,9,0,106,16,0,124,2,0,131,1,0,131,1,0,
+ 130,1,0,100,10,0,106,16,0,124,10,0,116,17,0,124,
+ 2,0,131,3,0,125,10,0,116,18,0,124,4,0,116,19,
+ 0,124,10,0,116,20,0,100,8,0,25,23,131,3,0,83,
+ 41,11,97,254,2,0,0,71,105,118,101,110,32,116,104,101,
+ 32,112,97,116,104,32,116,111,32,97,32,46,112,121,32,102,
+ 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,
+ 112,97,116,104,32,116,111,32,105,116,115,32,46,112,121,99,
+ 32,102,105,108,101,46,10,10,32,32,32,32,84,104,101,32,
+ 46,112,121,32,102,105,108,101,32,100,111,101,115,32,110,111,
+ 116,32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,
+ 32,116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,
+ 117,114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,
+ 32,116,104,101,10,32,32,32,32,46,112,121,99,32,102,105,
+ 108,101,32,99,97,108,99,117,108,97,116,101,100,32,97,115,
+ 32,105,102,32,116,104,101,32,46,112,121,32,102,105,108,101,
+ 32,119,101,114,101,32,105,109,112,111,114,116,101,100,46,10,
+ 10,32,32,32,32,84,104,101,32,39,111,112,116,105,109,105,
+ 122,97,116,105,111,110,39,32,112,97,114,97,109,101,116,101,
+ 114,32,99,111,110,116,114,111,108,115,32,116,104,101,32,112,
+ 114,101,115,117,109,101,100,32,111,112,116,105,109,105,122,97,
+ 116,105,111,110,32,108,101,118,101,108,32,111,102,10,32,32,
+ 32,32,116,104,101,32,98,121,116,101,99,111,100,101,32,102,
+ 105,108,101,46,32,73,102,32,39,111,112,116,105,109,105,122,
+ 97,116,105,111,110,39,32,105,115,32,110,111,116,32,78,111,
+ 110,101,44,32,116,104,101,32,115,116,114,105,110,103,32,114,
+ 101,112,114,101,115,101,110,116,97,116,105,111,110,10,32,32,
+ 32,32,111,102,32,116,104,101,32,97,114,103,117,109,101,110,
+ 116,32,105,115,32,116,97,107,101,110,32,97,110,100,32,118,
+ 101,114,105,102,105,101,100,32,116,111,32,98,101,32,97,108,
+ 112,104,97,110,117,109,101,114,105,99,32,40,101,108,115,101,
+ 32,86,97,108,117,101,69,114,114,111,114,10,32,32,32,32,
+ 105,115,32,114,97,105,115,101,100,41,46,10,10,32,32,32,
+ 32,84,104,101,32,100,101,98,117,103,95,111,118,101,114,114,
+ 105,100,101,32,112,97,114,97,109,101,116,101,114,32,105,115,
+ 32,100,101,112,114,101,99,97,116,101,100,46,32,73,102,32,
+ 100,101,98,117,103,95,111,118,101,114,114,105,100,101,32,105,
+ 115,32,110,111,116,32,78,111,110,101,44,10,32,32,32,32,
+ 97,32,84,114,117,101,32,118,97,108,117,101,32,105,115,32,
+ 116,104,101,32,115,97,109,101,32,97,115,32,115,101,116,116,
+ 105,110,103,32,39,111,112,116,105,109,105,122,97,116,105,111,
+ 110,39,32,116,111,32,116,104,101,32,101,109,112,116,121,32,
+ 115,116,114,105,110,103,10,32,32,32,32,119,104,105,108,101,
+ 32,97,32,70,97,108,115,101,32,118,97,108,117,101,32,105,
+ 115,32,101,113,117,105,118,97,108,101,110,116,32,116,111,32,
+ 115,101,116,116,105,110,103,32,39,111,112,116,105,109,105,122,
+ 97,116,105,111,110,39,32,116,111,32,39,49,39,46,10,10,
+ 32,32,32,32,73,102,32,115,121,115,46,105,109,112,108,101,
+ 109,101,110,116,97,116,105,111,110,46,99,97,99,104,101,95,
+ 116,97,103,32,105,115,32,78,111,110,101,32,116,104,101,110,
+ 32,78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,
+ 114,114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,
+ 10,32,32,32,32,78,122,70,116,104,101,32,100,101,98,117,
+ 103,95,111,118,101,114,114,105,100,101,32,112,97,114,97,109,
+ 101,116,101,114,32,105,115,32,100,101,112,114,101,99,97,116,
+ 101,100,59,32,117,115,101,32,39,111,112,116,105,109,105,122,
+ 97,116,105,111,110,39,32,105,110,115,116,101,97,100,122,50,
+ 100,101,98,117,103,95,111,118,101,114,114,105,100,101,32,111,
+ 114,32,111,112,116,105,109,105,122,97,116,105,111,110,32,109,
+ 117,115,116,32,98,101,32,115,101,116,32,116,111,32,78,111,
+ 110,101,114,30,0,0,0,114,29,0,0,0,218,1,46,122,
+ 36,115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,
105,111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,
- 32,78,111,110,101,32,116,104,101,110,32,78,111,116,73,109,
- 112,108,101,109,101,110,116,101,100,69,114,114,111,114,32,105,
- 115,32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,
- 122,36,115,121,115,46,105,109,112,108,101,109,101,110,116,97,
- 116,105,111,110,46,99,97,99,104,101,95,116,97,103,32,105,
- 115,32,78,111,110,101,122,37,123,125,32,110,111,116,32,98,
- 111,116,116,111,109,45,108,101,118,101,108,32,100,105,114,101,
- 99,116,111,114,121,32,105,110,32,123,33,114,125,114,58,0,
- 0,0,114,56,0,0,0,233,3,0,0,0,122,33,101,120,
- 112,101,99,116,101,100,32,111,110,108,121,32,50,32,111,114,
- 32,51,32,100,111,116,115,32,105,110,32,123,33,114,125,122,
- 57,111,112,116,105,109,105,122,97,116,105,111,110,32,112,111,
- 114,116,105,111,110,32,111,102,32,102,105,108,101,110,97,109,
- 101,32,100,111,101,115,32,110,111,116,32,115,116,97,114,116,
- 32,119,105,116,104,32,123,33,114,125,122,52,111,112,116,105,
- 109,105,122,97,116,105,111,110,32,108,101,118,101,108,32,123,
- 33,114,125,32,105,115,32,110,111,116,32,97,110,32,97,108,
- 112,104,97,110,117,109,101,114,105,99,32,118,97,108,117,101,
- 114,59,0,0,0,62,2,0,0,0,114,56,0,0,0,114,
- 80,0,0,0,233,254,255,255,255,41,17,114,7,0,0,0,
- 114,64,0,0,0,114,65,0,0,0,114,66,0,0,0,114,
- 38,0,0,0,114,73,0,0,0,114,71,0,0,0,114,47,
- 0,0,0,218,5,99,111,117,110,116,114,34,0,0,0,114,
- 9,0,0,0,114,72,0,0,0,114,31,0,0,0,114,70,
- 0,0,0,218,9,112,97,114,116,105,116,105,111,110,114,28,
- 0,0,0,218,15,83,79,85,82,67,69,95,83,85,70,70,
- 73,88,69,83,41,8,114,35,0,0,0,114,76,0,0,0,
- 90,16,112,121,99,97,99,104,101,95,102,105,108,101,110,97,
- 109,101,90,7,112,121,99,97,99,104,101,90,9,100,111,116,
- 95,99,111,117,110,116,114,57,0,0,0,90,9,111,112,116,
- 95,108,101,118,101,108,90,13,98,97,115,101,95,102,105,108,
- 101,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,17,115,111,117,114,99,101,95,102,114,111,
- 109,95,99,97,99,104,101,31,1,0,0,115,44,0,0,0,
- 0,9,18,1,12,1,18,1,18,1,12,1,9,1,15,1,
- 15,1,12,1,9,1,15,1,12,1,22,1,15,1,9,1,
- 12,1,22,1,12,1,9,1,12,1,19,1,114,85,0,0,
- 0,99,1,0,0,0,0,0,0,0,5,0,0,0,12,0,
- 0,0,67,0,0,0,115,164,0,0,0,116,0,0,124,0,
- 0,131,1,0,100,1,0,107,2,0,114,22,0,100,2,0,
- 83,124,0,0,106,1,0,100,3,0,131,1,0,92,3,0,
- 125,1,0,125,2,0,125,3,0,124,1,0,12,115,81,0,
- 124,3,0,106,2,0,131,0,0,100,7,0,100,8,0,133,
- 2,0,25,100,6,0,107,3,0,114,85,0,124,0,0,83,
- 121,16,0,116,3,0,124,0,0,131,1,0,125,4,0,87,
- 110,40,0,4,116,4,0,116,5,0,102,2,0,107,10,0,
- 114,143,0,1,1,1,124,0,0,100,2,0,100,9,0,133,
- 2,0,25,125,4,0,89,110,1,0,88,116,6,0,124,4,
- 0,131,1,0,114,160,0,124,4,0,83,124,0,0,83,41,
- 10,122,188,67,111,110,118,101,114,116,32,97,32,98,121,116,
- 101,99,111,100,101,32,102,105,108,101,32,112,97,116,104,32,
- 116,111,32,97,32,115,111,117,114,99,101,32,112,97,116,104,
- 32,40,105,102,32,112,111,115,115,105,98,108,101,41,46,10,
- 10,32,32,32,32,84,104,105,115,32,102,117,110,99,116,105,
- 111,110,32,101,120,105,115,116,115,32,112,117,114,101,108,121,
- 32,102,111,114,32,98,97,99,107,119,97,114,100,115,45,99,
- 111,109,112,97,116,105,98,105,108,105,116,121,32,102,111,114,
- 10,32,32,32,32,80,121,73,109,112,111,114,116,95,69,120,
- 101,99,67,111,100,101,77,111,100,117,108,101,87,105,116,104,
- 70,105,108,101,110,97,109,101,115,40,41,32,105,110,32,116,
- 104,101,32,67,32,65,80,73,46,10,10,32,32,32,32,114,
- 59,0,0,0,78,114,58,0,0,0,114,80,0,0,0,114,
- 29,0,0,0,90,2,112,121,233,253,255,255,255,233,255,255,
- 255,255,114,87,0,0,0,41,7,114,31,0,0,0,114,32,
- 0,0,0,218,5,108,111,119,101,114,114,85,0,0,0,114,
- 66,0,0,0,114,71,0,0,0,114,44,0,0,0,41,5,
- 218,13,98,121,116,101,99,111,100,101,95,112,97,116,104,114,
- 78,0,0,0,114,36,0,0,0,90,9,101,120,116,101,110,
- 115,105,111,110,218,11,115,111,117,114,99,101,95,112,97,116,
- 104,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
- 218,15,95,103,101,116,95,115,111,117,114,99,101,102,105,108,
- 101,64,1,0,0,115,20,0,0,0,0,7,18,1,4,1,
- 24,1,35,1,4,1,3,1,16,1,19,1,21,1,114,91,
- 0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 11,0,0,0,67,0,0,0,115,92,0,0,0,124,0,0,
- 106,0,0,116,1,0,116,2,0,131,1,0,131,1,0,114,
- 59,0,121,14,0,116,3,0,124,0,0,131,1,0,83,87,
- 113,88,0,4,116,4,0,107,10,0,114,55,0,1,1,1,
- 89,113,88,0,88,110,29,0,124,0,0,106,0,0,116,1,
- 0,116,5,0,131,1,0,131,1,0,114,84,0,124,0,0,
- 83,100,0,0,83,100,0,0,83,41,1,78,41,6,218,8,
- 101,110,100,115,119,105,116,104,218,5,116,117,112,108,101,114,
- 84,0,0,0,114,79,0,0,0,114,66,0,0,0,114,74,
- 0,0,0,41,1,218,8,102,105,108,101,110,97,109,101,114,
- 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,11,
- 95,103,101,116,95,99,97,99,104,101,100,83,1,0,0,115,
- 16,0,0,0,0,1,21,1,3,1,14,1,13,1,8,1,
- 21,1,4,2,114,95,0,0,0,99,1,0,0,0,0,0,
- 0,0,2,0,0,0,11,0,0,0,67,0,0,0,115,60,
- 0,0,0,121,19,0,116,0,0,124,0,0,131,1,0,106,
- 1,0,125,1,0,87,110,24,0,4,116,2,0,107,10,0,
- 114,45,0,1,1,1,100,1,0,125,1,0,89,110,1,0,
- 88,124,1,0,100,2,0,79,125,1,0,124,1,0,83,41,
- 3,122,51,67,97,108,99,117,108,97,116,101,32,116,104,101,
- 32,109,111,100,101,32,112,101,114,109,105,115,115,105,111,110,
- 115,32,102,111,114,32,97,32,98,121,116,101,99,111,100,101,
- 32,102,105,108,101,46,105,182,1,0,0,233,128,0,0,0,
- 41,3,114,39,0,0,0,114,41,0,0,0,114,40,0,0,
- 0,41,2,114,35,0,0,0,114,42,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,218,10,95,99,
- 97,108,99,95,109,111,100,101,95,1,0,0,115,12,0,0,
- 0,0,2,3,1,19,1,13,1,11,3,10,1,114,97,0,
- 0,0,218,9,118,101,114,98,111,115,105,116,121,114,29,0,
- 0,0,99,1,0,0,0,1,0,0,0,3,0,0,0,4,
- 0,0,0,71,0,0,0,115,75,0,0,0,116,0,0,106,
- 1,0,106,2,0,124,1,0,107,5,0,114,71,0,124,0,
- 0,106,3,0,100,6,0,131,1,0,115,43,0,100,3,0,
- 124,0,0,23,125,0,0,116,4,0,124,0,0,106,5,0,
- 124,2,0,140,0,0,100,4,0,116,0,0,106,6,0,131,
- 1,1,1,100,5,0,83,41,7,122,61,80,114,105,110,116,
- 32,116,104,101,32,109,101,115,115,97,103,101,32,116,111,32,
- 115,116,100,101,114,114,32,105,102,32,45,118,47,80,89,84,
- 72,79,78,86,69,82,66,79,83,69,32,105,115,32,116,117,
- 114,110,101,100,32,111,110,46,250,1,35,250,7,105,109,112,
- 111,114,116,32,122,2,35,32,114,54,0,0,0,78,41,2,
- 114,99,0,0,0,114,100,0,0,0,41,7,114,7,0,0,
- 0,114,67,0,0,0,218,7,118,101,114,98,111,115,101,114,
- 9,0,0,0,218,5,112,114,105,110,116,114,47,0,0,0,
- 218,6,115,116,100,101,114,114,41,3,114,75,0,0,0,114,
- 98,0,0,0,218,4,97,114,103,115,114,4,0,0,0,114,
- 4,0,0,0,114,5,0,0,0,218,16,95,118,101,114,98,
- 111,115,101,95,109,101,115,115,97,103,101,107,1,0,0,115,
- 8,0,0,0,0,2,18,1,15,1,10,1,114,105,0,0,
- 0,99,1,0,0,0,0,0,0,0,3,0,0,0,11,0,
- 0,0,3,0,0,0,115,84,0,0,0,100,1,0,135,0,
- 0,102,1,0,100,2,0,100,3,0,134,1,0,125,1,0,
- 121,13,0,116,0,0,106,1,0,125,2,0,87,110,30,0,
- 4,116,2,0,107,10,0,114,66,0,1,1,1,100,4,0,
- 100,5,0,132,0,0,125,2,0,89,110,1,0,88,124,2,
- 0,124,1,0,136,0,0,131,2,0,1,124,1,0,83,41,
- 6,122,252,68,101,99,111,114,97,116,111,114,32,116,111,32,
- 118,101,114,105,102,121,32,116,104,97,116,32,116,104,101,32,
- 109,111,100,117,108,101,32,98,101,105,110,103,32,114,101,113,
- 117,101,115,116,101,100,32,109,97,116,99,104,101,115,32,116,
- 104,101,32,111,110,101,32,116,104,101,10,32,32,32,32,108,
- 111,97,100,101,114,32,99,97,110,32,104,97,110,100,108,101,
- 46,10,10,32,32,32,32,84,104,101,32,102,105,114,115,116,
- 32,97,114,103,117,109,101,110,116,32,40,115,101,108,102,41,
- 32,109,117,115,116,32,100,101,102,105,110,101,32,95,110,97,
- 109,101,32,119,104,105,99,104,32,116,104,101,32,115,101,99,
- 111,110,100,32,97,114,103,117,109,101,110,116,32,105,115,10,
- 32,32,32,32,99,111,109,112,97,114,101,100,32,97,103,97,
- 105,110,115,116,46,32,73,102,32,116,104,101,32,99,111,109,
- 112,97,114,105,115,111,110,32,102,97,105,108,115,32,116,104,
- 101,110,32,73,109,112,111,114,116,69,114,114,111,114,32,105,
- 115,32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,
- 99,2,0,0,0,0,0,0,0,4,0,0,0,5,0,0,
- 0,31,0,0,0,115,89,0,0,0,124,1,0,100,0,0,
- 107,8,0,114,24,0,124,0,0,106,0,0,125,1,0,110,
- 46,0,124,0,0,106,0,0,124,1,0,107,3,0,114,70,
- 0,116,1,0,100,1,0,124,0,0,106,0,0,124,1,0,
- 102,2,0,22,100,2,0,124,1,0,131,1,1,130,1,0,
- 136,0,0,124,0,0,124,1,0,124,2,0,124,3,0,142,
- 2,0,83,41,3,78,122,30,108,111,97,100,101,114,32,102,
- 111,114,32,37,115,32,99,97,110,110,111,116,32,104,97,110,
- 100,108,101,32,37,115,218,4,110,97,109,101,41,2,114,106,
- 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,
- 41,4,218,4,115,101,108,102,114,106,0,0,0,114,104,0,
- 0,0,90,6,107,119,97,114,103,115,41,1,218,6,109,101,
+ 32,78,111,110,101,233,0,0,0,0,122,24,123,33,114,125,
+ 32,105,115,32,110,111,116,32,97,108,112,104,97,110,117,109,
+ 101,114,105,99,122,7,123,125,46,123,125,123,125,41,21,218,
+ 9,95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,
+ 218,18,68,101,112,114,101,99,97,116,105,111,110,87,97,114,
+ 110,105,110,103,218,9,84,121,112,101,69,114,114,111,114,114,
+ 38,0,0,0,114,32,0,0,0,114,7,0,0,0,218,14,
+ 105,109,112,108,101,109,101,110,116,97,116,105,111,110,218,9,
+ 99,97,99,104,101,95,116,97,103,218,19,78,111,116,73,109,
+ 112,108,101,109,101,110,116,101,100,69,114,114,111,114,114,26,
+ 0,0,0,218,5,102,108,97,103,115,218,8,111,112,116,105,
+ 109,105,122,101,218,3,115,116,114,218,7,105,115,97,108,110,
+ 117,109,218,10,86,97,108,117,101,69,114,114,111,114,114,47,
+ 0,0,0,218,4,95,79,80,84,114,28,0,0,0,218,8,
+ 95,80,89,67,65,67,72,69,218,17,66,89,84,69,67,79,
+ 68,69,95,83,85,70,70,73,88,69,83,41,11,114,35,0,
+ 0,0,90,14,100,101,98,117,103,95,111,118,101,114,114,105,
+ 100,101,114,57,0,0,0,218,7,109,101,115,115,97,103,101,
+ 218,4,104,101,97,100,114,37,0,0,0,90,4,98,97,115,
+ 101,218,3,115,101,112,218,4,114,101,115,116,90,3,116,97,
+ 103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,
+ 109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,
+ 117,114,99,101,245,0,0,0,115,46,0,0,0,0,18,12,
+ 1,9,1,7,1,12,1,6,1,12,1,18,1,18,1,24,
+ 1,12,1,12,1,12,1,36,1,12,1,18,1,9,2,12,
+ 1,12,1,12,1,12,1,21,1,21,1,114,79,0,0,0,
+ 99,1,0,0,0,0,0,0,0,8,0,0,0,5,0,0,
+ 0,67,0,0,0,115,62,1,0,0,116,0,0,106,1,0,
+ 106,2,0,100,1,0,107,8,0,114,30,0,116,3,0,100,
+ 2,0,131,1,0,130,1,0,116,4,0,124,0,0,131,1,
+ 0,92,2,0,125,1,0,125,2,0,116,4,0,124,1,0,
+ 131,1,0,92,2,0,125,1,0,125,3,0,124,3,0,116,
+ 5,0,107,3,0,114,102,0,116,6,0,100,3,0,106,7,
+ 0,116,5,0,124,0,0,131,2,0,131,1,0,130,1,0,
+ 124,2,0,106,8,0,100,4,0,131,1,0,125,4,0,124,
+ 4,0,100,11,0,107,7,0,114,153,0,116,6,0,100,7,
+ 0,106,7,0,124,2,0,131,1,0,131,1,0,130,1,0,
+ 110,125,0,124,4,0,100,6,0,107,2,0,114,22,1,124,
+ 2,0,106,9,0,100,4,0,100,5,0,131,2,0,100,12,
+ 0,25,125,5,0,124,5,0,106,10,0,116,11,0,131,1,
+ 0,115,223,0,116,6,0,100,8,0,106,7,0,116,11,0,
+ 131,1,0,131,1,0,130,1,0,124,5,0,116,12,0,116,
+ 11,0,131,1,0,100,1,0,133,2,0,25,125,6,0,124,
+ 6,0,106,13,0,131,0,0,115,22,1,116,6,0,100,9,
+ 0,106,7,0,124,5,0,131,1,0,131,1,0,130,1,0,
+ 124,2,0,106,14,0,100,4,0,131,1,0,100,10,0,25,
+ 125,7,0,116,15,0,124,1,0,124,7,0,116,16,0,100,
+ 10,0,25,23,131,2,0,83,41,13,97,110,1,0,0,71,
+ 105,118,101,110,32,116,104,101,32,112,97,116,104,32,116,111,
+ 32,97,32,46,112,121,99,46,32,102,105,108,101,44,32,114,
+ 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,
+ 111,32,105,116,115,32,46,112,121,32,102,105,108,101,46,10,
+ 10,32,32,32,32,84,104,101,32,46,112,121,99,32,102,105,
+ 108,101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,
+ 32,116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,
+ 115,105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,
+ 104,101,32,112,97,116,104,32,116,111,10,32,32,32,32,116,
+ 104,101,32,46,112,121,32,102,105,108,101,32,99,97,108,99,
+ 117,108,97,116,101,100,32,116,111,32,99,111,114,114,101,115,
+ 112,111,110,100,32,116,111,32,116,104,101,32,46,112,121,99,
+ 32,102,105,108,101,46,32,32,73,102,32,112,97,116,104,32,
+ 100,111,101,115,10,32,32,32,32,110,111,116,32,99,111,110,
+ 102,111,114,109,32,116,111,32,80,69,80,32,51,49,52,55,
+ 47,52,56,56,32,102,111,114,109,97,116,44,32,86,97,108,
+ 117,101,69,114,114,111,114,32,119,105,108,108,32,98,101,32,
+ 114,97,105,115,101,100,46,32,73,102,10,32,32,32,32,115,
+ 121,115,46,105,109,112,108,101,109,101,110,116,97,116,105,111,
+ 110,46,99,97,99,104,101,95,116,97,103,32,105,115,32,78,
+ 111,110,101,32,116,104,101,110,32,78,111,116,73,109,112,108,
+ 101,109,101,110,116,101,100,69,114,114,111,114,32,105,115,32,
+ 114,97,105,115,101,100,46,10,10,32,32,32,32,78,122,36,
+ 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105,
+ 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32,
+ 78,111,110,101,122,37,123,125,32,110,111,116,32,98,111,116,
+ 116,111,109,45,108,101,118,101,108,32,100,105,114,101,99,116,
+ 111,114,121,32,105,110,32,123,33,114,125,114,58,0,0,0,
+ 114,56,0,0,0,233,3,0,0,0,122,33,101,120,112,101,
+ 99,116,101,100,32,111,110,108,121,32,50,32,111,114,32,51,
+ 32,100,111,116,115,32,105,110,32,123,33,114,125,122,57,111,
+ 112,116,105,109,105,122,97,116,105,111,110,32,112,111,114,116,
+ 105,111,110,32,111,102,32,102,105,108,101,110,97,109,101,32,
+ 100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119,
+ 105,116,104,32,123,33,114,125,122,52,111,112,116,105,109,105,
+ 122,97,116,105,111,110,32,108,101,118,101,108,32,123,33,114,
+ 125,32,105,115,32,110,111,116,32,97,110,32,97,108,112,104,
+ 97,110,117,109,101,114,105,99,32,118,97,108,117,101,114,59,
+ 0,0,0,62,2,0,0,0,114,56,0,0,0,114,80,0,
+ 0,0,233,254,255,255,255,41,17,114,7,0,0,0,114,64,
+ 0,0,0,114,65,0,0,0,114,66,0,0,0,114,38,0,
+ 0,0,114,73,0,0,0,114,71,0,0,0,114,47,0,0,
+ 0,218,5,99,111,117,110,116,114,34,0,0,0,114,9,0,
+ 0,0,114,72,0,0,0,114,31,0,0,0,114,70,0,0,
+ 0,218,9,112,97,114,116,105,116,105,111,110,114,28,0,0,
+ 0,218,15,83,79,85,82,67,69,95,83,85,70,70,73,88,
+ 69,83,41,8,114,35,0,0,0,114,76,0,0,0,90,16,
+ 112,121,99,97,99,104,101,95,102,105,108,101,110,97,109,101,
+ 90,7,112,121,99,97,99,104,101,90,9,100,111,116,95,99,
+ 111,117,110,116,114,57,0,0,0,90,9,111,112,116,95,108,
+ 101,118,101,108,90,13,98,97,115,101,95,102,105,108,101,110,
+ 97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,
+ 99,97,99,104,101,33,1,0,0,115,44,0,0,0,0,9,
+ 18,1,12,1,18,1,18,1,12,1,9,1,15,1,15,1,
+ 12,1,9,1,15,1,12,1,22,1,15,1,9,1,12,1,
+ 22,1,12,1,9,1,12,1,19,1,114,85,0,0,0,99,
+ 1,0,0,0,0,0,0,0,5,0,0,0,12,0,0,0,
+ 67,0,0,0,115,164,0,0,0,116,0,0,124,0,0,131,
+ 1,0,100,1,0,107,2,0,114,22,0,100,2,0,83,124,
+ 0,0,106,1,0,100,3,0,131,1,0,92,3,0,125,1,
+ 0,125,2,0,125,3,0,124,1,0,12,115,81,0,124,3,
+ 0,106,2,0,131,0,0,100,7,0,100,8,0,133,2,0,
+ 25,100,6,0,107,3,0,114,85,0,124,0,0,83,121,16,
+ 0,116,3,0,124,0,0,131,1,0,125,4,0,87,110,40,
+ 0,4,116,4,0,116,5,0,102,2,0,107,10,0,114,143,
+ 0,1,1,1,124,0,0,100,2,0,100,9,0,133,2,0,
+ 25,125,4,0,89,110,1,0,88,116,6,0,124,4,0,131,
+ 1,0,114,160,0,124,4,0,83,124,0,0,83,41,10,122,
+ 188,67,111,110,118,101,114,116,32,97,32,98,121,116,101,99,
+ 111,100,101,32,102,105,108,101,32,112,97,116,104,32,116,111,
+ 32,97,32,115,111,117,114,99,101,32,112,97,116,104,32,40,
+ 105,102,32,112,111,115,115,105,98,108,101,41,46,10,10,32,
+ 32,32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,
+ 32,101,120,105,115,116,115,32,112,117,114,101,108,121,32,102,
+ 111,114,32,98,97,99,107,119,97,114,100,115,45,99,111,109,
+ 112,97,116,105,98,105,108,105,116,121,32,102,111,114,10,32,
+ 32,32,32,80,121,73,109,112,111,114,116,95,69,120,101,99,
+ 67,111,100,101,77,111,100,117,108,101,87,105,116,104,70,105,
+ 108,101,110,97,109,101,115,40,41,32,105,110,32,116,104,101,
+ 32,67,32,65,80,73,46,10,10,32,32,32,32,114,59,0,
+ 0,0,78,114,58,0,0,0,114,80,0,0,0,114,29,0,
+ 0,0,90,2,112,121,233,253,255,255,255,233,255,255,255,255,
+ 114,87,0,0,0,41,7,114,31,0,0,0,114,32,0,0,
+ 0,218,5,108,111,119,101,114,114,85,0,0,0,114,66,0,
+ 0,0,114,71,0,0,0,114,44,0,0,0,41,5,218,13,
+ 98,121,116,101,99,111,100,101,95,112,97,116,104,114,78,0,
+ 0,0,114,36,0,0,0,90,9,101,120,116,101,110,115,105,
+ 111,110,218,11,115,111,117,114,99,101,95,112,97,116,104,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,15,
+ 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,66,
+ 1,0,0,115,20,0,0,0,0,7,18,1,4,1,24,1,
+ 35,1,4,1,3,1,16,1,19,1,21,1,114,91,0,0,
+ 0,99,1,0,0,0,0,0,0,0,1,0,0,0,11,0,
+ 0,0,67,0,0,0,115,92,0,0,0,124,0,0,106,0,
+ 0,116,1,0,116,2,0,131,1,0,131,1,0,114,59,0,
+ 121,14,0,116,3,0,124,0,0,131,1,0,83,87,113,88,
+ 0,4,116,4,0,107,10,0,114,55,0,1,1,1,89,113,
+ 88,0,88,110,29,0,124,0,0,106,0,0,116,1,0,116,
+ 5,0,131,1,0,131,1,0,114,84,0,124,0,0,83,100,
+ 0,0,83,100,0,0,83,41,1,78,41,6,218,8,101,110,
+ 100,115,119,105,116,104,218,5,116,117,112,108,101,114,84,0,
+ 0,0,114,79,0,0,0,114,66,0,0,0,114,74,0,0,
+ 0,41,1,218,8,102,105,108,101,110,97,109,101,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,11,95,103,
+ 101,116,95,99,97,99,104,101,100,85,1,0,0,115,16,0,
+ 0,0,0,1,21,1,3,1,14,1,13,1,8,1,21,1,
+ 4,2,114,95,0,0,0,99,1,0,0,0,0,0,0,0,
+ 2,0,0,0,11,0,0,0,67,0,0,0,115,60,0,0,
+ 0,121,19,0,116,0,0,124,0,0,131,1,0,106,1,0,
+ 125,1,0,87,110,24,0,4,116,2,0,107,10,0,114,45,
+ 0,1,1,1,100,1,0,125,1,0,89,110,1,0,88,124,
+ 1,0,100,2,0,79,125,1,0,124,1,0,83,41,3,122,
+ 51,67,97,108,99,117,108,97,116,101,32,116,104,101,32,109,
+ 111,100,101,32,112,101,114,109,105,115,115,105,111,110,115,32,
+ 102,111,114,32,97,32,98,121,116,101,99,111,100,101,32,102,
+ 105,108,101,46,105,182,1,0,0,233,128,0,0,0,41,3,
+ 114,39,0,0,0,114,41,0,0,0,114,40,0,0,0,41,
+ 2,114,35,0,0,0,114,42,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,10,95,99,97,108,
+ 99,95,109,111,100,101,97,1,0,0,115,12,0,0,0,0,
+ 2,3,1,19,1,13,1,11,3,10,1,114,97,0,0,0,
+ 99,1,0,0,0,0,0,0,0,3,0,0,0,11,0,0,
+ 0,3,0,0,0,115,84,0,0,0,100,1,0,135,0,0,
+ 102,1,0,100,2,0,100,3,0,134,1,0,125,1,0,121,
+ 13,0,116,0,0,106,1,0,125,2,0,87,110,30,0,4,
+ 116,2,0,107,10,0,114,66,0,1,1,1,100,4,0,100,
+ 5,0,132,0,0,125,2,0,89,110,1,0,88,124,2,0,
+ 124,1,0,136,0,0,131,2,0,1,124,1,0,83,41,6,
+ 122,252,68,101,99,111,114,97,116,111,114,32,116,111,32,118,
+ 101,114,105,102,121,32,116,104,97,116,32,116,104,101,32,109,
+ 111,100,117,108,101,32,98,101,105,110,103,32,114,101,113,117,
+ 101,115,116,101,100,32,109,97,116,99,104,101,115,32,116,104,
+ 101,32,111,110,101,32,116,104,101,10,32,32,32,32,108,111,
+ 97,100,101,114,32,99,97,110,32,104,97,110,100,108,101,46,
+ 10,10,32,32,32,32,84,104,101,32,102,105,114,115,116,32,
+ 97,114,103,117,109,101,110,116,32,40,115,101,108,102,41,32,
+ 109,117,115,116,32,100,101,102,105,110,101,32,95,110,97,109,
+ 101,32,119,104,105,99,104,32,116,104,101,32,115,101,99,111,
+ 110,100,32,97,114,103,117,109,101,110,116,32,105,115,10,32,
+ 32,32,32,99,111,109,112,97,114,101,100,32,97,103,97,105,
+ 110,115,116,46,32,73,102,32,116,104,101,32,99,111,109,112,
+ 97,114,105,115,111,110,32,102,97,105,108,115,32,116,104,101,
+ 110,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,
+ 32,114,97,105,115,101,100,46,10,10,32,32,32,32,78,99,
+ 2,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,
+ 31,0,0,0,115,89,0,0,0,124,1,0,100,0,0,107,
+ 8,0,114,24,0,124,0,0,106,0,0,125,1,0,110,46,
+ 0,124,0,0,106,0,0,124,1,0,107,3,0,114,70,0,
+ 116,1,0,100,1,0,124,0,0,106,0,0,124,1,0,102,
+ 2,0,22,100,2,0,124,1,0,131,1,1,130,1,0,136,
+ 0,0,124,0,0,124,1,0,124,2,0,124,3,0,142,2,
+ 0,83,41,3,78,122,30,108,111,97,100,101,114,32,102,111,
+ 114,32,37,115,32,99,97,110,110,111,116,32,104,97,110,100,
+ 108,101,32,37,115,218,4,110,97,109,101,41,2,114,98,0,
+ 0,0,218,11,73,109,112,111,114,116,69,114,114,111,114,41,
+ 4,218,4,115,101,108,102,114,98,0,0,0,218,4,97,114,
+ 103,115,90,6,107,119,97,114,103,115,41,1,218,6,109,101,
116,104,111,100,114,4,0,0,0,114,5,0,0,0,218,19,
95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,
- 112,101,114,123,1,0,0,115,12,0,0,0,0,1,12,1,
+ 112,101,114,117,1,0,0,115,12,0,0,0,0,1,12,1,
12,1,15,1,6,1,25,1,122,40,95,99,104,101,99,107,
95,110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,
99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,
@@ -595,17 +573,17 @@ const unsigned char _Py_M__importlib_external[] = {
116,97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,
6,117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,
111,108,100,114,52,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,218,5,95,119,114,97,112,134,1,
+ 0,0,114,5,0,0,0,218,5,95,119,114,97,112,128,1,
0,0,115,8,0,0,0,0,1,25,1,15,1,29,1,122,
26,95,99,104,101,99,107,95,110,97,109,101,46,60,108,111,
99,97,108,115,62,46,95,119,114,97,112,41,3,218,10,95,
- 98,111,111,116,115,116,114,97,112,114,120,0,0,0,218,9,
- 78,97,109,101,69,114,114,111,114,41,3,114,109,0,0,0,
- 114,110,0,0,0,114,120,0,0,0,114,4,0,0,0,41,
- 1,114,109,0,0,0,114,5,0,0,0,218,11,95,99,104,
- 101,99,107,95,110,97,109,101,115,1,0,0,115,14,0,0,
+ 98,111,111,116,115,116,114,97,112,114,113,0,0,0,218,9,
+ 78,97,109,101,69,114,114,111,114,41,3,114,102,0,0,0,
+ 114,103,0,0,0,114,113,0,0,0,114,4,0,0,0,41,
+ 1,114,102,0,0,0,114,5,0,0,0,218,11,95,99,104,
+ 101,99,107,95,110,97,109,101,109,1,0,0,115,14,0,0,
0,0,8,21,7,3,1,13,1,13,2,17,5,13,1,114,
- 123,0,0,0,99,2,0,0,0,0,0,0,0,5,0,0,
+ 116,0,0,0,99,2,0,0,0,0,0,0,0,5,0,0,
0,4,0,0,0,67,0,0,0,115,84,0,0,0,124,0,
0,106,0,0,124,1,0,131,1,0,92,2,0,125,2,0,
125,3,0,124,2,0,100,1,0,107,8,0,114,80,0,116,
@@ -628,14 +606,14 @@ const unsigned char _Py_M__importlib_external[] = {
114,59,0,0,0,41,6,218,11,102,105,110,100,95,108,111,
97,100,101,114,114,31,0,0,0,114,60,0,0,0,114,61,
0,0,0,114,47,0,0,0,218,13,73,109,112,111,114,116,
- 87,97,114,110,105,110,103,41,5,114,108,0,0,0,218,8,
+ 87,97,114,110,105,110,103,41,5,114,100,0,0,0,218,8,
102,117,108,108,110,97,109,101,218,6,108,111,97,100,101,114,
218,8,112,111,114,116,105,111,110,115,218,3,109,115,103,114,
4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,17,
95,102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,
- 109,143,1,0,0,115,10,0,0,0,0,10,21,1,24,1,
- 6,1,29,1,114,130,0,0,0,99,4,0,0,0,0,0,
- 0,0,11,0,0,0,19,0,0,0,67,0,0,0,115,240,
+ 109,137,1,0,0,115,10,0,0,0,0,10,21,1,24,1,
+ 6,1,29,1,114,123,0,0,0,99,4,0,0,0,0,0,
+ 0,0,11,0,0,0,19,0,0,0,67,0,0,0,115,252,
1,0,0,105,0,0,125,4,0,124,2,0,100,1,0,107,
9,0,114,31,0,124,2,0,124,4,0,100,2,0,60,110,
6,0,100,3,0,125,2,0,124,3,0,100,1,0,107,9,
@@ -643,1955 +621,1972 @@ const unsigned char _Py_M__importlib_external[] = {
0,100,1,0,100,5,0,133,2,0,25,125,5,0,124,0,
0,100,5,0,100,6,0,133,2,0,25,125,6,0,124,0,
0,100,6,0,100,7,0,133,2,0,25,125,7,0,124,5,
- 0,116,0,0,107,3,0,114,168,0,100,8,0,106,1,0,
- 124,2,0,124,5,0,131,2,0,125,8,0,116,2,0,100,
- 9,0,124,8,0,131,2,0,1,116,3,0,124,8,0,124,
- 4,0,141,1,0,130,1,0,110,119,0,116,4,0,124,6,
- 0,131,1,0,100,5,0,107,3,0,114,229,0,100,10,0,
- 106,1,0,124,2,0,131,1,0,125,8,0,116,2,0,100,
- 9,0,124,8,0,131,2,0,1,116,5,0,124,8,0,131,
- 1,0,130,1,0,110,58,0,116,4,0,124,7,0,131,1,
- 0,100,5,0,107,3,0,114,31,1,100,11,0,106,1,0,
- 124,2,0,131,1,0,125,8,0,116,2,0,100,9,0,124,
- 8,0,131,2,0,1,116,5,0,124,8,0,131,1,0,130,
- 1,0,124,1,0,100,1,0,107,9,0,114,226,1,121,20,
- 0,116,6,0,124,1,0,100,12,0,25,131,1,0,125,9,
- 0,87,110,18,0,4,116,7,0,107,10,0,114,83,1,1,
- 1,1,89,110,62,0,88,116,8,0,124,6,0,131,1,0,
- 124,9,0,107,3,0,114,145,1,100,13,0,106,1,0,124,
- 2,0,131,1,0,125,8,0,116,2,0,100,9,0,124,8,
- 0,131,2,0,1,116,3,0,124,8,0,124,4,0,141,1,
- 0,130,1,0,121,18,0,124,1,0,100,14,0,25,100,15,
- 0,64,125,10,0,87,110,18,0,4,116,7,0,107,10,0,
- 114,183,1,1,1,1,89,110,43,0,88,116,8,0,124,7,
- 0,131,1,0,124,10,0,107,3,0,114,226,1,116,3,0,
- 100,13,0,106,1,0,124,2,0,131,1,0,124,4,0,141,
- 1,0,130,1,0,124,0,0,100,7,0,100,1,0,133,2,
- 0,25,83,41,16,97,122,1,0,0,86,97,108,105,100,97,
- 116,101,32,116,104,101,32,104,101,97,100,101,114,32,111,102,
- 32,116,104,101,32,112,97,115,115,101,100,45,105,110,32,98,
- 121,116,101,99,111,100,101,32,97,103,97,105,110,115,116,32,
- 115,111,117,114,99,101,95,115,116,97,116,115,32,40,105,102,
- 10,32,32,32,32,103,105,118,101,110,41,32,97,110,100,32,
- 114,101,116,117,114,110,105,110,103,32,116,104,101,32,98,121,
- 116,101,99,111,100,101,32,116,104,97,116,32,99,97,110,32,
- 98,101,32,99,111,109,112,105,108,101,100,32,98,121,32,99,
- 111,109,112,105,108,101,40,41,46,10,10,32,32,32,32,65,
- 108,108,32,111,116,104,101,114,32,97,114,103,117,109,101,110,
- 116,115,32,97,114,101,32,117,115,101,100,32,116,111,32,101,
- 110,104,97,110,99,101,32,101,114,114,111,114,32,114,101,112,
- 111,114,116,105,110,103,46,10,10,32,32,32,32,73,109,112,
- 111,114,116,69,114,114,111,114,32,105,115,32,114,97,105,115,
- 101,100,32,119,104,101,110,32,116,104,101,32,109,97,103,105,
- 99,32,110,117,109,98,101,114,32,105,115,32,105,110,99,111,
- 114,114,101,99,116,32,111,114,32,116,104,101,32,98,121,116,
- 101,99,111,100,101,32,105,115,10,32,32,32,32,102,111,117,
- 110,100,32,116,111,32,98,101,32,115,116,97,108,101,46,32,
- 69,79,70,69,114,114,111,114,32,105,115,32,114,97,105,115,
- 101,100,32,119,104,101,110,32,116,104,101,32,100,97,116,97,
- 32,105,115,32,102,111,117,110,100,32,116,111,32,98,101,10,
- 32,32,32,32,116,114,117,110,99,97,116,101,100,46,10,10,
- 32,32,32,32,78,114,106,0,0,0,122,10,60,98,121,116,
- 101,99,111,100,101,62,114,35,0,0,0,114,12,0,0,0,
- 233,8,0,0,0,233,12,0,0,0,122,30,98,97,100,32,
- 109,97,103,105,99,32,110,117,109,98,101,114,32,105,110,32,
- 123,33,114,125,58,32,123,33,114,125,122,2,123,125,122,43,
- 114,101,97,99,104,101,100,32,69,79,70,32,119,104,105,108,
- 101,32,114,101,97,100,105,110,103,32,116,105,109,101,115,116,
- 97,109,112,32,105,110,32,123,33,114,125,122,48,114,101,97,
- 99,104,101,100,32,69,79,70,32,119,104,105,108,101,32,114,
- 101,97,100,105,110,103,32,115,105,122,101,32,111,102,32,115,
- 111,117,114,99,101,32,105,110,32,123,33,114,125,218,5,109,
- 116,105,109,101,122,26,98,121,116,101,99,111,100,101,32,105,
- 115,32,115,116,97,108,101,32,102,111,114,32,123,33,114,125,
- 218,4,115,105,122,101,108,3,0,0,0,255,127,255,127,3,
- 0,41,9,218,12,77,65,71,73,67,95,78,85,77,66,69,
- 82,114,47,0,0,0,114,105,0,0,0,114,107,0,0,0,
- 114,31,0,0,0,218,8,69,79,70,69,114,114,111,114,114,
- 14,0,0,0,218,8,75,101,121,69,114,114,111,114,114,19,
- 0,0,0,41,11,114,53,0,0,0,218,12,115,111,117,114,
- 99,101,95,115,116,97,116,115,114,106,0,0,0,114,35,0,
- 0,0,90,11,101,120,99,95,100,101,116,97,105,108,115,90,
- 5,109,97,103,105,99,90,13,114,97,119,95,116,105,109,101,
- 115,116,97,109,112,90,8,114,97,119,95,115,105,122,101,114,
- 75,0,0,0,218,12,115,111,117,114,99,101,95,109,116,105,
- 109,101,218,11,115,111,117,114,99,101,95,115,105,122,101,114,
- 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,25,
- 95,118,97,108,105,100,97,116,101,95,98,121,116,101,99,111,
- 100,101,95,104,101,97,100,101,114,160,1,0,0,115,76,0,
- 0,0,0,11,6,1,12,1,13,3,6,1,12,1,10,1,
- 16,1,16,1,16,1,12,1,18,1,13,1,18,1,18,1,
- 15,1,13,1,15,1,18,1,15,1,13,1,12,1,12,1,
- 3,1,20,1,13,1,5,2,18,1,15,1,13,1,15,1,
- 3,1,18,1,13,1,5,2,18,1,15,1,9,1,114,141,
- 0,0,0,99,4,0,0,0,0,0,0,0,5,0,0,0,
- 6,0,0,0,67,0,0,0,115,112,0,0,0,116,0,0,
- 106,1,0,124,0,0,131,1,0,125,4,0,116,2,0,124,
- 4,0,116,3,0,131,2,0,114,75,0,116,4,0,100,1,
- 0,124,2,0,131,2,0,1,124,3,0,100,2,0,107,9,
- 0,114,71,0,116,5,0,106,6,0,124,4,0,124,3,0,
- 131,2,0,1,124,4,0,83,116,7,0,100,3,0,106,8,
- 0,124,2,0,131,1,0,100,4,0,124,1,0,100,5,0,
- 124,2,0,131,1,2,130,1,0,100,2,0,83,41,6,122,
- 60,67,111,109,112,105,108,101,32,98,121,116,101,99,111,100,
- 101,32,97,115,32,114,101,116,117,114,110,101,100,32,98,121,
- 32,95,118,97,108,105,100,97,116,101,95,98,121,116,101,99,
- 111,100,101,95,104,101,97,100,101,114,40,41,46,122,21,99,
- 111,100,101,32,111,98,106,101,99,116,32,102,114,111,109,32,
- 123,33,114,125,78,122,23,78,111,110,45,99,111,100,101,32,
- 111,98,106,101,99,116,32,105,110,32,123,33,114,125,114,106,
- 0,0,0,114,35,0,0,0,41,9,218,7,109,97,114,115,
- 104,97,108,90,5,108,111,97,100,115,218,10,105,115,105,110,
- 115,116,97,110,99,101,218,10,95,99,111,100,101,95,116,121,
- 112,101,114,105,0,0,0,218,4,95,105,109,112,90,16,95,
- 102,105,120,95,99,111,95,102,105,108,101,110,97,109,101,114,
- 107,0,0,0,114,47,0,0,0,41,5,114,53,0,0,0,
- 114,106,0,0,0,114,89,0,0,0,114,90,0,0,0,218,
- 4,99,111,100,101,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,17,95,99,111,109,112,105,108,101,95,98,
- 121,116,101,99,111,100,101,215,1,0,0,115,16,0,0,0,
- 0,2,15,1,15,1,13,1,12,1,16,1,4,2,18,1,
- 114,147,0,0,0,114,59,0,0,0,99,3,0,0,0,0,
- 0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,
- 76,0,0,0,116,0,0,116,1,0,131,1,0,125,3,0,
- 124,3,0,106,2,0,116,3,0,124,1,0,131,1,0,131,
- 1,0,1,124,3,0,106,2,0,116,3,0,124,2,0,131,
- 1,0,131,1,0,1,124,3,0,106,2,0,116,4,0,106,
- 5,0,124,0,0,131,1,0,131,1,0,1,124,3,0,83,
- 41,1,122,80,67,111,109,112,105,108,101,32,97,32,99,111,
- 100,101,32,111,98,106,101,99,116,32,105,110,116,111,32,98,
- 121,116,101,99,111,100,101,32,102,111,114,32,119,114,105,116,
- 105,110,103,32,111,117,116,32,116,111,32,97,32,98,121,116,
- 101,45,99,111,109,112,105,108,101,100,10,32,32,32,32,102,
- 105,108,101,46,41,6,218,9,98,121,116,101,97,114,114,97,
- 121,114,135,0,0,0,218,6,101,120,116,101,110,100,114,17,
- 0,0,0,114,142,0,0,0,90,5,100,117,109,112,115,41,
- 4,114,146,0,0,0,114,133,0,0,0,114,140,0,0,0,
- 114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,17,95,99,111,100,101,95,116,111,95,98,
- 121,116,101,99,111,100,101,227,1,0,0,115,10,0,0,0,
- 0,3,12,1,19,1,19,1,22,1,114,150,0,0,0,99,
- 1,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,
- 67,0,0,0,115,89,0,0,0,100,1,0,100,2,0,108,
- 0,0,125,1,0,116,1,0,106,2,0,124,0,0,131,1,
- 0,106,3,0,125,2,0,124,1,0,106,4,0,124,2,0,
- 131,1,0,125,3,0,116,1,0,106,5,0,100,2,0,100,
- 3,0,131,2,0,125,4,0,124,4,0,106,6,0,124,0,
- 0,106,6,0,124,3,0,100,1,0,25,131,1,0,131,1,
- 0,83,41,4,122,121,68,101,99,111,100,101,32,98,121,116,
- 101,115,32,114,101,112,114,101,115,101,110,116,105,110,103,32,
- 115,111,117,114,99,101,32,99,111,100,101,32,97,110,100,32,
- 114,101,116,117,114,110,32,116,104,101,32,115,116,114,105,110,
- 103,46,10,10,32,32,32,32,85,110,105,118,101,114,115,97,
- 108,32,110,101,119,108,105,110,101,32,115,117,112,112,111,114,
- 116,32,105,115,32,117,115,101,100,32,105,110,32,116,104,101,
- 32,100,101,99,111,100,105,110,103,46,10,32,32,32,32,114,
- 59,0,0,0,78,84,41,7,218,8,116,111,107,101,110,105,
- 122,101,114,49,0,0,0,90,7,66,121,116,101,115,73,79,
- 90,8,114,101,97,100,108,105,110,101,90,15,100,101,116,101,
- 99,116,95,101,110,99,111,100,105,110,103,90,25,73,110,99,
- 114,101,109,101,110,116,97,108,78,101,119,108,105,110,101,68,
- 101,99,111,100,101,114,218,6,100,101,99,111,100,101,41,5,
- 218,12,115,111,117,114,99,101,95,98,121,116,101,115,114,151,
- 0,0,0,90,21,115,111,117,114,99,101,95,98,121,116,101,
- 115,95,114,101,97,100,108,105,110,101,218,8,101,110,99,111,
- 100,105,110,103,90,15,110,101,119,108,105,110,101,95,100,101,
- 99,111,100,101,114,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,13,100,101,99,111,100,101,95,115,111,117,
- 114,99,101,237,1,0,0,115,10,0,0,0,0,5,12,1,
- 18,1,15,1,18,1,114,155,0,0,0,114,127,0,0,0,
- 218,26,115,117,98,109,111,100,117,108,101,95,115,101,97,114,
- 99,104,95,108,111,99,97,116,105,111,110,115,99,2,0,0,
- 0,2,0,0,0,9,0,0,0,19,0,0,0,67,0,0,
- 0,115,89,1,0,0,124,1,0,100,1,0,107,8,0,114,
- 73,0,100,2,0,125,1,0,116,0,0,124,2,0,100,3,
- 0,131,2,0,114,73,0,121,19,0,124,2,0,106,1,0,
- 124,0,0,131,1,0,125,1,0,87,110,18,0,4,116,2,
- 0,107,10,0,114,72,0,1,1,1,89,110,1,0,88,116,
- 3,0,106,4,0,124,0,0,124,2,0,100,4,0,124,1,
- 0,131,2,1,125,4,0,100,5,0,124,4,0,95,5,0,
- 124,2,0,100,1,0,107,8,0,114,194,0,120,73,0,116,
- 6,0,131,0,0,68,93,58,0,92,2,0,125,5,0,125,
- 6,0,124,1,0,106,7,0,116,8,0,124,6,0,131,1,
- 0,131,1,0,114,128,0,124,5,0,124,0,0,124,1,0,
- 131,2,0,125,2,0,124,2,0,124,4,0,95,9,0,80,
- 113,128,0,87,100,1,0,83,124,3,0,116,10,0,107,8,
- 0,114,23,1,116,0,0,124,2,0,100,6,0,131,2,0,
- 114,32,1,121,19,0,124,2,0,106,11,0,124,0,0,131,
- 1,0,125,7,0,87,110,18,0,4,116,2,0,107,10,0,
- 114,4,1,1,1,1,89,113,32,1,88,124,7,0,114,32,
- 1,103,0,0,124,4,0,95,12,0,110,9,0,124,3,0,
- 124,4,0,95,12,0,124,4,0,106,12,0,103,0,0,107,
- 2,0,114,85,1,124,1,0,114,85,1,116,13,0,124,1,
- 0,131,1,0,100,7,0,25,125,8,0,124,4,0,106,12,
- 0,106,14,0,124,8,0,131,1,0,1,124,4,0,83,41,
- 8,97,61,1,0,0,82,101,116,117,114,110,32,97,32,109,
- 111,100,117,108,101,32,115,112,101,99,32,98,97,115,101,100,
- 32,111,110,32,97,32,102,105,108,101,32,108,111,99,97,116,
- 105,111,110,46,10,10,32,32,32,32,84,111,32,105,110,100,
- 105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,109,
- 111,100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,
- 103,101,44,32,115,101,116,10,32,32,32,32,115,117,98,109,
- 111,100,117,108,101,95,115,101,97,114,99,104,95,108,111,99,
- 97,116,105,111,110,115,32,116,111,32,97,32,108,105,115,116,
- 32,111,102,32,100,105,114,101,99,116,111,114,121,32,112,97,
- 116,104,115,46,32,32,65,110,10,32,32,32,32,101,109,112,
- 116,121,32,108,105,115,116,32,105,115,32,115,117,102,102,105,
- 99,105,101,110,116,44,32,116,104,111,117,103,104,32,105,116,
- 115,32,110,111,116,32,111,116,104,101,114,119,105,115,101,32,
- 117,115,101,102,117,108,32,116,111,32,116,104,101,10,32,32,
- 32,32,105,109,112,111,114,116,32,115,121,115,116,101,109,46,
- 10,10,32,32,32,32,84,104,101,32,108,111,97,100,101,114,
- 32,109,117,115,116,32,116,97,107,101,32,97,32,115,112,101,
- 99,32,97,115,32,105,116,115,32,111,110,108,121,32,95,95,
- 105,110,105,116,95,95,40,41,32,97,114,103,46,10,10,32,
- 32,32,32,78,122,9,60,117,110,107,110,111,119,110,62,218,
- 12,103,101,116,95,102,105,108,101,110,97,109,101,218,6,111,
- 114,105,103,105,110,84,218,10,105,115,95,112,97,99,107,97,
- 103,101,114,59,0,0,0,41,15,114,115,0,0,0,114,157,
- 0,0,0,114,107,0,0,0,114,121,0,0,0,218,10,77,
- 111,100,117,108,101,83,112,101,99,90,13,95,115,101,116,95,
- 102,105,108,101,97,116,116,114,218,27,95,103,101,116,95,115,
- 117,112,112,111,114,116,101,100,95,102,105,108,101,95,108,111,
- 97,100,101,114,115,114,92,0,0,0,114,93,0,0,0,114,
- 127,0,0,0,218,9,95,80,79,80,85,76,65,84,69,114,
- 159,0,0,0,114,156,0,0,0,114,38,0,0,0,218,6,
- 97,112,112,101,110,100,41,9,114,106,0,0,0,90,8,108,
- 111,99,97,116,105,111,110,114,127,0,0,0,114,156,0,0,
- 0,218,4,115,112,101,99,218,12,108,111,97,100,101,114,95,
- 99,108,97,115,115,218,8,115,117,102,102,105,120,101,115,114,
- 159,0,0,0,90,7,100,105,114,110,97,109,101,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,218,23,115,112,
- 101,99,95,102,114,111,109,95,102,105,108,101,95,108,111,99,
- 97,116,105,111,110,254,1,0,0,115,60,0,0,0,0,12,
- 12,4,6,1,15,2,3,1,19,1,13,1,5,8,24,1,
- 9,3,12,1,22,1,21,1,15,1,9,1,5,2,4,3,
- 12,2,15,1,3,1,19,1,13,1,5,2,6,1,12,2,
- 9,1,15,1,6,1,16,1,16,2,114,167,0,0,0,99,
- 0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,
- 64,0,0,0,115,121,0,0,0,101,0,0,90,1,0,100,
- 0,0,90,2,0,100,1,0,90,3,0,100,2,0,90,4,
- 0,100,3,0,90,5,0,100,4,0,90,6,0,101,7,0,
- 100,5,0,100,6,0,132,0,0,131,1,0,90,8,0,101,
- 7,0,100,7,0,100,8,0,132,0,0,131,1,0,90,9,
- 0,101,7,0,100,9,0,100,9,0,100,10,0,100,11,0,
- 132,2,0,131,1,0,90,10,0,101,7,0,100,9,0,100,
- 12,0,100,13,0,132,1,0,131,1,0,90,11,0,100,9,
- 0,83,41,14,218,21,87,105,110,100,111,119,115,82,101,103,
- 105,115,116,114,121,70,105,110,100,101,114,122,62,77,101,116,
- 97,32,112,97,116,104,32,102,105,110,100,101,114,32,102,111,
- 114,32,109,111,100,117,108,101,115,32,100,101,99,108,97,114,
- 101,100,32,105,110,32,116,104,101,32,87,105,110,100,111,119,
- 115,32,114,101,103,105,115,116,114,121,46,122,59,83,111,102,
- 116,119,97,114,101,92,80,121,116,104,111,110,92,80,121,116,
- 104,111,110,67,111,114,101,92,123,115,121,115,95,118,101,114,
- 115,105,111,110,125,92,77,111,100,117,108,101,115,92,123,102,
- 117,108,108,110,97,109,101,125,122,65,83,111,102,116,119,97,
- 114,101,92,80,121,116,104,111,110,92,80,121,116,104,111,110,
- 67,111,114,101,92,123,115,121,115,95,118,101,114,115,105,111,
- 110,125,92,77,111,100,117,108,101,115,92,123,102,117,108,108,
- 110,97,109,101,125,92,68,101,98,117,103,70,99,2,0,0,
- 0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,0,
- 0,115,67,0,0,0,121,23,0,116,0,0,106,1,0,116,
- 0,0,106,2,0,124,1,0,131,2,0,83,87,110,37,0,
- 4,116,3,0,107,10,0,114,62,0,1,1,1,116,0,0,
- 106,1,0,116,0,0,106,4,0,124,1,0,131,2,0,83,
- 89,110,1,0,88,100,0,0,83,41,1,78,41,5,218,7,
- 95,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121,
- 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85,
- 83,69,82,114,40,0,0,0,90,18,72,75,69,89,95,76,
- 79,67,65,76,95,77,65,67,72,73,78,69,41,2,218,3,
- 99,108,115,218,3,107,101,121,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,218,14,95,111,112,101,110,95,114,
- 101,103,105,115,116,114,121,76,2,0,0,115,8,0,0,0,
- 0,2,3,1,23,1,13,1,122,36,87,105,110,100,111,119,
- 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,
- 95,111,112,101,110,95,114,101,103,105,115,116,114,121,99,2,
- 0,0,0,0,0,0,0,6,0,0,0,16,0,0,0,67,
- 0,0,0,115,143,0,0,0,124,0,0,106,0,0,114,21,
- 0,124,0,0,106,1,0,125,2,0,110,9,0,124,0,0,
- 106,2,0,125,2,0,124,2,0,106,3,0,100,1,0,124,
- 1,0,100,2,0,116,4,0,106,5,0,100,0,0,100,3,
- 0,133,2,0,25,131,0,2,125,3,0,121,47,0,124,0,
- 0,106,6,0,124,3,0,131,1,0,143,25,0,125,4,0,
- 116,7,0,106,8,0,124,4,0,100,4,0,131,2,0,125,
- 5,0,87,100,0,0,81,82,88,87,110,22,0,4,116,9,
- 0,107,10,0,114,138,0,1,1,1,100,0,0,83,89,110,
- 1,0,88,124,5,0,83,41,5,78,114,126,0,0,0,90,
- 11,115,121,115,95,118,101,114,115,105,111,110,114,80,0,0,
- 0,114,30,0,0,0,41,10,218,11,68,69,66,85,71,95,
- 66,85,73,76,68,218,18,82,69,71,73,83,84,82,89,95,
- 75,69,89,95,68,69,66,85,71,218,12,82,69,71,73,83,
- 84,82,89,95,75,69,89,114,47,0,0,0,114,7,0,0,
- 0,218,7,118,101,114,115,105,111,110,114,172,0,0,0,114,
- 169,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101,
- 114,40,0,0,0,41,6,114,170,0,0,0,114,126,0,0,
- 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114,
- 171,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101,
- 112,97,116,104,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103,
- 105,115,116,114,121,83,2,0,0,115,22,0,0,0,0,2,
- 9,1,12,2,9,1,15,1,22,1,3,1,18,1,29,1,
- 13,1,9,1,122,38,87,105,110,100,111,119,115,82,101,103,
- 105,115,116,114,121,70,105,110,100,101,114,46,95,115,101,97,
- 114,99,104,95,114,101,103,105,115,116,114,121,78,99,4,0,
- 0,0,0,0,0,0,8,0,0,0,14,0,0,0,67,0,
- 0,0,115,158,0,0,0,124,0,0,106,0,0,124,1,0,
- 131,1,0,125,4,0,124,4,0,100,0,0,107,8,0,114,
- 31,0,100,0,0,83,121,14,0,116,1,0,124,4,0,131,
- 1,0,1,87,110,22,0,4,116,2,0,107,10,0,114,69,
- 0,1,1,1,100,0,0,83,89,110,1,0,88,120,81,0,
- 116,3,0,131,0,0,68,93,70,0,92,2,0,125,5,0,
- 125,6,0,124,4,0,106,4,0,116,5,0,124,6,0,131,
- 1,0,131,1,0,114,80,0,116,6,0,106,7,0,124,1,
- 0,124,5,0,124,1,0,124,4,0,131,2,0,100,1,0,
- 124,4,0,131,2,1,125,7,0,124,7,0,83,113,80,0,
- 87,100,0,0,83,41,2,78,114,158,0,0,0,41,8,114,
- 178,0,0,0,114,39,0,0,0,114,40,0,0,0,114,161,
- 0,0,0,114,92,0,0,0,114,93,0,0,0,114,121,0,
- 0,0,218,16,115,112,101,99,95,102,114,111,109,95,108,111,
- 97,100,101,114,41,8,114,170,0,0,0,114,126,0,0,0,
- 114,35,0,0,0,218,6,116,97,114,103,101,116,114,177,0,
- 0,0,114,127,0,0,0,114,166,0,0,0,114,164,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
- 218,9,102,105,110,100,95,115,112,101,99,98,2,0,0,115,
- 26,0,0,0,0,2,15,1,12,1,4,1,3,1,14,1,
- 13,1,9,1,22,1,21,1,9,1,15,1,9,1,122,31,
+ 0,116,0,0,107,3,0,114,171,0,100,8,0,106,1,0,
+ 124,2,0,124,5,0,131,2,0,125,8,0,116,2,0,106,
+ 3,0,100,9,0,124,8,0,131,2,0,1,116,4,0,124,
+ 8,0,124,4,0,141,1,0,130,1,0,110,125,0,116,5,
+ 0,124,6,0,131,1,0,100,5,0,107,3,0,114,235,0,
+ 100,10,0,106,1,0,124,2,0,131,1,0,125,8,0,116,
+ 2,0,106,3,0,100,9,0,124,8,0,131,2,0,1,116,
+ 6,0,124,8,0,131,1,0,130,1,0,110,61,0,116,5,
+ 0,124,7,0,131,1,0,100,5,0,107,3,0,114,40,1,
+ 100,11,0,106,1,0,124,2,0,131,1,0,125,8,0,116,
+ 2,0,106,3,0,100,9,0,124,8,0,131,2,0,1,116,
+ 6,0,124,8,0,131,1,0,130,1,0,124,1,0,100,1,
+ 0,107,9,0,114,238,1,121,20,0,116,7,0,124,1,0,
+ 100,12,0,25,131,1,0,125,9,0,87,110,18,0,4,116,
+ 8,0,107,10,0,114,92,1,1,1,1,89,110,65,0,88,
+ 116,9,0,124,6,0,131,1,0,124,9,0,107,3,0,114,
+ 157,1,100,13,0,106,1,0,124,2,0,131,1,0,125,8,
+ 0,116,2,0,106,3,0,100,9,0,124,8,0,131,2,0,
+ 1,116,4,0,124,8,0,124,4,0,141,1,0,130,1,0,
+ 121,18,0,124,1,0,100,14,0,25,100,15,0,64,125,10,
+ 0,87,110,18,0,4,116,8,0,107,10,0,114,195,1,1,
+ 1,1,89,110,43,0,88,116,9,0,124,7,0,131,1,0,
+ 124,10,0,107,3,0,114,238,1,116,4,0,100,13,0,106,
+ 1,0,124,2,0,131,1,0,124,4,0,141,1,0,130,1,
+ 0,124,0,0,100,7,0,100,1,0,133,2,0,25,83,41,
+ 16,97,122,1,0,0,86,97,108,105,100,97,116,101,32,116,
+ 104,101,32,104,101,97,100,101,114,32,111,102,32,116,104,101,
+ 32,112,97,115,115,101,100,45,105,110,32,98,121,116,101,99,
+ 111,100,101,32,97,103,97,105,110,115,116,32,115,111,117,114,
+ 99,101,95,115,116,97,116,115,32,40,105,102,10,32,32,32,
+ 32,103,105,118,101,110,41,32,97,110,100,32,114,101,116,117,
+ 114,110,105,110,103,32,116,104,101,32,98,121,116,101,99,111,
+ 100,101,32,116,104,97,116,32,99,97,110,32,98,101,32,99,
+ 111,109,112,105,108,101,100,32,98,121,32,99,111,109,112,105,
+ 108,101,40,41,46,10,10,32,32,32,32,65,108,108,32,111,
+ 116,104,101,114,32,97,114,103,117,109,101,110,116,115,32,97,
+ 114,101,32,117,115,101,100,32,116,111,32,101,110,104,97,110,
+ 99,101,32,101,114,114,111,114,32,114,101,112,111,114,116,105,
+ 110,103,46,10,10,32,32,32,32,73,109,112,111,114,116,69,
+ 114,114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,
+ 104,101,110,32,116,104,101,32,109,97,103,105,99,32,110,117,
+ 109,98,101,114,32,105,115,32,105,110,99,111,114,114,101,99,
+ 116,32,111,114,32,116,104,101,32,98,121,116,101,99,111,100,
+ 101,32,105,115,10,32,32,32,32,102,111,117,110,100,32,116,
+ 111,32,98,101,32,115,116,97,108,101,46,32,69,79,70,69,
+ 114,114,111,114,32,105,115,32,114,97,105,115,101,100,32,119,
+ 104,101,110,32,116,104,101,32,100,97,116,97,32,105,115,32,
+ 102,111,117,110,100,32,116,111,32,98,101,10,32,32,32,32,
+ 116,114,117,110,99,97,116,101,100,46,10,10,32,32,32,32,
+ 78,114,98,0,0,0,122,10,60,98,121,116,101,99,111,100,
+ 101,62,114,35,0,0,0,114,12,0,0,0,233,8,0,0,
+ 0,233,12,0,0,0,122,30,98,97,100,32,109,97,103,105,
+ 99,32,110,117,109,98,101,114,32,105,110,32,123,33,114,125,
+ 58,32,123,33,114,125,122,2,123,125,122,43,114,101,97,99,
+ 104,101,100,32,69,79,70,32,119,104,105,108,101,32,114,101,
+ 97,100,105,110,103,32,116,105,109,101,115,116,97,109,112,32,
+ 105,110,32,123,33,114,125,122,48,114,101,97,99,104,101,100,
+ 32,69,79,70,32,119,104,105,108,101,32,114,101,97,100,105,
+ 110,103,32,115,105,122,101,32,111,102,32,115,111,117,114,99,
+ 101,32,105,110,32,123,33,114,125,218,5,109,116,105,109,101,
+ 122,26,98,121,116,101,99,111,100,101,32,105,115,32,115,116,
+ 97,108,101,32,102,111,114,32,123,33,114,125,218,4,115,105,
+ 122,101,108,3,0,0,0,255,127,255,127,3,0,41,10,218,
+ 12,77,65,71,73,67,95,78,85,77,66,69,82,114,47,0,
+ 0,0,114,114,0,0,0,218,16,95,118,101,114,98,111,115,
+ 101,95,109,101,115,115,97,103,101,114,99,0,0,0,114,31,
+ 0,0,0,218,8,69,79,70,69,114,114,111,114,114,14,0,
+ 0,0,218,8,75,101,121,69,114,114,111,114,114,19,0,0,
+ 0,41,11,114,53,0,0,0,218,12,115,111,117,114,99,101,
+ 95,115,116,97,116,115,114,98,0,0,0,114,35,0,0,0,
+ 90,11,101,120,99,95,100,101,116,97,105,108,115,90,5,109,
+ 97,103,105,99,90,13,114,97,119,95,116,105,109,101,115,116,
+ 97,109,112,90,8,114,97,119,95,115,105,122,101,114,75,0,
+ 0,0,218,12,115,111,117,114,99,101,95,109,116,105,109,101,
+ 218,11,115,111,117,114,99,101,95,115,105,122,101,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,25,95,118,
+ 97,108,105,100,97,116,101,95,98,121,116,101,99,111,100,101,
+ 95,104,101,97,100,101,114,154,1,0,0,115,76,0,0,0,
+ 0,11,6,1,12,1,13,3,6,1,12,1,10,1,16,1,
+ 16,1,16,1,12,1,18,1,16,1,18,1,18,1,15,1,
+ 16,1,15,1,18,1,15,1,16,1,12,1,12,1,3,1,
+ 20,1,13,1,5,2,18,1,15,1,16,1,15,1,3,1,
+ 18,1,13,1,5,2,18,1,15,1,9,1,114,135,0,0,
+ 0,99,4,0,0,0,0,0,0,0,5,0,0,0,6,0,
+ 0,0,67,0,0,0,115,115,0,0,0,116,0,0,106,1,
+ 0,124,0,0,131,1,0,125,4,0,116,2,0,124,4,0,
+ 116,3,0,131,2,0,114,78,0,116,4,0,106,5,0,100,
+ 1,0,124,2,0,131,2,0,1,124,3,0,100,2,0,107,
+ 9,0,114,74,0,116,6,0,106,7,0,124,4,0,124,3,
+ 0,131,2,0,1,124,4,0,83,116,8,0,100,3,0,106,
+ 9,0,124,2,0,131,1,0,100,4,0,124,1,0,100,5,
+ 0,124,2,0,131,1,2,130,1,0,100,2,0,83,41,6,
+ 122,60,67,111,109,112,105,108,101,32,98,121,116,101,99,111,
+ 100,101,32,97,115,32,114,101,116,117,114,110,101,100,32,98,
+ 121,32,95,118,97,108,105,100,97,116,101,95,98,121,116,101,
+ 99,111,100,101,95,104,101,97,100,101,114,40,41,46,122,21,
+ 99,111,100,101,32,111,98,106,101,99,116,32,102,114,111,109,
+ 32,123,33,114,125,78,122,23,78,111,110,45,99,111,100,101,
+ 32,111,98,106,101,99,116,32,105,110,32,123,33,114,125,114,
+ 98,0,0,0,114,35,0,0,0,41,10,218,7,109,97,114,
+ 115,104,97,108,90,5,108,111,97,100,115,218,10,105,115,105,
+ 110,115,116,97,110,99,101,218,10,95,99,111,100,101,95,116,
+ 121,112,101,114,114,0,0,0,114,129,0,0,0,218,4,95,
+ 105,109,112,90,16,95,102,105,120,95,99,111,95,102,105,108,
+ 101,110,97,109,101,114,99,0,0,0,114,47,0,0,0,41,
+ 5,114,53,0,0,0,114,98,0,0,0,114,89,0,0,0,
+ 114,90,0,0,0,218,4,99,111,100,101,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,17,95,99,111,109,
+ 112,105,108,101,95,98,121,116,101,99,111,100,101,209,1,0,
+ 0,115,16,0,0,0,0,2,15,1,15,1,16,1,12,1,
+ 16,1,4,2,18,1,114,141,0,0,0,114,59,0,0,0,
+ 99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0,
+ 0,67,0,0,0,115,76,0,0,0,116,0,0,116,1,0,
+ 131,1,0,125,3,0,124,3,0,106,2,0,116,3,0,124,
+ 1,0,131,1,0,131,1,0,1,124,3,0,106,2,0,116,
+ 3,0,124,2,0,131,1,0,131,1,0,1,124,3,0,106,
+ 2,0,116,4,0,106,5,0,124,0,0,131,1,0,131,1,
+ 0,1,124,3,0,83,41,1,122,80,67,111,109,112,105,108,
+ 101,32,97,32,99,111,100,101,32,111,98,106,101,99,116,32,
+ 105,110,116,111,32,98,121,116,101,99,111,100,101,32,102,111,
+ 114,32,119,114,105,116,105,110,103,32,111,117,116,32,116,111,
+ 32,97,32,98,121,116,101,45,99,111,109,112,105,108,101,100,
+ 10,32,32,32,32,102,105,108,101,46,41,6,218,9,98,121,
+ 116,101,97,114,114,97,121,114,128,0,0,0,218,6,101,120,
+ 116,101,110,100,114,17,0,0,0,114,136,0,0,0,90,5,
+ 100,117,109,112,115,41,4,114,140,0,0,0,114,126,0,0,
+ 0,114,134,0,0,0,114,53,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,17,95,99,111,100,
+ 101,95,116,111,95,98,121,116,101,99,111,100,101,221,1,0,
+ 0,115,10,0,0,0,0,3,12,1,19,1,19,1,22,1,
+ 114,144,0,0,0,99,1,0,0,0,0,0,0,0,5,0,
+ 0,0,4,0,0,0,67,0,0,0,115,89,0,0,0,100,
+ 1,0,100,2,0,108,0,0,125,1,0,116,1,0,106,2,
+ 0,124,0,0,131,1,0,106,3,0,125,2,0,124,1,0,
+ 106,4,0,124,2,0,131,1,0,125,3,0,116,1,0,106,
+ 5,0,100,2,0,100,3,0,131,2,0,125,4,0,124,4,
+ 0,106,6,0,124,0,0,106,6,0,124,3,0,100,1,0,
+ 25,131,1,0,131,1,0,83,41,4,122,121,68,101,99,111,
+ 100,101,32,98,121,116,101,115,32,114,101,112,114,101,115,101,
+ 110,116,105,110,103,32,115,111,117,114,99,101,32,99,111,100,
+ 101,32,97,110,100,32,114,101,116,117,114,110,32,116,104,101,
+ 32,115,116,114,105,110,103,46,10,10,32,32,32,32,85,110,
+ 105,118,101,114,115,97,108,32,110,101,119,108,105,110,101,32,
+ 115,117,112,112,111,114,116,32,105,115,32,117,115,101,100,32,
+ 105,110,32,116,104,101,32,100,101,99,111,100,105,110,103,46,
+ 10,32,32,32,32,114,59,0,0,0,78,84,41,7,218,8,
+ 116,111,107,101,110,105,122,101,114,49,0,0,0,90,7,66,
+ 121,116,101,115,73,79,90,8,114,101,97,100,108,105,110,101,
+ 90,15,100,101,116,101,99,116,95,101,110,99,111,100,105,110,
+ 103,90,25,73,110,99,114,101,109,101,110,116,97,108,78,101,
+ 119,108,105,110,101,68,101,99,111,100,101,114,218,6,100,101,
+ 99,111,100,101,41,5,218,12,115,111,117,114,99,101,95,98,
+ 121,116,101,115,114,145,0,0,0,90,21,115,111,117,114,99,
+ 101,95,98,121,116,101,115,95,114,101,97,100,108,105,110,101,
+ 218,8,101,110,99,111,100,105,110,103,90,15,110,101,119,108,
+ 105,110,101,95,100,101,99,111,100,101,114,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,13,100,101,99,111,
+ 100,101,95,115,111,117,114,99,101,231,1,0,0,115,10,0,
+ 0,0,0,5,12,1,18,1,15,1,18,1,114,149,0,0,
+ 0,114,120,0,0,0,218,26,115,117,98,109,111,100,117,108,
+ 101,95,115,101,97,114,99,104,95,108,111,99,97,116,105,111,
+ 110,115,99,2,0,0,0,2,0,0,0,9,0,0,0,19,
+ 0,0,0,67,0,0,0,115,89,1,0,0,124,1,0,100,
+ 1,0,107,8,0,114,73,0,100,2,0,125,1,0,116,0,
+ 0,124,2,0,100,3,0,131,2,0,114,73,0,121,19,0,
+ 124,2,0,106,1,0,124,0,0,131,1,0,125,1,0,87,
+ 110,18,0,4,116,2,0,107,10,0,114,72,0,1,1,1,
+ 89,110,1,0,88,116,3,0,106,4,0,124,0,0,124,2,
+ 0,100,4,0,124,1,0,131,2,1,125,4,0,100,5,0,
+ 124,4,0,95,5,0,124,2,0,100,1,0,107,8,0,114,
+ 194,0,120,73,0,116,6,0,131,0,0,68,93,58,0,92,
+ 2,0,125,5,0,125,6,0,124,1,0,106,7,0,116,8,
+ 0,124,6,0,131,1,0,131,1,0,114,128,0,124,5,0,
+ 124,0,0,124,1,0,131,2,0,125,2,0,124,2,0,124,
+ 4,0,95,9,0,80,113,128,0,87,100,1,0,83,124,3,
+ 0,116,10,0,107,8,0,114,23,1,116,0,0,124,2,0,
+ 100,6,0,131,2,0,114,32,1,121,19,0,124,2,0,106,
+ 11,0,124,0,0,131,1,0,125,7,0,87,110,18,0,4,
+ 116,2,0,107,10,0,114,4,1,1,1,1,89,113,32,1,
+ 88,124,7,0,114,32,1,103,0,0,124,4,0,95,12,0,
+ 110,9,0,124,3,0,124,4,0,95,12,0,124,4,0,106,
+ 12,0,103,0,0,107,2,0,114,85,1,124,1,0,114,85,
+ 1,116,13,0,124,1,0,131,1,0,100,7,0,25,125,8,
+ 0,124,4,0,106,12,0,106,14,0,124,8,0,131,1,0,
+ 1,124,4,0,83,41,8,97,61,1,0,0,82,101,116,117,
+ 114,110,32,97,32,109,111,100,117,108,101,32,115,112,101,99,
+ 32,98,97,115,101,100,32,111,110,32,97,32,102,105,108,101,
+ 32,108,111,99,97,116,105,111,110,46,10,10,32,32,32,32,
+ 84,111,32,105,110,100,105,99,97,116,101,32,116,104,97,116,
+ 32,116,104,101,32,109,111,100,117,108,101,32,105,115,32,97,
+ 32,112,97,99,107,97,103,101,44,32,115,101,116,10,32,32,
+ 32,32,115,117,98,109,111,100,117,108,101,95,115,101,97,114,
+ 99,104,95,108,111,99,97,116,105,111,110,115,32,116,111,32,
+ 97,32,108,105,115,116,32,111,102,32,100,105,114,101,99,116,
+ 111,114,121,32,112,97,116,104,115,46,32,32,65,110,10,32,
+ 32,32,32,101,109,112,116,121,32,108,105,115,116,32,105,115,
+ 32,115,117,102,102,105,99,105,101,110,116,44,32,116,104,111,
+ 117,103,104,32,105,116,115,32,110,111,116,32,111,116,104,101,
+ 114,119,105,115,101,32,117,115,101,102,117,108,32,116,111,32,
+ 116,104,101,10,32,32,32,32,105,109,112,111,114,116,32,115,
+ 121,115,116,101,109,46,10,10,32,32,32,32,84,104,101,32,
+ 108,111,97,100,101,114,32,109,117,115,116,32,116,97,107,101,
+ 32,97,32,115,112,101,99,32,97,115,32,105,116,115,32,111,
+ 110,108,121,32,95,95,105,110,105,116,95,95,40,41,32,97,
+ 114,103,46,10,10,32,32,32,32,78,122,9,60,117,110,107,
+ 110,111,119,110,62,218,12,103,101,116,95,102,105,108,101,110,
+ 97,109,101,218,6,111,114,105,103,105,110,84,218,10,105,115,
+ 95,112,97,99,107,97,103,101,114,59,0,0,0,41,15,114,
+ 108,0,0,0,114,151,0,0,0,114,99,0,0,0,114,114,
+ 0,0,0,218,10,77,111,100,117,108,101,83,112,101,99,90,
+ 13,95,115,101,116,95,102,105,108,101,97,116,116,114,218,27,
+ 95,103,101,116,95,115,117,112,112,111,114,116,101,100,95,102,
+ 105,108,101,95,108,111,97,100,101,114,115,114,92,0,0,0,
+ 114,93,0,0,0,114,120,0,0,0,218,9,95,80,79,80,
+ 85,76,65,84,69,114,153,0,0,0,114,150,0,0,0,114,
+ 38,0,0,0,218,6,97,112,112,101,110,100,41,9,114,98,
+ 0,0,0,90,8,108,111,99,97,116,105,111,110,114,120,0,
+ 0,0,114,150,0,0,0,218,4,115,112,101,99,218,12,108,
+ 111,97,100,101,114,95,99,108,97,115,115,218,8,115,117,102,
+ 102,105,120,101,115,114,153,0,0,0,90,7,100,105,114,110,
+ 97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,218,23,115,112,101,99,95,102,114,111,109,95,102,105,
+ 108,101,95,108,111,99,97,116,105,111,110,248,1,0,0,115,
+ 60,0,0,0,0,12,12,4,6,1,15,2,3,1,19,1,
+ 13,1,5,8,24,1,9,3,12,1,22,1,21,1,15,1,
+ 9,1,5,2,4,3,12,2,15,1,3,1,19,1,13,1,
+ 5,2,6,1,12,2,9,1,15,1,6,1,16,1,16,2,
+ 114,161,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,5,0,0,0,64,0,0,0,115,121,0,0,0,101,
+ 0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,
+ 0,100,2,0,90,4,0,100,3,0,90,5,0,100,4,0,
+ 90,6,0,101,7,0,100,5,0,100,6,0,132,0,0,131,
+ 1,0,90,8,0,101,7,0,100,7,0,100,8,0,132,0,
+ 0,131,1,0,90,9,0,101,7,0,100,9,0,100,9,0,
+ 100,10,0,100,11,0,132,2,0,131,1,0,90,10,0,101,
+ 7,0,100,9,0,100,12,0,100,13,0,132,1,0,131,1,
+ 0,90,11,0,100,9,0,83,41,14,218,21,87,105,110,100,
+ 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,
+ 114,122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,
+ 100,101,114,32,102,111,114,32,109,111,100,117,108,101,115,32,
+ 100,101,99,108,97,114,101,100,32,105,110,32,116,104,101,32,
+ 87,105,110,100,111,119,115,32,114,101,103,105,115,116,114,121,
+ 46,122,59,83,111,102,116,119,97,114,101,92,80,121,116,104,
+ 111,110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,
+ 121,115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,
+ 108,101,115,92,123,102,117,108,108,110,97,109,101,125,122,65,
+ 83,111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,
+ 80,121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,
+ 118,101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,
+ 92,123,102,117,108,108,110,97,109,101,125,92,68,101,98,117,
+ 103,70,99,2,0,0,0,0,0,0,0,2,0,0,0,11,
+ 0,0,0,67,0,0,0,115,67,0,0,0,121,23,0,116,
+ 0,0,106,1,0,116,0,0,106,2,0,124,1,0,131,2,
+ 0,83,87,110,37,0,4,116,3,0,107,10,0,114,62,0,
+ 1,1,1,116,0,0,106,1,0,116,0,0,106,4,0,124,
+ 1,0,131,2,0,83,89,110,1,0,88,100,0,0,83,41,
+ 1,78,41,5,218,7,95,119,105,110,114,101,103,90,7,79,
+ 112,101,110,75,101,121,90,17,72,75,69,89,95,67,85,82,
+ 82,69,78,84,95,85,83,69,82,114,40,0,0,0,90,18,
+ 72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73,
+ 78,69,41,2,218,3,99,108,115,218,3,107,101,121,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,95,
+ 111,112,101,110,95,114,101,103,105,115,116,114,121,70,2,0,
+ 0,115,8,0,0,0,0,2,3,1,23,1,13,1,122,36,
87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,
- 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,
- 3,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
- 67,0,0,0,115,45,0,0,0,124,0,0,106,0,0,124,
- 1,0,124,2,0,131,2,0,125,3,0,124,3,0,100,1,
- 0,107,9,0,114,37,0,124,3,0,106,1,0,83,100,1,
- 0,83,100,1,0,83,41,2,122,108,70,105,110,100,32,109,
- 111,100,117,108,101,32,110,97,109,101,100,32,105,110,32,116,
- 104,101,32,114,101,103,105,115,116,114,121,46,10,10,32,32,
- 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,
- 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,
- 32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,
- 101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,
- 32,32,32,32,32,32,78,41,2,114,181,0,0,0,114,127,
- 0,0,0,41,4,114,170,0,0,0,114,126,0,0,0,114,
- 35,0,0,0,114,164,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,5,0,0,0,218,11,102,105,110,100,95,109,
- 111,100,117,108,101,114,2,0,0,115,8,0,0,0,0,7,
- 18,1,12,1,7,2,122,33,87,105,110,100,111,119,115,82,
- 101,103,105,115,116,114,121,70,105,110,100,101,114,46,102,105,
- 110,100,95,109,111,100,117,108,101,41,12,114,112,0,0,0,
- 114,111,0,0,0,114,113,0,0,0,114,114,0,0,0,114,
- 175,0,0,0,114,174,0,0,0,114,173,0,0,0,218,11,
- 99,108,97,115,115,109,101,116,104,111,100,114,172,0,0,0,
- 114,178,0,0,0,114,181,0,0,0,114,182,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,114,168,0,0,0,64,2,0,0,115,20,0,0,
- 0,12,2,6,3,6,3,6,2,6,2,18,7,18,15,3,
- 1,21,15,3,1,114,168,0,0,0,99,0,0,0,0,0,
- 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,
- 70,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,
- 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,
- 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6,
- 0,100,7,0,132,0,0,90,6,0,100,8,0,100,9,0,
- 132,0,0,90,7,0,100,10,0,83,41,11,218,13,95,76,
- 111,97,100,101,114,66,97,115,105,99,115,122,83,66,97,115,
- 101,32,99,108,97,115,115,32,111,102,32,99,111,109,109,111,
- 110,32,99,111,100,101,32,110,101,101,100,101,100,32,98,121,
- 32,98,111,116,104,32,83,111,117,114,99,101,76,111,97,100,
- 101,114,32,97,110,100,10,32,32,32,32,83,111,117,114,99,
- 101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,46,
- 99,2,0,0,0,0,0,0,0,5,0,0,0,3,0,0,
- 0,67,0,0,0,115,88,0,0,0,116,0,0,124,0,0,
- 106,1,0,124,1,0,131,1,0,131,1,0,100,1,0,25,
- 125,2,0,124,2,0,106,2,0,100,2,0,100,1,0,131,
- 2,0,100,3,0,25,125,3,0,124,1,0,106,3,0,100,
- 2,0,131,1,0,100,4,0,25,125,4,0,124,3,0,100,
- 5,0,107,2,0,111,87,0,124,4,0,100,5,0,107,3,
- 0,83,41,6,122,141,67,111,110,99,114,101,116,101,32,105,
- 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,
- 32,73,110,115,112,101,99,116,76,111,97,100,101,114,46,105,
- 115,95,112,97,99,107,97,103,101,32,98,121,32,99,104,101,
- 99,107,105,110,103,32,105,102,10,32,32,32,32,32,32,32,
- 32,116,104,101,32,112,97,116,104,32,114,101,116,117,114,110,
- 101,100,32,98,121,32,103,101,116,95,102,105,108,101,110,97,
- 109,101,32,104,97,115,32,97,32,102,105,108,101,110,97,109,
- 101,32,111,102,32,39,95,95,105,110,105,116,95,95,46,112,
- 121,39,46,114,29,0,0,0,114,58,0,0,0,114,59,0,
- 0,0,114,56,0,0,0,218,8,95,95,105,110,105,116,95,
- 95,41,4,114,38,0,0,0,114,157,0,0,0,114,34,0,
- 0,0,114,32,0,0,0,41,5,114,108,0,0,0,114,126,
- 0,0,0,114,94,0,0,0,90,13,102,105,108,101,110,97,
- 109,101,95,98,97,115,101,90,9,116,97,105,108,95,110,97,
- 109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,159,0,0,0,133,2,0,0,115,8,0,0,0,0,
- 3,25,1,22,1,19,1,122,24,95,76,111,97,100,101,114,
- 66,97,115,105,99,115,46,105,115,95,112,97,99,107,97,103,
- 101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,
- 0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,41,
- 2,122,42,85,115,101,32,100,101,102,97,117,108,116,32,115,
- 101,109,97,110,116,105,99,115,32,102,111,114,32,109,111,100,
- 117,108,101,32,99,114,101,97,116,105,111,110,46,78,114,4,
- 0,0,0,41,2,114,108,0,0,0,114,164,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,13,
- 99,114,101,97,116,101,95,109,111,100,117,108,101,141,2,0,
- 0,115,0,0,0,0,122,27,95,76,111,97,100,101,114,66,
- 97,115,105,99,115,46,99,114,101,97,116,101,95,109,111,100,
- 117,108,101,99,2,0,0,0,0,0,0,0,3,0,0,0,
- 4,0,0,0,67,0,0,0,115,80,0,0,0,124,0,0,
- 106,0,0,124,1,0,106,1,0,131,1,0,125,2,0,124,
- 2,0,100,1,0,107,8,0,114,54,0,116,2,0,100,2,
- 0,106,3,0,124,1,0,106,1,0,131,1,0,131,1,0,
- 130,1,0,116,4,0,106,5,0,116,6,0,124,2,0,124,
- 1,0,106,7,0,131,3,0,1,100,1,0,83,41,3,122,
- 19,69,120,101,99,117,116,101,32,116,104,101,32,109,111,100,
- 117,108,101,46,78,122,52,99,97,110,110,111,116,32,108,111,
- 97,100,32,109,111,100,117,108,101,32,123,33,114,125,32,119,
- 104,101,110,32,103,101,116,95,99,111,100,101,40,41,32,114,
- 101,116,117,114,110,115,32,78,111,110,101,41,8,218,8,103,
- 101,116,95,99,111,100,101,114,112,0,0,0,114,107,0,0,
- 0,114,47,0,0,0,114,121,0,0,0,218,25,95,99,97,
- 108,108,95,119,105,116,104,95,102,114,97,109,101,115,95,114,
- 101,109,111,118,101,100,218,4,101,120,101,99,114,118,0,0,
- 0,41,3,114,108,0,0,0,218,6,109,111,100,117,108,101,
- 114,146,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108,
- 101,144,2,0,0,115,10,0,0,0,0,2,18,1,12,1,
- 9,1,15,1,122,25,95,76,111,97,100,101,114,66,97,115,
- 105,99,115,46,101,120,101,99,95,109,111,100,117,108,101,99,
- 2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
- 67,0,0,0,115,16,0,0,0,116,0,0,106,1,0,124,
- 0,0,124,1,0,131,2,0,83,41,1,78,41,2,114,121,
- 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108,
- 101,95,115,104,105,109,41,2,114,108,0,0,0,114,126,0,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,218,11,108,111,97,100,95,109,111,100,117,108,101,152,2,
- 0,0,115,2,0,0,0,0,1,122,25,95,76,111,97,100,
- 101,114,66,97,115,105,99,115,46,108,111,97,100,95,109,111,
- 100,117,108,101,78,41,8,114,112,0,0,0,114,111,0,0,
- 0,114,113,0,0,0,114,114,0,0,0,114,159,0,0,0,
- 114,186,0,0,0,114,191,0,0,0,114,193,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,114,184,0,0,0,128,2,0,0,115,10,0,0,
- 0,12,3,6,2,12,8,12,3,12,8,114,184,0,0,0,
- 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
- 0,64,0,0,0,115,106,0,0,0,101,0,0,90,1,0,
- 100,0,0,90,2,0,100,1,0,100,2,0,132,0,0,90,
- 3,0,100,3,0,100,4,0,132,0,0,90,4,0,100,5,
- 0,100,6,0,132,0,0,90,5,0,100,7,0,100,8,0,
- 132,0,0,90,6,0,100,9,0,100,10,0,132,0,0,90,
- 7,0,100,11,0,100,18,0,100,13,0,100,14,0,132,0,
- 1,90,8,0,100,15,0,100,16,0,132,0,0,90,9,0,
- 100,17,0,83,41,19,218,12,83,111,117,114,99,101,76,111,
- 97,100,101,114,99,2,0,0,0,0,0,0,0,2,0,0,
- 0,1,0,0,0,67,0,0,0,115,10,0,0,0,116,0,
- 0,130,1,0,100,1,0,83,41,2,122,178,79,112,116,105,
- 111,110,97,108,32,109,101,116,104,111,100,32,116,104,97,116,
- 32,114,101,116,117,114,110,115,32,116,104,101,32,109,111,100,
- 105,102,105,99,97,116,105,111,110,32,116,105,109,101,32,40,
- 97,110,32,105,110,116,41,32,102,111,114,32,116,104,101,10,
- 32,32,32,32,32,32,32,32,115,112,101,99,105,102,105,101,
- 100,32,112,97,116,104,44,32,119,104,101,114,101,32,112,97,
- 116,104,32,105,115,32,97,32,115,116,114,46,10,10,32,32,
- 32,32,32,32,32,32,82,97,105,115,101,115,32,73,79,69,
- 114,114,111,114,32,119,104,101,110,32,116,104,101,32,112,97,
- 116,104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,
- 100,108,101,100,46,10,32,32,32,32,32,32,32,32,78,41,
- 1,218,7,73,79,69,114,114,111,114,41,2,114,108,0,0,
- 0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,10,112,97,116,104,95,109,116,105,109,
- 101,158,2,0,0,115,2,0,0,0,0,6,122,23,83,111,
- 117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,
- 109,116,105,109,101,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,3,0,0,0,67,0,0,0,115,19,0,0,0,100,
- 1,0,124,0,0,106,0,0,124,1,0,131,1,0,105,1,
- 0,83,41,2,97,170,1,0,0,79,112,116,105,111,110,97,
- 108,32,109,101,116,104,111,100,32,114,101,116,117,114,110,105,
- 110,103,32,97,32,109,101,116,97,100,97,116,97,32,100,105,
- 99,116,32,102,111,114,32,116,104,101,32,115,112,101,99,105,
- 102,105,101,100,32,112,97,116,104,10,32,32,32,32,32,32,
- 32,32,116,111,32,98,121,32,116,104,101,32,112,97,116,104,
- 32,40,115,116,114,41,46,10,32,32,32,32,32,32,32,32,
- 80,111,115,115,105,98,108,101,32,107,101,121,115,58,10,32,
- 32,32,32,32,32,32,32,45,32,39,109,116,105,109,101,39,
- 32,40,109,97,110,100,97,116,111,114,121,41,32,105,115,32,
- 116,104,101,32,110,117,109,101,114,105,99,32,116,105,109,101,
- 115,116,97,109,112,32,111,102,32,108,97,115,116,32,115,111,
- 117,114,99,101,10,32,32,32,32,32,32,32,32,32,32,99,
- 111,100,101,32,109,111,100,105,102,105,99,97,116,105,111,110,
- 59,10,32,32,32,32,32,32,32,32,45,32,39,115,105,122,
- 101,39,32,40,111,112,116,105,111,110,97,108,41,32,105,115,
- 32,116,104,101,32,115,105,122,101,32,105,110,32,98,121,116,
- 101,115,32,111,102,32,116,104,101,32,115,111,117,114,99,101,
- 32,99,111,100,101,46,10,10,32,32,32,32,32,32,32,32,
- 73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105,
- 115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,32,
- 116,104,101,32,108,111,97,100,101,114,32,116,111,32,114,101,
- 97,100,32,98,121,116,101,99,111,100,101,32,102,105,108,101,
- 115,46,10,32,32,32,32,32,32,32,32,82,97,105,115,101,
- 115,32,73,79,69,114,114,111,114,32,119,104,101,110,32,116,
- 104,101,32,112,97,116,104,32,99,97,110,110,111,116,32,98,
- 101,32,104,97,110,100,108,101,100,46,10,32,32,32,32,32,
- 32,32,32,114,133,0,0,0,41,1,114,196,0,0,0,41,
- 2,114,108,0,0,0,114,35,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,5,0,0,0,218,10,112,97,116,104,
- 95,115,116,97,116,115,166,2,0,0,115,2,0,0,0,0,
- 11,122,23,83,111,117,114,99,101,76,111,97,100,101,114,46,
- 112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,0,
- 0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,115,
- 16,0,0,0,124,0,0,106,0,0,124,2,0,124,3,0,
- 131,2,0,83,41,1,122,228,79,112,116,105,111,110,97,108,
- 32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114,
- 105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115,
- 41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104,
- 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32,
- 32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32,
- 116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111,
- 119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105,
- 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102,
- 105,108,101,115,46,10,10,32,32,32,32,32,32,32,32,84,
- 104,101,32,115,111,117,114,99,101,32,112,97,116,104,32,105,
- 115,32,110,101,101,100,101,100,32,105,110,32,111,114,100,101,
- 114,32,116,111,32,99,111,114,114,101,99,116,108,121,32,116,
- 114,97,110,115,102,101,114,32,112,101,114,109,105,115,115,105,
- 111,110,115,10,32,32,32,32,32,32,32,32,41,1,218,8,
- 115,101,116,95,100,97,116,97,41,4,114,108,0,0,0,114,
- 90,0,0,0,90,10,99,97,99,104,101,95,112,97,116,104,
- 114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,15,95,99,97,99,104,101,95,98,121,116,
- 101,99,111,100,101,179,2,0,0,115,2,0,0,0,0,8,
- 122,28,83,111,117,114,99,101,76,111,97,100,101,114,46,95,
- 99,97,99,104,101,95,98,121,116,101,99,111,100,101,99,3,
- 0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,67,
- 0,0,0,115,4,0,0,0,100,1,0,83,41,2,122,150,
- 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,
- 119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,116,
- 97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,102,
- 105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,41,
- 46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,
- 109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,
- 104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,116,
- 104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,121,
- 116,101,99,111,100,101,32,102,105,108,101,115,46,10,32,32,
- 32,32,32,32,32,32,78,114,4,0,0,0,41,3,114,108,
- 0,0,0,114,35,0,0,0,114,53,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,114,198,0,0,
- 0,189,2,0,0,115,0,0,0,0,122,21,83,111,117,114,
- 99,101,76,111,97,100,101,114,46,115,101,116,95,100,97,116,
- 97,99,2,0,0,0,0,0,0,0,5,0,0,0,16,0,
- 0,0,67,0,0,0,115,105,0,0,0,124,0,0,106,0,
- 0,124,1,0,131,1,0,125,2,0,121,19,0,124,0,0,
- 106,1,0,124,2,0,131,1,0,125,3,0,87,110,58,0,
- 4,116,2,0,107,10,0,114,94,0,1,125,4,0,1,122,
- 26,0,116,3,0,100,1,0,100,2,0,124,1,0,131,1,
- 1,124,4,0,130,2,0,87,89,100,3,0,100,3,0,125,
- 4,0,126,4,0,88,110,1,0,88,116,4,0,124,3,0,
- 131,1,0,83,41,4,122,52,67,111,110,99,114,101,116,101,
- 32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,
- 111,102,32,73,110,115,112,101,99,116,76,111,97,100,101,114,
- 46,103,101,116,95,115,111,117,114,99,101,46,122,39,115,111,
- 117,114,99,101,32,110,111,116,32,97,118,97,105,108,97,98,
- 108,101,32,116,104,114,111,117,103,104,32,103,101,116,95,100,
- 97,116,97,40,41,114,106,0,0,0,78,41,5,114,157,0,
- 0,0,218,8,103,101,116,95,100,97,116,97,114,40,0,0,
- 0,114,107,0,0,0,114,155,0,0,0,41,5,114,108,0,
- 0,0,114,126,0,0,0,114,35,0,0,0,114,153,0,0,
- 0,218,3,101,120,99,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,10,103,101,116,95,115,111,117,114,99,
- 101,196,2,0,0,115,14,0,0,0,0,2,15,1,3,1,
- 19,1,18,1,9,1,31,1,122,23,83,111,117,114,99,101,
- 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99,
- 101,218,9,95,111,112,116,105,109,105,122,101,114,29,0,0,
- 0,99,3,0,0,0,1,0,0,0,4,0,0,0,9,0,
- 0,0,67,0,0,0,115,34,0,0,0,116,0,0,106,1,
- 0,116,2,0,124,1,0,124,2,0,100,1,0,100,2,0,
- 100,3,0,100,4,0,124,3,0,131,4,2,83,41,5,122,
- 130,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101,
- 32,111,98,106,101,99,116,32,99,111,109,112,105,108,101,100,
- 32,102,114,111,109,32,115,111,117,114,99,101,46,10,10,32,
- 32,32,32,32,32,32,32,84,104,101,32,39,100,97,116,97,
- 39,32,97,114,103,117,109,101,110,116,32,99,97,110,32,98,
- 101,32,97,110,121,32,111,98,106,101,99,116,32,116,121,112,
- 101,32,116,104,97,116,32,99,111,109,112,105,108,101,40,41,
- 32,115,117,112,112,111,114,116,115,46,10,32,32,32,32,32,
- 32,32,32,114,189,0,0,0,218,12,100,111,110,116,95,105,
- 110,104,101,114,105,116,84,114,68,0,0,0,41,3,114,121,
- 0,0,0,114,188,0,0,0,218,7,99,111,109,112,105,108,
- 101,41,4,114,108,0,0,0,114,53,0,0,0,114,35,0,
- 0,0,114,203,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,5,0,0,0,218,14,115,111,117,114,99,101,95,116,
- 111,95,99,111,100,101,206,2,0,0,115,4,0,0,0,0,
- 5,21,1,122,27,83,111,117,114,99,101,76,111,97,100,101,
- 114,46,115,111,117,114,99,101,95,116,111,95,99,111,100,101,
- 99,2,0,0,0,0,0,0,0,10,0,0,0,43,0,0,
- 0,67,0,0,0,115,174,1,0,0,124,0,0,106,0,0,
- 124,1,0,131,1,0,125,2,0,100,1,0,125,3,0,121,
- 16,0,116,1,0,124,2,0,131,1,0,125,4,0,87,110,
- 24,0,4,116,2,0,107,10,0,114,63,0,1,1,1,100,
- 1,0,125,4,0,89,110,202,0,88,121,19,0,124,0,0,
- 106,3,0,124,2,0,131,1,0,125,5,0,87,110,18,0,
- 4,116,4,0,107,10,0,114,103,0,1,1,1,89,110,162,
- 0,88,116,5,0,124,5,0,100,2,0,25,131,1,0,125,
- 3,0,121,19,0,124,0,0,106,6,0,124,4,0,131,1,
- 0,125,6,0,87,110,18,0,4,116,7,0,107,10,0,114,
- 159,0,1,1,1,89,110,106,0,88,121,34,0,116,8,0,
- 124,6,0,100,3,0,124,5,0,100,4,0,124,1,0,100,
- 5,0,124,4,0,131,1,3,125,7,0,87,110,24,0,4,
- 116,9,0,116,10,0,102,2,0,107,10,0,114,220,0,1,
- 1,1,89,110,45,0,88,116,11,0,100,6,0,124,4,0,
- 124,2,0,131,3,0,1,116,12,0,124,7,0,100,4,0,
- 124,1,0,100,7,0,124,4,0,100,8,0,124,2,0,131,
- 1,3,83,124,0,0,106,6,0,124,2,0,131,1,0,125,
- 8,0,124,0,0,106,13,0,124,8,0,124,2,0,131,2,
- 0,125,9,0,116,11,0,100,9,0,124,2,0,131,2,0,
- 1,116,14,0,106,15,0,12,114,170,1,124,4,0,100,1,
- 0,107,9,0,114,170,1,124,3,0,100,1,0,107,9,0,
- 114,170,1,116,16,0,124,9,0,124,3,0,116,17,0,124,
- 8,0,131,1,0,131,3,0,125,6,0,121,36,0,124,0,
- 0,106,18,0,124,2,0,124,4,0,124,6,0,131,3,0,
- 1,116,11,0,100,10,0,124,4,0,131,2,0,1,87,110,
- 18,0,4,116,2,0,107,10,0,114,169,1,1,1,1,89,
- 110,1,0,88,124,9,0,83,41,11,122,190,67,111,110,99,
+ 105,110,100,101,114,46,95,111,112,101,110,95,114,101,103,105,
+ 115,116,114,121,99,2,0,0,0,0,0,0,0,6,0,0,
+ 0,16,0,0,0,67,0,0,0,115,147,0,0,0,124,0,
+ 0,106,0,0,114,21,0,124,0,0,106,1,0,125,2,0,
+ 110,9,0,124,0,0,106,2,0,125,2,0,124,2,0,106,
+ 3,0,100,1,0,124,1,0,100,2,0,100,3,0,116,4,
+ 0,106,5,0,100,0,0,100,4,0,133,2,0,25,22,131,
+ 0,2,125,3,0,121,47,0,124,0,0,106,6,0,124,3,
+ 0,131,1,0,143,25,0,125,4,0,116,7,0,106,8,0,
+ 124,4,0,100,5,0,131,2,0,125,5,0,87,100,0,0,
+ 81,82,88,87,110,22,0,4,116,9,0,107,10,0,114,142,
+ 0,1,1,1,100,0,0,83,89,110,1,0,88,124,5,0,
+ 83,41,6,78,114,119,0,0,0,90,11,115,121,115,95,118,
+ 101,114,115,105,111,110,122,5,37,100,46,37,100,114,56,0,
+ 0,0,114,30,0,0,0,41,10,218,11,68,69,66,85,71,
+ 95,66,85,73,76,68,218,18,82,69,71,73,83,84,82,89,
+ 95,75,69,89,95,68,69,66,85,71,218,12,82,69,71,73,
+ 83,84,82,89,95,75,69,89,114,47,0,0,0,114,7,0,
+ 0,0,218,12,118,101,114,115,105,111,110,95,105,110,102,111,
+ 114,166,0,0,0,114,163,0,0,0,90,10,81,117,101,114,
+ 121,86,97,108,117,101,114,40,0,0,0,41,6,114,164,0,
+ 0,0,114,119,0,0,0,90,12,114,101,103,105,115,116,114,
+ 121,95,107,101,121,114,165,0,0,0,90,4,104,107,101,121,
+ 218,8,102,105,108,101,112,97,116,104,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,218,16,95,115,101,97,114,
+ 99,104,95,114,101,103,105,115,116,114,121,77,2,0,0,115,
+ 22,0,0,0,0,2,9,1,12,2,9,1,15,1,26,1,
+ 3,1,18,1,29,1,13,1,9,1,122,38,87,105,110,100,
+ 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,
+ 114,46,95,115,101,97,114,99,104,95,114,101,103,105,115,116,
+ 114,121,78,99,4,0,0,0,0,0,0,0,8,0,0,0,
+ 14,0,0,0,67,0,0,0,115,158,0,0,0,124,0,0,
+ 106,0,0,124,1,0,131,1,0,125,4,0,124,4,0,100,
+ 0,0,107,8,0,114,31,0,100,0,0,83,121,14,0,116,
+ 1,0,124,4,0,131,1,0,1,87,110,22,0,4,116,2,
+ 0,107,10,0,114,69,0,1,1,1,100,0,0,83,89,110,
+ 1,0,88,120,81,0,116,3,0,131,0,0,68,93,70,0,
+ 92,2,0,125,5,0,125,6,0,124,4,0,106,4,0,116,
+ 5,0,124,6,0,131,1,0,131,1,0,114,80,0,116,6,
+ 0,106,7,0,124,1,0,124,5,0,124,1,0,124,4,0,
+ 131,2,0,100,1,0,124,4,0,131,2,1,125,7,0,124,
+ 7,0,83,113,80,0,87,100,0,0,83,41,2,78,114,152,
+ 0,0,0,41,8,114,172,0,0,0,114,39,0,0,0,114,
+ 40,0,0,0,114,155,0,0,0,114,92,0,0,0,114,93,
+ 0,0,0,114,114,0,0,0,218,16,115,112,101,99,95,102,
+ 114,111,109,95,108,111,97,100,101,114,41,8,114,164,0,0,
+ 0,114,119,0,0,0,114,35,0,0,0,218,6,116,97,114,
+ 103,101,116,114,171,0,0,0,114,120,0,0,0,114,160,0,
+ 0,0,114,158,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,9,102,105,110,100,95,115,112,101,
+ 99,92,2,0,0,115,26,0,0,0,0,2,15,1,12,1,
+ 4,1,3,1,14,1,13,1,9,1,22,1,21,1,9,1,
+ 15,1,9,1,122,31,87,105,110,100,111,119,115,82,101,103,
+ 105,115,116,114,121,70,105,110,100,101,114,46,102,105,110,100,
+ 95,115,112,101,99,99,3,0,0,0,0,0,0,0,4,0,
+ 0,0,3,0,0,0,67,0,0,0,115,45,0,0,0,124,
+ 0,0,106,0,0,124,1,0,124,2,0,131,2,0,125,3,
+ 0,124,3,0,100,1,0,107,9,0,114,37,0,124,3,0,
+ 106,1,0,83,100,1,0,83,100,1,0,83,41,2,122,108,
+ 70,105,110,100,32,109,111,100,117,108,101,32,110,97,109,101,
+ 100,32,105,110,32,116,104,101,32,114,101,103,105,115,116,114,
+ 121,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,
+ 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,
+ 99,97,116,101,100,46,32,32,85,115,101,32,101,120,101,99,
+ 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,
+ 100,46,10,10,32,32,32,32,32,32,32,32,78,41,2,114,
+ 175,0,0,0,114,120,0,0,0,41,4,114,164,0,0,0,
+ 114,119,0,0,0,114,35,0,0,0,114,158,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,11,
+ 102,105,110,100,95,109,111,100,117,108,101,108,2,0,0,115,
+ 8,0,0,0,0,7,18,1,12,1,7,2,122,33,87,105,
+ 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,
+ 100,101,114,46,102,105,110,100,95,109,111,100,117,108,101,41,
+ 12,114,105,0,0,0,114,104,0,0,0,114,106,0,0,0,
+ 114,107,0,0,0,114,169,0,0,0,114,168,0,0,0,114,
+ 167,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,
+ 100,114,166,0,0,0,114,172,0,0,0,114,175,0,0,0,
+ 114,176,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,162,0,0,0,58,2,
+ 0,0,115,20,0,0,0,12,2,6,3,6,3,6,2,6,
+ 2,18,7,18,15,3,1,21,15,3,1,114,162,0,0,0,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,64,0,0,0,115,70,0,0,0,101,0,0,90,1,0,
+ 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100,
+ 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0,
+ 0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,0,
+ 100,8,0,100,9,0,132,0,0,90,7,0,100,10,0,83,
+ 41,11,218,13,95,76,111,97,100,101,114,66,97,115,105,99,
+ 115,122,83,66,97,115,101,32,99,108,97,115,115,32,111,102,
+ 32,99,111,109,109,111,110,32,99,111,100,101,32,110,101,101,
+ 100,101,100,32,98,121,32,98,111,116,104,32,83,111,117,114,
+ 99,101,76,111,97,100,101,114,32,97,110,100,10,32,32,32,
+ 32,83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,
+ 111,97,100,101,114,46,99,2,0,0,0,0,0,0,0,5,
+ 0,0,0,3,0,0,0,67,0,0,0,115,88,0,0,0,
+ 116,0,0,124,0,0,106,1,0,124,1,0,131,1,0,131,
+ 1,0,100,1,0,25,125,2,0,124,2,0,106,2,0,100,
+ 2,0,100,1,0,131,2,0,100,3,0,25,125,3,0,124,
+ 1,0,106,3,0,100,2,0,131,1,0,100,4,0,25,125,
+ 4,0,124,3,0,100,5,0,107,2,0,111,87,0,124,4,
+ 0,100,5,0,107,3,0,83,41,6,122,141,67,111,110,99,
114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116,
105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111,
- 97,100,101,114,46,103,101,116,95,99,111,100,101,46,10,10,
- 32,32,32,32,32,32,32,32,82,101,97,100,105,110,103,32,
- 111,102,32,98,121,116,101,99,111,100,101,32,114,101,113,117,
- 105,114,101,115,32,112,97,116,104,95,115,116,97,116,115,32,
- 116,111,32,98,101,32,105,109,112,108,101,109,101,110,116,101,
- 100,46,32,84,111,32,119,114,105,116,101,10,32,32,32,32,
- 32,32,32,32,98,121,116,101,99,111,100,101,44,32,115,101,
- 116,95,100,97,116,97,32,109,117,115,116,32,97,108,115,111,
- 32,98,101,32,105,109,112,108,101,109,101,110,116,101,100,46,
- 10,10,32,32,32,32,32,32,32,32,78,114,133,0,0,0,
- 114,138,0,0,0,114,106,0,0,0,114,35,0,0,0,122,
- 13,123,125,32,109,97,116,99,104,101,115,32,123,125,114,89,
- 0,0,0,114,90,0,0,0,122,19,99,111,100,101,32,111,
- 98,106,101,99,116,32,102,114,111,109,32,123,125,122,10,119,
- 114,111,116,101,32,123,33,114,125,41,19,114,157,0,0,0,
- 114,79,0,0,0,114,66,0,0,0,114,197,0,0,0,114,
- 195,0,0,0,114,14,0,0,0,114,200,0,0,0,114,40,
- 0,0,0,114,141,0,0,0,114,107,0,0,0,114,136,0,
- 0,0,114,105,0,0,0,114,147,0,0,0,114,206,0,0,
- 0,114,7,0,0,0,218,19,100,111,110,116,95,119,114,105,
- 116,101,95,98,121,116,101,99,111,100,101,114,150,0,0,0,
- 114,31,0,0,0,114,199,0,0,0,41,10,114,108,0,0,
- 0,114,126,0,0,0,114,90,0,0,0,114,139,0,0,0,
- 114,89,0,0,0,218,2,115,116,114,53,0,0,0,218,10,
- 98,121,116,101,115,95,100,97,116,97,114,153,0,0,0,90,
- 11,99,111,100,101,95,111,98,106,101,99,116,114,4,0,0,
- 0,114,4,0,0,0,114,5,0,0,0,114,187,0,0,0,
- 214,2,0,0,115,78,0,0,0,0,7,15,1,6,1,3,
- 1,16,1,13,1,11,2,3,1,19,1,13,1,5,2,16,
- 1,3,1,19,1,13,1,5,2,3,1,9,1,12,1,13,
- 1,19,1,5,2,9,1,7,1,15,1,6,1,7,1,15,
- 1,18,1,13,1,22,1,12,1,9,1,15,1,3,1,19,
- 1,17,1,13,1,5,1,122,21,83,111,117,114,99,101,76,
- 111,97,100,101,114,46,103,101,116,95,99,111,100,101,78,114,
- 87,0,0,0,41,10,114,112,0,0,0,114,111,0,0,0,
- 114,113,0,0,0,114,196,0,0,0,114,197,0,0,0,114,
- 199,0,0,0,114,198,0,0,0,114,202,0,0,0,114,206,
- 0,0,0,114,187,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,4,0,0,0,114,5,0,0,0,114,194,0,0,
- 0,156,2,0,0,115,14,0,0,0,12,2,12,8,12,13,
- 12,10,12,7,12,10,18,8,114,194,0,0,0,99,0,0,
- 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,
- 0,0,115,112,0,0,0,101,0,0,90,1,0,100,0,0,
- 90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,
- 0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,
- 0,100,6,0,100,7,0,132,0,0,90,6,0,101,7,0,
- 135,0,0,102,1,0,100,8,0,100,9,0,134,0,0,131,
- 1,0,90,8,0,101,7,0,100,10,0,100,11,0,132,0,
- 0,131,1,0,90,9,0,100,12,0,100,13,0,132,0,0,
- 90,10,0,135,0,0,83,41,14,218,10,70,105,108,101,76,
- 111,97,100,101,114,122,103,66,97,115,101,32,102,105,108,101,
- 32,108,111,97,100,101,114,32,99,108,97,115,115,32,119,104,
- 105,99,104,32,105,109,112,108,101,109,101,110,116,115,32,116,
- 104,101,32,108,111,97,100,101,114,32,112,114,111,116,111,99,
- 111,108,32,109,101,116,104,111,100,115,32,116,104,97,116,10,
- 32,32,32,32,114,101,113,117,105,114,101,32,102,105,108,101,
- 32,115,121,115,116,101,109,32,117,115,97,103,101,46,99,3,
- 0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,
- 0,0,0,115,22,0,0,0,124,1,0,124,0,0,95,0,
- 0,124,2,0,124,0,0,95,1,0,100,1,0,83,41,2,
- 122,75,67,97,99,104,101,32,116,104,101,32,109,111,100,117,
- 108,101,32,110,97,109,101,32,97,110,100,32,116,104,101,32,
- 112,97,116,104,32,116,111,32,116,104,101,32,102,105,108,101,
- 32,102,111,117,110,100,32,98,121,32,116,104,101,10,32,32,
- 32,32,32,32,32,32,102,105,110,100,101,114,46,78,41,2,
- 114,106,0,0,0,114,35,0,0,0,41,3,114,108,0,0,
- 0,114,126,0,0,0,114,35,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,5,0,0,0,114,185,0,0,0,15,
- 3,0,0,115,4,0,0,0,0,3,9,1,122,19,70,105,
- 108,101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,
- 95,99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,
- 0,0,67,0,0,0,115,34,0,0,0,124,0,0,106,0,
- 0,124,1,0,106,0,0,107,2,0,111,33,0,124,0,0,
- 106,1,0,124,1,0,106,1,0,107,2,0,83,41,1,78,
- 41,2,218,9,95,95,99,108,97,115,115,95,95,114,118,0,
- 0,0,41,2,114,108,0,0,0,218,5,111,116,104,101,114,
- 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
- 6,95,95,101,113,95,95,21,3,0,0,115,4,0,0,0,
- 0,1,18,1,122,17,70,105,108,101,76,111,97,100,101,114,
- 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,
- 1,0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,
- 0,116,0,0,124,0,0,106,1,0,131,1,0,116,0,0,
- 124,0,0,106,2,0,131,1,0,65,83,41,1,78,41,3,
- 218,4,104,97,115,104,114,106,0,0,0,114,35,0,0,0,
- 41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,5,0,0,0,218,8,95,95,104,97,115,104,95,95,
- 25,3,0,0,115,2,0,0,0,0,1,122,19,70,105,108,
- 101,76,111,97,100,101,114,46,95,95,104,97,115,104,95,95,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,
- 0,3,0,0,0,115,22,0,0,0,116,0,0,116,1,0,
- 124,0,0,131,2,0,106,2,0,124,1,0,131,1,0,83,
- 41,1,122,100,76,111,97,100,32,97,32,109,111,100,117,108,
- 101,32,102,114,111,109,32,97,32,102,105,108,101,46,10,10,
- 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,
- 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,
- 100,46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,
- 117,108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,
- 32,32,32,32,32,32,32,32,41,3,218,5,115,117,112,101,
- 114,114,210,0,0,0,114,193,0,0,0,41,2,114,108,0,
- 0,0,114,126,0,0,0,41,1,114,211,0,0,0,114,4,
- 0,0,0,114,5,0,0,0,114,193,0,0,0,28,3,0,
- 0,115,2,0,0,0,0,10,122,22,70,105,108,101,76,111,
- 97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,101,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,
- 0,67,0,0,0,115,7,0,0,0,124,0,0,106,0,0,
- 83,41,1,122,58,82,101,116,117,114,110,32,116,104,101,32,
- 112,97,116,104,32,116,111,32,116,104,101,32,115,111,117,114,
- 99,101,32,102,105,108,101,32,97,115,32,102,111,117,110,100,
- 32,98,121,32,116,104,101,32,102,105,110,100,101,114,46,41,
- 1,114,35,0,0,0,41,2,114,108,0,0,0,114,126,0,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,157,0,0,0,40,3,0,0,115,2,0,0,0,0,
- 3,122,23,70,105,108,101,76,111,97,100,101,114,46,103,101,
- 116,95,102,105,108,101,110,97,109,101,99,2,0,0,0,0,
- 0,0,0,3,0,0,0,9,0,0,0,67,0,0,0,115,
- 42,0,0,0,116,0,0,106,1,0,124,1,0,100,1,0,
- 131,2,0,143,17,0,125,2,0,124,2,0,106,2,0,131,
- 0,0,83,87,100,2,0,81,82,88,100,2,0,83,41,3,
- 122,39,82,101,116,117,114,110,32,116,104,101,32,100,97,116,
- 97,32,102,114,111,109,32,112,97,116,104,32,97,115,32,114,
- 97,119,32,98,121,116,101,115,46,218,1,114,78,41,3,114,
- 49,0,0,0,114,50,0,0,0,90,4,114,101,97,100,41,
- 3,114,108,0,0,0,114,35,0,0,0,114,54,0,0,0,
- 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 200,0,0,0,45,3,0,0,115,4,0,0,0,0,2,21,
- 1,122,19,70,105,108,101,76,111,97,100,101,114,46,103,101,
- 116,95,100,97,116,97,41,11,114,112,0,0,0,114,111,0,
- 0,0,114,113,0,0,0,114,114,0,0,0,114,185,0,0,
- 0,114,213,0,0,0,114,215,0,0,0,114,123,0,0,0,
- 114,193,0,0,0,114,157,0,0,0,114,200,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,41,1,114,211,0,0,0,
- 114,5,0,0,0,114,210,0,0,0,10,3,0,0,115,14,
- 0,0,0,12,3,6,2,12,6,12,4,12,3,24,12,18,
- 5,114,210,0,0,0,99,0,0,0,0,0,0,0,0,0,
- 0,0,0,4,0,0,0,64,0,0,0,115,64,0,0,0,
- 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,
- 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,
- 0,100,5,0,132,0,0,90,5,0,100,6,0,100,7,0,
- 100,8,0,100,9,0,132,0,1,90,6,0,100,10,0,83,
- 41,11,218,16,83,111,117,114,99,101,70,105,108,101,76,111,
- 97,100,101,114,122,62,67,111,110,99,114,101,116,101,32,105,
- 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,
- 32,83,111,117,114,99,101,76,111,97,100,101,114,32,117,115,
- 105,110,103,32,116,104,101,32,102,105,108,101,32,115,121,115,
- 116,101,109,46,99,2,0,0,0,0,0,0,0,3,0,0,
- 0,4,0,0,0,67,0,0,0,115,34,0,0,0,116,0,
- 0,124,1,0,131,1,0,125,2,0,100,1,0,124,2,0,
- 106,1,0,100,2,0,124,2,0,106,2,0,105,2,0,83,
- 41,3,122,33,82,101,116,117,114,110,32,116,104,101,32,109,
- 101,116,97,100,97,116,97,32,102,111,114,32,116,104,101,32,
- 112,97,116,104,46,114,133,0,0,0,114,134,0,0,0,41,
- 3,114,39,0,0,0,218,8,115,116,95,109,116,105,109,101,
- 90,7,115,116,95,115,105,122,101,41,3,114,108,0,0,0,
- 114,35,0,0,0,114,208,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,5,0,0,0,114,197,0,0,0,55,3,
- 0,0,115,4,0,0,0,0,2,12,1,122,27,83,111,117,
- 114,99,101,70,105,108,101,76,111,97,100,101,114,46,112,97,
- 116,104,95,115,116,97,116,115,99,4,0,0,0,0,0,0,
- 0,5,0,0,0,5,0,0,0,67,0,0,0,115,34,0,
- 0,0,116,0,0,124,1,0,131,1,0,125,4,0,124,0,
- 0,106,1,0,124,2,0,124,3,0,100,1,0,124,4,0,
- 131,2,1,83,41,2,78,218,5,95,109,111,100,101,41,2,
- 114,97,0,0,0,114,198,0,0,0,41,5,114,108,0,0,
- 0,114,90,0,0,0,114,89,0,0,0,114,53,0,0,0,
- 114,42,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,199,0,0,0,60,3,0,0,115,4,0,
- 0,0,0,2,12,1,122,32,83,111,117,114,99,101,70,105,
- 108,101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,
- 98,121,116,101,99,111,100,101,114,220,0,0,0,105,182,1,
- 0,0,99,3,0,0,0,1,0,0,0,9,0,0,0,17,
- 0,0,0,67,0,0,0,115,53,1,0,0,116,0,0,124,
- 1,0,131,1,0,92,2,0,125,4,0,125,5,0,103,0,
- 0,125,6,0,120,54,0,124,4,0,114,80,0,116,1,0,
- 124,4,0,131,1,0,12,114,80,0,116,0,0,124,4,0,
- 131,1,0,92,2,0,125,4,0,125,7,0,124,6,0,106,
- 2,0,124,7,0,131,1,0,1,113,27,0,87,120,132,0,
- 116,3,0,124,6,0,131,1,0,68,93,118,0,125,7,0,
- 116,4,0,124,4,0,124,7,0,131,2,0,125,4,0,121,
- 17,0,116,5,0,106,6,0,124,4,0,131,1,0,1,87,
- 113,94,0,4,116,7,0,107,10,0,114,155,0,1,1,1,
- 119,94,0,89,113,94,0,4,116,8,0,107,10,0,114,211,
- 0,1,125,8,0,1,122,25,0,116,9,0,100,1,0,124,
- 4,0,124,8,0,131,3,0,1,100,2,0,83,87,89,100,
- 2,0,100,2,0,125,8,0,126,8,0,88,113,94,0,88,
- 113,94,0,87,121,33,0,116,10,0,124,1,0,124,2,0,
- 124,3,0,131,3,0,1,116,9,0,100,3,0,124,1,0,
- 131,2,0,1,87,110,53,0,4,116,8,0,107,10,0,114,
- 48,1,1,125,8,0,1,122,21,0,116,9,0,100,1,0,
- 124,1,0,124,8,0,131,3,0,1,87,89,100,2,0,100,
- 2,0,125,8,0,126,8,0,88,110,1,0,88,100,2,0,
- 83,41,4,122,27,87,114,105,116,101,32,98,121,116,101,115,
- 32,100,97,116,97,32,116,111,32,97,32,102,105,108,101,46,
- 122,27,99,111,117,108,100,32,110,111,116,32,99,114,101,97,
- 116,101,32,123,33,114,125,58,32,123,33,114,125,78,122,12,
- 99,114,101,97,116,101,100,32,123,33,114,125,41,11,114,38,
- 0,0,0,114,46,0,0,0,114,163,0,0,0,114,33,0,
- 0,0,114,28,0,0,0,114,3,0,0,0,90,5,109,107,
- 100,105,114,218,15,70,105,108,101,69,120,105,115,116,115,69,
- 114,114,111,114,114,40,0,0,0,114,105,0,0,0,114,55,
- 0,0,0,41,9,114,108,0,0,0,114,35,0,0,0,114,
- 53,0,0,0,114,220,0,0,0,218,6,112,97,114,101,110,
- 116,114,94,0,0,0,114,27,0,0,0,114,23,0,0,0,
- 114,201,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,198,0,0,0,65,3,0,0,115,38,0,
- 0,0,0,2,18,1,6,2,22,1,18,1,17,2,19,1,
- 15,1,3,1,17,1,13,2,7,1,18,3,16,1,27,1,
- 3,1,16,1,17,1,18,2,122,25,83,111,117,114,99,101,
- 70,105,108,101,76,111,97,100,101,114,46,115,101,116,95,100,
- 97,116,97,78,41,7,114,112,0,0,0,114,111,0,0,0,
- 114,113,0,0,0,114,114,0,0,0,114,197,0,0,0,114,
- 199,0,0,0,114,198,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,5,0,0,0,114,218,0,
- 0,0,51,3,0,0,115,8,0,0,0,12,2,6,2,12,
- 5,12,5,114,218,0,0,0,99,0,0,0,0,0,0,0,
- 0,0,0,0,0,2,0,0,0,64,0,0,0,115,46,0,
- 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,
- 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0,
- 100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,83,
- 41,7,218,20,83,111,117,114,99,101,108,101,115,115,70,105,
- 108,101,76,111,97,100,101,114,122,45,76,111,97,100,101,114,
- 32,119,104,105,99,104,32,104,97,110,100,108,101,115,32,115,
- 111,117,114,99,101,108,101,115,115,32,102,105,108,101,32,105,
- 109,112,111,114,116,115,46,99,2,0,0,0,0,0,0,0,
- 5,0,0,0,6,0,0,0,67,0,0,0,115,76,0,0,
- 0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0,
- 124,0,0,106,1,0,124,2,0,131,1,0,125,3,0,116,
- 2,0,124,3,0,100,1,0,124,1,0,100,2,0,124,2,
- 0,131,1,2,125,4,0,116,3,0,124,4,0,100,1,0,
- 124,1,0,100,3,0,124,2,0,131,1,2,83,41,4,78,
- 114,106,0,0,0,114,35,0,0,0,114,89,0,0,0,41,
- 4,114,157,0,0,0,114,200,0,0,0,114,141,0,0,0,
- 114,147,0,0,0,41,5,114,108,0,0,0,114,126,0,0,
- 0,114,35,0,0,0,114,53,0,0,0,114,209,0,0,0,
- 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 187,0,0,0,98,3,0,0,115,8,0,0,0,0,1,15,
- 1,15,1,24,1,122,29,83,111,117,114,99,101,108,101,115,
- 115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,
- 99,111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,
- 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
- 0,83,41,2,122,39,82,101,116,117,114,110,32,78,111,110,
- 101,32,97,115,32,116,104,101,114,101,32,105,115,32,110,111,
- 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,4,
- 0,0,0,41,2,114,108,0,0,0,114,126,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,202,
- 0,0,0,104,3,0,0,115,2,0,0,0,0,2,122,31,
- 83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111,
- 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,78,
- 41,6,114,112,0,0,0,114,111,0,0,0,114,113,0,0,
- 0,114,114,0,0,0,114,187,0,0,0,114,202,0,0,0,
+ 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,32,
+ 98,121,32,99,104,101,99,107,105,110,103,32,105,102,10,32,
+ 32,32,32,32,32,32,32,116,104,101,32,112,97,116,104,32,
+ 114,101,116,117,114,110,101,100,32,98,121,32,103,101,116,95,
+ 102,105,108,101,110,97,109,101,32,104,97,115,32,97,32,102,
+ 105,108,101,110,97,109,101,32,111,102,32,39,95,95,105,110,
+ 105,116,95,95,46,112,121,39,46,114,29,0,0,0,114,58,
+ 0,0,0,114,59,0,0,0,114,56,0,0,0,218,8,95,
+ 95,105,110,105,116,95,95,41,4,114,38,0,0,0,114,151,
+ 0,0,0,114,34,0,0,0,114,32,0,0,0,41,5,114,
+ 100,0,0,0,114,119,0,0,0,114,94,0,0,0,90,13,
+ 102,105,108,101,110,97,109,101,95,98,97,115,101,90,9,116,
+ 97,105,108,95,110,97,109,101,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,153,0,0,0,127,2,0,0,
+ 115,8,0,0,0,0,3,25,1,22,1,19,1,122,24,95,
+ 76,111,97,100,101,114,66,97,115,105,99,115,46,105,115,95,
+ 112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,
+ 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,
+ 0,100,1,0,83,41,2,122,42,85,115,101,32,100,101,102,
+ 97,117,108,116,32,115,101,109,97,110,116,105,99,115,32,102,
+ 111,114,32,109,111,100,117,108,101,32,99,114,101,97,116,105,
+ 111,110,46,78,114,4,0,0,0,41,2,114,100,0,0,0,
+ 114,158,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,218,13,99,114,101,97,116,101,95,109,111,100,
+ 117,108,101,135,2,0,0,115,0,0,0,0,122,27,95,76,
+ 111,97,100,101,114,66,97,115,105,99,115,46,99,114,101,97,
+ 116,101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,
+ 0,0,3,0,0,0,4,0,0,0,67,0,0,0,115,80,
+ 0,0,0,124,0,0,106,0,0,124,1,0,106,1,0,131,
+ 1,0,125,2,0,124,2,0,100,1,0,107,8,0,114,54,
+ 0,116,2,0,100,2,0,106,3,0,124,1,0,106,1,0,
+ 131,1,0,131,1,0,130,1,0,116,4,0,106,5,0,116,
+ 6,0,124,2,0,124,1,0,106,7,0,131,3,0,1,100,
+ 1,0,83,41,3,122,19,69,120,101,99,117,116,101,32,116,
+ 104,101,32,109,111,100,117,108,101,46,78,122,52,99,97,110,
+ 110,111,116,32,108,111,97,100,32,109,111,100,117,108,101,32,
+ 123,33,114,125,32,119,104,101,110,32,103,101,116,95,99,111,
+ 100,101,40,41,32,114,101,116,117,114,110,115,32,78,111,110,
+ 101,41,8,218,8,103,101,116,95,99,111,100,101,114,105,0,
+ 0,0,114,99,0,0,0,114,47,0,0,0,114,114,0,0,
+ 0,218,25,95,99,97,108,108,95,119,105,116,104,95,102,114,
+ 97,109,101,115,95,114,101,109,111,118,101,100,218,4,101,120,
+ 101,99,114,111,0,0,0,41,3,114,100,0,0,0,218,6,
+ 109,111,100,117,108,101,114,140,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,11,101,120,101,99,
+ 95,109,111,100,117,108,101,138,2,0,0,115,10,0,0,0,
+ 0,2,18,1,12,1,9,1,15,1,122,25,95,76,111,97,
+ 100,101,114,66,97,115,105,99,115,46,101,120,101,99,95,109,
+ 111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,
+ 0,0,3,0,0,0,67,0,0,0,115,16,0,0,0,116,
+ 0,0,106,1,0,124,0,0,124,1,0,131,2,0,83,41,
+ 1,122,26,84,104,105,115,32,109,111,100,117,108,101,32,105,
+ 115,32,100,101,112,114,101,99,97,116,101,100,46,41,2,114,
+ 114,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,
+ 108,101,95,115,104,105,109,41,2,114,100,0,0,0,114,119,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,146,
+ 2,0,0,115,2,0,0,0,0,2,122,25,95,76,111,97,
+ 100,101,114,66,97,115,105,99,115,46,108,111,97,100,95,109,
+ 111,100,117,108,101,78,41,8,114,105,0,0,0,114,104,0,
+ 0,0,114,106,0,0,0,114,107,0,0,0,114,153,0,0,
+ 0,114,180,0,0,0,114,185,0,0,0,114,187,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,223,0,0,0,94,3,0,0,115,6,0,
- 0,0,12,2,6,2,12,6,114,223,0,0,0,99,0,0,
- 0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,
- 0,0,115,136,0,0,0,101,0,0,90,1,0,100,0,0,
- 90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,
- 0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,
- 0,100,6,0,100,7,0,132,0,0,90,6,0,100,8,0,
- 100,9,0,132,0,0,90,7,0,100,10,0,100,11,0,132,
- 0,0,90,8,0,100,12,0,100,13,0,132,0,0,90,9,
- 0,100,14,0,100,15,0,132,0,0,90,10,0,100,16,0,
- 100,17,0,132,0,0,90,11,0,101,12,0,100,18,0,100,
- 19,0,132,0,0,131,1,0,90,13,0,100,20,0,83,41,
- 21,218,19,69,120,116,101,110,115,105,111,110,70,105,108,101,
- 76,111,97,100,101,114,122,93,76,111,97,100,101,114,32,102,
- 111,114,32,101,120,116,101,110,115,105,111,110,32,109,111,100,
- 117,108,101,115,46,10,10,32,32,32,32,84,104,101,32,99,
- 111,110,115,116,114,117,99,116,111,114,32,105,115,32,100,101,
- 115,105,103,110,101,100,32,116,111,32,119,111,114,107,32,119,
- 105,116,104,32,70,105,108,101,70,105,110,100,101,114,46,10,
- 10,32,32,32,32,99,3,0,0,0,0,0,0,0,3,0,
- 0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,124,
- 1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1,
- 0,100,0,0,83,41,1,78,41,2,114,106,0,0,0,114,
- 35,0,0,0,41,3,114,108,0,0,0,114,106,0,0,0,
- 114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,185,0,0,0,121,3,0,0,115,4,0,
- 0,0,0,1,9,1,122,28,69,120,116,101,110,115,105,111,
- 110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,
- 105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,
- 0,2,0,0,0,67,0,0,0,115,34,0,0,0,124,0,
- 0,106,0,0,124,1,0,106,0,0,107,2,0,111,33,0,
- 124,0,0,106,1,0,124,1,0,106,1,0,107,2,0,83,
- 41,1,78,41,2,114,211,0,0,0,114,118,0,0,0,41,
- 2,114,108,0,0,0,114,212,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,5,0,0,0,114,213,0,0,0,125,
- 3,0,0,115,4,0,0,0,0,1,18,1,122,26,69,120,
- 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,
- 114,46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,
- 0,1,0,0,0,3,0,0,0,67,0,0,0,115,26,0,
- 0,0,116,0,0,124,0,0,106,1,0,131,1,0,116,0,
- 0,124,0,0,106,2,0,131,1,0,65,83,41,1,78,41,
- 3,114,214,0,0,0,114,106,0,0,0,114,35,0,0,0,
- 41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,5,0,0,0,114,215,0,0,0,129,3,0,0,115,
- 2,0,0,0,0,1,122,28,69,120,116,101,110,115,105,111,
- 110,70,105,108,101,76,111,97,100,101,114,46,95,95,104,97,
- 115,104,95,95,99,2,0,0,0,0,0,0,0,3,0,0,
- 0,4,0,0,0,67,0,0,0,115,47,0,0,0,116,0,
- 0,106,1,0,116,2,0,106,3,0,124,1,0,131,2,0,
- 125,2,0,116,4,0,100,1,0,124,1,0,106,5,0,124,
- 0,0,106,6,0,131,3,0,1,124,2,0,83,41,2,122,
- 38,67,114,101,97,116,101,32,97,110,32,117,110,105,116,105,
- 97,108,105,122,101,100,32,101,120,116,101,110,115,105,111,110,
- 32,109,111,100,117,108,101,122,38,101,120,116,101,110,115,105,
- 111,110,32,109,111,100,117,108,101,32,123,33,114,125,32,108,
- 111,97,100,101,100,32,102,114,111,109,32,123,33,114,125,41,
- 7,114,121,0,0,0,114,188,0,0,0,114,145,0,0,0,
- 90,14,99,114,101,97,116,101,95,100,121,110,97,109,105,99,
- 114,105,0,0,0,114,106,0,0,0,114,35,0,0,0,41,
- 3,114,108,0,0,0,114,164,0,0,0,114,190,0,0,0,
+ 5,0,0,0,114,178,0,0,0,122,2,0,0,115,10,0,
+ 0,0,12,3,6,2,12,8,12,3,12,8,114,178,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,
+ 0,0,64,0,0,0,115,106,0,0,0,101,0,0,90,1,
+ 0,100,0,0,90,2,0,100,1,0,100,2,0,132,0,0,
+ 90,3,0,100,3,0,100,4,0,132,0,0,90,4,0,100,
+ 5,0,100,6,0,132,0,0,90,5,0,100,7,0,100,8,
+ 0,132,0,0,90,6,0,100,9,0,100,10,0,132,0,0,
+ 90,7,0,100,11,0,100,18,0,100,13,0,100,14,0,132,
+ 0,1,90,8,0,100,15,0,100,16,0,132,0,0,90,9,
+ 0,100,17,0,83,41,19,218,12,83,111,117,114,99,101,76,
+ 111,97,100,101,114,99,2,0,0,0,0,0,0,0,2,0,
+ 0,0,1,0,0,0,67,0,0,0,115,10,0,0,0,116,
+ 0,0,130,1,0,100,1,0,83,41,2,122,178,79,112,116,
+ 105,111,110,97,108,32,109,101,116,104,111,100,32,116,104,97,
+ 116,32,114,101,116,117,114,110,115,32,116,104,101,32,109,111,
+ 100,105,102,105,99,97,116,105,111,110,32,116,105,109,101,32,
+ 40,97,110,32,105,110,116,41,32,102,111,114,32,116,104,101,
+ 10,32,32,32,32,32,32,32,32,115,112,101,99,105,102,105,
+ 101,100,32,112,97,116,104,44,32,119,104,101,114,101,32,112,
+ 97,116,104,32,105,115,32,97,32,115,116,114,46,10,10,32,
+ 32,32,32,32,32,32,32,82,97,105,115,101,115,32,73,79,
+ 69,114,114,111,114,32,119,104,101,110,32,116,104,101,32,112,
+ 97,116,104,32,99,97,110,110,111,116,32,98,101,32,104,97,
+ 110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,78,
+ 41,1,218,7,73,79,69,114,114,111,114,41,2,114,100,0,
+ 0,0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,10,112,97,116,104,95,109,116,105,
+ 109,101,153,2,0,0,115,2,0,0,0,0,6,122,23,83,
+ 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104,
+ 95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,2,
+ 0,0,0,3,0,0,0,67,0,0,0,115,19,0,0,0,
+ 100,1,0,124,0,0,106,0,0,124,1,0,131,1,0,105,
+ 1,0,83,41,2,97,170,1,0,0,79,112,116,105,111,110,
+ 97,108,32,109,101,116,104,111,100,32,114,101,116,117,114,110,
+ 105,110,103,32,97,32,109,101,116,97,100,97,116,97,32,100,
+ 105,99,116,32,102,111,114,32,116,104,101,32,115,112,101,99,
+ 105,102,105,101,100,32,112,97,116,104,10,32,32,32,32,32,
+ 32,32,32,116,111,32,98,121,32,116,104,101,32,112,97,116,
+ 104,32,40,115,116,114,41,46,10,32,32,32,32,32,32,32,
+ 32,80,111,115,115,105,98,108,101,32,107,101,121,115,58,10,
+ 32,32,32,32,32,32,32,32,45,32,39,109,116,105,109,101,
+ 39,32,40,109,97,110,100,97,116,111,114,121,41,32,105,115,
+ 32,116,104,101,32,110,117,109,101,114,105,99,32,116,105,109,
+ 101,115,116,97,109,112,32,111,102,32,108,97,115,116,32,115,
+ 111,117,114,99,101,10,32,32,32,32,32,32,32,32,32,32,
+ 99,111,100,101,32,109,111,100,105,102,105,99,97,116,105,111,
+ 110,59,10,32,32,32,32,32,32,32,32,45,32,39,115,105,
+ 122,101,39,32,40,111,112,116,105,111,110,97,108,41,32,105,
+ 115,32,116,104,101,32,115,105,122,101,32,105,110,32,98,121,
+ 116,101,115,32,111,102,32,116,104,101,32,115,111,117,114,99,
+ 101,32,99,111,100,101,46,10,10,32,32,32,32,32,32,32,
+ 32,73,109,112,108,101,109,101,110,116,105,110,103,32,116,104,
+ 105,115,32,109,101,116,104,111,100,32,97,108,108,111,119,115,
+ 32,116,104,101,32,108,111,97,100,101,114,32,116,111,32,114,
+ 101,97,100,32,98,121,116,101,99,111,100,101,32,102,105,108,
+ 101,115,46,10,32,32,32,32,32,32,32,32,82,97,105,115,
+ 101,115,32,73,79,69,114,114,111,114,32,119,104,101,110,32,
+ 116,104,101,32,112,97,116,104,32,99,97,110,110,111,116,32,
+ 98,101,32,104,97,110,100,108,101,100,46,10,32,32,32,32,
+ 32,32,32,32,114,126,0,0,0,41,1,114,190,0,0,0,
+ 41,2,114,100,0,0,0,114,35,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,218,10,112,97,116,
+ 104,95,115,116,97,116,115,161,2,0,0,115,2,0,0,0,
+ 0,11,122,23,83,111,117,114,99,101,76,111,97,100,101,114,
+ 46,112,97,116,104,95,115,116,97,116,115,99,4,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,
+ 115,16,0,0,0,124,0,0,106,0,0,124,2,0,124,3,
+ 0,131,2,0,83,41,1,122,228,79,112,116,105,111,110,97,
+ 108,32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,
+ 114,105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,
+ 115,41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,
+ 104,32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,
+ 32,32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,
+ 32,116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,
+ 111,119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,
+ 105,110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,
+ 102,105,108,101,115,46,10,10,32,32,32,32,32,32,32,32,
+ 84,104,101,32,115,111,117,114,99,101,32,112,97,116,104,32,
+ 105,115,32,110,101,101,100,101,100,32,105,110,32,111,114,100,
+ 101,114,32,116,111,32,99,111,114,114,101,99,116,108,121,32,
+ 116,114,97,110,115,102,101,114,32,112,101,114,109,105,115,115,
+ 105,111,110,115,10,32,32,32,32,32,32,32,32,41,1,218,
+ 8,115,101,116,95,100,97,116,97,41,4,114,100,0,0,0,
+ 114,90,0,0,0,90,10,99,97,99,104,101,95,112,97,116,
+ 104,114,53,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,218,15,95,99,97,99,104,101,95,98,121,
+ 116,101,99,111,100,101,174,2,0,0,115,2,0,0,0,0,
+ 8,122,28,83,111,117,114,99,101,76,111,97,100,101,114,46,
+ 95,99,97,99,104,101,95,98,121,116,101,99,111,100,101,99,
+ 3,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,
+ 67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,122,
+ 150,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,
+ 32,119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,
+ 116,97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,
+ 102,105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,
+ 41,46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,
+ 101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,
+ 116,104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,
+ 116,104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,
+ 121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,32,
+ 32,32,32,32,32,32,32,78,114,4,0,0,0,41,3,114,
+ 100,0,0,0,114,35,0,0,0,114,53,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,192,0,
+ 0,0,184,2,0,0,115,0,0,0,0,122,21,83,111,117,
+ 114,99,101,76,111,97,100,101,114,46,115,101,116,95,100,97,
+ 116,97,99,2,0,0,0,0,0,0,0,5,0,0,0,16,
+ 0,0,0,67,0,0,0,115,105,0,0,0,124,0,0,106,
+ 0,0,124,1,0,131,1,0,125,2,0,121,19,0,124,0,
+ 0,106,1,0,124,2,0,131,1,0,125,3,0,87,110,58,
+ 0,4,116,2,0,107,10,0,114,94,0,1,125,4,0,1,
+ 122,26,0,116,3,0,100,1,0,100,2,0,124,1,0,131,
+ 1,1,124,4,0,130,2,0,87,89,100,3,0,100,3,0,
+ 125,4,0,126,4,0,88,110,1,0,88,116,4,0,124,3,
+ 0,131,1,0,83,41,4,122,52,67,111,110,99,114,101,116,
+ 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,
+ 32,111,102,32,73,110,115,112,101,99,116,76,111,97,100,101,
+ 114,46,103,101,116,95,115,111,117,114,99,101,46,122,39,115,
+ 111,117,114,99,101,32,110,111,116,32,97,118,97,105,108,97,
+ 98,108,101,32,116,104,114,111,117,103,104,32,103,101,116,95,
+ 100,97,116,97,40,41,114,98,0,0,0,78,41,5,114,151,
+ 0,0,0,218,8,103,101,116,95,100,97,116,97,114,40,0,
+ 0,0,114,99,0,0,0,114,149,0,0,0,41,5,114,100,
+ 0,0,0,114,119,0,0,0,114,35,0,0,0,114,147,0,
+ 0,0,218,3,101,120,99,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,10,103,101,116,95,115,111,117,114,
+ 99,101,191,2,0,0,115,14,0,0,0,0,2,15,1,3,
+ 1,19,1,18,1,9,1,31,1,122,23,83,111,117,114,99,
+ 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,
+ 99,101,218,9,95,111,112,116,105,109,105,122,101,114,29,0,
+ 0,0,99,3,0,0,0,1,0,0,0,4,0,0,0,9,
+ 0,0,0,67,0,0,0,115,34,0,0,0,116,0,0,106,
+ 1,0,116,2,0,124,1,0,124,2,0,100,1,0,100,2,
+ 0,100,3,0,100,4,0,124,3,0,131,4,2,83,41,5,
+ 122,130,82,101,116,117,114,110,32,116,104,101,32,99,111,100,
+ 101,32,111,98,106,101,99,116,32,99,111,109,112,105,108,101,
+ 100,32,102,114,111,109,32,115,111,117,114,99,101,46,10,10,
+ 32,32,32,32,32,32,32,32,84,104,101,32,39,100,97,116,
+ 97,39,32,97,114,103,117,109,101,110,116,32,99,97,110,32,
+ 98,101,32,97,110,121,32,111,98,106,101,99,116,32,116,121,
+ 112,101,32,116,104,97,116,32,99,111,109,112,105,108,101,40,
+ 41,32,115,117,112,112,111,114,116,115,46,10,32,32,32,32,
+ 32,32,32,32,114,183,0,0,0,218,12,100,111,110,116,95,
+ 105,110,104,101,114,105,116,84,114,68,0,0,0,41,3,114,
+ 114,0,0,0,114,182,0,0,0,218,7,99,111,109,112,105,
+ 108,101,41,4,114,100,0,0,0,114,53,0,0,0,114,35,
+ 0,0,0,114,197,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,218,14,115,111,117,114,99,101,95,
+ 116,111,95,99,111,100,101,201,2,0,0,115,4,0,0,0,
+ 0,5,21,1,122,27,83,111,117,114,99,101,76,111,97,100,
+ 101,114,46,115,111,117,114,99,101,95,116,111,95,99,111,100,
+ 101,99,2,0,0,0,0,0,0,0,10,0,0,0,43,0,
+ 0,0,67,0,0,0,115,183,1,0,0,124,0,0,106,0,
+ 0,124,1,0,131,1,0,125,2,0,100,1,0,125,3,0,
+ 121,16,0,116,1,0,124,2,0,131,1,0,125,4,0,87,
+ 110,24,0,4,116,2,0,107,10,0,114,63,0,1,1,1,
+ 100,1,0,125,4,0,89,110,205,0,88,121,19,0,124,0,
+ 0,106,3,0,124,2,0,131,1,0,125,5,0,87,110,18,
+ 0,4,116,4,0,107,10,0,114,103,0,1,1,1,89,110,
+ 165,0,88,116,5,0,124,5,0,100,2,0,25,131,1,0,
+ 125,3,0,121,19,0,124,0,0,106,6,0,124,4,0,131,
+ 1,0,125,6,0,87,110,18,0,4,116,7,0,107,10,0,
+ 114,159,0,1,1,1,89,110,109,0,88,121,34,0,116,8,
+ 0,124,6,0,100,3,0,124,5,0,100,4,0,124,1,0,
+ 100,5,0,124,4,0,131,1,3,125,7,0,87,110,24,0,
+ 4,116,9,0,116,10,0,102,2,0,107,10,0,114,220,0,
+ 1,1,1,89,110,48,0,88,116,11,0,106,12,0,100,6,
+ 0,124,4,0,124,2,0,131,3,0,1,116,13,0,124,7,
+ 0,100,4,0,124,1,0,100,7,0,124,4,0,100,8,0,
+ 124,2,0,131,1,3,83,124,0,0,106,6,0,124,2,0,
+ 131,1,0,125,8,0,124,0,0,106,14,0,124,8,0,124,
+ 2,0,131,2,0,125,9,0,116,11,0,106,12,0,100,9,
+ 0,124,2,0,131,2,0,1,116,15,0,106,16,0,12,114,
+ 179,1,124,4,0,100,1,0,107,9,0,114,179,1,124,3,
+ 0,100,1,0,107,9,0,114,179,1,116,17,0,124,9,0,
+ 124,3,0,116,18,0,124,8,0,131,1,0,131,3,0,125,
+ 6,0,121,39,0,124,0,0,106,19,0,124,2,0,124,4,
+ 0,124,6,0,131,3,0,1,116,11,0,106,12,0,100,10,
+ 0,124,4,0,131,2,0,1,87,110,18,0,4,116,2,0,
+ 107,10,0,114,178,1,1,1,1,89,110,1,0,88,124,9,
+ 0,83,41,11,122,190,67,111,110,99,114,101,116,101,32,105,
+ 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,
+ 32,73,110,115,112,101,99,116,76,111,97,100,101,114,46,103,
+ 101,116,95,99,111,100,101,46,10,10,32,32,32,32,32,32,
+ 32,32,82,101,97,100,105,110,103,32,111,102,32,98,121,116,
+ 101,99,111,100,101,32,114,101,113,117,105,114,101,115,32,112,
+ 97,116,104,95,115,116,97,116,115,32,116,111,32,98,101,32,
+ 105,109,112,108,101,109,101,110,116,101,100,46,32,84,111,32,
+ 119,114,105,116,101,10,32,32,32,32,32,32,32,32,98,121,
+ 116,101,99,111,100,101,44,32,115,101,116,95,100,97,116,97,
+ 32,109,117,115,116,32,97,108,115,111,32,98,101,32,105,109,
+ 112,108,101,109,101,110,116,101,100,46,10,10,32,32,32,32,
+ 32,32,32,32,78,114,126,0,0,0,114,132,0,0,0,114,
+ 98,0,0,0,114,35,0,0,0,122,13,123,125,32,109,97,
+ 116,99,104,101,115,32,123,125,114,89,0,0,0,114,90,0,
+ 0,0,122,19,99,111,100,101,32,111,98,106,101,99,116,32,
+ 102,114,111,109,32,123,125,122,10,119,114,111,116,101,32,123,
+ 33,114,125,41,20,114,151,0,0,0,114,79,0,0,0,114,
+ 66,0,0,0,114,191,0,0,0,114,189,0,0,0,114,14,
+ 0,0,0,114,194,0,0,0,114,40,0,0,0,114,135,0,
+ 0,0,114,99,0,0,0,114,130,0,0,0,114,114,0,0,
+ 0,114,129,0,0,0,114,141,0,0,0,114,200,0,0,0,
+ 114,7,0,0,0,218,19,100,111,110,116,95,119,114,105,116,
+ 101,95,98,121,116,101,99,111,100,101,114,144,0,0,0,114,
+ 31,0,0,0,114,193,0,0,0,41,10,114,100,0,0,0,
+ 114,119,0,0,0,114,90,0,0,0,114,133,0,0,0,114,
+ 89,0,0,0,218,2,115,116,114,53,0,0,0,218,10,98,
+ 121,116,101,115,95,100,97,116,97,114,147,0,0,0,90,11,
+ 99,111,100,101,95,111,98,106,101,99,116,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,181,0,0,0,209,
+ 2,0,0,115,78,0,0,0,0,7,15,1,6,1,3,1,
+ 16,1,13,1,11,2,3,1,19,1,13,1,5,2,16,1,
+ 3,1,19,1,13,1,5,2,3,1,9,1,12,1,13,1,
+ 19,1,5,2,12,1,7,1,15,1,6,1,7,1,15,1,
+ 18,1,16,1,22,1,12,1,9,1,15,1,3,1,19,1,
+ 20,1,13,1,5,1,122,21,83,111,117,114,99,101,76,111,
+ 97,100,101,114,46,103,101,116,95,99,111,100,101,78,114,87,
+ 0,0,0,41,10,114,105,0,0,0,114,104,0,0,0,114,
+ 106,0,0,0,114,190,0,0,0,114,191,0,0,0,114,193,
+ 0,0,0,114,192,0,0,0,114,196,0,0,0,114,200,0,
+ 0,0,114,181,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,188,0,0,0,
+ 151,2,0,0,115,14,0,0,0,12,2,12,8,12,13,12,
+ 10,12,7,12,10,18,8,114,188,0,0,0,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,
+ 0,115,112,0,0,0,101,0,0,90,1,0,100,0,0,90,
+ 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0,
+ 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0,
+ 100,6,0,100,7,0,132,0,0,90,6,0,101,7,0,135,
+ 0,0,102,1,0,100,8,0,100,9,0,134,0,0,131,1,
+ 0,90,8,0,101,7,0,100,10,0,100,11,0,132,0,0,
+ 131,1,0,90,9,0,100,12,0,100,13,0,132,0,0,90,
+ 10,0,135,0,0,83,41,14,218,10,70,105,108,101,76,111,
+ 97,100,101,114,122,103,66,97,115,101,32,102,105,108,101,32,
+ 108,111,97,100,101,114,32,99,108,97,115,115,32,119,104,105,
+ 99,104,32,105,109,112,108,101,109,101,110,116,115,32,116,104,
+ 101,32,108,111,97,100,101,114,32,112,114,111,116,111,99,111,
+ 108,32,109,101,116,104,111,100,115,32,116,104,97,116,10,32,
+ 32,32,32,114,101,113,117,105,114,101,32,102,105,108,101,32,
+ 115,121,115,116,101,109,32,117,115,97,103,101,46,99,3,0,
+ 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,
+ 0,0,115,22,0,0,0,124,1,0,124,0,0,95,0,0,
+ 124,2,0,124,0,0,95,1,0,100,1,0,83,41,2,122,
+ 75,67,97,99,104,101,32,116,104,101,32,109,111,100,117,108,
+ 101,32,110,97,109,101,32,97,110,100,32,116,104,101,32,112,
+ 97,116,104,32,116,111,32,116,104,101,32,102,105,108,101,32,
+ 102,111,117,110,100,32,98,121,32,116,104,101,10,32,32,32,
+ 32,32,32,32,32,102,105,110,100,101,114,46,78,41,2,114,
+ 98,0,0,0,114,35,0,0,0,41,3,114,100,0,0,0,
+ 114,119,0,0,0,114,35,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,179,0,0,0,10,3,
+ 0,0,115,4,0,0,0,0,3,9,1,122,19,70,105,108,
+ 101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,
+ 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,
+ 0,67,0,0,0,115,34,0,0,0,124,0,0,106,0,0,
+ 124,1,0,106,0,0,107,2,0,111,33,0,124,0,0,106,
+ 1,0,124,1,0,106,1,0,107,2,0,83,41,1,78,41,
+ 2,218,9,95,95,99,108,97,115,115,95,95,114,111,0,0,
+ 0,41,2,114,100,0,0,0,218,5,111,116,104,101,114,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,6,
+ 95,95,101,113,95,95,16,3,0,0,115,4,0,0,0,0,
+ 1,18,1,122,17,70,105,108,101,76,111,97,100,101,114,46,
+ 95,95,101,113,95,95,99,1,0,0,0,0,0,0,0,1,
+ 0,0,0,3,0,0,0,67,0,0,0,115,26,0,0,0,
+ 116,0,0,124,0,0,106,1,0,131,1,0,116,0,0,124,
+ 0,0,106,2,0,131,1,0,65,83,41,1,78,41,3,218,
+ 4,104,97,115,104,114,98,0,0,0,114,35,0,0,0,41,
+ 1,114,100,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,218,8,95,95,104,97,115,104,95,95,20,
+ 3,0,0,115,2,0,0,0,0,1,122,19,70,105,108,101,
+ 76,111,97,100,101,114,46,95,95,104,97,115,104,95,95,99,
+ 2,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 3,0,0,0,115,22,0,0,0,116,0,0,116,1,0,124,
+ 0,0,131,2,0,106,2,0,124,1,0,131,1,0,83,41,
+ 1,122,100,76,111,97,100,32,97,32,109,111,100,117,108,101,
+ 32,102,114,111,109,32,97,32,102,105,108,101,46,10,10,32,
+ 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,
+ 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,
+ 46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,
+ 108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,
+ 32,32,32,32,32,32,32,41,3,218,5,115,117,112,101,114,
+ 114,204,0,0,0,114,187,0,0,0,41,2,114,100,0,0,
+ 0,114,119,0,0,0,41,1,114,205,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,187,0,0,0,23,3,0,0,
+ 115,2,0,0,0,0,10,122,22,70,105,108,101,76,111,97,
+ 100,101,114,46,108,111,97,100,95,109,111,100,117,108,101,99,
+ 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
+ 67,0,0,0,115,7,0,0,0,124,0,0,106,0,0,83,
+ 41,1,122,58,82,101,116,117,114,110,32,116,104,101,32,112,
+ 97,116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,
+ 101,32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,
+ 98,121,32,116,104,101,32,102,105,110,100,101,114,46,41,1,
+ 114,35,0,0,0,41,2,114,100,0,0,0,114,119,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,151,0,0,0,35,3,0,0,115,2,0,0,0,0,3,
+ 122,23,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
+ 95,102,105,108,101,110,97,109,101,99,2,0,0,0,0,0,
+ 0,0,3,0,0,0,9,0,0,0,67,0,0,0,115,42,
+ 0,0,0,116,0,0,106,1,0,124,1,0,100,1,0,131,
+ 2,0,143,17,0,125,2,0,124,2,0,106,2,0,131,0,
+ 0,83,87,100,2,0,81,82,88,100,2,0,83,41,3,122,
+ 39,82,101,116,117,114,110,32,116,104,101,32,100,97,116,97,
+ 32,102,114,111,109,32,112,97,116,104,32,97,115,32,114,97,
+ 119,32,98,121,116,101,115,46,218,1,114,78,41,3,114,49,
+ 0,0,0,114,50,0,0,0,90,4,114,101,97,100,41,3,
+ 114,100,0,0,0,114,35,0,0,0,114,54,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,194,
+ 0,0,0,40,3,0,0,115,4,0,0,0,0,2,21,1,
+ 122,19,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
+ 95,100,97,116,97,41,11,114,105,0,0,0,114,104,0,0,
+ 0,114,106,0,0,0,114,107,0,0,0,114,179,0,0,0,
+ 114,207,0,0,0,114,209,0,0,0,114,116,0,0,0,114,
+ 187,0,0,0,114,151,0,0,0,114,194,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,41,1,114,205,0,0,0,114,
+ 5,0,0,0,114,204,0,0,0,5,3,0,0,115,14,0,
+ 0,0,12,3,6,2,12,6,12,4,12,3,24,12,18,5,
+ 114,204,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
+ 0,0,4,0,0,0,64,0,0,0,115,64,0,0,0,101,
+ 0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,
+ 0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,
+ 100,5,0,132,0,0,90,5,0,100,6,0,100,7,0,100,
+ 8,0,100,9,0,132,0,1,90,6,0,100,10,0,83,41,
+ 11,218,16,83,111,117,114,99,101,70,105,108,101,76,111,97,
+ 100,101,114,122,62,67,111,110,99,114,101,116,101,32,105,109,
+ 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,
+ 83,111,117,114,99,101,76,111,97,100,101,114,32,117,115,105,
+ 110,103,32,116,104,101,32,102,105,108,101,32,115,121,115,116,
+ 101,109,46,99,2,0,0,0,0,0,0,0,3,0,0,0,
+ 4,0,0,0,67,0,0,0,115,34,0,0,0,116,0,0,
+ 124,1,0,131,1,0,125,2,0,100,1,0,124,2,0,106,
+ 1,0,100,2,0,124,2,0,106,2,0,105,2,0,83,41,
+ 3,122,33,82,101,116,117,114,110,32,116,104,101,32,109,101,
+ 116,97,100,97,116,97,32,102,111,114,32,116,104,101,32,112,
+ 97,116,104,46,114,126,0,0,0,114,127,0,0,0,41,3,
+ 114,39,0,0,0,218,8,115,116,95,109,116,105,109,101,90,
+ 7,115,116,95,115,105,122,101,41,3,114,100,0,0,0,114,
+ 35,0,0,0,114,202,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,191,0,0,0,50,3,0,
+ 0,115,4,0,0,0,0,2,12,1,122,27,83,111,117,114,
+ 99,101,70,105,108,101,76,111,97,100,101,114,46,112,97,116,
+ 104,95,115,116,97,116,115,99,4,0,0,0,0,0,0,0,
+ 5,0,0,0,5,0,0,0,67,0,0,0,115,34,0,0,
+ 0,116,0,0,124,1,0,131,1,0,125,4,0,124,0,0,
+ 106,1,0,124,2,0,124,3,0,100,1,0,124,4,0,131,
+ 2,1,83,41,2,78,218,5,95,109,111,100,101,41,2,114,
+ 97,0,0,0,114,192,0,0,0,41,5,114,100,0,0,0,
+ 114,90,0,0,0,114,89,0,0,0,114,53,0,0,0,114,
+ 42,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,193,0,0,0,55,3,0,0,115,4,0,0,
+ 0,0,2,12,1,122,32,83,111,117,114,99,101,70,105,108,
+ 101,76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,
+ 121,116,101,99,111,100,101,114,214,0,0,0,105,182,1,0,
+ 0,99,3,0,0,0,1,0,0,0,9,0,0,0,17,0,
+ 0,0,67,0,0,0,115,62,1,0,0,116,0,0,124,1,
+ 0,131,1,0,92,2,0,125,4,0,125,5,0,103,0,0,
+ 125,6,0,120,54,0,124,4,0,114,80,0,116,1,0,124,
+ 4,0,131,1,0,12,114,80,0,116,0,0,124,4,0,131,
+ 1,0,92,2,0,125,4,0,125,7,0,124,6,0,106,2,
+ 0,124,7,0,131,1,0,1,113,27,0,87,120,135,0,116,
+ 3,0,124,6,0,131,1,0,68,93,121,0,125,7,0,116,
+ 4,0,124,4,0,124,7,0,131,2,0,125,4,0,121,17,
+ 0,116,5,0,106,6,0,124,4,0,131,1,0,1,87,113,
+ 94,0,4,116,7,0,107,10,0,114,155,0,1,1,1,119,
+ 94,0,89,113,94,0,4,116,8,0,107,10,0,114,214,0,
+ 1,125,8,0,1,122,28,0,116,9,0,106,10,0,100,1,
+ 0,124,4,0,124,8,0,131,3,0,1,100,2,0,83,87,
+ 89,100,2,0,100,2,0,125,8,0,126,8,0,88,113,94,
+ 0,88,113,94,0,87,121,36,0,116,11,0,124,1,0,124,
+ 2,0,124,3,0,131,3,0,1,116,9,0,106,10,0,100,
+ 3,0,124,1,0,131,2,0,1,87,110,56,0,4,116,8,
+ 0,107,10,0,114,57,1,1,125,8,0,1,122,24,0,116,
+ 9,0,106,10,0,100,1,0,124,1,0,124,8,0,131,3,
+ 0,1,87,89,100,2,0,100,2,0,125,8,0,126,8,0,
+ 88,110,1,0,88,100,2,0,83,41,4,122,27,87,114,105,
+ 116,101,32,98,121,116,101,115,32,100,97,116,97,32,116,111,
+ 32,97,32,102,105,108,101,46,122,27,99,111,117,108,100,32,
+ 110,111,116,32,99,114,101,97,116,101,32,123,33,114,125,58,
+ 32,123,33,114,125,78,122,12,99,114,101,97,116,101,100,32,
+ 123,33,114,125,41,12,114,38,0,0,0,114,46,0,0,0,
+ 114,157,0,0,0,114,33,0,0,0,114,28,0,0,0,114,
+ 3,0,0,0,90,5,109,107,100,105,114,218,15,70,105,108,
+ 101,69,120,105,115,116,115,69,114,114,111,114,114,40,0,0,
+ 0,114,114,0,0,0,114,129,0,0,0,114,55,0,0,0,
+ 41,9,114,100,0,0,0,114,35,0,0,0,114,53,0,0,
+ 0,114,214,0,0,0,218,6,112,97,114,101,110,116,114,94,
+ 0,0,0,114,27,0,0,0,114,23,0,0,0,114,195,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,192,0,0,0,60,3,0,0,115,42,0,0,0,0,
+ 2,18,1,6,2,22,1,18,1,17,2,19,1,15,1,3,
+ 1,17,1,13,2,7,1,18,3,9,1,10,1,27,1,3,
+ 1,16,1,20,1,18,2,12,1,122,25,83,111,117,114,99,
+ 101,70,105,108,101,76,111,97,100,101,114,46,115,101,116,95,
+ 100,97,116,97,78,41,7,114,105,0,0,0,114,104,0,0,
+ 0,114,106,0,0,0,114,107,0,0,0,114,191,0,0,0,
+ 114,193,0,0,0,114,192,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,212,
+ 0,0,0,46,3,0,0,115,8,0,0,0,12,2,6,2,
+ 12,5,12,5,114,212,0,0,0,99,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,46,
+ 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,
+ 1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,
+ 0,100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,
+ 83,41,7,218,20,83,111,117,114,99,101,108,101,115,115,70,
+ 105,108,101,76,111,97,100,101,114,122,45,76,111,97,100,101,
+ 114,32,119,104,105,99,104,32,104,97,110,100,108,101,115,32,
+ 115,111,117,114,99,101,108,101,115,115,32,102,105,108,101,32,
+ 105,109,112,111,114,116,115,46,99,2,0,0,0,0,0,0,
+ 0,5,0,0,0,6,0,0,0,67,0,0,0,115,76,0,
+ 0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,
+ 0,124,0,0,106,1,0,124,2,0,131,1,0,125,3,0,
+ 116,2,0,124,3,0,100,1,0,124,1,0,100,2,0,124,
+ 2,0,131,1,2,125,4,0,116,3,0,124,4,0,100,1,
+ 0,124,1,0,100,3,0,124,2,0,131,1,2,83,41,4,
+ 78,114,98,0,0,0,114,35,0,0,0,114,89,0,0,0,
+ 41,4,114,151,0,0,0,114,194,0,0,0,114,135,0,0,
+ 0,114,141,0,0,0,41,5,114,100,0,0,0,114,119,0,
+ 0,0,114,35,0,0,0,114,53,0,0,0,114,203,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,181,0,0,0,95,3,0,0,115,8,0,0,0,0,1,
+ 15,1,15,1,24,1,122,29,83,111,117,114,99,101,108,101,
+ 115,115,70,105,108,101,76,111,97,100,101,114,46,103,101,116,
+ 95,99,111,100,101,99,2,0,0,0,0,0,0,0,2,0,
+ 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,
+ 1,0,83,41,2,122,39,82,101,116,117,114,110,32,78,111,
+ 110,101,32,97,115,32,116,104,101,114,101,32,105,115,32,110,
+ 111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,
+ 4,0,0,0,41,2,114,100,0,0,0,114,119,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 186,0,0,0,132,3,0,0,115,10,0,0,0,0,2,6,
- 1,15,1,6,1,16,1,122,33,69,120,116,101,110,115,105,
- 111,110,70,105,108,101,76,111,97,100,101,114,46,99,114,101,
- 97,116,101,95,109,111,100,117,108,101,99,2,0,0,0,0,
- 0,0,0,2,0,0,0,4,0,0,0,67,0,0,0,115,
- 45,0,0,0,116,0,0,106,1,0,116,2,0,106,3,0,
- 124,1,0,131,2,0,1,116,4,0,100,1,0,124,0,0,
- 106,5,0,124,0,0,106,6,0,131,3,0,1,100,2,0,
- 83,41,3,122,30,73,110,105,116,105,97,108,105,122,101,32,
- 97,110,32,101,120,116,101,110,115,105,111,110,32,109,111,100,
- 117,108,101,122,40,101,120,116,101,110,115,105,111,110,32,109,
- 111,100,117,108,101,32,123,33,114,125,32,101,120,101,99,117,
- 116,101,100,32,102,114,111,109,32,123,33,114,125,78,41,7,
- 114,121,0,0,0,114,188,0,0,0,114,145,0,0,0,90,
- 12,101,120,101,99,95,100,121,110,97,109,105,99,114,105,0,
- 0,0,114,106,0,0,0,114,35,0,0,0,41,2,114,108,
- 0,0,0,114,190,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,114,191,0,0,0,140,3,0,0,
- 115,6,0,0,0,0,2,19,1,6,1,122,31,69,120,116,
+ 196,0,0,0,101,3,0,0,115,2,0,0,0,0,2,122,
+ 31,83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,
+ 111,97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,
+ 78,41,6,114,105,0,0,0,114,104,0,0,0,114,106,0,
+ 0,0,114,107,0,0,0,114,181,0,0,0,114,196,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,114,217,0,0,0,91,3,0,0,115,6,
+ 0,0,0,12,2,6,2,12,6,114,217,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,
+ 0,0,0,115,136,0,0,0,101,0,0,90,1,0,100,0,
+ 0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,0,
+ 132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,90,
+ 5,0,100,6,0,100,7,0,132,0,0,90,6,0,100,8,
+ 0,100,9,0,132,0,0,90,7,0,100,10,0,100,11,0,
+ 132,0,0,90,8,0,100,12,0,100,13,0,132,0,0,90,
+ 9,0,100,14,0,100,15,0,132,0,0,90,10,0,100,16,
+ 0,100,17,0,132,0,0,90,11,0,101,12,0,100,18,0,
+ 100,19,0,132,0,0,131,1,0,90,13,0,100,20,0,83,
+ 41,21,218,19,69,120,116,101,110,115,105,111,110,70,105,108,
+ 101,76,111,97,100,101,114,122,93,76,111,97,100,101,114,32,
+ 102,111,114,32,101,120,116,101,110,115,105,111,110,32,109,111,
+ 100,117,108,101,115,46,10,10,32,32,32,32,84,104,101,32,
+ 99,111,110,115,116,114,117,99,116,111,114,32,105,115,32,100,
+ 101,115,105,103,110,101,100,32,116,111,32,119,111,114,107,32,
+ 119,105,116,104,32,70,105,108,101,70,105,110,100,101,114,46,
+ 10,10,32,32,32,32,99,3,0,0,0,0,0,0,0,3,
+ 0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,
+ 124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,
+ 1,0,100,0,0,83,41,1,78,41,2,114,98,0,0,0,
+ 114,35,0,0,0,41,3,114,100,0,0,0,114,98,0,0,
+ 0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,114,179,0,0,0,118,3,0,0,115,4,
+ 0,0,0,0,1,9,1,122,28,69,120,116,101,110,115,105,
+ 111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,105,
+ 110,105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,
+ 0,0,2,0,0,0,67,0,0,0,115,34,0,0,0,124,
+ 0,0,106,0,0,124,1,0,106,0,0,107,2,0,111,33,
+ 0,124,0,0,106,1,0,124,1,0,106,1,0,107,2,0,
+ 83,41,1,78,41,2,114,205,0,0,0,114,111,0,0,0,
+ 41,2,114,100,0,0,0,114,206,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,207,0,0,0,
+ 122,3,0,0,115,4,0,0,0,0,1,18,1,122,26,69,
+ 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
+ 101,114,46,95,95,101,113,95,95,99,1,0,0,0,0,0,
+ 0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,26,
+ 0,0,0,116,0,0,124,0,0,106,1,0,131,1,0,116,
+ 0,0,124,0,0,106,2,0,131,1,0,65,83,41,1,78,
+ 41,3,114,208,0,0,0,114,98,0,0,0,114,35,0,0,
+ 0,41,1,114,100,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,209,0,0,0,126,3,0,0,
+ 115,2,0,0,0,0,1,122,28,69,120,116,101,110,115,105,
+ 111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,104,
+ 97,115,104,95,95,99,2,0,0,0,0,0,0,0,3,0,
+ 0,0,4,0,0,0,67,0,0,0,115,50,0,0,0,116,
+ 0,0,106,1,0,116,2,0,106,3,0,124,1,0,131,2,
+ 0,125,2,0,116,0,0,106,4,0,100,1,0,124,1,0,
+ 106,5,0,124,0,0,106,6,0,131,3,0,1,124,2,0,
+ 83,41,2,122,38,67,114,101,97,116,101,32,97,110,32,117,
+ 110,105,116,105,97,108,105,122,101,100,32,101,120,116,101,110,
+ 115,105,111,110,32,109,111,100,117,108,101,122,38,101,120,116,
+ 101,110,115,105,111,110,32,109,111,100,117,108,101,32,123,33,
+ 114,125,32,108,111,97,100,101,100,32,102,114,111,109,32,123,
+ 33,114,125,41,7,114,114,0,0,0,114,182,0,0,0,114,
+ 139,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110,
+ 97,109,105,99,114,129,0,0,0,114,98,0,0,0,114,35,
+ 0,0,0,41,3,114,100,0,0,0,114,158,0,0,0,114,
+ 184,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,180,0,0,0,129,3,0,0,115,10,0,0,
+ 0,0,2,6,1,15,1,9,1,16,1,122,33,69,120,116,
101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
- 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0,
- 0,0,0,0,0,2,0,0,0,4,0,0,0,3,0,0,
- 0,115,48,0,0,0,116,0,0,124,0,0,106,1,0,131,
- 1,0,100,1,0,25,137,0,0,116,2,0,135,0,0,102,
- 1,0,100,2,0,100,3,0,134,0,0,116,3,0,68,131,
- 1,0,131,1,0,83,41,4,122,49,82,101,116,117,114,110,
- 32,84,114,117,101,32,105,102,32,116,104,101,32,101,120,116,
- 101,110,115,105,111,110,32,109,111,100,117,108,101,32,105,115,
- 32,97,32,112,97,99,107,97,103,101,46,114,29,0,0,0,
- 99,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,
- 0,51,0,0,0,115,31,0,0,0,124,0,0,93,21,0,
- 125,1,0,136,0,0,100,0,0,124,1,0,23,107,2,0,
- 86,1,113,3,0,100,1,0,83,41,2,114,185,0,0,0,
- 78,114,4,0,0,0,41,2,114,22,0,0,0,218,6,115,
- 117,102,102,105,120,41,1,218,9,102,105,108,101,95,110,97,
- 109,101,114,4,0,0,0,114,5,0,0,0,250,9,60,103,
- 101,110,101,120,112,114,62,149,3,0,0,115,2,0,0,0,
- 6,1,122,49,69,120,116,101,110,115,105,111,110,70,105,108,
+ 46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2,
+ 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,
+ 0,0,0,115,48,0,0,0,116,0,0,106,1,0,116,2,
+ 0,106,3,0,124,1,0,131,2,0,1,116,0,0,106,4,
+ 0,100,1,0,124,0,0,106,5,0,124,0,0,106,6,0,
+ 131,3,0,1,100,2,0,83,41,3,122,30,73,110,105,116,
+ 105,97,108,105,122,101,32,97,110,32,101,120,116,101,110,115,
+ 105,111,110,32,109,111,100,117,108,101,122,40,101,120,116,101,
+ 110,115,105,111,110,32,109,111,100,117,108,101,32,123,33,114,
+ 125,32,101,120,101,99,117,116,101,100,32,102,114,111,109,32,
+ 123,33,114,125,78,41,7,114,114,0,0,0,114,182,0,0,
+ 0,114,139,0,0,0,90,12,101,120,101,99,95,100,121,110,
+ 97,109,105,99,114,129,0,0,0,114,98,0,0,0,114,35,
+ 0,0,0,41,2,114,100,0,0,0,114,184,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,185,
+ 0,0,0,137,3,0,0,115,6,0,0,0,0,2,19,1,
+ 9,1,122,31,69,120,116,101,110,115,105,111,110,70,105,108,
+ 101,76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,
+ 117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
+ 4,0,0,0,3,0,0,0,115,48,0,0,0,116,0,0,
+ 124,0,0,106,1,0,131,1,0,100,1,0,25,137,0,0,
+ 116,2,0,135,0,0,102,1,0,100,2,0,100,3,0,134,
+ 0,0,116,3,0,68,131,1,0,131,1,0,83,41,4,122,
+ 49,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,
+ 116,104,101,32,101,120,116,101,110,115,105,111,110,32,109,111,
+ 100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,
+ 101,46,114,29,0,0,0,99,1,0,0,0,0,0,0,0,
+ 2,0,0,0,4,0,0,0,51,0,0,0,115,31,0,0,
+ 0,124,0,0,93,21,0,125,1,0,136,0,0,100,0,0,
+ 124,1,0,23,107,2,0,86,1,113,3,0,100,1,0,83,
+ 41,2,114,179,0,0,0,78,114,4,0,0,0,41,2,114,
+ 22,0,0,0,218,6,115,117,102,102,105,120,41,1,218,9,
+ 102,105,108,101,95,110,97,109,101,114,4,0,0,0,114,5,
+ 0,0,0,250,9,60,103,101,110,101,120,112,114,62,146,3,
+ 0,0,115,2,0,0,0,6,1,122,49,69,120,116,101,110,
+ 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,105,
+ 115,95,112,97,99,107,97,103,101,46,60,108,111,99,97,108,
+ 115,62,46,60,103,101,110,101,120,112,114,62,41,4,114,38,
+ 0,0,0,114,35,0,0,0,218,3,97,110,121,218,18,69,
+ 88,84,69,78,83,73,79,78,95,83,85,70,70,73,88,69,
+ 83,41,2,114,100,0,0,0,114,119,0,0,0,114,4,0,
+ 0,0,41,1,114,220,0,0,0,114,5,0,0,0,114,153,
+ 0,0,0,143,3,0,0,115,6,0,0,0,0,2,19,1,
+ 18,1,122,30,69,120,116,101,110,115,105,111,110,70,105,108,
101,76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,
- 103,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
- 101,120,112,114,62,41,4,114,38,0,0,0,114,35,0,0,
- 0,218,3,97,110,121,218,18,69,88,84,69,78,83,73,79,
- 78,95,83,85,70,70,73,88,69,83,41,2,114,108,0,0,
- 0,114,126,0,0,0,114,4,0,0,0,41,1,114,226,0,
- 0,0,114,5,0,0,0,114,159,0,0,0,146,3,0,0,
- 115,6,0,0,0,0,2,19,1,18,1,122,30,69,120,116,
- 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
- 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0,
- 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,
- 115,4,0,0,0,100,1,0,83,41,2,122,63,82,101,116,
- 117,114,110,32,78,111,110,101,32,97,115,32,97,110,32,101,
- 120,116,101,110,115,105,111,110,32,109,111,100,117,108,101,32,
- 99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,
- 99,111,100,101,32,111,98,106,101,99,116,46,78,114,4,0,
- 0,0,41,2,114,108,0,0,0,114,126,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,5,0,0,0,114,187,0,
- 0,0,152,3,0,0,115,2,0,0,0,0,2,122,28,69,
- 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,
- 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0,
- 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,
- 115,4,0,0,0,100,1,0,83,41,2,122,53,82,101,116,
- 117,114,110,32,78,111,110,101,32,97,115,32,101,120,116,101,
- 110,115,105,111,110,32,109,111,100,117,108,101,115,32,104,97,
- 118,101,32,110,111,32,115,111,117,114,99,101,32,99,111,100,
- 101,46,78,114,4,0,0,0,41,2,114,108,0,0,0,114,
- 126,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,114,202,0,0,0,156,3,0,0,115,2,0,0,
- 0,0,2,122,30,69,120,116,101,110,115,105,111,110,70,105,
- 108,101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,
- 114,99,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
- 1,0,0,0,67,0,0,0,115,7,0,0,0,124,0,0,
- 106,0,0,83,41,1,122,58,82,101,116,117,114,110,32,116,
- 104,101,32,112,97,116,104,32,116,111,32,116,104,101,32,115,
- 111,117,114,99,101,32,102,105,108,101,32,97,115,32,102,111,
- 117,110,100,32,98,121,32,116,104,101,32,102,105,110,100,101,
- 114,46,41,1,114,35,0,0,0,41,2,114,108,0,0,0,
- 114,126,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,157,0,0,0,160,3,0,0,115,2,0,
- 0,0,0,3,122,32,69,120,116,101,110,115,105,111,110,70,
- 105,108,101,76,111,97,100,101,114,46,103,101,116,95,102,105,
- 108,101,110,97,109,101,78,41,14,114,112,0,0,0,114,111,
- 0,0,0,114,113,0,0,0,114,114,0,0,0,114,185,0,
- 0,0,114,213,0,0,0,114,215,0,0,0,114,186,0,0,
- 0,114,191,0,0,0,114,159,0,0,0,114,187,0,0,0,
- 114,202,0,0,0,114,123,0,0,0,114,157,0,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,114,224,0,0,0,113,3,0,0,115,20,0,0,
- 0,12,6,6,2,12,4,12,4,12,3,12,8,12,6,12,
- 6,12,4,12,4,114,224,0,0,0,99,0,0,0,0,0,
- 0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,115,
- 130,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,
- 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90,
- 4,0,100,4,0,100,5,0,132,0,0,90,5,0,100,6,
- 0,100,7,0,132,0,0,90,6,0,100,8,0,100,9,0,
- 132,0,0,90,7,0,100,10,0,100,11,0,132,0,0,90,
- 8,0,100,12,0,100,13,0,132,0,0,90,9,0,100,14,
- 0,100,15,0,132,0,0,90,10,0,100,16,0,100,17,0,
- 132,0,0,90,11,0,100,18,0,100,19,0,132,0,0,90,
- 12,0,100,20,0,83,41,21,218,14,95,78,97,109,101,115,
- 112,97,99,101,80,97,116,104,97,38,1,0,0,82,101,112,
- 114,101,115,101,110,116,115,32,97,32,110,97,109,101,115,112,
- 97,99,101,32,112,97,99,107,97,103,101,39,115,32,112,97,
- 116,104,46,32,32,73,116,32,117,115,101,115,32,116,104,101,
- 32,109,111,100,117,108,101,32,110,97,109,101,10,32,32,32,
- 32,116,111,32,102,105,110,100,32,105,116,115,32,112,97,114,
- 101,110,116,32,109,111,100,117,108,101,44,32,97,110,100,32,
- 102,114,111,109,32,116,104,101,114,101,32,105,116,32,108,111,
- 111,107,115,32,117,112,32,116,104,101,32,112,97,114,101,110,
- 116,39,115,10,32,32,32,32,95,95,112,97,116,104,95,95,
- 46,32,32,87,104,101,110,32,116,104,105,115,32,99,104,97,
- 110,103,101,115,44,32,116,104,101,32,109,111,100,117,108,101,
- 39,115,32,111,119,110,32,112,97,116,104,32,105,115,32,114,
- 101,99,111,109,112,117,116,101,100,44,10,32,32,32,32,117,
- 115,105,110,103,32,112,97,116,104,95,102,105,110,100,101,114,
- 46,32,32,70,111,114,32,116,111,112,45,108,101,118,101,108,
- 32,109,111,100,117,108,101,115,44,32,116,104,101,32,112,97,
- 114,101,110,116,32,109,111,100,117,108,101,39,115,32,112,97,
- 116,104,10,32,32,32,32,105,115,32,115,121,115,46,112,97,
- 116,104,46,99,4,0,0,0,0,0,0,0,4,0,0,0,
- 2,0,0,0,67,0,0,0,115,52,0,0,0,124,1,0,
- 124,0,0,95,0,0,124,2,0,124,0,0,95,1,0,116,
- 2,0,124,0,0,106,3,0,131,0,0,131,1,0,124,0,
- 0,95,4,0,124,3,0,124,0,0,95,5,0,100,0,0,
- 83,41,1,78,41,6,218,5,95,110,97,109,101,218,5,95,
- 112,97,116,104,114,93,0,0,0,218,16,95,103,101,116,95,
- 112,97,114,101,110,116,95,112,97,116,104,218,17,95,108,97,
- 115,116,95,112,97,114,101,110,116,95,112,97,116,104,218,12,
- 95,112,97,116,104,95,102,105,110,100,101,114,41,4,114,108,
- 0,0,0,114,106,0,0,0,114,35,0,0,0,218,11,112,
- 97,116,104,95,102,105,110,100,101,114,114,4,0,0,0,114,
- 4,0,0,0,114,5,0,0,0,114,185,0,0,0,173,3,
- 0,0,115,8,0,0,0,0,1,9,1,9,1,21,1,122,
- 23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
- 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,
- 0,4,0,0,0,3,0,0,0,67,0,0,0,115,53,0,
- 0,0,124,0,0,106,0,0,106,1,0,100,1,0,131,1,
- 0,92,3,0,125,1,0,125,2,0,125,3,0,124,2,0,
- 100,2,0,107,2,0,114,43,0,100,6,0,83,124,1,0,
- 100,5,0,102,2,0,83,41,7,122,62,82,101,116,117,114,
- 110,115,32,97,32,116,117,112,108,101,32,111,102,32,40,112,
- 97,114,101,110,116,45,109,111,100,117,108,101,45,110,97,109,
- 101,44,32,112,97,114,101,110,116,45,112,97,116,104,45,97,
- 116,116,114,45,110,97,109,101,41,114,58,0,0,0,114,30,
- 0,0,0,114,7,0,0,0,114,35,0,0,0,90,8,95,
- 95,112,97,116,104,95,95,41,2,122,3,115,121,115,122,4,
- 112,97,116,104,41,2,114,231,0,0,0,114,32,0,0,0,
- 41,4,114,108,0,0,0,114,222,0,0,0,218,3,100,111,
- 116,90,2,109,101,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,23,95,102,105,110,100,95,112,97,114,101,
- 110,116,95,112,97,116,104,95,110,97,109,101,115,179,3,0,
- 0,115,8,0,0,0,0,2,27,1,12,2,4,3,122,38,
- 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
- 102,105,110,100,95,112,97,114,101,110,116,95,112,97,116,104,
- 95,110,97,109,101,115,99,1,0,0,0,0,0,0,0,3,
- 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,
- 124,0,0,106,0,0,131,0,0,92,2,0,125,1,0,125,
- 2,0,116,1,0,116,2,0,106,3,0,124,1,0,25,124,
- 2,0,131,2,0,83,41,1,78,41,4,114,238,0,0,0,
- 114,117,0,0,0,114,7,0,0,0,218,7,109,111,100,117,
- 108,101,115,41,3,114,108,0,0,0,90,18,112,97,114,101,
- 110,116,95,109,111,100,117,108,101,95,110,97,109,101,90,14,
- 112,97,116,104,95,97,116,116,114,95,110,97,109,101,114,4,
- 0,0,0,114,4,0,0,0,114,5,0,0,0,114,233,0,
- 0,0,189,3,0,0,115,4,0,0,0,0,1,18,1,122,
- 31,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
- 95,103,101,116,95,112,97,114,101,110,116,95,112,97,116,104,
- 99,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
- 0,67,0,0,0,115,118,0,0,0,116,0,0,124,0,0,
- 106,1,0,131,0,0,131,1,0,125,1,0,124,1,0,124,
- 0,0,106,2,0,107,3,0,114,111,0,124,0,0,106,3,
- 0,124,0,0,106,4,0,124,1,0,131,2,0,125,2,0,
- 124,2,0,100,0,0,107,9,0,114,102,0,124,2,0,106,
- 5,0,100,0,0,107,8,0,114,102,0,124,2,0,106,6,
- 0,114,102,0,124,2,0,106,6,0,124,0,0,95,7,0,
- 124,1,0,124,0,0,95,2,0,124,0,0,106,7,0,83,
- 41,1,78,41,8,114,93,0,0,0,114,233,0,0,0,114,
- 234,0,0,0,114,235,0,0,0,114,231,0,0,0,114,127,
- 0,0,0,114,156,0,0,0,114,232,0,0,0,41,3,114,
- 108,0,0,0,90,11,112,97,114,101,110,116,95,112,97,116,
- 104,114,164,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,12,95,114,101,99,97,108,99,117,108,
- 97,116,101,193,3,0,0,115,16,0,0,0,0,2,18,1,
- 15,1,21,3,27,1,9,1,12,1,9,1,122,27,95,78,
- 97,109,101,115,112,97,99,101,80,97,116,104,46,95,114,101,
- 99,97,108,99,117,108,97,116,101,99,1,0,0,0,0,0,
- 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,16,
- 0,0,0,116,0,0,124,0,0,106,1,0,131,0,0,131,
- 1,0,83,41,1,78,41,2,218,4,105,116,101,114,114,240,
- 0,0,0,41,1,114,108,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,5,0,0,0,218,8,95,95,105,116,101,
- 114,95,95,206,3,0,0,115,2,0,0,0,0,1,122,23,
- 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
- 95,105,116,101,114,95,95,99,1,0,0,0,0,0,0,0,
- 1,0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,
- 0,116,0,0,124,0,0,106,1,0,131,0,0,131,1,0,
- 83,41,1,78,41,2,114,31,0,0,0,114,240,0,0,0,
- 41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,0,
- 0,114,5,0,0,0,218,7,95,95,108,101,110,95,95,209,
- 3,0,0,115,2,0,0,0,0,1,122,22,95,78,97,109,
- 101,115,112,97,99,101,80,97,116,104,46,95,95,108,101,110,
- 95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,2,
- 0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,106,
- 0,0,124,0,0,106,1,0,131,1,0,83,41,2,78,122,
- 20,95,78,97,109,101,115,112,97,99,101,80,97,116,104,40,
- 123,33,114,125,41,41,2,114,47,0,0,0,114,232,0,0,
- 0,41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,218,8,95,95,114,101,112,114,95,
- 95,212,3,0,0,115,2,0,0,0,0,1,122,23,95,78,
- 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,114,
- 101,112,114,95,95,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,
- 1,0,124,0,0,106,0,0,131,0,0,107,6,0,83,41,
- 1,78,41,1,114,240,0,0,0,41,2,114,108,0,0,0,
- 218,4,105,116,101,109,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,12,95,95,99,111,110,116,97,105,110,
- 115,95,95,215,3,0,0,115,2,0,0,0,0,1,122,27,
- 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,
- 95,99,111,110,116,97,105,110,115,95,95,99,2,0,0,0,
- 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
- 115,20,0,0,0,124,0,0,106,0,0,106,1,0,124,1,
- 0,131,1,0,1,100,0,0,83,41,1,78,41,2,114,232,
- 0,0,0,114,163,0,0,0,41,2,114,108,0,0,0,114,
- 245,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,114,163,0,0,0,218,3,0,0,115,2,0,0,
- 0,0,1,122,21,95,78,97,109,101,115,112,97,99,101,80,
- 97,116,104,46,97,112,112,101,110,100,78,41,13,114,112,0,
- 0,0,114,111,0,0,0,114,113,0,0,0,114,114,0,0,
- 0,114,185,0,0,0,114,238,0,0,0,114,233,0,0,0,
- 114,240,0,0,0,114,242,0,0,0,114,243,0,0,0,114,
- 244,0,0,0,114,246,0,0,0,114,163,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
- 0,0,114,230,0,0,0,166,3,0,0,115,20,0,0,0,
- 12,5,6,2,12,6,12,10,12,4,12,13,12,3,12,3,
- 12,3,12,3,114,230,0,0,0,99,0,0,0,0,0,0,
- 0,0,0,0,0,0,3,0,0,0,64,0,0,0,115,118,
- 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,
- 1,0,100,2,0,132,0,0,90,3,0,101,4,0,100,3,
- 0,100,4,0,132,0,0,131,1,0,90,5,0,100,5,0,
- 100,6,0,132,0,0,90,6,0,100,7,0,100,8,0,132,
- 0,0,90,7,0,100,9,0,100,10,0,132,0,0,90,8,
- 0,100,11,0,100,12,0,132,0,0,90,9,0,100,13,0,
- 100,14,0,132,0,0,90,10,0,100,15,0,100,16,0,132,
- 0,0,90,11,0,100,17,0,83,41,18,218,16,95,78,97,
- 109,101,115,112,97,99,101,76,111,97,100,101,114,99,4,0,
- 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,
- 0,0,115,25,0,0,0,116,0,0,124,1,0,124,2,0,
- 124,3,0,131,3,0,124,0,0,95,1,0,100,0,0,83,
- 41,1,78,41,2,114,230,0,0,0,114,232,0,0,0,41,
- 4,114,108,0,0,0,114,106,0,0,0,114,35,0,0,0,
- 114,236,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,185,0,0,0,224,3,0,0,115,2,0,
- 0,0,0,1,122,25,95,78,97,109,101,115,112,97,99,101,
- 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,
- 2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,
- 67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,
- 1,0,106,1,0,131,1,0,83,41,2,122,115,82,101,116,
- 117,114,110,32,114,101,112,114,32,102,111,114,32,116,104,101,
- 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,
- 32,32,84,104,101,32,109,101,116,104,111,100,32,105,115,32,
- 100,101,112,114,101,99,97,116,101,100,46,32,32,84,104,101,
- 32,105,109,112,111,114,116,32,109,97,99,104,105,110,101,114,
- 121,32,100,111,101,115,32,116,104,101,32,106,111,98,32,105,
- 116,115,101,108,102,46,10,10,32,32,32,32,32,32,32,32,
- 122,25,60,109,111,100,117,108,101,32,123,33,114,125,32,40,
- 110,97,109,101,115,112,97,99,101,41,62,41,2,114,47,0,
- 0,0,114,112,0,0,0,41,2,114,170,0,0,0,114,190,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
- 0,0,218,11,109,111,100,117,108,101,95,114,101,112,114,227,
- 3,0,0,115,2,0,0,0,0,7,122,28,95,78,97,109,
- 101,115,112,97,99,101,76,111,97,100,101,114,46,109,111,100,
- 117,108,101,95,114,101,112,114,99,2,0,0,0,0,0,0,
- 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,
- 0,0,100,1,0,83,41,2,78,84,114,4,0,0,0,41,
- 2,114,108,0,0,0,114,126,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,5,0,0,0,114,159,0,0,0,236,
- 3,0,0,115,2,0,0,0,0,1,122,27,95,78,97,109,
- 101,115,112,97,99,101,76,111,97,100,101,114,46,105,115,95,
- 112,97,99,107,97,103,101,99,2,0,0,0,0,0,0,0,
- 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,
- 0,100,1,0,83,41,2,78,114,30,0,0,0,114,4,0,
- 0,0,41,2,114,108,0,0,0,114,126,0,0,0,114,4,
- 0,0,0,114,4,0,0,0,114,5,0,0,0,114,202,0,
- 0,0,239,3,0,0,115,2,0,0,0,0,1,122,27,95,
- 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,
+ 103,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,
+ 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,
+ 41,2,122,63,82,101,116,117,114,110,32,78,111,110,101,32,
+ 97,115,32,97,110,32,101,120,116,101,110,115,105,111,110,32,
+ 109,111,100,117,108,101,32,99,97,110,110,111,116,32,99,114,
+ 101,97,116,101,32,97,32,99,111,100,101,32,111,98,106,101,
+ 99,116,46,78,114,4,0,0,0,41,2,114,100,0,0,0,
+ 114,119,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,114,181,0,0,0,149,3,0,0,115,2,0,
+ 0,0,0,2,122,28,69,120,116,101,110,115,105,111,110,70,
+ 105,108,101,76,111,97,100,101,114,46,103,101,116,95,99,111,
+ 100,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,
+ 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,
+ 41,2,122,53,82,101,116,117,114,110,32,78,111,110,101,32,
+ 97,115,32,101,120,116,101,110,115,105,111,110,32,109,111,100,
+ 117,108,101,115,32,104,97,118,101,32,110,111,32,115,111,117,
+ 114,99,101,32,99,111,100,101,46,78,114,4,0,0,0,41,
+ 2,114,100,0,0,0,114,119,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,196,0,0,0,153,
+ 3,0,0,115,2,0,0,0,0,2,122,30,69,120,116,101,
+ 110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,
103,101,116,95,115,111,117,114,99,101,99,2,0,0,0,0,
- 0,0,0,2,0,0,0,6,0,0,0,67,0,0,0,115,
- 22,0,0,0,116,0,0,100,1,0,100,2,0,100,3,0,
- 100,4,0,100,5,0,131,3,1,83,41,6,78,114,30,0,
- 0,0,122,8,60,115,116,114,105,110,103,62,114,189,0,0,
- 0,114,204,0,0,0,84,41,1,114,205,0,0,0,41,2,
- 114,108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,5,0,0,0,114,187,0,0,0,242,3,
- 0,0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,
- 115,112,97,99,101,76,111,97,100,101,114,46,103,101,116,95,
- 99,111,100,101,99,2,0,0,0,0,0,0,0,2,0,0,
- 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,
- 0,83,41,2,122,42,85,115,101,32,100,101,102,97,117,108,
- 116,32,115,101,109,97,110,116,105,99,115,32,102,111,114,32,
- 109,111,100,117,108,101,32,99,114,101,97,116,105,111,110,46,
- 78,114,4,0,0,0,41,2,114,108,0,0,0,114,164,0,
+ 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,
+ 7,0,0,0,124,0,0,106,0,0,83,41,1,122,58,82,
+ 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,
+ 111,32,116,104,101,32,115,111,117,114,99,101,32,102,105,108,
+ 101,32,97,115,32,102,111,117,110,100,32,98,121,32,116,104,
+ 101,32,102,105,110,100,101,114,46,41,1,114,35,0,0,0,
+ 41,2,114,100,0,0,0,114,119,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,151,0,0,0,
+ 157,3,0,0,115,2,0,0,0,0,3,122,32,69,120,116,
+ 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
+ 46,103,101,116,95,102,105,108,101,110,97,109,101,78,41,14,
+ 114,105,0,0,0,114,104,0,0,0,114,106,0,0,0,114,
+ 107,0,0,0,114,179,0,0,0,114,207,0,0,0,114,209,
+ 0,0,0,114,180,0,0,0,114,185,0,0,0,114,153,0,
+ 0,0,114,181,0,0,0,114,196,0,0,0,114,116,0,0,
+ 0,114,151,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,110,
+ 3,0,0,115,20,0,0,0,12,6,6,2,12,4,12,4,
+ 12,3,12,8,12,6,12,6,12,4,12,4,114,218,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 0,0,64,0,0,0,115,142,0,0,0,101,0,0,90,1,
+ 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,
+ 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,
+ 0,0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,
+ 0,100,8,0,100,9,0,132,0,0,90,7,0,100,10,0,
+ 100,11,0,132,0,0,90,8,0,100,12,0,100,13,0,132,
+ 0,0,90,9,0,100,14,0,100,15,0,132,0,0,90,10,
+ 0,100,16,0,100,17,0,132,0,0,90,11,0,100,18,0,
+ 100,19,0,132,0,0,90,12,0,100,20,0,100,21,0,132,
+ 0,0,90,13,0,100,22,0,83,41,23,218,14,95,78,97,
+ 109,101,115,112,97,99,101,80,97,116,104,97,38,1,0,0,
+ 82,101,112,114,101,115,101,110,116,115,32,97,32,110,97,109,
+ 101,115,112,97,99,101,32,112,97,99,107,97,103,101,39,115,
+ 32,112,97,116,104,46,32,32,73,116,32,117,115,101,115,32,
+ 116,104,101,32,109,111,100,117,108,101,32,110,97,109,101,10,
+ 32,32,32,32,116,111,32,102,105,110,100,32,105,116,115,32,
+ 112,97,114,101,110,116,32,109,111,100,117,108,101,44,32,97,
+ 110,100,32,102,114,111,109,32,116,104,101,114,101,32,105,116,
+ 32,108,111,111,107,115,32,117,112,32,116,104,101,32,112,97,
+ 114,101,110,116,39,115,10,32,32,32,32,95,95,112,97,116,
+ 104,95,95,46,32,32,87,104,101,110,32,116,104,105,115,32,
+ 99,104,97,110,103,101,115,44,32,116,104,101,32,109,111,100,
+ 117,108,101,39,115,32,111,119,110,32,112,97,116,104,32,105,
+ 115,32,114,101,99,111,109,112,117,116,101,100,44,10,32,32,
+ 32,32,117,115,105,110,103,32,112,97,116,104,95,102,105,110,
+ 100,101,114,46,32,32,70,111,114,32,116,111,112,45,108,101,
+ 118,101,108,32,109,111,100,117,108,101,115,44,32,116,104,101,
+ 32,112,97,114,101,110,116,32,109,111,100,117,108,101,39,115,
+ 32,112,97,116,104,10,32,32,32,32,105,115,32,115,121,115,
+ 46,112,97,116,104,46,99,4,0,0,0,0,0,0,0,4,
+ 0,0,0,2,0,0,0,67,0,0,0,115,52,0,0,0,
+ 124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,
+ 1,0,116,2,0,124,0,0,106,3,0,131,0,0,131,1,
+ 0,124,0,0,95,4,0,124,3,0,124,0,0,95,5,0,
+ 100,0,0,83,41,1,78,41,6,218,5,95,110,97,109,101,
+ 218,5,95,112,97,116,104,114,93,0,0,0,218,16,95,103,
+ 101,116,95,112,97,114,101,110,116,95,112,97,116,104,218,17,
+ 95,108,97,115,116,95,112,97,114,101,110,116,95,112,97,116,
+ 104,218,12,95,112,97,116,104,95,102,105,110,100,101,114,41,
+ 4,114,100,0,0,0,114,98,0,0,0,114,35,0,0,0,
+ 218,11,112,97,116,104,95,102,105,110,100,101,114,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,114,179,0,0,
+ 0,170,3,0,0,115,8,0,0,0,0,1,9,1,9,1,
+ 21,1,122,23,95,78,97,109,101,115,112,97,99,101,80,97,
+ 116,104,46,95,95,105,110,105,116,95,95,99,1,0,0,0,
+ 0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,0,
+ 115,53,0,0,0,124,0,0,106,0,0,106,1,0,100,1,
+ 0,131,1,0,92,3,0,125,1,0,125,2,0,125,3,0,
+ 124,2,0,100,2,0,107,2,0,114,43,0,100,6,0,83,
+ 124,1,0,100,5,0,102,2,0,83,41,7,122,62,82,101,
+ 116,117,114,110,115,32,97,32,116,117,112,108,101,32,111,102,
+ 32,40,112,97,114,101,110,116,45,109,111,100,117,108,101,45,
+ 110,97,109,101,44,32,112,97,114,101,110,116,45,112,97,116,
+ 104,45,97,116,116,114,45,110,97,109,101,41,114,58,0,0,
+ 0,114,30,0,0,0,114,7,0,0,0,114,35,0,0,0,
+ 90,8,95,95,112,97,116,104,95,95,41,2,122,3,115,121,
+ 115,122,4,112,97,116,104,41,2,114,225,0,0,0,114,32,
+ 0,0,0,41,4,114,100,0,0,0,114,216,0,0,0,218,
+ 3,100,111,116,90,2,109,101,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,218,23,95,102,105,110,100,95,112,
+ 97,114,101,110,116,95,112,97,116,104,95,110,97,109,101,115,
+ 176,3,0,0,115,8,0,0,0,0,2,27,1,12,2,4,
+ 3,122,38,95,78,97,109,101,115,112,97,99,101,80,97,116,
+ 104,46,95,102,105,110,100,95,112,97,114,101,110,116,95,112,
+ 97,116,104,95,110,97,109,101,115,99,1,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,38,
+ 0,0,0,124,0,0,106,0,0,131,0,0,92,2,0,125,
+ 1,0,125,2,0,116,1,0,116,2,0,106,3,0,124,1,
+ 0,25,124,2,0,131,2,0,83,41,1,78,41,4,114,232,
+ 0,0,0,114,110,0,0,0,114,7,0,0,0,218,7,109,
+ 111,100,117,108,101,115,41,3,114,100,0,0,0,90,18,112,
+ 97,114,101,110,116,95,109,111,100,117,108,101,95,110,97,109,
+ 101,90,14,112,97,116,104,95,97,116,116,114,95,110,97,109,
+ 101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,227,0,0,0,186,3,0,0,115,4,0,0,0,0,1,
+ 18,1,122,31,95,78,97,109,101,115,112,97,99,101,80,97,
+ 116,104,46,95,103,101,116,95,112,97,114,101,110,116,95,112,
+ 97,116,104,99,1,0,0,0,0,0,0,0,3,0,0,0,
+ 3,0,0,0,67,0,0,0,115,118,0,0,0,116,0,0,
+ 124,0,0,106,1,0,131,0,0,131,1,0,125,1,0,124,
+ 1,0,124,0,0,106,2,0,107,3,0,114,111,0,124,0,
+ 0,106,3,0,124,0,0,106,4,0,124,1,0,131,2,0,
+ 125,2,0,124,2,0,100,0,0,107,9,0,114,102,0,124,
+ 2,0,106,5,0,100,0,0,107,8,0,114,102,0,124,2,
+ 0,106,6,0,114,102,0,124,2,0,106,6,0,124,0,0,
+ 95,7,0,124,1,0,124,0,0,95,2,0,124,0,0,106,
+ 7,0,83,41,1,78,41,8,114,93,0,0,0,114,227,0,
+ 0,0,114,228,0,0,0,114,229,0,0,0,114,225,0,0,
+ 0,114,120,0,0,0,114,150,0,0,0,114,226,0,0,0,
+ 41,3,114,100,0,0,0,90,11,112,97,114,101,110,116,95,
+ 112,97,116,104,114,158,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,218,12,95,114,101,99,97,108,
+ 99,117,108,97,116,101,190,3,0,0,115,16,0,0,0,0,
+ 2,18,1,15,1,21,3,27,1,9,1,12,1,9,1,122,
+ 27,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,
+ 95,114,101,99,97,108,99,117,108,97,116,101,99,1,0,0,
+ 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,
+ 0,115,16,0,0,0,116,0,0,124,0,0,106,1,0,131,
+ 0,0,131,1,0,83,41,1,78,41,2,218,4,105,116,101,
+ 114,114,234,0,0,0,41,1,114,100,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,8,95,95,
+ 105,116,101,114,95,95,203,3,0,0,115,2,0,0,0,0,
+ 1,122,23,95,78,97,109,101,115,112,97,99,101,80,97,116,
+ 104,46,95,95,105,116,101,114,95,95,99,3,0,0,0,0,
+ 0,0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,
+ 17,0,0,0,124,2,0,124,0,0,106,0,0,124,1,0,
+ 60,100,0,0,83,41,1,78,41,1,114,226,0,0,0,41,
+ 3,114,100,0,0,0,218,5,105,110,100,101,120,114,35,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,186,0,0,0,245,3,0,0,115,0,0,0,0,122,
- 30,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,
- 114,46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,
- 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,
- 67,0,0,0,115,4,0,0,0,100,0,0,83,41,1,78,
- 114,4,0,0,0,41,2,114,108,0,0,0,114,190,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
- 114,191,0,0,0,248,3,0,0,115,2,0,0,0,0,1,
- 122,28,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
- 101,114,46,101,120,101,99,95,109,111,100,117,108,101,99,2,
- 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,
- 0,0,0,115,32,0,0,0,116,0,0,100,1,0,124,0,
- 0,106,1,0,131,2,0,1,116,2,0,106,3,0,124,0,
- 0,124,1,0,131,2,0,83,41,2,122,98,76,111,97,100,
- 32,97,32,110,97,109,101,115,112,97,99,101,32,109,111,100,
- 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,
- 105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,
- 114,101,99,97,116,101,100,46,32,32,85,115,101,32,101,120,
- 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116,
- 101,97,100,46,10,10,32,32,32,32,32,32,32,32,122,38,
- 110,97,109,101,115,112,97,99,101,32,109,111,100,117,108,101,
- 32,108,111,97,100,101,100,32,119,105,116,104,32,112,97,116,
- 104,32,123,33,114,125,41,4,114,105,0,0,0,114,232,0,
- 0,0,114,121,0,0,0,114,192,0,0,0,41,2,114,108,
- 0,0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,114,193,0,0,0,251,3,0,0,
- 115,4,0,0,0,0,7,16,1,122,28,95,78,97,109,101,
- 115,112,97,99,101,76,111,97,100,101,114,46,108,111,97,100,
- 95,109,111,100,117,108,101,78,41,12,114,112,0,0,0,114,
- 111,0,0,0,114,113,0,0,0,114,185,0,0,0,114,183,
- 0,0,0,114,248,0,0,0,114,159,0,0,0,114,202,0,
- 0,0,114,187,0,0,0,114,186,0,0,0,114,191,0,0,
- 0,114,193,0,0,0,114,4,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,5,0,0,0,114,247,0,0,0,223,
- 3,0,0,115,16,0,0,0,12,1,12,3,18,9,12,3,
- 12,3,12,3,12,3,12,3,114,247,0,0,0,99,0,0,
- 0,0,0,0,0,0,0,0,0,0,5,0,0,0,64,0,
- 0,0,115,160,0,0,0,101,0,0,90,1,0,100,0,0,
- 90,2,0,100,1,0,90,3,0,101,4,0,100,2,0,100,
- 3,0,132,0,0,131,1,0,90,5,0,101,4,0,100,4,
- 0,100,5,0,132,0,0,131,1,0,90,6,0,101,4,0,
- 100,6,0,100,7,0,132,0,0,131,1,0,90,7,0,101,
- 4,0,100,8,0,100,9,0,132,0,0,131,1,0,90,8,
- 0,101,4,0,100,10,0,100,11,0,100,12,0,132,1,0,
- 131,1,0,90,9,0,101,4,0,100,10,0,100,10,0,100,
- 13,0,100,14,0,132,2,0,131,1,0,90,10,0,101,4,
- 0,100,10,0,100,15,0,100,16,0,132,1,0,131,1,0,
- 90,11,0,100,10,0,83,41,17,218,10,80,97,116,104,70,
- 105,110,100,101,114,122,62,77,101,116,97,32,112,97,116,104,
- 32,102,105,110,100,101,114,32,102,111,114,32,115,121,115,46,
- 112,97,116,104,32,97,110,100,32,112,97,99,107,97,103,101,
- 32,95,95,112,97,116,104,95,95,32,97,116,116,114,105,98,
- 117,116,101,115,46,99,1,0,0,0,0,0,0,0,2,0,
- 0,0,4,0,0,0,67,0,0,0,115,55,0,0,0,120,
- 48,0,116,0,0,106,1,0,106,2,0,131,0,0,68,93,
- 31,0,125,1,0,116,3,0,124,1,0,100,1,0,131,2,
- 0,114,16,0,124,1,0,106,4,0,131,0,0,1,113,16,
- 0,87,100,2,0,83,41,3,122,125,67,97,108,108,32,116,
- 104,101,32,105,110,118,97,108,105,100,97,116,101,95,99,97,
- 99,104,101,115,40,41,32,109,101,116,104,111,100,32,111,110,
- 32,97,108,108,32,112,97,116,104,32,101,110,116,114,121,32,
- 102,105,110,100,101,114,115,10,32,32,32,32,32,32,32,32,
- 115,116,111,114,101,100,32,105,110,32,115,121,115,46,112,97,
- 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
- 101,115,32,40,119,104,101,114,101,32,105,109,112,108,101,109,
- 101,110,116,101,100,41,46,218,17,105,110,118,97,108,105,100,
- 97,116,101,95,99,97,99,104,101,115,78,41,5,114,7,0,
- 0,0,218,19,112,97,116,104,95,105,109,112,111,114,116,101,
- 114,95,99,97,99,104,101,218,6,118,97,108,117,101,115,114,
- 115,0,0,0,114,250,0,0,0,41,2,114,170,0,0,0,
- 218,6,102,105,110,100,101,114,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,114,250,0,0,0,12,4,0,0,
- 115,6,0,0,0,0,4,22,1,15,1,122,28,80,97,116,
- 104,70,105,110,100,101,114,46,105,110,118,97,108,105,100,97,
- 116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,0,
- 0,0,3,0,0,0,12,0,0,0,67,0,0,0,115,107,
- 0,0,0,116,0,0,106,1,0,100,1,0,107,9,0,114,
- 41,0,116,0,0,106,1,0,12,114,41,0,116,2,0,106,
- 3,0,100,2,0,116,4,0,131,2,0,1,120,59,0,116,
- 0,0,106,1,0,68,93,44,0,125,2,0,121,14,0,124,
- 2,0,124,1,0,131,1,0,83,87,113,51,0,4,116,5,
- 0,107,10,0,114,94,0,1,1,1,119,51,0,89,113,51,
- 0,88,113,51,0,87,100,1,0,83,100,1,0,83,41,3,
- 122,113,83,101,97,114,99,104,32,115,101,113,117,101,110,99,
- 101,32,111,102,32,104,111,111,107,115,32,102,111,114,32,97,
- 32,102,105,110,100,101,114,32,102,111,114,32,39,112,97,116,
- 104,39,46,10,10,32,32,32,32,32,32,32,32,73,102,32,
- 39,104,111,111,107,115,39,32,105,115,32,102,97,108,115,101,
- 32,116,104,101,110,32,117,115,101,32,115,121,115,46,112,97,
- 116,104,95,104,111,111,107,115,46,10,10,32,32,32,32,32,
- 32,32,32,78,122,23,115,121,115,46,112,97,116,104,95,104,
- 111,111,107,115,32,105,115,32,101,109,112,116,121,41,6,114,
- 7,0,0,0,218,10,112,97,116,104,95,104,111,111,107,115,
- 114,60,0,0,0,114,61,0,0,0,114,125,0,0,0,114,
- 107,0,0,0,41,3,114,170,0,0,0,114,35,0,0,0,
- 90,4,104,111,111,107,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,11,95,112,97,116,104,95,104,111,111,
- 107,115,20,4,0,0,115,16,0,0,0,0,7,25,1,16,
- 1,16,1,3,1,14,1,13,1,12,2,122,22,80,97,116,
- 104,70,105,110,100,101,114,46,95,112,97,116,104,95,104,111,
- 111,107,115,99,2,0,0,0,0,0,0,0,3,0,0,0,
- 19,0,0,0,67,0,0,0,115,123,0,0,0,124,1,0,
- 100,1,0,107,2,0,114,53,0,121,16,0,116,0,0,106,
- 1,0,131,0,0,125,1,0,87,110,22,0,4,116,2,0,
- 107,10,0,114,52,0,1,1,1,100,2,0,83,89,110,1,
- 0,88,121,17,0,116,3,0,106,4,0,124,1,0,25,125,
- 2,0,87,110,46,0,4,116,5,0,107,10,0,114,118,0,
- 1,1,1,124,0,0,106,6,0,124,1,0,131,1,0,125,
- 2,0,124,2,0,116,3,0,106,4,0,124,1,0,60,89,
- 110,1,0,88,124,2,0,83,41,3,122,210,71,101,116,32,
- 116,104,101,32,102,105,110,100,101,114,32,102,111,114,32,116,
- 104,101,32,112,97,116,104,32,101,110,116,114,121,32,102,114,
- 111,109,32,115,121,115,46,112,97,116,104,95,105,109,112,111,
- 114,116,101,114,95,99,97,99,104,101,46,10,10,32,32,32,
- 32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,104,
- 32,101,110,116,114,121,32,105,115,32,110,111,116,32,105,110,
- 32,116,104,101,32,99,97,99,104,101,44,32,102,105,110,100,
- 32,116,104,101,32,97,112,112,114,111,112,114,105,97,116,101,
- 32,102,105,110,100,101,114,10,32,32,32,32,32,32,32,32,
- 97,110,100,32,99,97,99,104,101,32,105,116,46,32,73,102,
- 32,110,111,32,102,105,110,100,101,114,32,105,115,32,97,118,
- 97,105,108,97,98,108,101,44,32,115,116,111,114,101,32,78,
- 111,110,101,46,10,10,32,32,32,32,32,32,32,32,114,30,
- 0,0,0,78,41,7,114,3,0,0,0,114,45,0,0,0,
- 218,17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,
- 114,111,114,114,7,0,0,0,114,251,0,0,0,114,137,0,
- 0,0,114,255,0,0,0,41,3,114,170,0,0,0,114,35,
- 0,0,0,114,253,0,0,0,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,218,20,95,112,97,116,104,95,105,
- 109,112,111,114,116,101,114,95,99,97,99,104,101,37,4,0,
- 0,115,22,0,0,0,0,8,12,1,3,1,16,1,13,3,
- 9,1,3,1,17,1,13,1,15,1,18,1,122,31,80,97,
- 116,104,70,105,110,100,101,114,46,95,112,97,116,104,95,105,
- 109,112,111,114,116,101,114,95,99,97,99,104,101,99,3,0,
- 0,0,0,0,0,0,6,0,0,0,3,0,0,0,67,0,
- 0,0,115,119,0,0,0,116,0,0,124,2,0,100,1,0,
- 131,2,0,114,39,0,124,2,0,106,1,0,124,1,0,131,
- 1,0,92,2,0,125,3,0,125,4,0,110,21,0,124,2,
- 0,106,2,0,124,1,0,131,1,0,125,3,0,103,0,0,
- 125,4,0,124,3,0,100,0,0,107,9,0,114,88,0,116,
- 3,0,106,4,0,124,1,0,124,3,0,131,2,0,83,116,
- 3,0,106,5,0,124,1,0,100,0,0,131,2,0,125,5,
- 0,124,4,0,124,5,0,95,6,0,124,5,0,83,41,2,
- 78,114,124,0,0,0,41,7,114,115,0,0,0,114,124,0,
- 0,0,114,182,0,0,0,114,121,0,0,0,114,179,0,0,
- 0,114,160,0,0,0,114,156,0,0,0,41,6,114,170,0,
- 0,0,114,126,0,0,0,114,253,0,0,0,114,127,0,0,
- 0,114,128,0,0,0,114,164,0,0,0,114,4,0,0,0,
- 114,4,0,0,0,114,5,0,0,0,218,16,95,108,101,103,
- 97,99,121,95,103,101,116,95,115,112,101,99,59,4,0,0,
- 115,18,0,0,0,0,4,15,1,24,2,15,1,6,1,12,
- 1,16,1,18,1,9,1,122,27,80,97,116,104,70,105,110,
- 100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,95,
- 115,112,101,99,78,99,4,0,0,0,0,0,0,0,9,0,
- 0,0,5,0,0,0,67,0,0,0,115,243,0,0,0,103,
- 0,0,125,4,0,120,230,0,124,2,0,68,93,191,0,125,
- 5,0,116,0,0,124,5,0,116,1,0,116,2,0,102,2,
- 0,131,2,0,115,43,0,113,13,0,124,0,0,106,3,0,
- 124,5,0,131,1,0,125,6,0,124,6,0,100,1,0,107,
- 9,0,114,13,0,116,4,0,124,6,0,100,2,0,131,2,
- 0,114,106,0,124,6,0,106,5,0,124,1,0,124,3,0,
- 131,2,0,125,7,0,110,18,0,124,0,0,106,6,0,124,
- 1,0,124,6,0,131,2,0,125,7,0,124,7,0,100,1,
- 0,107,8,0,114,139,0,113,13,0,124,7,0,106,7,0,
- 100,1,0,107,9,0,114,158,0,124,7,0,83,124,7,0,
- 106,8,0,125,8,0,124,8,0,100,1,0,107,8,0,114,
- 191,0,116,9,0,100,3,0,131,1,0,130,1,0,124,4,
- 0,106,10,0,124,8,0,131,1,0,1,113,13,0,87,116,
- 11,0,106,12,0,124,1,0,100,1,0,131,2,0,125,7,
- 0,124,4,0,124,7,0,95,8,0,124,7,0,83,100,1,
- 0,83,41,4,122,63,70,105,110,100,32,116,104,101,32,108,
- 111,97,100,101,114,32,111,114,32,110,97,109,101,115,112,97,
- 99,101,95,112,97,116,104,32,102,111,114,32,116,104,105,115,
- 32,109,111,100,117,108,101,47,112,97,99,107,97,103,101,32,
- 110,97,109,101,46,78,114,181,0,0,0,122,19,115,112,101,
- 99,32,109,105,115,115,105,110,103,32,108,111,97,100,101,114,
- 41,13,114,143,0,0,0,114,69,0,0,0,218,5,98,121,
- 116,101,115,114,1,1,0,0,114,115,0,0,0,114,181,0,
- 0,0,114,2,1,0,0,114,127,0,0,0,114,156,0,0,
- 0,114,107,0,0,0,114,149,0,0,0,114,121,0,0,0,
- 114,160,0,0,0,41,9,114,170,0,0,0,114,126,0,0,
- 0,114,35,0,0,0,114,180,0,0,0,218,14,110,97,109,
- 101,115,112,97,99,101,95,112,97,116,104,90,5,101,110,116,
- 114,121,114,253,0,0,0,114,164,0,0,0,114,128,0,0,
- 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
- 218,9,95,103,101,116,95,115,112,101,99,74,4,0,0,115,
- 40,0,0,0,0,5,6,1,13,1,21,1,3,1,15,1,
- 12,1,15,1,21,2,18,1,12,1,3,1,15,1,4,1,
- 9,1,12,1,12,5,17,2,18,1,9,1,122,20,80,97,
- 116,104,70,105,110,100,101,114,46,95,103,101,116,95,115,112,
- 101,99,99,4,0,0,0,0,0,0,0,6,0,0,0,4,
- 0,0,0,67,0,0,0,115,140,0,0,0,124,2,0,100,
- 1,0,107,8,0,114,21,0,116,0,0,106,1,0,125,2,
- 0,124,0,0,106,2,0,124,1,0,124,2,0,124,3,0,
- 131,3,0,125,4,0,124,4,0,100,1,0,107,8,0,114,
- 58,0,100,1,0,83,124,4,0,106,3,0,100,1,0,107,
- 8,0,114,132,0,124,4,0,106,4,0,125,5,0,124,5,
- 0,114,125,0,100,2,0,124,4,0,95,5,0,116,6,0,
- 124,1,0,124,5,0,124,0,0,106,2,0,131,3,0,124,
- 4,0,95,4,0,124,4,0,83,100,1,0,83,110,4,0,
- 124,4,0,83,100,1,0,83,41,3,122,98,102,105,110,100,
- 32,116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,
- 121,115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,
- 39,32,98,97,115,101,100,32,111,110,32,115,121,115,46,112,
- 97,116,104,95,104,111,111,107,115,32,97,110,100,10,32,32,
- 32,32,32,32,32,32,115,121,115,46,112,97,116,104,95,105,
- 109,112,111,114,116,101,114,95,99,97,99,104,101,46,78,90,
- 9,110,97,109,101,115,112,97,99,101,41,7,114,7,0,0,
- 0,114,35,0,0,0,114,5,1,0,0,114,127,0,0,0,
- 114,156,0,0,0,114,158,0,0,0,114,230,0,0,0,41,
- 6,114,170,0,0,0,114,126,0,0,0,114,35,0,0,0,
- 114,180,0,0,0,114,164,0,0,0,114,4,1,0,0,114,
- 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,181,
- 0,0,0,106,4,0,0,115,26,0,0,0,0,4,12,1,
- 9,1,21,1,12,1,4,1,15,1,9,1,6,3,9,1,
- 24,1,4,2,7,2,122,20,80,97,116,104,70,105,110,100,
- 101,114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,
- 0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,
- 0,115,41,0,0,0,124,0,0,106,0,0,124,1,0,124,
- 2,0,131,2,0,125,3,0,124,3,0,100,1,0,107,8,
- 0,114,34,0,100,1,0,83,124,3,0,106,1,0,83,41,
- 2,122,170,102,105,110,100,32,116,104,101,32,109,111,100,117,
- 108,101,32,111,110,32,115,121,115,46,112,97,116,104,32,111,
- 114,32,39,112,97,116,104,39,32,98,97,115,101,100,32,111,
- 110,32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,
- 32,97,110,100,10,32,32,32,32,32,32,32,32,115,121,115,
- 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,
- 97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,84,
- 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,
- 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,102,
- 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,
- 97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,2,
- 114,181,0,0,0,114,127,0,0,0,41,4,114,170,0,0,
- 0,114,126,0,0,0,114,35,0,0,0,114,164,0,0,0,
+ 0,218,11,95,95,115,101,116,105,116,101,109,95,95,206,3,
+ 0,0,115,2,0,0,0,0,1,122,26,95,78,97,109,101,
+ 115,112,97,99,101,80,97,116,104,46,95,95,115,101,116,105,
+ 116,101,109,95,95,99,1,0,0,0,0,0,0,0,1,0,
+ 0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,116,
+ 0,0,124,0,0,106,1,0,131,0,0,131,1,0,83,41,
+ 1,78,41,2,114,31,0,0,0,114,234,0,0,0,41,1,
+ 114,100,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,218,7,95,95,108,101,110,95,95,209,3,0,
+ 0,115,2,0,0,0,0,1,122,22,95,78,97,109,101,115,
+ 112,97,99,101,80,97,116,104,46,95,95,108,101,110,95,95,
+ 99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,
+ 0,67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,
+ 124,0,0,106,1,0,131,1,0,83,41,2,78,122,20,95,
+ 78,97,109,101,115,112,97,99,101,80,97,116,104,40,123,33,
+ 114,125,41,41,2,114,47,0,0,0,114,226,0,0,0,41,
+ 1,114,100,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,218,8,95,95,114,101,112,114,95,95,212,
+ 3,0,0,115,2,0,0,0,0,1,122,23,95,78,97,109,
+ 101,115,112,97,99,101,80,97,116,104,46,95,95,114,101,112,
+ 114,95,95,99,2,0,0,0,0,0,0,0,2,0,0,0,
+ 2,0,0,0,67,0,0,0,115,16,0,0,0,124,1,0,
+ 124,0,0,106,0,0,131,0,0,107,6,0,83,41,1,78,
+ 41,1,114,234,0,0,0,41,2,114,100,0,0,0,218,4,
+ 105,116,101,109,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,218,12,95,95,99,111,110,116,97,105,110,115,95,
+ 95,215,3,0,0,115,2,0,0,0,0,1,122,27,95,78,
+ 97,109,101,115,112,97,99,101,80,97,116,104,46,95,95,99,
+ 111,110,116,97,105,110,115,95,95,99,2,0,0,0,0,0,
+ 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,20,
+ 0,0,0,124,0,0,106,0,0,106,1,0,124,1,0,131,
+ 1,0,1,100,0,0,83,41,1,78,41,2,114,226,0,0,
+ 0,114,157,0,0,0,41,2,114,100,0,0,0,114,241,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,157,0,0,0,218,3,0,0,115,2,0,0,0,0,
+ 1,122,21,95,78,97,109,101,115,112,97,99,101,80,97,116,
+ 104,46,97,112,112,101,110,100,78,41,14,114,105,0,0,0,
+ 114,104,0,0,0,114,106,0,0,0,114,107,0,0,0,114,
+ 179,0,0,0,114,232,0,0,0,114,227,0,0,0,114,234,
+ 0,0,0,114,236,0,0,0,114,238,0,0,0,114,239,0,
+ 0,0,114,240,0,0,0,114,242,0,0,0,114,157,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,114,224,0,0,0,163,3,0,0,115,22,
+ 0,0,0,12,5,6,2,12,6,12,10,12,4,12,13,12,
+ 3,12,3,12,3,12,3,12,3,114,224,0,0,0,99,0,
+ 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,64,
+ 0,0,0,115,118,0,0,0,101,0,0,90,1,0,100,0,
+ 0,90,2,0,100,1,0,100,2,0,132,0,0,90,3,0,
+ 101,4,0,100,3,0,100,4,0,132,0,0,131,1,0,90,
+ 5,0,100,5,0,100,6,0,132,0,0,90,6,0,100,7,
+ 0,100,8,0,132,0,0,90,7,0,100,9,0,100,10,0,
+ 132,0,0,90,8,0,100,11,0,100,12,0,132,0,0,90,
+ 9,0,100,13,0,100,14,0,132,0,0,90,10,0,100,15,
+ 0,100,16,0,132,0,0,90,11,0,100,17,0,83,41,18,
+ 218,16,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
+ 101,114,99,4,0,0,0,0,0,0,0,4,0,0,0,4,
+ 0,0,0,67,0,0,0,115,25,0,0,0,116,0,0,124,
+ 1,0,124,2,0,124,3,0,131,3,0,124,0,0,95,1,
+ 0,100,0,0,83,41,1,78,41,2,114,224,0,0,0,114,
+ 226,0,0,0,41,4,114,100,0,0,0,114,98,0,0,0,
+ 114,35,0,0,0,114,230,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,179,0,0,0,224,3,
+ 0,0,115,2,0,0,0,0,1,122,25,95,78,97,109,101,
+ 115,112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,
+ 105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,2,0,0,0,67,0,0,0,115,16,0,0,0,100,1,
+ 0,106,0,0,124,1,0,106,1,0,131,1,0,83,41,2,
+ 122,115,82,101,116,117,114,110,32,114,101,112,114,32,102,111,
+ 114,32,116,104,101,32,109,111,100,117,108,101,46,10,10,32,
+ 32,32,32,32,32,32,32,84,104,101,32,109,101,116,104,111,
+ 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,
+ 32,32,84,104,101,32,105,109,112,111,114,116,32,109,97,99,
+ 104,105,110,101,114,121,32,100,111,101,115,32,116,104,101,32,
+ 106,111,98,32,105,116,115,101,108,102,46,10,10,32,32,32,
+ 32,32,32,32,32,122,25,60,109,111,100,117,108,101,32,123,
+ 33,114,125,32,40,110,97,109,101,115,112,97,99,101,41,62,
+ 41,2,114,47,0,0,0,114,105,0,0,0,41,2,114,164,
+ 0,0,0,114,184,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,218,11,109,111,100,117,108,101,95,
+ 114,101,112,114,227,3,0,0,115,2,0,0,0,0,7,122,
+ 28,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,
+ 114,46,109,111,100,117,108,101,95,114,101,112,114,99,2,0,
+ 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,
+ 0,0,115,4,0,0,0,100,1,0,83,41,2,78,84,114,
+ 4,0,0,0,41,2,114,100,0,0,0,114,119,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 182,0,0,0,128,4,0,0,115,8,0,0,0,0,8,18,
- 1,12,1,4,1,122,22,80,97,116,104,70,105,110,100,101,
- 114,46,102,105,110,100,95,109,111,100,117,108,101,41,12,114,
- 112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,114,
- 0,0,0,114,183,0,0,0,114,250,0,0,0,114,255,0,
- 0,0,114,1,1,0,0,114,2,1,0,0,114,5,1,0,
- 0,114,181,0,0,0,114,182,0,0,0,114,4,0,0,0,
+ 153,0,0,0,236,3,0,0,115,2,0,0,0,0,1,122,
+ 27,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,
+ 114,46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,
+ 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
+ 0,115,4,0,0,0,100,1,0,83,41,2,78,114,30,0,
+ 0,0,114,4,0,0,0,41,2,114,100,0,0,0,114,119,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,196,0,0,0,239,3,0,0,115,2,0,0,0,
+ 0,1,122,27,95,78,97,109,101,115,112,97,99,101,76,111,
+ 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,99,
+ 2,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,
+ 67,0,0,0,115,22,0,0,0,116,0,0,100,1,0,100,
+ 2,0,100,3,0,100,4,0,100,5,0,131,3,1,83,41,
+ 6,78,114,30,0,0,0,122,8,60,115,116,114,105,110,103,
+ 62,114,183,0,0,0,114,198,0,0,0,84,41,1,114,199,
+ 0,0,0,41,2,114,100,0,0,0,114,119,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,181,
+ 0,0,0,242,3,0,0,115,2,0,0,0,0,1,122,25,
+ 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,
+ 46,103,101,116,95,99,111,100,101,99,2,0,0,0,0,0,
+ 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,
+ 0,0,0,100,1,0,83,41,2,122,42,85,115,101,32,100,
+ 101,102,97,117,108,116,32,115,101,109,97,110,116,105,99,115,
+ 32,102,111,114,32,109,111,100,117,108,101,32,99,114,101,97,
+ 116,105,111,110,46,78,114,4,0,0,0,41,2,114,100,0,
+ 0,0,114,158,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,180,0,0,0,245,3,0,0,115,
+ 0,0,0,0,122,30,95,78,97,109,101,115,112,97,99,101,
+ 76,111,97,100,101,114,46,99,114,101,97,116,101,95,109,111,
+ 100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,0,
+ 0,83,41,1,78,114,4,0,0,0,41,2,114,100,0,0,
+ 0,114,184,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,114,185,0,0,0,248,3,0,0,115,2,
+ 0,0,0,0,1,122,28,95,78,97,109,101,115,112,97,99,
+ 101,76,111,97,100,101,114,46,101,120,101,99,95,109,111,100,
+ 117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,
+ 3,0,0,0,67,0,0,0,115,35,0,0,0,116,0,0,
+ 106,1,0,100,1,0,124,0,0,106,2,0,131,2,0,1,
+ 116,0,0,106,3,0,124,0,0,124,1,0,131,2,0,83,
+ 41,2,122,98,76,111,97,100,32,97,32,110,97,109,101,115,
+ 112,97,99,101,32,109,111,100,117,108,101,46,10,10,32,32,
+ 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,
+ 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,
+ 32,32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,
+ 101,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,
+ 32,32,32,32,32,32,122,38,110,97,109,101,115,112,97,99,
+ 101,32,109,111,100,117,108,101,32,108,111,97,100,101,100,32,
+ 119,105,116,104,32,112,97,116,104,32,123,33,114,125,41,4,
+ 114,114,0,0,0,114,129,0,0,0,114,226,0,0,0,114,
+ 186,0,0,0,41,2,114,100,0,0,0,114,119,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 249,0,0,0,8,4,0,0,115,22,0,0,0,12,2,6,
- 2,18,8,18,17,18,22,18,15,3,1,18,31,3,1,21,
- 21,3,1,114,249,0,0,0,99,0,0,0,0,0,0,0,
- 0,0,0,0,0,3,0,0,0,64,0,0,0,115,133,0,
- 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,
- 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0,
- 100,4,0,100,5,0,132,0,0,90,5,0,101,6,0,90,
- 7,0,100,6,0,100,7,0,132,0,0,90,8,0,100,8,
- 0,100,9,0,132,0,0,90,9,0,100,10,0,100,11,0,
- 100,12,0,132,1,0,90,10,0,100,13,0,100,14,0,132,
- 0,0,90,11,0,101,12,0,100,15,0,100,16,0,132,0,
- 0,131,1,0,90,13,0,100,17,0,100,18,0,132,0,0,
- 90,14,0,100,10,0,83,41,19,218,10,70,105,108,101,70,
- 105,110,100,101,114,122,172,70,105,108,101,45,98,97,115,101,
- 100,32,102,105,110,100,101,114,46,10,10,32,32,32,32,73,
- 110,116,101,114,97,99,116,105,111,110,115,32,119,105,116,104,
- 32,116,104,101,32,102,105,108,101,32,115,121,115,116,101,109,
- 32,97,114,101,32,99,97,99,104,101,100,32,102,111,114,32,
- 112,101,114,102,111,114,109,97,110,99,101,44,32,98,101,105,
- 110,103,10,32,32,32,32,114,101,102,114,101,115,104,101,100,
- 32,119,104,101,110,32,116,104,101,32,100,105,114,101,99,116,
- 111,114,121,32,116,104,101,32,102,105,110,100,101,114,32,105,
- 115,32,104,97,110,100,108,105,110,103,32,104,97,115,32,98,
- 101,101,110,32,109,111,100,105,102,105,101,100,46,10,10,32,
- 32,32,32,99,2,0,0,0,0,0,0,0,5,0,0,0,
- 5,0,0,0,7,0,0,0,115,122,0,0,0,103,0,0,
- 125,3,0,120,52,0,124,2,0,68,93,44,0,92,2,0,
- 137,0,0,125,4,0,124,3,0,106,0,0,135,0,0,102,
- 1,0,100,1,0,100,2,0,134,0,0,124,4,0,68,131,
- 1,0,131,1,0,1,113,13,0,87,124,3,0,124,0,0,
- 95,1,0,124,1,0,112,79,0,100,3,0,124,0,0,95,
- 2,0,100,6,0,124,0,0,95,3,0,116,4,0,131,0,
- 0,124,0,0,95,5,0,116,4,0,131,0,0,124,0,0,
- 95,6,0,100,5,0,83,41,7,122,154,73,110,105,116,105,
- 97,108,105,122,101,32,119,105,116,104,32,116,104,101,32,112,
- 97,116,104,32,116,111,32,115,101,97,114,99,104,32,111,110,
- 32,97,110,100,32,97,32,118,97,114,105,97,98,108,101,32,
- 110,117,109,98,101,114,32,111,102,10,32,32,32,32,32,32,
- 32,32,50,45,116,117,112,108,101,115,32,99,111,110,116,97,
- 105,110,105,110,103,32,116,104,101,32,108,111,97,100,101,114,
- 32,97,110,100,32,116,104,101,32,102,105,108,101,32,115,117,
- 102,102,105,120,101,115,32,116,104,101,32,108,111,97,100,101,
- 114,10,32,32,32,32,32,32,32,32,114,101,99,111,103,110,
- 105,122,101,115,46,99,1,0,0,0,0,0,0,0,2,0,
- 0,0,3,0,0,0,51,0,0,0,115,27,0,0,0,124,
- 0,0,93,17,0,125,1,0,124,1,0,136,0,0,102,2,
- 0,86,1,113,3,0,100,0,0,83,41,1,78,114,4,0,
- 0,0,41,2,114,22,0,0,0,114,225,0,0,0,41,1,
- 114,127,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 227,0,0,0,157,4,0,0,115,2,0,0,0,6,0,122,
- 38,70,105,108,101,70,105,110,100,101,114,46,95,95,105,110,
- 105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,103,
- 101,110,101,120,112,114,62,114,58,0,0,0,114,29,0,0,
- 0,78,114,87,0,0,0,41,7,114,149,0,0,0,218,8,
- 95,108,111,97,100,101,114,115,114,35,0,0,0,218,11,95,
- 112,97,116,104,95,109,116,105,109,101,218,3,115,101,116,218,
- 11,95,112,97,116,104,95,99,97,99,104,101,218,19,95,114,
- 101,108,97,120,101,100,95,112,97,116,104,95,99,97,99,104,
- 101,41,5,114,108,0,0,0,114,35,0,0,0,218,14,108,
- 111,97,100,101,114,95,100,101,116,97,105,108,115,90,7,108,
- 111,97,100,101,114,115,114,166,0,0,0,114,4,0,0,0,
- 41,1,114,127,0,0,0,114,5,0,0,0,114,185,0,0,
- 0,151,4,0,0,115,16,0,0,0,0,4,6,1,19,1,
- 36,1,9,2,15,1,9,1,12,1,122,19,70,105,108,101,
- 70,105,110,100,101,114,46,95,95,105,110,105,116,95,95,99,
- 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,
- 67,0,0,0,115,13,0,0,0,100,3,0,124,0,0,95,
- 0,0,100,2,0,83,41,4,122,31,73,110,118,97,108,105,
- 100,97,116,101,32,116,104,101,32,100,105,114,101,99,116,111,
- 114,121,32,109,116,105,109,101,46,114,29,0,0,0,78,114,
- 87,0,0,0,41,1,114,8,1,0,0,41,1,114,108,0,
+ 187,0,0,0,251,3,0,0,115,6,0,0,0,0,7,9,
+ 1,10,1,122,28,95,78,97,109,101,115,112,97,99,101,76,
+ 111,97,100,101,114,46,108,111,97,100,95,109,111,100,117,108,
+ 101,78,41,12,114,105,0,0,0,114,104,0,0,0,114,106,
+ 0,0,0,114,179,0,0,0,114,177,0,0,0,114,244,0,
+ 0,0,114,153,0,0,0,114,196,0,0,0,114,181,0,0,
+ 0,114,180,0,0,0,114,185,0,0,0,114,187,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,114,243,0,0,0,223,3,0,0,115,16,0,
+ 0,0,12,1,12,3,18,9,12,3,12,3,12,3,12,3,
+ 12,3,114,243,0,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,5,0,0,0,64,0,0,0,115,160,0,0,
+ 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,
+ 90,3,0,101,4,0,100,2,0,100,3,0,132,0,0,131,
+ 1,0,90,5,0,101,4,0,100,4,0,100,5,0,132,0,
+ 0,131,1,0,90,6,0,101,4,0,100,6,0,100,7,0,
+ 132,0,0,131,1,0,90,7,0,101,4,0,100,8,0,100,
+ 9,0,132,0,0,131,1,0,90,8,0,101,4,0,100,10,
+ 0,100,11,0,100,12,0,132,1,0,131,1,0,90,9,0,
+ 101,4,0,100,10,0,100,10,0,100,13,0,100,14,0,132,
+ 2,0,131,1,0,90,10,0,101,4,0,100,10,0,100,15,
+ 0,100,16,0,132,1,0,131,1,0,90,11,0,100,10,0,
+ 83,41,17,218,10,80,97,116,104,70,105,110,100,101,114,122,
+ 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101,
+ 114,32,102,111,114,32,115,121,115,46,112,97,116,104,32,97,
+ 110,100,32,112,97,99,107,97,103,101,32,95,95,112,97,116,
+ 104,95,95,32,97,116,116,114,105,98,117,116,101,115,46,99,
+ 1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,
+ 67,0,0,0,115,55,0,0,0,120,48,0,116,0,0,106,
+ 1,0,106,2,0,131,0,0,68,93,31,0,125,1,0,116,
+ 3,0,124,1,0,100,1,0,131,2,0,114,16,0,124,1,
+ 0,106,4,0,131,0,0,1,113,16,0,87,100,2,0,83,
+ 41,3,122,125,67,97,108,108,32,116,104,101,32,105,110,118,
+ 97,108,105,100,97,116,101,95,99,97,99,104,101,115,40,41,
+ 32,109,101,116,104,111,100,32,111,110,32,97,108,108,32,112,
+ 97,116,104,32,101,110,116,114,121,32,102,105,110,100,101,114,
+ 115,10,32,32,32,32,32,32,32,32,115,116,111,114,101,100,
+ 32,105,110,32,115,121,115,46,112,97,116,104,95,105,109,112,
+ 111,114,116,101,114,95,99,97,99,104,101,115,32,40,119,104,
+ 101,114,101,32,105,109,112,108,101,109,101,110,116,101,100,41,
+ 46,218,17,105,110,118,97,108,105,100,97,116,101,95,99,97,
+ 99,104,101,115,78,41,5,114,7,0,0,0,218,19,112,97,
+ 116,104,95,105,109,112,111,114,116,101,114,95,99,97,99,104,
+ 101,218,6,118,97,108,117,101,115,114,108,0,0,0,114,246,
+ 0,0,0,41,2,114,164,0,0,0,218,6,102,105,110,100,
+ 101,114,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,246,0,0,0,13,4,0,0,115,6,0,0,0,0,
+ 4,22,1,15,1,122,28,80,97,116,104,70,105,110,100,101,
+ 114,46,105,110,118,97,108,105,100,97,116,101,95,99,97,99,
+ 104,101,115,99,2,0,0,0,0,0,0,0,3,0,0,0,
+ 12,0,0,0,67,0,0,0,115,107,0,0,0,116,0,0,
+ 106,1,0,100,1,0,107,9,0,114,41,0,116,0,0,106,
+ 1,0,12,114,41,0,116,2,0,106,3,0,100,2,0,116,
+ 4,0,131,2,0,1,120,59,0,116,0,0,106,1,0,68,
+ 93,44,0,125,2,0,121,14,0,124,2,0,124,1,0,131,
+ 1,0,83,87,113,51,0,4,116,5,0,107,10,0,114,94,
+ 0,1,1,1,119,51,0,89,113,51,0,88,113,51,0,87,
+ 100,1,0,83,100,1,0,83,41,3,122,113,83,101,97,114,
+ 99,104,32,115,101,113,117,101,110,99,101,32,111,102,32,104,
+ 111,111,107,115,32,102,111,114,32,97,32,102,105,110,100,101,
+ 114,32,102,111,114,32,39,112,97,116,104,39,46,10,10,32,
+ 32,32,32,32,32,32,32,73,102,32,39,104,111,111,107,115,
+ 39,32,105,115,32,102,97,108,115,101,32,116,104,101,110,32,
+ 117,115,101,32,115,121,115,46,112,97,116,104,95,104,111,111,
+ 107,115,46,10,10,32,32,32,32,32,32,32,32,78,122,23,
+ 115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,105,
+ 115,32,101,109,112,116,121,41,6,114,7,0,0,0,218,10,
+ 112,97,116,104,95,104,111,111,107,115,114,60,0,0,0,114,
+ 61,0,0,0,114,118,0,0,0,114,99,0,0,0,41,3,
+ 114,164,0,0,0,114,35,0,0,0,90,4,104,111,111,107,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
+ 11,95,112,97,116,104,95,104,111,111,107,115,21,4,0,0,
+ 115,16,0,0,0,0,7,25,1,16,1,16,1,3,1,14,
+ 1,13,1,12,2,122,22,80,97,116,104,70,105,110,100,101,
+ 114,46,95,112,97,116,104,95,104,111,111,107,115,99,2,0,
+ 0,0,0,0,0,0,3,0,0,0,19,0,0,0,67,0,
+ 0,0,115,123,0,0,0,124,1,0,100,1,0,107,2,0,
+ 114,53,0,121,16,0,116,0,0,106,1,0,131,0,0,125,
+ 1,0,87,110,22,0,4,116,2,0,107,10,0,114,52,0,
+ 1,1,1,100,2,0,83,89,110,1,0,88,121,17,0,116,
+ 3,0,106,4,0,124,1,0,25,125,2,0,87,110,46,0,
+ 4,116,5,0,107,10,0,114,118,0,1,1,1,124,0,0,
+ 106,6,0,124,1,0,131,1,0,125,2,0,124,2,0,116,
+ 3,0,106,4,0,124,1,0,60,89,110,1,0,88,124,2,
+ 0,83,41,3,122,210,71,101,116,32,116,104,101,32,102,105,
+ 110,100,101,114,32,102,111,114,32,116,104,101,32,112,97,116,
+ 104,32,101,110,116,114,121,32,102,114,111,109,32,115,121,115,
+ 46,112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,
+ 97,99,104,101,46,10,10,32,32,32,32,32,32,32,32,73,
+ 102,32,116,104,101,32,112,97,116,104,32,101,110,116,114,121,
+ 32,105,115,32,110,111,116,32,105,110,32,116,104,101,32,99,
+ 97,99,104,101,44,32,102,105,110,100,32,116,104,101,32,97,
+ 112,112,114,111,112,114,105,97,116,101,32,102,105,110,100,101,
+ 114,10,32,32,32,32,32,32,32,32,97,110,100,32,99,97,
+ 99,104,101,32,105,116,46,32,73,102,32,110,111,32,102,105,
+ 110,100,101,114,32,105,115,32,97,118,97,105,108,97,98,108,
+ 101,44,32,115,116,111,114,101,32,78,111,110,101,46,10,10,
+ 32,32,32,32,32,32,32,32,114,30,0,0,0,78,41,7,
+ 114,3,0,0,0,114,45,0,0,0,218,17,70,105,108,101,
+ 78,111,116,70,111,117,110,100,69,114,114,111,114,114,7,0,
+ 0,0,114,247,0,0,0,114,131,0,0,0,114,251,0,0,
+ 0,41,3,114,164,0,0,0,114,35,0,0,0,114,249,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,250,0,0,0,165,4,0,0,115,2,0,0,0,0,
- 2,122,28,70,105,108,101,70,105,110,100,101,114,46,105,110,
- 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,99,
- 2,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,
- 67,0,0,0,115,59,0,0,0,124,0,0,106,0,0,124,
- 1,0,131,1,0,125,2,0,124,2,0,100,1,0,107,8,
- 0,114,37,0,100,1,0,103,0,0,102,2,0,83,124,2,
- 0,106,1,0,124,2,0,106,2,0,112,55,0,103,0,0,
- 102,2,0,83,41,2,122,197,84,114,121,32,116,111,32,102,
- 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114,
- 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109,
- 111,100,117,108,101,44,32,111,114,32,116,104,101,32,110,97,
- 109,101,115,112,97,99,101,10,32,32,32,32,32,32,32,32,
- 112,97,99,107,97,103,101,32,112,111,114,116,105,111,110,115,
- 46,32,82,101,116,117,114,110,115,32,40,108,111,97,100,101,
- 114,44,32,108,105,115,116,45,111,102,45,112,111,114,116,105,
- 111,110,115,41,46,10,10,32,32,32,32,32,32,32,32,84,
- 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,
- 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,102,
- 105,110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,
- 97,100,46,10,10,32,32,32,32,32,32,32,32,78,41,3,
- 114,181,0,0,0,114,127,0,0,0,114,156,0,0,0,41,
- 3,114,108,0,0,0,114,126,0,0,0,114,164,0,0,0,
- 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 124,0,0,0,171,4,0,0,115,8,0,0,0,0,7,15,
- 1,12,1,10,1,122,22,70,105,108,101,70,105,110,100,101,
- 114,46,102,105,110,100,95,108,111,97,100,101,114,99,6,0,
- 0,0,0,0,0,0,7,0,0,0,7,0,0,0,67,0,
- 0,0,115,40,0,0,0,124,1,0,124,2,0,124,3,0,
- 131,2,0,125,6,0,116,0,0,124,2,0,124,3,0,100,
- 1,0,124,6,0,100,2,0,124,4,0,131,2,2,83,41,
- 3,78,114,127,0,0,0,114,156,0,0,0,41,1,114,167,
- 0,0,0,41,7,114,108,0,0,0,114,165,0,0,0,114,
- 126,0,0,0,114,35,0,0,0,90,4,115,109,115,108,114,
- 180,0,0,0,114,127,0,0,0,114,4,0,0,0,114,4,
- 0,0,0,114,5,0,0,0,114,5,1,0,0,183,4,0,
- 0,115,6,0,0,0,0,1,15,1,18,1,122,20,70,105,
- 108,101,70,105,110,100,101,114,46,95,103,101,116,95,115,112,
- 101,99,78,99,3,0,0,0,0,0,0,0,14,0,0,0,
- 15,0,0,0,67,0,0,0,115,234,1,0,0,100,1,0,
- 125,3,0,124,1,0,106,0,0,100,2,0,131,1,0,100,
- 3,0,25,125,4,0,121,34,0,116,1,0,124,0,0,106,
- 2,0,112,49,0,116,3,0,106,4,0,131,0,0,131,1,
- 0,106,5,0,125,5,0,87,110,24,0,4,116,6,0,107,
- 10,0,114,85,0,1,1,1,100,10,0,125,5,0,89,110,
- 1,0,88,124,5,0,124,0,0,106,7,0,107,3,0,114,
- 120,0,124,0,0,106,8,0,131,0,0,1,124,5,0,124,
- 0,0,95,7,0,116,9,0,131,0,0,114,153,0,124,0,
- 0,106,10,0,125,6,0,124,4,0,106,11,0,131,0,0,
- 125,7,0,110,15,0,124,0,0,106,12,0,125,6,0,124,
- 4,0,125,7,0,124,7,0,124,6,0,107,6,0,114,45,
- 1,116,13,0,124,0,0,106,2,0,124,4,0,131,2,0,
- 125,8,0,120,100,0,124,0,0,106,14,0,68,93,77,0,
- 92,2,0,125,9,0,125,10,0,100,5,0,124,9,0,23,
- 125,11,0,116,13,0,124,8,0,124,11,0,131,2,0,125,
- 12,0,116,15,0,124,12,0,131,1,0,114,208,0,124,0,
- 0,106,16,0,124,10,0,124,1,0,124,12,0,124,8,0,
- 103,1,0,124,2,0,131,5,0,83,113,208,0,87,116,17,
- 0,124,8,0,131,1,0,125,3,0,120,123,0,124,0,0,
- 106,14,0,68,93,112,0,92,2,0,125,9,0,125,10,0,
- 116,13,0,124,0,0,106,2,0,124,4,0,124,9,0,23,
- 131,2,0,125,12,0,116,18,0,100,6,0,106,19,0,124,
- 12,0,131,1,0,100,7,0,100,3,0,131,1,1,1,124,
- 7,0,124,9,0,23,124,6,0,107,6,0,114,55,1,116,
- 15,0,124,12,0,131,1,0,114,55,1,124,0,0,106,16,
- 0,124,10,0,124,1,0,124,12,0,100,8,0,124,2,0,
- 131,5,0,83,113,55,1,87,124,3,0,114,230,1,116,18,
- 0,100,9,0,106,19,0,124,8,0,131,1,0,131,1,0,
- 1,116,20,0,106,21,0,124,1,0,100,8,0,131,2,0,
- 125,13,0,124,8,0,103,1,0,124,13,0,95,22,0,124,
- 13,0,83,100,8,0,83,41,11,122,125,84,114,121,32,116,
- 111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,32,
- 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,
- 100,32,109,111,100,117,108,101,44,32,111,114,32,116,104,101,
- 32,110,97,109,101,115,112,97,99,101,10,32,32,32,32,32,
- 32,32,32,112,97,99,107,97,103,101,32,112,111,114,116,105,
- 111,110,115,46,32,82,101,116,117,114,110,115,32,40,108,111,
- 97,100,101,114,44,32,108,105,115,116,45,111,102,45,112,111,
- 114,116,105,111,110,115,41,46,70,114,58,0,0,0,114,56,
- 0,0,0,114,29,0,0,0,114,185,0,0,0,122,9,116,
- 114,121,105,110,103,32,123,125,114,98,0,0,0,78,122,25,
- 112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,97,
- 99,101,32,102,111,114,32,123,125,114,87,0,0,0,41,23,
- 114,32,0,0,0,114,39,0,0,0,114,35,0,0,0,114,
- 3,0,0,0,114,45,0,0,0,114,219,0,0,0,114,40,
- 0,0,0,114,8,1,0,0,218,11,95,102,105,108,108,95,
- 99,97,99,104,101,114,6,0,0,0,114,11,1,0,0,114,
- 88,0,0,0,114,10,1,0,0,114,28,0,0,0,114,7,
- 1,0,0,114,44,0,0,0,114,5,1,0,0,114,46,0,
- 0,0,114,105,0,0,0,114,47,0,0,0,114,121,0,0,
- 0,114,160,0,0,0,114,156,0,0,0,41,14,114,108,0,
- 0,0,114,126,0,0,0,114,180,0,0,0,90,12,105,115,
- 95,110,97,109,101,115,112,97,99,101,90,11,116,97,105,108,
- 95,109,111,100,117,108,101,114,133,0,0,0,90,5,99,97,
- 99,104,101,90,12,99,97,99,104,101,95,109,111,100,117,108,
- 101,90,9,98,97,115,101,95,112,97,116,104,114,225,0,0,
- 0,114,165,0,0,0,90,13,105,110,105,116,95,102,105,108,
- 101,110,97,109,101,90,9,102,117,108,108,95,112,97,116,104,
- 114,164,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,114,181,0,0,0,188,4,0,0,115,68,0,
- 0,0,0,3,6,1,19,1,3,1,34,1,13,1,11,1,
- 15,1,10,1,9,2,9,1,9,1,15,2,9,1,6,2,
- 12,1,18,1,22,1,10,1,15,1,12,1,32,4,12,2,
- 22,1,22,1,25,1,16,1,12,1,29,1,6,1,19,1,
- 18,1,12,1,4,1,122,20,70,105,108,101,70,105,110,100,
- 101,114,46,102,105,110,100,95,115,112,101,99,99,1,0,0,
- 0,0,0,0,0,9,0,0,0,13,0,0,0,67,0,0,
- 0,115,11,1,0,0,124,0,0,106,0,0,125,1,0,121,
- 31,0,116,1,0,106,2,0,124,1,0,112,33,0,116,1,
- 0,106,3,0,131,0,0,131,1,0,125,2,0,87,110,33,
- 0,4,116,4,0,116,5,0,116,6,0,102,3,0,107,10,
- 0,114,75,0,1,1,1,103,0,0,125,2,0,89,110,1,
- 0,88,116,7,0,106,8,0,106,9,0,100,1,0,131,1,
- 0,115,112,0,116,10,0,124,2,0,131,1,0,124,0,0,
- 95,11,0,110,111,0,116,10,0,131,0,0,125,3,0,120,
- 90,0,124,2,0,68,93,82,0,125,4,0,124,4,0,106,
- 12,0,100,2,0,131,1,0,92,3,0,125,5,0,125,6,
- 0,125,7,0,124,6,0,114,191,0,100,3,0,106,13,0,
- 124,5,0,124,7,0,106,14,0,131,0,0,131,2,0,125,
- 8,0,110,6,0,124,5,0,125,8,0,124,3,0,106,15,
- 0,124,8,0,131,1,0,1,113,128,0,87,124,3,0,124,
- 0,0,95,11,0,116,7,0,106,8,0,106,9,0,116,16,
- 0,131,1,0,114,7,1,100,4,0,100,5,0,132,0,0,
- 124,2,0,68,131,1,0,124,0,0,95,17,0,100,6,0,
- 83,41,7,122,68,70,105,108,108,32,116,104,101,32,99,97,
- 99,104,101,32,111,102,32,112,111,116,101,110,116,105,97,108,
- 32,109,111,100,117,108,101,115,32,97,110,100,32,112,97,99,
- 107,97,103,101,115,32,102,111,114,32,116,104,105,115,32,100,
- 105,114,101,99,116,111,114,121,46,114,0,0,0,0,114,58,
- 0,0,0,122,5,123,125,46,123,125,99,1,0,0,0,0,
- 0,0,0,2,0,0,0,3,0,0,0,83,0,0,0,115,
- 28,0,0,0,104,0,0,124,0,0,93,18,0,125,1,0,
- 124,1,0,106,0,0,131,0,0,146,2,0,113,6,0,83,
- 114,4,0,0,0,41,1,114,88,0,0,0,41,2,114,22,
- 0,0,0,90,2,102,110,114,4,0,0,0,114,4,0,0,
- 0,114,5,0,0,0,250,9,60,115,101,116,99,111,109,112,
- 62,6,5,0,0,115,2,0,0,0,9,0,122,41,70,105,
- 108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,
- 97,99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,
- 101,116,99,111,109,112,62,78,41,18,114,35,0,0,0,114,
- 3,0,0,0,90,7,108,105,115,116,100,105,114,114,45,0,
- 0,0,114,0,1,0,0,218,15,80,101,114,109,105,115,115,
- 105,111,110,69,114,114,111,114,218,18,78,111,116,65,68,105,
- 114,101,99,116,111,114,121,69,114,114,111,114,114,7,0,0,
- 0,114,8,0,0,0,114,9,0,0,0,114,9,1,0,0,
- 114,10,1,0,0,114,83,0,0,0,114,47,0,0,0,114,
- 88,0,0,0,218,3,97,100,100,114,10,0,0,0,114,11,
- 1,0,0,41,9,114,108,0,0,0,114,35,0,0,0,90,
- 8,99,111,110,116,101,110,116,115,90,21,108,111,119,101,114,
- 95,115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,
- 114,245,0,0,0,114,106,0,0,0,114,237,0,0,0,114,
- 225,0,0,0,90,8,110,101,119,95,110,97,109,101,114,4,
- 0,0,0,114,4,0,0,0,114,5,0,0,0,114,13,1,
- 0,0,233,4,0,0,115,34,0,0,0,0,2,9,1,3,
- 1,31,1,22,3,11,3,18,1,18,7,9,1,13,1,24,
- 1,6,1,27,2,6,1,17,1,9,1,18,1,122,22,70,
- 105,108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,
- 99,97,99,104,101,99,1,0,0,0,0,0,0,0,3,0,
- 0,0,3,0,0,0,7,0,0,0,115,25,0,0,0,135,
- 0,0,135,1,0,102,2,0,100,1,0,100,2,0,134,0,
- 0,125,2,0,124,2,0,83,41,3,97,20,1,0,0,65,
- 32,99,108,97,115,115,32,109,101,116,104,111,100,32,119,104,
- 105,99,104,32,114,101,116,117,114,110,115,32,97,32,99,108,
- 111,115,117,114,101,32,116,111,32,117,115,101,32,111,110,32,
- 115,121,115,46,112,97,116,104,95,104,111,111,107,10,32,32,
- 32,32,32,32,32,32,119,104,105,99,104,32,119,105,108,108,
- 32,114,101,116,117,114,110,32,97,110,32,105,110,115,116,97,
- 110,99,101,32,117,115,105,110,103,32,116,104,101,32,115,112,
- 101,99,105,102,105,101,100,32,108,111,97,100,101,114,115,32,
- 97,110,100,32,116,104,101,32,112,97,116,104,10,32,32,32,
- 32,32,32,32,32,99,97,108,108,101,100,32,111,110,32,116,
- 104,101,32,99,108,111,115,117,114,101,46,10,10,32,32,32,
- 32,32,32,32,32,73,102,32,116,104,101,32,112,97,116,104,
- 32,99,97,108,108,101,100,32,111,110,32,116,104,101,32,99,
- 108,111,115,117,114,101,32,105,115,32,110,111,116,32,97,32,
- 100,105,114,101,99,116,111,114,121,44,32,73,109,112,111,114,
- 116,69,114,114,111,114,32,105,115,10,32,32,32,32,32,32,
- 32,32,114,97,105,115,101,100,46,10,10,32,32,32,32,32,
- 32,32,32,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 4,0,0,0,19,0,0,0,115,43,0,0,0,116,0,0,
- 124,0,0,131,1,0,115,30,0,116,1,0,100,1,0,100,
- 2,0,124,0,0,131,1,1,130,1,0,136,0,0,124,0,
- 0,136,1,0,140,1,0,83,41,3,122,45,80,97,116,104,
- 32,104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,
- 108,105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,
- 108,101,70,105,110,100,101,114,46,122,30,111,110,108,121,32,
- 100,105,114,101,99,116,111,114,105,101,115,32,97,114,101,32,
- 115,117,112,112,111,114,116,101,100,114,35,0,0,0,41,2,
- 114,46,0,0,0,114,107,0,0,0,41,1,114,35,0,0,
- 0,41,2,114,170,0,0,0,114,12,1,0,0,114,4,0,
- 0,0,114,5,0,0,0,218,24,112,97,116,104,95,104,111,
- 111,107,95,102,111,114,95,70,105,108,101,70,105,110,100,101,
- 114,18,5,0,0,115,6,0,0,0,0,2,12,1,18,1,
- 122,54,70,105,108,101,70,105,110,100,101,114,46,112,97,116,
- 104,95,104,111,111,107,46,60,108,111,99,97,108,115,62,46,
+ 0,218,20,95,112,97,116,104,95,105,109,112,111,114,116,101,
+ 114,95,99,97,99,104,101,38,4,0,0,115,22,0,0,0,
+ 0,8,12,1,3,1,16,1,13,3,9,1,3,1,17,1,
+ 13,1,15,1,18,1,122,31,80,97,116,104,70,105,110,100,
+ 101,114,46,95,112,97,116,104,95,105,109,112,111,114,116,101,
+ 114,95,99,97,99,104,101,99,3,0,0,0,0,0,0,0,
+ 6,0,0,0,3,0,0,0,67,0,0,0,115,119,0,0,
+ 0,116,0,0,124,2,0,100,1,0,131,2,0,114,39,0,
+ 124,2,0,106,1,0,124,1,0,131,1,0,92,2,0,125,
+ 3,0,125,4,0,110,21,0,124,2,0,106,2,0,124,1,
+ 0,131,1,0,125,3,0,103,0,0,125,4,0,124,3,0,
+ 100,0,0,107,9,0,114,88,0,116,3,0,106,4,0,124,
+ 1,0,124,3,0,131,2,0,83,116,3,0,106,5,0,124,
+ 1,0,100,0,0,131,2,0,125,5,0,124,4,0,124,5,
+ 0,95,6,0,124,5,0,83,41,2,78,114,117,0,0,0,
+ 41,7,114,108,0,0,0,114,117,0,0,0,114,176,0,0,
+ 0,114,114,0,0,0,114,173,0,0,0,114,154,0,0,0,
+ 114,150,0,0,0,41,6,114,164,0,0,0,114,119,0,0,
+ 0,114,249,0,0,0,114,120,0,0,0,114,121,0,0,0,
+ 114,158,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,218,16,95,108,101,103,97,99,121,95,103,101,
+ 116,95,115,112,101,99,60,4,0,0,115,18,0,0,0,0,
+ 4,15,1,24,2,15,1,6,1,12,1,16,1,18,1,9,
+ 1,122,27,80,97,116,104,70,105,110,100,101,114,46,95,108,
+ 101,103,97,99,121,95,103,101,116,95,115,112,101,99,78,99,
+ 4,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0,
+ 67,0,0,0,115,243,0,0,0,103,0,0,125,4,0,120,
+ 230,0,124,2,0,68,93,191,0,125,5,0,116,0,0,124,
+ 5,0,116,1,0,116,2,0,102,2,0,131,2,0,115,43,
+ 0,113,13,0,124,0,0,106,3,0,124,5,0,131,1,0,
+ 125,6,0,124,6,0,100,1,0,107,9,0,114,13,0,116,
+ 4,0,124,6,0,100,2,0,131,2,0,114,106,0,124,6,
+ 0,106,5,0,124,1,0,124,3,0,131,2,0,125,7,0,
+ 110,18,0,124,0,0,106,6,0,124,1,0,124,6,0,131,
+ 2,0,125,7,0,124,7,0,100,1,0,107,8,0,114,139,
+ 0,113,13,0,124,7,0,106,7,0,100,1,0,107,9,0,
+ 114,158,0,124,7,0,83,124,7,0,106,8,0,125,8,0,
+ 124,8,0,100,1,0,107,8,0,114,191,0,116,9,0,100,
+ 3,0,131,1,0,130,1,0,124,4,0,106,10,0,124,8,
+ 0,131,1,0,1,113,13,0,87,116,11,0,106,12,0,124,
+ 1,0,100,1,0,131,2,0,125,7,0,124,4,0,124,7,
+ 0,95,8,0,124,7,0,83,100,1,0,83,41,4,122,63,
+ 70,105,110,100,32,116,104,101,32,108,111,97,100,101,114,32,
+ 111,114,32,110,97,109,101,115,112,97,99,101,95,112,97,116,
+ 104,32,102,111,114,32,116,104,105,115,32,109,111,100,117,108,
+ 101,47,112,97,99,107,97,103,101,32,110,97,109,101,46,78,
+ 114,175,0,0,0,122,19,115,112,101,99,32,109,105,115,115,
+ 105,110,103,32,108,111,97,100,101,114,41,13,114,137,0,0,
+ 0,114,69,0,0,0,218,5,98,121,116,101,115,114,253,0,
+ 0,0,114,108,0,0,0,114,175,0,0,0,114,254,0,0,
+ 0,114,120,0,0,0,114,150,0,0,0,114,99,0,0,0,
+ 114,143,0,0,0,114,114,0,0,0,114,154,0,0,0,41,
+ 9,114,164,0,0,0,114,119,0,0,0,114,35,0,0,0,
+ 114,174,0,0,0,218,14,110,97,109,101,115,112,97,99,101,
+ 95,112,97,116,104,90,5,101,110,116,114,121,114,249,0,0,
+ 0,114,158,0,0,0,114,121,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,9,95,103,101,116,
+ 95,115,112,101,99,75,4,0,0,115,40,0,0,0,0,5,
+ 6,1,13,1,21,1,3,1,15,1,12,1,15,1,21,2,
+ 18,1,12,1,3,1,15,1,4,1,9,1,12,1,12,5,
+ 17,2,18,1,9,1,122,20,80,97,116,104,70,105,110,100,
+ 101,114,46,95,103,101,116,95,115,112,101,99,99,4,0,0,
+ 0,0,0,0,0,6,0,0,0,4,0,0,0,67,0,0,
+ 0,115,140,0,0,0,124,2,0,100,1,0,107,8,0,114,
+ 21,0,116,0,0,106,1,0,125,2,0,124,0,0,106,2,
+ 0,124,1,0,124,2,0,124,3,0,131,3,0,125,4,0,
+ 124,4,0,100,1,0,107,8,0,114,58,0,100,1,0,83,
+ 124,4,0,106,3,0,100,1,0,107,8,0,114,132,0,124,
+ 4,0,106,4,0,125,5,0,124,5,0,114,125,0,100,2,
+ 0,124,4,0,95,5,0,116,6,0,124,1,0,124,5,0,
+ 124,0,0,106,2,0,131,3,0,124,4,0,95,4,0,124,
+ 4,0,83,100,1,0,83,110,4,0,124,4,0,83,100,1,
+ 0,83,41,3,122,98,102,105,110,100,32,116,104,101,32,109,
+ 111,100,117,108,101,32,111,110,32,115,121,115,46,112,97,116,
+ 104,32,111,114,32,39,112,97,116,104,39,32,98,97,115,101,
+ 100,32,111,110,32,115,121,115,46,112,97,116,104,95,104,111,
+ 111,107,115,32,97,110,100,10,32,32,32,32,32,32,32,32,
+ 115,121,115,46,112,97,116,104,95,105,109,112,111,114,116,101,
+ 114,95,99,97,99,104,101,46,78,90,9,110,97,109,101,115,
+ 112,97,99,101,41,7,114,7,0,0,0,114,35,0,0,0,
+ 114,1,1,0,0,114,120,0,0,0,114,150,0,0,0,114,
+ 152,0,0,0,114,224,0,0,0,41,6,114,164,0,0,0,
+ 114,119,0,0,0,114,35,0,0,0,114,174,0,0,0,114,
+ 158,0,0,0,114,0,1,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,175,0,0,0,107,4,0,
+ 0,115,26,0,0,0,0,4,12,1,9,1,21,1,12,1,
+ 4,1,15,1,9,1,6,3,9,1,24,1,4,2,7,2,
+ 122,20,80,97,116,104,70,105,110,100,101,114,46,102,105,110,
+ 100,95,115,112,101,99,99,3,0,0,0,0,0,0,0,4,
+ 0,0,0,3,0,0,0,67,0,0,0,115,41,0,0,0,
+ 124,0,0,106,0,0,124,1,0,124,2,0,131,2,0,125,
+ 3,0,124,3,0,100,1,0,107,8,0,114,34,0,100,1,
+ 0,83,124,3,0,106,1,0,83,41,2,122,170,102,105,110,
+ 100,32,116,104,101,32,109,111,100,117,108,101,32,111,110,32,
+ 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116,
+ 104,39,32,98,97,115,101,100,32,111,110,32,115,121,115,46,
+ 112,97,116,104,95,104,111,111,107,115,32,97,110,100,10,32,
+ 32,32,32,32,32,32,32,115,121,115,46,112,97,116,104,95,
+ 105,109,112,111,114,116,101,114,95,99,97,99,104,101,46,10,
+ 10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,
+ 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,
+ 101,100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,
+ 101,99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,
+ 32,32,32,32,32,32,32,78,41,2,114,175,0,0,0,114,
+ 120,0,0,0,41,4,114,164,0,0,0,114,119,0,0,0,
+ 114,35,0,0,0,114,158,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,176,0,0,0,129,4,
+ 0,0,115,8,0,0,0,0,8,18,1,12,1,4,1,122,
+ 22,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,
+ 95,109,111,100,117,108,101,41,12,114,105,0,0,0,114,104,
+ 0,0,0,114,106,0,0,0,114,107,0,0,0,114,177,0,
+ 0,0,114,246,0,0,0,114,251,0,0,0,114,253,0,0,
+ 0,114,254,0,0,0,114,1,1,0,0,114,175,0,0,0,
+ 114,176,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,245,0,0,0,9,4,
+ 0,0,115,22,0,0,0,12,2,6,2,18,8,18,17,18,
+ 22,18,15,3,1,18,31,3,1,21,21,3,1,114,245,0,
+ 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,
+ 0,0,0,64,0,0,0,115,133,0,0,0,101,0,0,90,
+ 1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,
+ 0,100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,
+ 132,0,0,90,5,0,101,6,0,90,7,0,100,6,0,100,
+ 7,0,132,0,0,90,8,0,100,8,0,100,9,0,132,0,
+ 0,90,9,0,100,10,0,100,11,0,100,12,0,132,1,0,
+ 90,10,0,100,13,0,100,14,0,132,0,0,90,11,0,101,
+ 12,0,100,15,0,100,16,0,132,0,0,131,1,0,90,13,
+ 0,100,17,0,100,18,0,132,0,0,90,14,0,100,10,0,
+ 83,41,19,218,10,70,105,108,101,70,105,110,100,101,114,122,
+ 172,70,105,108,101,45,98,97,115,101,100,32,102,105,110,100,
+ 101,114,46,10,10,32,32,32,32,73,110,116,101,114,97,99,
+ 116,105,111,110,115,32,119,105,116,104,32,116,104,101,32,102,
+ 105,108,101,32,115,121,115,116,101,109,32,97,114,101,32,99,
+ 97,99,104,101,100,32,102,111,114,32,112,101,114,102,111,114,
+ 109,97,110,99,101,44,32,98,101,105,110,103,10,32,32,32,
+ 32,114,101,102,114,101,115,104,101,100,32,119,104,101,110,32,
+ 116,104,101,32,100,105,114,101,99,116,111,114,121,32,116,104,
+ 101,32,102,105,110,100,101,114,32,105,115,32,104,97,110,100,
+ 108,105,110,103,32,104,97,115,32,98,101,101,110,32,109,111,
+ 100,105,102,105,101,100,46,10,10,32,32,32,32,99,2,0,
+ 0,0,0,0,0,0,5,0,0,0,5,0,0,0,7,0,
+ 0,0,115,122,0,0,0,103,0,0,125,3,0,120,52,0,
+ 124,2,0,68,93,44,0,92,2,0,137,0,0,125,4,0,
+ 124,3,0,106,0,0,135,0,0,102,1,0,100,1,0,100,
+ 2,0,134,0,0,124,4,0,68,131,1,0,131,1,0,1,
+ 113,13,0,87,124,3,0,124,0,0,95,1,0,124,1,0,
+ 112,79,0,100,3,0,124,0,0,95,2,0,100,6,0,124,
+ 0,0,95,3,0,116,4,0,131,0,0,124,0,0,95,5,
+ 0,116,4,0,131,0,0,124,0,0,95,6,0,100,5,0,
+ 83,41,7,122,154,73,110,105,116,105,97,108,105,122,101,32,
+ 119,105,116,104,32,116,104,101,32,112,97,116,104,32,116,111,
+ 32,115,101,97,114,99,104,32,111,110,32,97,110,100,32,97,
+ 32,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,
+ 32,111,102,10,32,32,32,32,32,32,32,32,50,45,116,117,
+ 112,108,101,115,32,99,111,110,116,97,105,110,105,110,103,32,
+ 116,104,101,32,108,111,97,100,101,114,32,97,110,100,32,116,
+ 104,101,32,102,105,108,101,32,115,117,102,102,105,120,101,115,
+ 32,116,104,101,32,108,111,97,100,101,114,10,32,32,32,32,
+ 32,32,32,32,114,101,99,111,103,110,105,122,101,115,46,99,
+ 1,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
+ 51,0,0,0,115,27,0,0,0,124,0,0,93,17,0,125,
+ 1,0,124,1,0,136,0,0,102,2,0,86,1,113,3,0,
+ 100,0,0,83,41,1,78,114,4,0,0,0,41,2,114,22,
+ 0,0,0,114,219,0,0,0,41,1,114,120,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,221,0,0,0,158,4,
+ 0,0,115,2,0,0,0,6,0,122,38,70,105,108,101,70,
+ 105,110,100,101,114,46,95,95,105,110,105,116,95,95,46,60,
+ 108,111,99,97,108,115,62,46,60,103,101,110,101,120,112,114,
+ 62,114,58,0,0,0,114,29,0,0,0,78,114,87,0,0,
+ 0,41,7,114,143,0,0,0,218,8,95,108,111,97,100,101,
+ 114,115,114,35,0,0,0,218,11,95,112,97,116,104,95,109,
+ 116,105,109,101,218,3,115,101,116,218,11,95,112,97,116,104,
+ 95,99,97,99,104,101,218,19,95,114,101,108,97,120,101,100,
+ 95,112,97,116,104,95,99,97,99,104,101,41,5,114,100,0,
+ 0,0,114,35,0,0,0,218,14,108,111,97,100,101,114,95,
+ 100,101,116,97,105,108,115,90,7,108,111,97,100,101,114,115,
+ 114,160,0,0,0,114,4,0,0,0,41,1,114,120,0,0,
+ 0,114,5,0,0,0,114,179,0,0,0,152,4,0,0,115,
+ 16,0,0,0,0,4,6,1,19,1,36,1,9,2,15,1,
+ 9,1,12,1,122,19,70,105,108,101,70,105,110,100,101,114,
+ 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,
+ 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,13,
+ 0,0,0,100,3,0,124,0,0,95,0,0,100,2,0,83,
+ 41,4,122,31,73,110,118,97,108,105,100,97,116,101,32,116,
+ 104,101,32,100,105,114,101,99,116,111,114,121,32,109,116,105,
+ 109,101,46,114,29,0,0,0,78,114,87,0,0,0,41,1,
+ 114,4,1,0,0,41,1,114,100,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,246,0,0,0,
+ 166,4,0,0,115,2,0,0,0,0,2,122,28,70,105,108,
+ 101,70,105,110,100,101,114,46,105,110,118,97,108,105,100,97,
+ 116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,0,
+ 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,59,
+ 0,0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,
+ 2,0,124,2,0,100,1,0,107,8,0,114,37,0,100,1,
+ 0,103,0,0,102,2,0,83,124,2,0,106,1,0,124,2,
+ 0,106,2,0,112,55,0,103,0,0,102,2,0,83,41,2,
+ 122,197,84,114,121,32,116,111,32,102,105,110,100,32,97,32,
+ 108,111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,
+ 112,101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,
+ 32,111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,
+ 101,10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,
+ 101,32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,
+ 114,110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,
+ 116,45,111,102,45,112,111,114,116,105,111,110,115,41,46,10,
+ 10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,
+ 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,
+ 101,100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,
+ 101,99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,
+ 32,32,32,32,32,32,32,78,41,3,114,175,0,0,0,114,
+ 120,0,0,0,114,150,0,0,0,41,3,114,100,0,0,0,
+ 114,119,0,0,0,114,158,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,117,0,0,0,172,4,
+ 0,0,115,8,0,0,0,0,7,15,1,12,1,10,1,122,
+ 22,70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,
+ 95,108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,
+ 7,0,0,0,7,0,0,0,67,0,0,0,115,40,0,0,
+ 0,124,1,0,124,2,0,124,3,0,131,2,0,125,6,0,
+ 116,0,0,124,2,0,124,3,0,100,1,0,124,6,0,100,
+ 2,0,124,4,0,131,2,2,83,41,3,78,114,120,0,0,
+ 0,114,150,0,0,0,41,1,114,161,0,0,0,41,7,114,
+ 100,0,0,0,114,159,0,0,0,114,119,0,0,0,114,35,
+ 0,0,0,90,4,115,109,115,108,114,174,0,0,0,114,120,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,1,1,0,0,184,4,0,0,115,6,0,0,0,
+ 0,1,15,1,18,1,122,20,70,105,108,101,70,105,110,100,
+ 101,114,46,95,103,101,116,95,115,112,101,99,78,99,3,0,
+ 0,0,0,0,0,0,14,0,0,0,15,0,0,0,67,0,
+ 0,0,115,228,1,0,0,100,1,0,125,3,0,124,1,0,
+ 106,0,0,100,2,0,131,1,0,100,3,0,25,125,4,0,
+ 121,34,0,116,1,0,124,0,0,106,2,0,112,49,0,116,
+ 3,0,106,4,0,131,0,0,131,1,0,106,5,0,125,5,
+ 0,87,110,24,0,4,116,6,0,107,10,0,114,85,0,1,
+ 1,1,100,10,0,125,5,0,89,110,1,0,88,124,5,0,
+ 124,0,0,106,7,0,107,3,0,114,120,0,124,0,0,106,
+ 8,0,131,0,0,1,124,5,0,124,0,0,95,7,0,116,
+ 9,0,131,0,0,114,153,0,124,0,0,106,10,0,125,6,
+ 0,124,4,0,106,11,0,131,0,0,125,7,0,110,15,0,
+ 124,0,0,106,12,0,125,6,0,124,4,0,125,7,0,124,
+ 7,0,124,6,0,107,6,0,114,45,1,116,13,0,124,0,
+ 0,106,2,0,124,4,0,131,2,0,125,8,0,120,100,0,
+ 124,0,0,106,14,0,68,93,77,0,92,2,0,125,9,0,
+ 125,10,0,100,5,0,124,9,0,23,125,11,0,116,13,0,
+ 124,8,0,124,11,0,131,2,0,125,12,0,116,15,0,124,
+ 12,0,131,1,0,114,208,0,124,0,0,106,16,0,124,10,
+ 0,124,1,0,124,12,0,124,8,0,103,1,0,124,2,0,
+ 131,5,0,83,113,208,0,87,116,17,0,124,8,0,131,1,
+ 0,125,3,0,120,120,0,124,0,0,106,14,0,68,93,109,
+ 0,92,2,0,125,9,0,125,10,0,116,13,0,124,0,0,
+ 106,2,0,124,4,0,124,9,0,23,131,2,0,125,12,0,
+ 116,18,0,106,19,0,100,6,0,124,12,0,100,7,0,100,
+ 3,0,131,2,1,1,124,7,0,124,9,0,23,124,6,0,
+ 107,6,0,114,55,1,116,15,0,124,12,0,131,1,0,114,
+ 55,1,124,0,0,106,16,0,124,10,0,124,1,0,124,12,
+ 0,100,8,0,124,2,0,131,5,0,83,113,55,1,87,124,
+ 3,0,114,224,1,116,18,0,106,19,0,100,9,0,124,8,
+ 0,131,2,0,1,116,18,0,106,20,0,124,1,0,100,8,
+ 0,131,2,0,125,13,0,124,8,0,103,1,0,124,13,0,
+ 95,21,0,124,13,0,83,100,8,0,83,41,11,122,125,84,
+ 114,121,32,116,111,32,102,105,110,100,32,97,32,108,111,97,
+ 100,101,114,32,102,111,114,32,116,104,101,32,115,112,101,99,
+ 105,102,105,101,100,32,109,111,100,117,108,101,44,32,111,114,
+ 32,116,104,101,32,110,97,109,101,115,112,97,99,101,10,32,
+ 32,32,32,32,32,32,32,112,97,99,107,97,103,101,32,112,
+ 111,114,116,105,111,110,115,46,32,82,101,116,117,114,110,115,
+ 32,40,108,111,97,100,101,114,44,32,108,105,115,116,45,111,
+ 102,45,112,111,114,116,105,111,110,115,41,46,70,114,58,0,
+ 0,0,114,56,0,0,0,114,29,0,0,0,114,179,0,0,
+ 0,122,9,116,114,121,105,110,103,32,123,125,90,9,118,101,
+ 114,98,111,115,105,116,121,78,122,25,112,111,115,115,105,98,
+ 108,101,32,110,97,109,101,115,112,97,99,101,32,102,111,114,
+ 32,123,125,114,87,0,0,0,41,22,114,32,0,0,0,114,
+ 39,0,0,0,114,35,0,0,0,114,3,0,0,0,114,45,
+ 0,0,0,114,213,0,0,0,114,40,0,0,0,114,4,1,
+ 0,0,218,11,95,102,105,108,108,95,99,97,99,104,101,114,
+ 6,0,0,0,114,7,1,0,0,114,88,0,0,0,114,6,
+ 1,0,0,114,28,0,0,0,114,3,1,0,0,114,44,0,
+ 0,0,114,1,1,0,0,114,46,0,0,0,114,114,0,0,
+ 0,114,129,0,0,0,114,154,0,0,0,114,150,0,0,0,
+ 41,14,114,100,0,0,0,114,119,0,0,0,114,174,0,0,
+ 0,90,12,105,115,95,110,97,109,101,115,112,97,99,101,90,
+ 11,116,97,105,108,95,109,111,100,117,108,101,114,126,0,0,
+ 0,90,5,99,97,99,104,101,90,12,99,97,99,104,101,95,
+ 109,111,100,117,108,101,90,9,98,97,115,101,95,112,97,116,
+ 104,114,219,0,0,0,114,159,0,0,0,90,13,105,110,105,
+ 116,95,102,105,108,101,110,97,109,101,90,9,102,117,108,108,
+ 95,112,97,116,104,114,158,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,175,0,0,0,189,4,
+ 0,0,115,70,0,0,0,0,3,6,1,19,1,3,1,34,
+ 1,13,1,11,1,15,1,10,1,9,2,9,1,9,1,15,
+ 2,9,1,6,2,12,1,18,1,22,1,10,1,15,1,12,
+ 1,32,4,12,2,22,1,22,1,22,1,16,1,12,1,15,
+ 1,14,1,6,1,16,1,18,1,12,1,4,1,122,20,70,
+ 105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,115,
+ 112,101,99,99,1,0,0,0,0,0,0,0,9,0,0,0,
+ 13,0,0,0,67,0,0,0,115,11,1,0,0,124,0,0,
+ 106,0,0,125,1,0,121,31,0,116,1,0,106,2,0,124,
+ 1,0,112,33,0,116,1,0,106,3,0,131,0,0,131,1,
+ 0,125,2,0,87,110,33,0,4,116,4,0,116,5,0,116,
+ 6,0,102,3,0,107,10,0,114,75,0,1,1,1,103,0,
+ 0,125,2,0,89,110,1,0,88,116,7,0,106,8,0,106,
+ 9,0,100,1,0,131,1,0,115,112,0,116,10,0,124,2,
+ 0,131,1,0,124,0,0,95,11,0,110,111,0,116,10,0,
+ 131,0,0,125,3,0,120,90,0,124,2,0,68,93,82,0,
+ 125,4,0,124,4,0,106,12,0,100,2,0,131,1,0,92,
+ 3,0,125,5,0,125,6,0,125,7,0,124,6,0,114,191,
+ 0,100,3,0,106,13,0,124,5,0,124,7,0,106,14,0,
+ 131,0,0,131,2,0,125,8,0,110,6,0,124,5,0,125,
+ 8,0,124,3,0,106,15,0,124,8,0,131,1,0,1,113,
+ 128,0,87,124,3,0,124,0,0,95,11,0,116,7,0,106,
+ 8,0,106,9,0,116,16,0,131,1,0,114,7,1,100,4,
+ 0,100,5,0,132,0,0,124,2,0,68,131,1,0,124,0,
+ 0,95,17,0,100,6,0,83,41,7,122,68,70,105,108,108,
+ 32,116,104,101,32,99,97,99,104,101,32,111,102,32,112,111,
+ 116,101,110,116,105,97,108,32,109,111,100,117,108,101,115,32,
+ 97,110,100,32,112,97,99,107,97,103,101,115,32,102,111,114,
+ 32,116,104,105,115,32,100,105,114,101,99,116,111,114,121,46,
+ 114,0,0,0,0,114,58,0,0,0,122,5,123,125,46,123,
+ 125,99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,
+ 0,0,83,0,0,0,115,28,0,0,0,104,0,0,124,0,
+ 0,93,18,0,125,1,0,124,1,0,106,0,0,131,0,0,
+ 146,2,0,113,6,0,83,114,4,0,0,0,41,1,114,88,
+ 0,0,0,41,2,114,22,0,0,0,90,2,102,110,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,250,9,60,
+ 115,101,116,99,111,109,112,62,8,5,0,0,115,2,0,0,
+ 0,9,0,122,41,70,105,108,101,70,105,110,100,101,114,46,
+ 95,102,105,108,108,95,99,97,99,104,101,46,60,108,111,99,
+ 97,108,115,62,46,60,115,101,116,99,111,109,112,62,78,41,
+ 18,114,35,0,0,0,114,3,0,0,0,90,7,108,105,115,
+ 116,100,105,114,114,45,0,0,0,114,252,0,0,0,218,15,
+ 80,101,114,109,105,115,115,105,111,110,69,114,114,111,114,218,
+ 18,78,111,116,65,68,105,114,101,99,116,111,114,121,69,114,
+ 114,111,114,114,7,0,0,0,114,8,0,0,0,114,9,0,
+ 0,0,114,5,1,0,0,114,6,1,0,0,114,83,0,0,
+ 0,114,47,0,0,0,114,88,0,0,0,218,3,97,100,100,
+ 114,10,0,0,0,114,7,1,0,0,41,9,114,100,0,0,
+ 0,114,35,0,0,0,90,8,99,111,110,116,101,110,116,115,
+ 90,21,108,111,119,101,114,95,115,117,102,102,105,120,95,99,
+ 111,110,116,101,110,116,115,114,241,0,0,0,114,98,0,0,
+ 0,114,231,0,0,0,114,219,0,0,0,90,8,110,101,119,
+ 95,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,114,9,1,0,0,235,4,0,0,115,34,0,
+ 0,0,0,2,9,1,3,1,31,1,22,3,11,3,18,1,
+ 18,7,9,1,13,1,24,1,6,1,27,2,6,1,17,1,
+ 9,1,18,1,122,22,70,105,108,101,70,105,110,100,101,114,
+ 46,95,102,105,108,108,95,99,97,99,104,101,99,1,0,0,
+ 0,0,0,0,0,3,0,0,0,3,0,0,0,7,0,0,
+ 0,115,25,0,0,0,135,0,0,135,1,0,102,2,0,100,
+ 1,0,100,2,0,134,0,0,125,2,0,124,2,0,83,41,
+ 3,97,20,1,0,0,65,32,99,108,97,115,115,32,109,101,
+ 116,104,111,100,32,119,104,105,99,104,32,114,101,116,117,114,
+ 110,115,32,97,32,99,108,111,115,117,114,101,32,116,111,32,
+ 117,115,101,32,111,110,32,115,121,115,46,112,97,116,104,95,
+ 104,111,111,107,10,32,32,32,32,32,32,32,32,119,104,105,
+ 99,104,32,119,105,108,108,32,114,101,116,117,114,110,32,97,
+ 110,32,105,110,115,116,97,110,99,101,32,117,115,105,110,103,
+ 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,108,
+ 111,97,100,101,114,115,32,97,110,100,32,116,104,101,32,112,
+ 97,116,104,10,32,32,32,32,32,32,32,32,99,97,108,108,
+ 101,100,32,111,110,32,116,104,101,32,99,108,111,115,117,114,
+ 101,46,10,10,32,32,32,32,32,32,32,32,73,102,32,116,
+ 104,101,32,112,97,116,104,32,99,97,108,108,101,100,32,111,
+ 110,32,116,104,101,32,99,108,111,115,117,114,101,32,105,115,
+ 32,110,111,116,32,97,32,100,105,114,101,99,116,111,114,121,
+ 44,32,73,109,112,111,114,116,69,114,114,111,114,32,105,115,
+ 10,32,32,32,32,32,32,32,32,114,97,105,115,101,100,46,
+ 10,10,32,32,32,32,32,32,32,32,99,1,0,0,0,0,
+ 0,0,0,1,0,0,0,4,0,0,0,19,0,0,0,115,
+ 43,0,0,0,116,0,0,124,0,0,131,1,0,115,30,0,
+ 116,1,0,100,1,0,100,2,0,124,0,0,131,1,1,130,
+ 1,0,136,0,0,124,0,0,136,1,0,140,1,0,83,41,
+ 3,122,45,80,97,116,104,32,104,111,111,107,32,102,111,114,
+ 32,105,109,112,111,114,116,108,105,98,46,109,97,99,104,105,
+ 110,101,114,121,46,70,105,108,101,70,105,110,100,101,114,46,
+ 122,30,111,110,108,121,32,100,105,114,101,99,116,111,114,105,
+ 101,115,32,97,114,101,32,115,117,112,112,111,114,116,101,100,
+ 114,35,0,0,0,41,2,114,46,0,0,0,114,99,0,0,
+ 0,41,1,114,35,0,0,0,41,2,114,164,0,0,0,114,
+ 8,1,0,0,114,4,0,0,0,114,5,0,0,0,218,24,
112,97,116,104,95,104,111,111,107,95,102,111,114,95,70,105,
- 108,101,70,105,110,100,101,114,114,4,0,0,0,41,3,114,
- 170,0,0,0,114,12,1,0,0,114,18,1,0,0,114,4,
- 0,0,0,41,2,114,170,0,0,0,114,12,1,0,0,114,
- 5,0,0,0,218,9,112,97,116,104,95,104,111,111,107,8,
- 5,0,0,115,4,0,0,0,0,10,21,6,122,20,70,105,
- 108,101,70,105,110,100,101,114,46,112,97,116,104,95,104,111,
- 111,107,99,1,0,0,0,0,0,0,0,1,0,0,0,2,
- 0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,106,
- 0,0,124,0,0,106,1,0,131,1,0,83,41,2,78,122,
- 16,70,105,108,101,70,105,110,100,101,114,40,123,33,114,125,
- 41,41,2,114,47,0,0,0,114,35,0,0,0,41,1,114,
- 108,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
- 0,0,0,114,244,0,0,0,26,5,0,0,115,2,0,0,
- 0,0,1,122,19,70,105,108,101,70,105,110,100,101,114,46,
- 95,95,114,101,112,114,95,95,41,15,114,112,0,0,0,114,
- 111,0,0,0,114,113,0,0,0,114,114,0,0,0,114,185,
- 0,0,0,114,250,0,0,0,114,130,0,0,0,114,182,0,
- 0,0,114,124,0,0,0,114,5,1,0,0,114,181,0,0,
- 0,114,13,1,0,0,114,183,0,0,0,114,19,1,0,0,
- 114,244,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 4,0,0,0,114,5,0,0,0,114,6,1,0,0,142,4,
- 0,0,115,20,0,0,0,12,7,6,2,12,14,12,4,6,
- 2,12,12,12,5,15,45,12,31,18,18,114,6,1,0,0,
- 99,4,0,0,0,0,0,0,0,6,0,0,0,11,0,0,
- 0,67,0,0,0,115,195,0,0,0,124,0,0,106,0,0,
- 100,1,0,131,1,0,125,4,0,124,0,0,106,0,0,100,
- 2,0,131,1,0,125,5,0,124,4,0,115,99,0,124,5,
- 0,114,54,0,124,5,0,106,1,0,125,4,0,110,45,0,
- 124,2,0,124,3,0,107,2,0,114,84,0,116,2,0,124,
- 1,0,124,2,0,131,2,0,125,4,0,110,15,0,116,3,
- 0,124,1,0,124,2,0,131,2,0,125,4,0,124,5,0,
- 115,126,0,116,4,0,124,1,0,124,2,0,100,3,0,124,
- 4,0,131,2,1,125,5,0,121,44,0,124,5,0,124,0,
- 0,100,2,0,60,124,4,0,124,0,0,100,1,0,60,124,
- 2,0,124,0,0,100,4,0,60,124,3,0,124,0,0,100,
- 5,0,60,87,110,18,0,4,116,5,0,107,10,0,114,190,
- 0,1,1,1,89,110,1,0,88,100,0,0,83,41,6,78,
- 218,10,95,95,108,111,97,100,101,114,95,95,218,8,95,95,
- 115,112,101,99,95,95,114,127,0,0,0,90,8,95,95,102,
- 105,108,101,95,95,90,10,95,95,99,97,99,104,101,100,95,
- 95,41,6,218,3,103,101,116,114,127,0,0,0,114,223,0,
- 0,0,114,218,0,0,0,114,167,0,0,0,218,9,69,120,
- 99,101,112,116,105,111,110,41,6,90,2,110,115,114,106,0,
- 0,0,90,8,112,97,116,104,110,97,109,101,90,9,99,112,
- 97,116,104,110,97,109,101,114,127,0,0,0,114,164,0,0,
+ 108,101,70,105,110,100,101,114,20,5,0,0,115,6,0,0,
+ 0,0,2,12,1,18,1,122,54,70,105,108,101,70,105,110,
+ 100,101,114,46,112,97,116,104,95,104,111,111,107,46,60,108,
+ 111,99,97,108,115,62,46,112,97,116,104,95,104,111,111,107,
+ 95,102,111,114,95,70,105,108,101,70,105,110,100,101,114,114,
+ 4,0,0,0,41,3,114,164,0,0,0,114,8,1,0,0,
+ 114,14,1,0,0,114,4,0,0,0,41,2,114,164,0,0,
+ 0,114,8,1,0,0,114,5,0,0,0,218,9,112,97,116,
+ 104,95,104,111,111,107,10,5,0,0,115,4,0,0,0,0,
+ 10,21,6,122,20,70,105,108,101,70,105,110,100,101,114,46,
+ 112,97,116,104,95,104,111,111,107,99,1,0,0,0,0,0,
+ 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,16,
+ 0,0,0,100,1,0,106,0,0,124,0,0,106,1,0,131,
+ 1,0,83,41,2,78,122,16,70,105,108,101,70,105,110,100,
+ 101,114,40,123,33,114,125,41,41,2,114,47,0,0,0,114,
+ 35,0,0,0,41,1,114,100,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,240,0,0,0,28,
+ 5,0,0,115,2,0,0,0,0,1,122,19,70,105,108,101,
+ 70,105,110,100,101,114,46,95,95,114,101,112,114,95,95,41,
+ 15,114,105,0,0,0,114,104,0,0,0,114,106,0,0,0,
+ 114,107,0,0,0,114,179,0,0,0,114,246,0,0,0,114,
+ 123,0,0,0,114,176,0,0,0,114,117,0,0,0,114,1,
+ 1,0,0,114,175,0,0,0,114,9,1,0,0,114,177,0,
+ 0,0,114,15,1,0,0,114,240,0,0,0,114,4,0,0,
0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
- 218,14,95,102,105,120,95,117,112,95,109,111,100,117,108,101,
- 32,5,0,0,115,34,0,0,0,0,2,15,1,15,1,6,
- 1,6,1,12,1,12,1,18,2,15,1,6,1,21,1,3,
- 1,10,1,10,1,10,1,14,1,13,2,114,24,1,0,0,
- 99,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,
- 0,67,0,0,0,115,55,0,0,0,116,0,0,116,1,0,
- 106,2,0,131,0,0,102,2,0,125,0,0,116,3,0,116,
- 4,0,102,2,0,125,1,0,116,5,0,116,6,0,102,2,
- 0,125,2,0,124,0,0,124,1,0,124,2,0,103,3,0,
- 83,41,1,122,95,82,101,116,117,114,110,115,32,97,32,108,
- 105,115,116,32,111,102,32,102,105,108,101,45,98,97,115,101,
- 100,32,109,111,100,117,108,101,32,108,111,97,100,101,114,115,
- 46,10,10,32,32,32,32,69,97,99,104,32,105,116,101,109,
- 32,105,115,32,97,32,116,117,112,108,101,32,40,108,111,97,
- 100,101,114,44,32,115,117,102,102,105,120,101,115,41,46,10,
- 32,32,32,32,41,7,114,224,0,0,0,114,145,0,0,0,
- 218,18,101,120,116,101,110,115,105,111,110,95,115,117,102,102,
- 105,120,101,115,114,218,0,0,0,114,84,0,0,0,114,223,
- 0,0,0,114,74,0,0,0,41,3,90,10,101,120,116,101,
- 110,115,105,111,110,115,90,6,115,111,117,114,99,101,90,8,
- 98,121,116,101,99,111,100,101,114,4,0,0,0,114,4,0,
- 0,0,114,5,0,0,0,114,161,0,0,0,55,5,0,0,
- 115,8,0,0,0,0,5,18,1,12,1,12,1,114,161,0,
- 0,0,99,1,0,0,0,0,0,0,0,12,0,0,0,12,
- 0,0,0,67,0,0,0,115,70,2,0,0,124,0,0,97,
- 0,0,116,0,0,106,1,0,97,1,0,116,0,0,106,2,
- 0,97,2,0,116,1,0,106,3,0,116,4,0,25,125,1,
- 0,120,76,0,100,26,0,68,93,68,0,125,2,0,124,2,
- 0,116,1,0,106,3,0,107,7,0,114,83,0,116,0,0,
- 106,5,0,124,2,0,131,1,0,125,3,0,110,13,0,116,
- 1,0,106,3,0,124,2,0,25,125,3,0,116,6,0,124,
- 1,0,124,2,0,124,3,0,131,3,0,1,113,44,0,87,
- 100,5,0,100,6,0,103,1,0,102,2,0,100,7,0,100,
- 8,0,100,6,0,103,2,0,102,2,0,102,2,0,125,4,
- 0,120,149,0,124,4,0,68,93,129,0,92,2,0,125,5,
- 0,125,6,0,116,7,0,100,9,0,100,10,0,132,0,0,
- 124,6,0,68,131,1,0,131,1,0,115,199,0,116,8,0,
- 130,1,0,124,6,0,100,11,0,25,125,7,0,124,5,0,
- 116,1,0,106,3,0,107,6,0,114,241,0,116,1,0,106,
- 3,0,124,5,0,25,125,8,0,80,113,156,0,121,20,0,
- 116,0,0,106,5,0,124,5,0,131,1,0,125,8,0,80,
- 87,113,156,0,4,116,9,0,107,10,0,114,28,1,1,1,
- 1,119,156,0,89,113,156,0,88,113,156,0,87,116,9,0,
- 100,12,0,131,1,0,130,1,0,116,6,0,124,1,0,100,
- 13,0,124,8,0,131,3,0,1,116,6,0,124,1,0,100,
- 14,0,124,7,0,131,3,0,1,116,6,0,124,1,0,100,
- 15,0,100,16,0,106,10,0,124,6,0,131,1,0,131,3,
- 0,1,121,19,0,116,0,0,106,5,0,100,17,0,131,1,
- 0,125,9,0,87,110,24,0,4,116,9,0,107,10,0,114,
- 147,1,1,1,1,100,18,0,125,9,0,89,110,1,0,88,
- 116,6,0,124,1,0,100,17,0,124,9,0,131,3,0,1,
- 116,0,0,106,5,0,100,19,0,131,1,0,125,10,0,116,
- 6,0,124,1,0,100,19,0,124,10,0,131,3,0,1,124,
- 5,0,100,7,0,107,2,0,114,238,1,116,0,0,106,5,
- 0,100,20,0,131,1,0,125,11,0,116,6,0,124,1,0,
- 100,21,0,124,11,0,131,3,0,1,116,6,0,124,1,0,
- 100,22,0,116,11,0,131,0,0,131,3,0,1,116,12,0,
- 106,13,0,116,2,0,106,14,0,131,0,0,131,1,0,1,
- 124,5,0,100,7,0,107,2,0,114,66,2,116,15,0,106,
- 16,0,100,23,0,131,1,0,1,100,24,0,116,12,0,107,
- 6,0,114,66,2,100,25,0,116,17,0,95,18,0,100,18,
- 0,83,41,27,122,205,83,101,116,117,112,32,116,104,101,32,
- 112,97,116,104,45,98,97,115,101,100,32,105,109,112,111,114,
- 116,101,114,115,32,102,111,114,32,105,109,112,111,114,116,108,
- 105,98,32,98,121,32,105,109,112,111,114,116,105,110,103,32,
- 110,101,101,100,101,100,10,32,32,32,32,98,117,105,108,116,
- 45,105,110,32,109,111,100,117,108,101,115,32,97,110,100,32,
- 105,110,106,101,99,116,105,110,103,32,116,104,101,109,32,105,
- 110,116,111,32,116,104,101,32,103,108,111,98,97,108,32,110,
- 97,109,101,115,112,97,99,101,46,10,10,32,32,32,32,79,
- 116,104,101,114,32,99,111,109,112,111,110,101,110,116,115,32,
- 97,114,101,32,101,120,116,114,97,99,116,101,100,32,102,114,
- 111,109,32,116,104,101,32,99,111,114,101,32,98,111,111,116,
- 115,116,114,97,112,32,109,111,100,117,108,101,46,10,10,32,
- 32,32,32,114,49,0,0,0,114,60,0,0,0,218,8,98,
- 117,105,108,116,105,110,115,114,142,0,0,0,90,5,112,111,
- 115,105,120,250,1,47,218,2,110,116,250,1,92,99,1,0,
- 0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,0,
- 0,0,115,33,0,0,0,124,0,0,93,23,0,125,1,0,
- 116,0,0,124,1,0,131,1,0,100,0,0,107,2,0,86,
- 1,113,3,0,100,1,0,83,41,2,114,29,0,0,0,78,
- 41,1,114,31,0,0,0,41,2,114,22,0,0,0,114,77,
- 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
- 0,0,114,227,0,0,0,91,5,0,0,115,2,0,0,0,
- 6,0,122,25,95,115,101,116,117,112,46,60,108,111,99,97,
- 108,115,62,46,60,103,101,110,101,120,112,114,62,114,59,0,
- 0,0,122,30,105,109,112,111,114,116,108,105,98,32,114,101,
- 113,117,105,114,101,115,32,112,111,115,105,120,32,111,114,32,
- 110,116,114,3,0,0,0,114,25,0,0,0,114,21,0,0,
- 0,114,30,0,0,0,90,7,95,116,104,114,101,97,100,78,
- 90,8,95,119,101,97,107,114,101,102,90,6,119,105,110,114,
- 101,103,114,169,0,0,0,114,6,0,0,0,122,4,46,112,
- 121,119,122,6,95,100,46,112,121,100,84,41,4,122,3,95,
- 105,111,122,9,95,119,97,114,110,105,110,103,115,122,8,98,
- 117,105,108,116,105,110,115,122,7,109,97,114,115,104,97,108,
- 41,19,114,121,0,0,0,114,7,0,0,0,114,145,0,0,
- 0,114,239,0,0,0,114,112,0,0,0,90,18,95,98,117,
- 105,108,116,105,110,95,102,114,111,109,95,110,97,109,101,114,
- 116,0,0,0,218,3,97,108,108,218,14,65,115,115,101,114,
- 116,105,111,110,69,114,114,111,114,114,107,0,0,0,114,26,
- 0,0,0,114,11,0,0,0,114,229,0,0,0,114,149,0,
- 0,0,114,25,1,0,0,114,84,0,0,0,114,163,0,0,
- 0,114,168,0,0,0,114,173,0,0,0,41,12,218,17,95,
- 98,111,111,116,115,116,114,97,112,95,109,111,100,117,108,101,
- 90,11,115,101,108,102,95,109,111,100,117,108,101,90,12,98,
- 117,105,108,116,105,110,95,110,97,109,101,90,14,98,117,105,
- 108,116,105,110,95,109,111,100,117,108,101,90,10,111,115,95,
- 100,101,116,97,105,108,115,90,10,98,117,105,108,116,105,110,
- 95,111,115,114,21,0,0,0,114,25,0,0,0,90,9,111,
- 115,95,109,111,100,117,108,101,90,13,116,104,114,101,97,100,
- 95,109,111,100,117,108,101,90,14,119,101,97,107,114,101,102,
- 95,109,111,100,117,108,101,90,13,119,105,110,114,101,103,95,
- 109,111,100,117,108,101,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,6,95,115,101,116,117,112,66,5,0,
- 0,115,82,0,0,0,0,8,6,1,9,1,9,3,13,1,
- 13,1,15,1,18,2,13,1,20,3,33,1,19,2,31,1,
- 10,1,15,1,13,1,4,2,3,1,15,1,5,1,13,1,
- 12,2,12,1,16,1,16,1,25,3,3,1,19,1,13,2,
- 11,1,16,3,15,1,16,3,12,1,15,1,16,3,19,1,
- 19,1,12,1,13,1,12,1,114,33,1,0,0,99,1,0,
- 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0,
- 0,0,115,116,0,0,0,116,0,0,124,0,0,131,1,0,
- 1,116,1,0,131,0,0,125,1,0,116,2,0,106,3,0,
- 106,4,0,116,5,0,106,6,0,124,1,0,140,0,0,103,
- 1,0,131,1,0,1,116,7,0,106,8,0,100,1,0,107,
- 2,0,114,78,0,116,2,0,106,9,0,106,10,0,116,11,
- 0,131,1,0,1,116,2,0,106,9,0,106,10,0,116,12,
- 0,131,1,0,1,116,5,0,124,0,0,95,5,0,116,13,
- 0,124,0,0,95,13,0,100,2,0,83,41,3,122,41,73,
- 110,115,116,97,108,108,32,116,104,101,32,112,97,116,104,45,
- 98,97,115,101,100,32,105,109,112,111,114,116,32,99,111,109,
- 112,111,110,101,110,116,115,46,114,28,1,0,0,78,41,14,
- 114,33,1,0,0,114,161,0,0,0,114,7,0,0,0,114,
- 254,0,0,0,114,149,0,0,0,114,6,1,0,0,114,19,
- 1,0,0,114,3,0,0,0,114,112,0,0,0,218,9,109,
- 101,116,97,95,112,97,116,104,114,163,0,0,0,114,168,0,
- 0,0,114,249,0,0,0,114,218,0,0,0,41,2,114,32,
- 1,0,0,90,17,115,117,112,112,111,114,116,101,100,95,108,
- 111,97,100,101,114,115,114,4,0,0,0,114,4,0,0,0,
- 114,5,0,0,0,218,8,95,105,110,115,116,97,108,108,134,
- 5,0,0,115,16,0,0,0,0,2,10,1,9,1,28,1,
- 15,1,16,1,16,4,9,1,114,35,1,0,0,41,3,122,
- 3,119,105,110,114,1,0,0,0,114,2,0,0,0,41,57,
- 114,114,0,0,0,114,10,0,0,0,114,11,0,0,0,114,
- 17,0,0,0,114,19,0,0,0,114,28,0,0,0,114,38,
- 0,0,0,114,39,0,0,0,114,43,0,0,0,114,44,0,
- 0,0,114,46,0,0,0,114,55,0,0,0,218,4,116,121,
- 112,101,218,8,95,95,99,111,100,101,95,95,114,144,0,0,
- 0,114,15,0,0,0,114,135,0,0,0,114,14,0,0,0,
- 114,18,0,0,0,90,17,95,82,65,87,95,77,65,71,73,
- 67,95,78,85,77,66,69,82,114,73,0,0,0,114,72,0,
- 0,0,114,84,0,0,0,114,74,0,0,0,90,23,68,69,
- 66,85,71,95,66,89,84,69,67,79,68,69,95,83,85,70,
- 70,73,88,69,83,90,27,79,80,84,73,77,73,90,69,68,
- 95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,88,
- 69,83,114,79,0,0,0,114,85,0,0,0,114,91,0,0,
- 0,114,95,0,0,0,114,97,0,0,0,114,105,0,0,0,
- 114,123,0,0,0,114,130,0,0,0,114,141,0,0,0,114,
- 147,0,0,0,114,150,0,0,0,114,155,0,0,0,218,6,
- 111,98,106,101,99,116,114,162,0,0,0,114,167,0,0,0,
- 114,168,0,0,0,114,184,0,0,0,114,194,0,0,0,114,
- 210,0,0,0,114,218,0,0,0,114,223,0,0,0,114,229,
- 0,0,0,114,224,0,0,0,114,230,0,0,0,114,247,0,
- 0,0,114,249,0,0,0,114,6,1,0,0,114,24,1,0,
- 0,114,161,0,0,0,114,33,1,0,0,114,35,1,0,0,
- 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
- 5,0,0,0,218,8,60,109,111,100,117,108,101,62,8,0,
- 0,0,115,100,0,0,0,6,17,6,3,12,12,12,5,12,
- 5,12,6,12,12,12,10,12,9,12,5,12,7,15,22,15,
- 110,22,1,18,2,6,1,6,2,9,2,9,2,10,2,21,
- 44,12,33,12,19,12,12,12,12,18,8,12,28,12,17,21,
+ 114,2,1,0,0,143,4,0,0,115,20,0,0,0,12,7,
+ 6,2,12,14,12,4,6,2,12,12,12,5,15,46,12,31,
+ 18,18,114,2,1,0,0,99,4,0,0,0,0,0,0,0,
+ 6,0,0,0,11,0,0,0,67,0,0,0,115,195,0,0,
+ 0,124,0,0,106,0,0,100,1,0,131,1,0,125,4,0,
+ 124,0,0,106,0,0,100,2,0,131,1,0,125,5,0,124,
+ 4,0,115,99,0,124,5,0,114,54,0,124,5,0,106,1,
+ 0,125,4,0,110,45,0,124,2,0,124,3,0,107,2,0,
+ 114,84,0,116,2,0,124,1,0,124,2,0,131,2,0,125,
+ 4,0,110,15,0,116,3,0,124,1,0,124,2,0,131,2,
+ 0,125,4,0,124,5,0,115,126,0,116,4,0,124,1,0,
+ 124,2,0,100,3,0,124,4,0,131,2,1,125,5,0,121,
+ 44,0,124,5,0,124,0,0,100,2,0,60,124,4,0,124,
+ 0,0,100,1,0,60,124,2,0,124,0,0,100,4,0,60,
+ 124,3,0,124,0,0,100,5,0,60,87,110,18,0,4,116,
+ 5,0,107,10,0,114,190,0,1,1,1,89,110,1,0,88,
+ 100,0,0,83,41,6,78,218,10,95,95,108,111,97,100,101,
+ 114,95,95,218,8,95,95,115,112,101,99,95,95,114,120,0,
+ 0,0,90,8,95,95,102,105,108,101,95,95,90,10,95,95,
+ 99,97,99,104,101,100,95,95,41,6,218,3,103,101,116,114,
+ 120,0,0,0,114,217,0,0,0,114,212,0,0,0,114,161,
+ 0,0,0,218,9,69,120,99,101,112,116,105,111,110,41,6,
+ 90,2,110,115,114,98,0,0,0,90,8,112,97,116,104,110,
+ 97,109,101,90,9,99,112,97,116,104,110,97,109,101,114,120,
+ 0,0,0,114,158,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,218,14,95,102,105,120,95,117,112,
+ 95,109,111,100,117,108,101,34,5,0,0,115,34,0,0,0,
+ 0,2,15,1,15,1,6,1,6,1,12,1,12,1,18,2,
+ 15,1,6,1,21,1,3,1,10,1,10,1,10,1,14,1,
+ 13,2,114,20,1,0,0,99,0,0,0,0,0,0,0,0,
+ 3,0,0,0,3,0,0,0,67,0,0,0,115,55,0,0,
+ 0,116,0,0,116,1,0,106,2,0,131,0,0,102,2,0,
+ 125,0,0,116,3,0,116,4,0,102,2,0,125,1,0,116,
+ 5,0,116,6,0,102,2,0,125,2,0,124,0,0,124,1,
+ 0,124,2,0,103,3,0,83,41,1,122,95,82,101,116,117,
+ 114,110,115,32,97,32,108,105,115,116,32,111,102,32,102,105,
+ 108,101,45,98,97,115,101,100,32,109,111,100,117,108,101,32,
+ 108,111,97,100,101,114,115,46,10,10,32,32,32,32,69,97,
+ 99,104,32,105,116,101,109,32,105,115,32,97,32,116,117,112,
+ 108,101,32,40,108,111,97,100,101,114,44,32,115,117,102,102,
+ 105,120,101,115,41,46,10,32,32,32,32,41,7,114,218,0,
+ 0,0,114,139,0,0,0,218,18,101,120,116,101,110,115,105,
+ 111,110,95,115,117,102,102,105,120,101,115,114,212,0,0,0,
+ 114,84,0,0,0,114,217,0,0,0,114,74,0,0,0,41,
+ 3,90,10,101,120,116,101,110,115,105,111,110,115,90,6,115,
+ 111,117,114,99,101,90,8,98,121,116,101,99,111,100,101,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,155,
+ 0,0,0,57,5,0,0,115,8,0,0,0,0,5,18,1,
+ 12,1,12,1,114,155,0,0,0,99,1,0,0,0,0,0,
+ 0,0,12,0,0,0,12,0,0,0,67,0,0,0,115,70,
+ 2,0,0,124,0,0,97,0,0,116,0,0,106,1,0,97,
+ 1,0,116,0,0,106,2,0,97,2,0,116,1,0,106,3,
+ 0,116,4,0,25,125,1,0,120,76,0,100,26,0,68,93,
+ 68,0,125,2,0,124,2,0,116,1,0,106,3,0,107,7,
+ 0,114,83,0,116,0,0,106,5,0,124,2,0,131,1,0,
+ 125,3,0,110,13,0,116,1,0,106,3,0,124,2,0,25,
+ 125,3,0,116,6,0,124,1,0,124,2,0,124,3,0,131,
+ 3,0,1,113,44,0,87,100,5,0,100,6,0,103,1,0,
+ 102,2,0,100,7,0,100,8,0,100,6,0,103,2,0,102,
+ 2,0,102,2,0,125,4,0,120,149,0,124,4,0,68,93,
+ 129,0,92,2,0,125,5,0,125,6,0,116,7,0,100,9,
+ 0,100,10,0,132,0,0,124,6,0,68,131,1,0,131,1,
+ 0,115,199,0,116,8,0,130,1,0,124,6,0,100,11,0,
+ 25,125,7,0,124,5,0,116,1,0,106,3,0,107,6,0,
+ 114,241,0,116,1,0,106,3,0,124,5,0,25,125,8,0,
+ 80,113,156,0,121,20,0,116,0,0,106,5,0,124,5,0,
+ 131,1,0,125,8,0,80,87,113,156,0,4,116,9,0,107,
+ 10,0,114,28,1,1,1,1,119,156,0,89,113,156,0,88,
+ 113,156,0,87,116,9,0,100,12,0,131,1,0,130,1,0,
+ 116,6,0,124,1,0,100,13,0,124,8,0,131,3,0,1,
+ 116,6,0,124,1,0,100,14,0,124,7,0,131,3,0,1,
+ 116,6,0,124,1,0,100,15,0,100,16,0,106,10,0,124,
+ 6,0,131,1,0,131,3,0,1,121,19,0,116,0,0,106,
+ 5,0,100,17,0,131,1,0,125,9,0,87,110,24,0,4,
+ 116,9,0,107,10,0,114,147,1,1,1,1,100,18,0,125,
+ 9,0,89,110,1,0,88,116,6,0,124,1,0,100,17,0,
+ 124,9,0,131,3,0,1,116,0,0,106,5,0,100,19,0,
+ 131,1,0,125,10,0,116,6,0,124,1,0,100,19,0,124,
+ 10,0,131,3,0,1,124,5,0,100,7,0,107,2,0,114,
+ 238,1,116,0,0,106,5,0,100,20,0,131,1,0,125,11,
+ 0,116,6,0,124,1,0,100,21,0,124,11,0,131,3,0,
+ 1,116,6,0,124,1,0,100,22,0,116,11,0,131,0,0,
+ 131,3,0,1,116,12,0,106,13,0,116,2,0,106,14,0,
+ 131,0,0,131,1,0,1,124,5,0,100,7,0,107,2,0,
+ 114,66,2,116,15,0,106,16,0,100,23,0,131,1,0,1,
+ 100,24,0,116,12,0,107,6,0,114,66,2,100,25,0,116,
+ 17,0,95,18,0,100,18,0,83,41,27,122,205,83,101,116,
+ 117,112,32,116,104,101,32,112,97,116,104,45,98,97,115,101,
+ 100,32,105,109,112,111,114,116,101,114,115,32,102,111,114,32,
+ 105,109,112,111,114,116,108,105,98,32,98,121,32,105,109,112,
+ 111,114,116,105,110,103,32,110,101,101,100,101,100,10,32,32,
+ 32,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,
+ 101,115,32,97,110,100,32,105,110,106,101,99,116,105,110,103,
+ 32,116,104,101,109,32,105,110,116,111,32,116,104,101,32,103,
+ 108,111,98,97,108,32,110,97,109,101,115,112,97,99,101,46,
+ 10,10,32,32,32,32,79,116,104,101,114,32,99,111,109,112,
+ 111,110,101,110,116,115,32,97,114,101,32,101,120,116,114,97,
+ 99,116,101,100,32,102,114,111,109,32,116,104,101,32,99,111,
+ 114,101,32,98,111,111,116,115,116,114,97,112,32,109,111,100,
+ 117,108,101,46,10,10,32,32,32,32,114,49,0,0,0,114,
+ 60,0,0,0,218,8,98,117,105,108,116,105,110,115,114,136,
+ 0,0,0,90,5,112,111,115,105,120,250,1,47,218,2,110,
+ 116,250,1,92,99,1,0,0,0,0,0,0,0,2,0,0,
+ 0,3,0,0,0,115,0,0,0,115,33,0,0,0,124,0,
+ 0,93,23,0,125,1,0,116,0,0,124,1,0,131,1,0,
+ 100,0,0,107,2,0,86,1,113,3,0,100,1,0,83,41,
+ 2,114,29,0,0,0,78,41,1,114,31,0,0,0,41,2,
+ 114,22,0,0,0,114,77,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,221,0,0,0,93,5,
+ 0,0,115,2,0,0,0,6,0,122,25,95,115,101,116,117,
+ 112,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101,
+ 120,112,114,62,114,59,0,0,0,122,30,105,109,112,111,114,
+ 116,108,105,98,32,114,101,113,117,105,114,101,115,32,112,111,
+ 115,105,120,32,111,114,32,110,116,114,3,0,0,0,114,25,
+ 0,0,0,114,21,0,0,0,114,30,0,0,0,90,7,95,
+ 116,104,114,101,97,100,78,90,8,95,119,101,97,107,114,101,
+ 102,90,6,119,105,110,114,101,103,114,163,0,0,0,114,6,
+ 0,0,0,122,4,46,112,121,119,122,6,95,100,46,112,121,
+ 100,84,41,4,122,3,95,105,111,122,9,95,119,97,114,110,
+ 105,110,103,115,122,8,98,117,105,108,116,105,110,115,122,7,
+ 109,97,114,115,104,97,108,41,19,114,114,0,0,0,114,7,
+ 0,0,0,114,139,0,0,0,114,233,0,0,0,114,105,0,
+ 0,0,90,18,95,98,117,105,108,116,105,110,95,102,114,111,
+ 109,95,110,97,109,101,114,109,0,0,0,218,3,97,108,108,
+ 218,14,65,115,115,101,114,116,105,111,110,69,114,114,111,114,
+ 114,99,0,0,0,114,26,0,0,0,114,11,0,0,0,114,
+ 223,0,0,0,114,143,0,0,0,114,21,1,0,0,114,84,
+ 0,0,0,114,157,0,0,0,114,162,0,0,0,114,167,0,
+ 0,0,41,12,218,17,95,98,111,111,116,115,116,114,97,112,
+ 95,109,111,100,117,108,101,90,11,115,101,108,102,95,109,111,
+ 100,117,108,101,90,12,98,117,105,108,116,105,110,95,110,97,
+ 109,101,90,14,98,117,105,108,116,105,110,95,109,111,100,117,
+ 108,101,90,10,111,115,95,100,101,116,97,105,108,115,90,10,
+ 98,117,105,108,116,105,110,95,111,115,114,21,0,0,0,114,
+ 25,0,0,0,90,9,111,115,95,109,111,100,117,108,101,90,
+ 13,116,104,114,101,97,100,95,109,111,100,117,108,101,90,14,
+ 119,101,97,107,114,101,102,95,109,111,100,117,108,101,90,13,
+ 119,105,110,114,101,103,95,109,111,100,117,108,101,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,6,95,115,
+ 101,116,117,112,68,5,0,0,115,82,0,0,0,0,8,6,
+ 1,9,1,9,3,13,1,13,1,15,1,18,2,13,1,20,
+ 3,33,1,19,2,31,1,10,1,15,1,13,1,4,2,3,
+ 1,15,1,5,1,13,1,12,2,12,1,16,1,16,1,25,
+ 3,3,1,19,1,13,2,11,1,16,3,15,1,16,3,12,
+ 1,15,1,16,3,19,1,19,1,12,1,13,1,12,1,114,
+ 29,1,0,0,99,1,0,0,0,0,0,0,0,2,0,0,
+ 0,3,0,0,0,67,0,0,0,115,116,0,0,0,116,0,
+ 0,124,0,0,131,1,0,1,116,1,0,131,0,0,125,1,
+ 0,116,2,0,106,3,0,106,4,0,116,5,0,106,6,0,
+ 124,1,0,140,0,0,103,1,0,131,1,0,1,116,7,0,
+ 106,8,0,100,1,0,107,2,0,114,78,0,116,2,0,106,
+ 9,0,106,10,0,116,11,0,131,1,0,1,116,2,0,106,
+ 9,0,106,10,0,116,12,0,131,1,0,1,116,5,0,124,
+ 0,0,95,5,0,116,13,0,124,0,0,95,13,0,100,2,
+ 0,83,41,3,122,41,73,110,115,116,97,108,108,32,116,104,
+ 101,32,112,97,116,104,45,98,97,115,101,100,32,105,109,112,
+ 111,114,116,32,99,111,109,112,111,110,101,110,116,115,46,114,
+ 24,1,0,0,78,41,14,114,29,1,0,0,114,155,0,0,
+ 0,114,7,0,0,0,114,250,0,0,0,114,143,0,0,0,
+ 114,2,1,0,0,114,15,1,0,0,114,3,0,0,0,114,
+ 105,0,0,0,218,9,109,101,116,97,95,112,97,116,104,114,
+ 157,0,0,0,114,162,0,0,0,114,245,0,0,0,114,212,
+ 0,0,0,41,2,114,28,1,0,0,90,17,115,117,112,112,
+ 111,114,116,101,100,95,108,111,97,100,101,114,115,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,8,95,105,
+ 110,115,116,97,108,108,136,5,0,0,115,16,0,0,0,0,
+ 2,10,1,9,1,28,1,15,1,16,1,16,4,9,1,114,
+ 31,1,0,0,41,3,122,3,119,105,110,114,1,0,0,0,
+ 114,2,0,0,0,41,56,114,107,0,0,0,114,10,0,0,
+ 0,114,11,0,0,0,114,17,0,0,0,114,19,0,0,0,
+ 114,28,0,0,0,114,38,0,0,0,114,39,0,0,0,114,
+ 43,0,0,0,114,44,0,0,0,114,46,0,0,0,114,55,
+ 0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100,
+ 101,95,95,114,138,0,0,0,114,15,0,0,0,114,128,0,
+ 0,0,114,14,0,0,0,114,18,0,0,0,90,17,95,82,
+ 65,87,95,77,65,71,73,67,95,78,85,77,66,69,82,114,
+ 73,0,0,0,114,72,0,0,0,114,84,0,0,0,114,74,
+ 0,0,0,90,23,68,69,66,85,71,95,66,89,84,69,67,
+ 79,68,69,95,83,85,70,70,73,88,69,83,90,27,79,80,
+ 84,73,77,73,90,69,68,95,66,89,84,69,67,79,68,69,
+ 95,83,85,70,70,73,88,69,83,114,79,0,0,0,114,85,
+ 0,0,0,114,91,0,0,0,114,95,0,0,0,114,97,0,
+ 0,0,114,116,0,0,0,114,123,0,0,0,114,135,0,0,
+ 0,114,141,0,0,0,114,144,0,0,0,114,149,0,0,0,
+ 218,6,111,98,106,101,99,116,114,156,0,0,0,114,161,0,
+ 0,0,114,162,0,0,0,114,178,0,0,0,114,188,0,0,
+ 0,114,204,0,0,0,114,212,0,0,0,114,217,0,0,0,
+ 114,223,0,0,0,114,218,0,0,0,114,224,0,0,0,114,
+ 243,0,0,0,114,245,0,0,0,114,2,1,0,0,114,20,
+ 1,0,0,114,155,0,0,0,114,29,1,0,0,114,31,1,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,8,60,109,111,100,117,108,101,62,
+ 8,0,0,0,115,102,0,0,0,6,17,6,3,12,12,12,
+ 5,12,5,12,6,12,12,12,10,12,9,12,5,12,7,15,
+ 22,15,112,22,1,18,2,6,1,6,2,9,2,9,2,10,
+ 2,21,44,12,33,12,19,12,12,12,12,12,28,12,17,21,
55,21,12,18,10,12,14,9,3,12,1,15,65,19,64,19,
- 28,22,110,19,41,25,43,25,16,6,3,25,53,19,57,19,
- 41,19,134,19,146,15,23,12,11,12,68,
+ 29,22,110,19,41,25,45,25,16,6,3,25,53,19,60,19,
+ 42,19,127,0,7,19,127,0,20,15,23,12,11,12,68,
};
diff --git a/Python/makeopcodetargets.py b/Python/makeopcodetargets.py
index d9a0855..023c9e6 100755
--- a/Python/makeopcodetargets.py
+++ b/Python/makeopcodetargets.py
@@ -3,24 +3,34 @@
(for compilers supporting computed gotos or "labels-as-values", such as gcc).
"""
-# This code should stay compatible with Python 2.3, at least while
-# some of the buildbots have Python 2.3 as their system Python.
-
-import imp
import os
+import sys
-def find_module(modname):
- """Finds and returns a module in the local dist/checkout.
- """
- modpath = os.path.join(
- os.path.dirname(os.path.dirname(__file__)), "Lib")
- return imp.load_module(modname, *imp.find_module(modname, [modpath]))
+try:
+ from importlib.machinery import SourceFileLoader
+except ImportError:
+ import imp
+
+ def find_module(modname):
+ """Finds and returns a module in the local dist/checkout.
+ """
+ modpath = os.path.join(
+ os.path.dirname(os.path.dirname(__file__)), "Lib")
+ return imp.load_module(modname, *imp.find_module(modname, [modpath]))
+else:
+ def find_module(modname):
+ """Finds and returns a module in the local dist/checkout.
+ """
+ modpath = os.path.join(
+ os.path.dirname(os.path.dirname(__file__)), "Lib", modname + ".py")
+ return SourceFileLoader(modname, modpath).load_module()
+
def write_contents(f):
"""Write C code contents to the target file object.
"""
- opcode = find_module("opcode")
+ opcode = find_module('opcode')
targets = ['_unknown_opcode'] * 256
for opname, op in opcode.opmap.items():
targets[op] = "TARGET_%s" % opname
@@ -29,15 +39,17 @@ def write_contents(f):
f.write("\n};\n")
-if __name__ == "__main__":
- import sys
- assert len(sys.argv) < 3, "Too many arguments"
+def main():
+ if len(sys.argv) >= 3:
+ sys.exit("Too many arguments")
if len(sys.argv) == 2:
target = sys.argv[1]
else:
target = "Python/opcode_targets.h"
- f = open(target, "w")
- try:
+ with open(target, "w") as f:
write_contents(f)
- finally:
- f.close()
+ print("Jump table written into %s" % target)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Python/marshal.c b/Python/marshal.c
index 5b8de99..627a842 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -263,10 +263,10 @@ w_ref(PyObject *v, char *flag, WFILE *p)
if (Py_REFCNT(v) == 1)
return 0;
- entry = _Py_hashtable_get_entry(p->hashtable, v);
+ entry = _Py_HASHTABLE_GET_ENTRY(p->hashtable, v);
if (entry != NULL) {
/* write the reference index to the stream */
- _Py_HASHTABLE_ENTRY_READ_DATA(p->hashtable, &w, sizeof(w), entry);
+ _Py_HASHTABLE_ENTRY_READ_DATA(p->hashtable, entry, w);
/* we don't store "long" indices in the dict */
assert(0 <= w && w <= 0x7fffffff);
w_byte(TYPE_REF, p);
@@ -571,7 +571,8 @@ static int
w_init_refs(WFILE *wf, int version)
{
if (version >= 3) {
- wf->hashtable = _Py_hashtable_new(sizeof(int), _Py_hashtable_hash_ptr,
+ wf->hashtable = _Py_hashtable_new(sizeof(PyObject *), sizeof(int),
+ _Py_hashtable_hash_ptr,
_Py_hashtable_compare_direct);
if (wf->hashtable == NULL) {
PyErr_NoMemory();
@@ -582,9 +583,13 @@ w_init_refs(WFILE *wf, int version)
}
static int
-w_decref_entry(_Py_hashtable_entry_t *entry, void *Py_UNUSED(data))
+w_decref_entry(_Py_hashtable_t *ht, _Py_hashtable_entry_t *entry,
+ void *Py_UNUSED(data))
{
- Py_XDECREF(entry->key);
+ PyObject *entry_key;
+
+ _Py_HASHTABLE_ENTRY_READ_KEY(ht, entry, entry_key);
+ Py_XDECREF(entry_key);
return 0;
}
@@ -643,7 +648,7 @@ typedef struct {
PyObject *refs; /* a list */
} RFILE;
-static char *
+static const char *
r_string(Py_ssize_t n, RFILE *p)
{
Py_ssize_t read = -1;
@@ -729,7 +734,7 @@ r_byte(RFILE *p)
c = getc(p->fp);
}
else {
- char *ptr = r_string(1, p);
+ const char *ptr = r_string(1, p);
if (ptr != NULL)
c = *(unsigned char *) ptr;
}
@@ -740,9 +745,9 @@ static int
r_short(RFILE *p)
{
short x = -1;
- unsigned char *buffer;
+ const unsigned char *buffer;
- buffer = (unsigned char *) r_string(2, p);
+ buffer = (const unsigned char *) r_string(2, p);
if (buffer != NULL) {
x = buffer[0];
x |= buffer[1] << 8;
@@ -756,9 +761,9 @@ static long
r_long(RFILE *p)
{
long x = -1;
- unsigned char *buffer;
+ const unsigned char *buffer;
- buffer = (unsigned char *) r_string(4, p);
+ buffer = (const unsigned char *) r_string(4, p);
if (buffer != NULL) {
x = buffer[0];
x |= (long)buffer[1] << 8;
@@ -978,7 +983,8 @@ r_object(RFILE *p)
case TYPE_FLOAT:
{
- char buf[256], *ptr;
+ char buf[256];
+ const char *ptr;
double dx;
n = r_byte(p);
if (n == EOF) {
@@ -1001,9 +1007,9 @@ r_object(RFILE *p)
case TYPE_BINARY_FLOAT:
{
- unsigned char *buf;
+ const unsigned char *buf;
double x;
- buf = (unsigned char *) r_string(8, p);
+ buf = (const unsigned char *) r_string(8, p);
if (buf == NULL)
break;
x = _PyFloat_Unpack8(buf, 1);
@@ -1016,7 +1022,8 @@ r_object(RFILE *p)
case TYPE_COMPLEX:
{
- char buf[256], *ptr;
+ char buf[256];
+ const char *ptr;
Py_complex c;
n = r_byte(p);
if (n == EOF) {
@@ -1053,15 +1060,15 @@ r_object(RFILE *p)
case TYPE_BINARY_COMPLEX:
{
- unsigned char *buf;
+ const unsigned char *buf;
Py_complex c;
- buf = (unsigned char *) r_string(8, p);
+ buf = (const unsigned char *) r_string(8, p);
if (buf == NULL)
break;
c.real = _PyFloat_Unpack8(buf, 1);
if (c.real == -1.0 && PyErr_Occurred())
break;
- buf = (unsigned char *) r_string(8, p);
+ buf = (const unsigned char *) r_string(8, p);
if (buf == NULL)
break;
c.imag = _PyFloat_Unpack8(buf, 1);
@@ -1074,7 +1081,7 @@ r_object(RFILE *p)
case TYPE_STRING:
{
- char *ptr;
+ const char *ptr;
n = r_long(p);
if (PyErr_Occurred())
break;
@@ -1119,7 +1126,7 @@ r_object(RFILE *p)
}
_read_ascii:
{
- char *ptr;
+ const char *ptr;
ptr = r_string(n, p);
if (ptr == NULL)
break;
@@ -1137,7 +1144,7 @@ r_object(RFILE *p)
is_interned = 1;
case TYPE_UNICODE:
{
- char *buffer;
+ const char *buffer;
n = r_long(p);
if (PyErr_Occurred())
@@ -1264,41 +1271,52 @@ r_object(RFILE *p)
PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
break;
}
- v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
- if (type == TYPE_SET) {
- R_REF(v);
- } else {
- /* must use delayed registration of frozensets because they must
- * be init with a refcount of 1
- */
- idx = r_ref_reserve(flag, p);
- if (idx < 0)
- Py_CLEAR(v); /* signal error */
- }
- if (v == NULL)
- break;
- for (i = 0; i < n; i++) {
- v2 = r_object(p);
- if ( v2 == NULL ) {
- if (!PyErr_Occurred())
- PyErr_SetString(PyExc_TypeError,
- "NULL object in marshal data for set");
- Py_DECREF(v);
- v = NULL;
+ if (n == 0 && type == TYPE_FROZENSET) {
+ /* call frozenset() to get the empty frozenset singleton */
+ v = PyObject_CallFunction((PyObject*)&PyFrozenSet_Type, NULL);
+ if (v == NULL)
break;
+ R_REF(v);
+ retval = v;
+ }
+ else {
+ v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
+ if (type == TYPE_SET) {
+ R_REF(v);
+ } else {
+ /* must use delayed registration of frozensets because they must
+ * be init with a refcount of 1
+ */
+ idx = r_ref_reserve(flag, p);
+ if (idx < 0)
+ Py_CLEAR(v); /* signal error */
}
- if (PySet_Add(v, v2) == -1) {
- Py_DECREF(v);
- Py_DECREF(v2);
- v = NULL;
+ if (v == NULL)
break;
+
+ for (i = 0; i < n; i++) {
+ v2 = r_object(p);
+ if ( v2 == NULL ) {
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_TypeError,
+ "NULL object in marshal data for set");
+ Py_DECREF(v);
+ v = NULL;
+ break;
+ }
+ if (PySet_Add(v, v2) == -1) {
+ Py_DECREF(v);
+ Py_DECREF(v2);
+ v = NULL;
+ break;
+ }
+ Py_DECREF(v2);
}
- Py_DECREF(v2);
+ if (type != TYPE_SET)
+ v = r_ref_insert(v, idx, flag, p);
+ retval = v;
}
- if (type != TYPE_SET)
- v = r_ref_insert(v, idx, flag, p);
- retval = v;
break;
case TYPE_CODE:
diff --git a/Python/modsupport.c b/Python/modsupport.c
index 6c938dd..7e6a65b 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -301,7 +301,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
case 'U': /* XXX deprecated alias */
{
PyObject *v;
- char *str = va_arg(*p_va, char *);
+ const char *str = va_arg(*p_va, const char *);
Py_ssize_t n;
if (**p_format == '#') {
++*p_format;
@@ -334,7 +334,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
case 'y':
{
PyObject *v;
- char *str = va_arg(*p_va, char *);
+ const char *str = va_arg(*p_va, const char *);
Py_ssize_t n;
if (**p_format == '#') {
++*p_format;
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c
index 98429d4..a85790e 100644
--- a/Python/mystrtoul.c
+++ b/Python/mystrtoul.c
@@ -17,7 +17,7 @@
* smallmax[base] is the largest unsigned long i such that
* i * base doesn't overflow unsigned long.
*/
-static unsigned long smallmax[] = {
+static const unsigned long smallmax[] = {
0, /* bases 0 and 1 are invalid */
0,
ULONG_MAX / 2,
@@ -62,14 +62,14 @@ static unsigned long smallmax[] = {
* Note that this is pessimistic if sizeof(long) > 4.
*/
#if SIZEOF_LONG == 4
-static int digitlimit[] = {
+static const int digitlimit[] = {
0, 0, 32, 20, 16, 13, 12, 11, 10, 10, /* 0 - 9 */
9, 9, 8, 8, 8, 8, 8, 7, 7, 7, /* 10 - 19 */
7, 7, 7, 7, 6, 6, 6, 6, 6, 6, /* 20 - 29 */
6, 6, 6, 6, 6, 6, 6}; /* 30 - 36 */
#elif SIZEOF_LONG == 8
/* [int(math.floor(math.log(2**64, i))) for i in range(2, 37)] */
-static int digitlimit[] = {
+static const int digitlimit[] = {
0, 0, 64, 40, 32, 27, 24, 22, 21, 20, /* 0 - 9 */
19, 18, 17, 17, 16, 16, 16, 15, 15, 15, /* 10 - 19 */
14, 14, 14, 14, 13, 13, 13, 13, 13, 13, /* 20 - 29 */
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index 19259e1..3872256 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -154,7 +154,7 @@ static void *opcode_targets[256] = {
&&TARGET_BUILD_TUPLE_UNPACK,
&&TARGET_BUILD_SET_UNPACK,
&&TARGET_SETUP_ASYNC_WITH,
- &&_unknown_opcode,
+ &&TARGET_FORMAT_VALUE,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
diff --git a/Python/peephole.c b/Python/peephole.c
index 59ad3b7..2b2e4c4 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -118,9 +118,7 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
/* If it's a BUILD_SET, use the PyTuple we just built to create a
PyFrozenSet, and use that as the constant instead: */
if (codestr[0] == BUILD_SET) {
- PyObject *tuple = newconst;
- newconst = PyFrozenSet_New(tuple);
- Py_DECREF(tuple);
+ Py_XSETREF(newconst, PyFrozenSet_New(newconst));
if (newconst == NULL)
return 0;
}
@@ -348,19 +346,19 @@ markblocks(unsigned char *code, Py_ssize_t len)
single basic block. All transformations keep the code size the same or
smaller. For those that reduce size, the gaps are initially filled with
NOPs. Later those NOPs are removed and the jump addresses retargeted in
- a single pass. Line numbering is adjusted accordingly. */
+ a single pass. Code offset is adjusted accordingly. */
PyObject *
PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
- PyObject *lineno_obj)
+ PyObject *lnotab_obj)
{
Py_ssize_t i, j, codelen;
int nops, h, adj;
int tgt, tgttgt, opcode;
unsigned char *codestr = NULL;
- unsigned char *lineno;
+ unsigned char *lnotab;
int *addrmap = NULL;
- int new_line, cum_orig_line, last_line;
+ int cum_orig_offset, last_offset;
Py_ssize_t tabsiz;
PyObject **const_stack = NULL;
Py_ssize_t *load_const_stack = NULL;
@@ -373,12 +371,17 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
if (PyErr_Occurred())
goto exitError;
- /* Bypass optimization when the lineno table is too complex */
- assert(PyBytes_Check(lineno_obj));
- lineno = (unsigned char*)PyBytes_AS_STRING(lineno_obj);
- tabsiz = PyBytes_GET_SIZE(lineno_obj);
- if (memchr(lineno, 255, tabsiz) != NULL)
+ /* Bypass optimization when the lnotab table is too complex */
+ assert(PyBytes_Check(lnotab_obj));
+ lnotab = (unsigned char*)PyBytes_AS_STRING(lnotab_obj);
+ tabsiz = PyBytes_GET_SIZE(lnotab_obj);
+ assert(tabsiz == 0 || Py_REFCNT(lnotab_obj) == 1);
+ if (memchr(lnotab, 255, tabsiz) != NULL) {
+ /* 255 value are used for multibyte bytecode instructions */
goto exitUnchanged;
+ }
+ /* Note: -128 and 127 special values for line number delta are ok,
+ the peephole optimizer doesn't modify line numbers. */
/* Avoid situations where jump retargeting could overflow */
assert(PyBytes_Check(code));
@@ -665,21 +668,24 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
}
}
- /* Fixup linenotab */
+ /* Fixup lnotab */
for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
assert(i - nops <= INT_MAX);
+ /* original code offset => new code offset */
addrmap[i] = (int)(i - nops);
if (codestr[i] == NOP)
nops++;
}
- cum_orig_line = 0;
- last_line = 0;
+ cum_orig_offset = 0;
+ last_offset = 0;
for (i=0 ; i < tabsiz ; i+=2) {
- cum_orig_line += lineno[i];
- new_line = addrmap[cum_orig_line];
- assert (new_line - last_line < 255);
- lineno[i] =((unsigned char)(new_line - last_line));
- last_line = new_line;
+ int offset_delta, new_offset;
+ cum_orig_offset += lnotab[i];
+ new_offset = addrmap[cum_orig_offset];
+ offset_delta = new_offset - last_offset;
+ assert(0 <= offset_delta && offset_delta <= 255);
+ lnotab[i] = (unsigned char)offset_delta;
+ last_offset = new_offset;
}
/* Remove NOPs and fixup jump targets */
@@ -729,12 +735,9 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
exitUnchanged:
CONST_STACK_DELETE();
- if (blocks != NULL)
- PyMem_Free(blocks);
- if (addrmap != NULL)
- PyMem_Free(addrmap);
- if (codestr != NULL)
- PyMem_Free(codestr);
+ PyMem_Free(blocks);
+ PyMem_Free(addrmap);
+ PyMem_Free(codestr);
Py_XINCREF(code);
return code;
}
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index ce52990..74bdb19 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -154,8 +154,8 @@ Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
return 0;
}
-/* Global initializations. Can be undone by Py_Finalize(). Don't
- call this twice without an intervening Py_Finalize() call. When
+/* Global initializations. Can be undone by Py_FinalizeEx(). Don't
+ call this twice without an intervening Py_FinalizeEx() call. When
initializations fail, a fatal error is issued and the function does
not return. On return, the first thread and interpreter state have
been created.
@@ -327,11 +327,11 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
(void) PyThreadState_Swap(tstate);
#ifdef WITH_THREAD
- /* We can't call _PyEval_FiniThreads() in Py_Finalize because
+ /* We can't call _PyEval_FiniThreads() in Py_FinalizeEx because
destroying the GIL might fail when it is being referenced from
another running thread (see issue #9901).
Instead we destroy the previously created GIL here, which ensures
- that we can call Py_Initialize / Py_Finalize multiple times. */
+ that we can call Py_Initialize / Py_FinalizeEx multiple times. */
_PyEval_FiniThreads();
/* Auto-thread-state API */
@@ -477,28 +477,35 @@ file_is_closed(PyObject *fobj)
return r > 0;
}
-static void
+static int
flush_std_files(void)
{
PyObject *fout = _PySys_GetObjectId(&PyId_stdout);
PyObject *ferr = _PySys_GetObjectId(&PyId_stderr);
PyObject *tmp;
+ int status = 0;
if (fout != NULL && fout != Py_None && !file_is_closed(fout)) {
tmp = _PyObject_CallMethodId(fout, &PyId_flush, "");
- if (tmp == NULL)
+ if (tmp == NULL) {
PyErr_WriteUnraisable(fout);
+ status = -1;
+ }
else
Py_DECREF(tmp);
}
if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) {
tmp = _PyObject_CallMethodId(ferr, &PyId_flush, "");
- if (tmp == NULL)
+ if (tmp == NULL) {
PyErr_Clear();
+ status = -1;
+ }
else
Py_DECREF(tmp);
}
+
+ return status;
}
/* Undo the effect of Py_Initialize().
@@ -515,14 +522,15 @@ flush_std_files(void)
*/
-void
-Py_Finalize(void)
+int
+Py_FinalizeEx(void)
{
PyInterpreterState *interp;
PyThreadState *tstate;
+ int status = 0;
if (!initialized)
- return;
+ return status;
wait_for_thread_shutdown();
@@ -547,7 +555,9 @@ Py_Finalize(void)
initialized = 0;
/* Flush sys.stdout and sys.stderr */
- flush_std_files();
+ if (flush_std_files() < 0) {
+ status = -1;
+ }
/* Disable signal handling */
PyOS_FiniInterrupts();
@@ -576,7 +586,9 @@ Py_Finalize(void)
PyImport_Cleanup();
/* Flush sys.stdout and sys.stderr (again, in case more was printed) */
- flush_std_files();
+ if (flush_std_files() < 0) {
+ status = -1;
+ }
/* Collect final garbage. This disposes of cycles created by
* class definitions, for example.
@@ -680,6 +692,7 @@ Py_Finalize(void)
/* Delete current thread. After this, many C API calls become crashy. */
PyThreadState_Swap(NULL);
+
PyInterpreterState_Delete(interp);
#ifdef Py_TRACE_REFS
@@ -690,12 +703,22 @@ Py_Finalize(void)
if (Py_GETENV("PYTHONDUMPREFS"))
_Py_PrintReferenceAddresses(stderr);
#endif /* Py_TRACE_REFS */
-#ifdef PYMALLOC_DEBUG
- if (Py_GETENV("PYTHONMALLOCSTATS"))
- _PyObject_DebugMallocStats(stderr);
+#ifdef WITH_PYMALLOC
+ if (_PyMem_PymallocEnabled()) {
+ char *opt = Py_GETENV("PYTHONMALLOCSTATS");
+ if (opt != NULL && *opt != '\0')
+ _PyObject_DebugMallocStats(stderr);
+ }
#endif
call_ll_exitfuncs();
+ return status;
+}
+
+void
+Py_Finalize(void)
+{
+ Py_FinalizeEx();
}
/* Create and initialize a new interpreter and thread, and return the
@@ -721,6 +744,10 @@ Py_NewInterpreter(void)
if (!initialized)
Py_FatalError("Py_NewInterpreter: call Py_Initialize first");
+ /* Issue #10915, #15751: The GIL API doesn't work with multiple
+ interpreters: disable PyGILState_Check(). */
+ _PyGILState_check_enabled = 0;
+
interp = PyInterpreterState_New();
if (interp == NULL)
return NULL;
@@ -777,7 +804,7 @@ Py_NewInterpreter(void)
if (initstdio() < 0)
Py_FatalError(
- "Py_Initialize: can't initialize sys standard streams");
+ "Py_Initialize: can't initialize sys standard streams");
initmain(interp);
if (!Py_NoSiteFlag)
initsite();
@@ -803,7 +830,7 @@ handle_error:
frames, and that it is its interpreter's only remaining thread.
It is a fatal error to violate these constraints.
- (Py_Finalize() doesn't have these constraints -- it zaps
+ (Py_FinalizeEx() doesn't have these constraints -- it zaps
everything, regardless.)
Locking: as above.
@@ -972,6 +999,9 @@ is_valid_fd(int fd)
if (fd < 0 || !_PyVerify_fd(fd))
return 0;
_Py_BEGIN_SUPPRESS_IPH
+ /* Prefer dup() over fstat(). fstat() can require input/output whereas
+ dup() doesn't, there is a low risk of EMFILE/ENFILE at Python
+ startup. */
fd2 = dup(fd);
if (fd2 >= 0)
close(fd2);
@@ -982,8 +1012,8 @@ is_valid_fd(int fd)
/* returns Py_None if the fd is not valid */
static PyObject*
create_stdio(PyObject* io,
- int fd, int write_mode, char* name,
- char* encoding, char* errors)
+ int fd, int write_mode, const char* name,
+ const char* encoding, const char* errors)
{
PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res;
const char* mode;
@@ -1013,7 +1043,8 @@ create_stdio(PyObject* io,
mode = "rb";
buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOi",
fd, mode, buffering,
- Py_None, Py_None, Py_None, 0);
+ Py_None, Py_None, /* encoding, errors */
+ Py_None, 0); /* newline, closefd */
if (buf == NULL)
goto error;
@@ -1243,25 +1274,11 @@ initstdio(void)
static void
_Py_FatalError_DumpTracebacks(int fd)
{
- PyThreadState *tstate;
-
-#ifdef WITH_THREAD
- /* PyGILState_GetThisThreadState() works even if the GIL was released */
- tstate = PyGILState_GetThisThreadState();
-#else
- tstate = PyThreadState_GET();
-#endif
- if (tstate == NULL) {
- /* _Py_DumpTracebackThreads() requires the thread state to display
- * frames */
- return;
- }
-
fputc('\n', stderr);
fflush(stderr);
/* display the current Python stack */
- _Py_DumpTracebackThreads(fd, tstate->interp, tstate);
+ _Py_DumpTracebackThreads(fd, NULL, NULL);
}
/* Print the current exception (if an exception is set) with its traceback,
@@ -1462,7 +1479,9 @@ call_ll_exitfuncs(void)
void
Py_Exit(int sts)
{
- Py_Finalize();
+ if (Py_FinalizeEx() < 0) {
+ sts = 120;
+ }
exit(sts);
}
diff --git a/Python/pystate.c b/Python/pystate.c
index 6d1c6d0..0503f32 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -34,6 +34,8 @@ to avoid the expense of doing their own locking).
extern "C" {
#endif
+int _PyGILState_check_enabled = 1;
+
#ifdef WITH_THREAD
#include "pythread.h"
static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */
@@ -45,7 +47,7 @@ static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */
GILState implementation
*/
static PyInterpreterState *autoInterpreterState = NULL;
-static int autoTLSkey = 0;
+static int autoTLSkey = -1;
#else
#define HEAD_INIT() /* Nothing */
#define HEAD_LOCK() /* Nothing */
@@ -449,10 +451,10 @@ PyThreadState_DeleteCurrent()
if (tstate == NULL)
Py_FatalError(
"PyThreadState_DeleteCurrent: no current tstate");
- SET_TSTATE(NULL);
+ tstate_delete_common(tstate);
if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate)
PyThread_delete_key_value(autoTLSkey);
- tstate_delete_common(tstate);
+ SET_TSTATE(NULL);
PyEval_ReleaseLock();
}
#endif /* WITH_THREAD */
@@ -696,7 +698,7 @@ PyThreadState_IsCurrent(PyThreadState *tstate)
}
/* Internal initialization/finalization functions called by
- Py_Initialize/Py_Finalize
+ Py_Initialize/Py_FinalizeEx
*/
void
_PyGILState_Init(PyInterpreterState *i, PyThreadState *t)
@@ -712,10 +714,17 @@ _PyGILState_Init(PyInterpreterState *i, PyThreadState *t)
_PyGILState_NoteThreadState(t);
}
+PyInterpreterState *
+_PyGILState_GetInterpreterStateUnsafe(void)
+{
+ return autoInterpreterState;
+}
+
void
_PyGILState_Fini(void)
{
PyThread_delete_key(autoTLSkey);
+ autoTLSkey = -1;
autoInterpreterState = NULL;
}
@@ -784,8 +793,19 @@ PyGILState_GetThisThreadState(void)
int
PyGILState_Check(void)
{
- PyThreadState *tstate = GET_TSTATE();
- return tstate && (tstate == PyGILState_GetThisThreadState());
+ PyThreadState *tstate;
+
+ if (!_PyGILState_check_enabled)
+ return 1;
+
+ if (autoTLSkey == -1)
+ return 1;
+
+ tstate = GET_TSTATE();
+ if (tstate == NULL)
+ return 0;
+
+ return (tstate == PyGILState_GetThisThreadState());
}
PyGILState_STATE
diff --git a/Python/pystrtod.c b/Python/pystrtod.c
index 209c908..5f3af92 100644
--- a/Python/pystrtod.c
+++ b/Python/pystrtod.c
@@ -881,12 +881,12 @@ PyAPI_FUNC(char *) PyOS_double_to_string(double val,
#define OFS_E 2
/* The lengths of these are known to the code below, so don't change them */
-static char *lc_float_strings[] = {
+static const char * const lc_float_strings[] = {
"inf",
"nan",
"e",
};
-static char *uc_float_strings[] = {
+static const char * const uc_float_strings[] = {
"INF",
"NAN",
"E",
@@ -925,7 +925,8 @@ static char *
format_float_short(double d, char format_code,
int mode, int precision,
int always_add_sign, int add_dot_0_if_integer,
- int use_alt_formatting, char **float_strings, int *type)
+ int use_alt_formatting, const char * const *float_strings,
+ int *type)
{
char *buf = NULL;
char *p = NULL;
@@ -1176,7 +1177,7 @@ PyAPI_FUNC(char *) PyOS_double_to_string(double val,
int flags,
int *type)
{
- char **float_strings = lc_float_strings;
+ const char * const *float_strings = lc_float_strings;
int mode;
/* Validate format_code, and map upper and lower case. Compute the
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index c03b073..cc2de9a 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -431,7 +431,7 @@ static int
parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
int *lineno, int *offset, PyObject **text)
{
- long hold;
+ int hold;
PyObject *v;
_Py_IDENTIFIER(msg);
_Py_IDENTIFIER(filename);
@@ -464,11 +464,11 @@ parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
v = _PyObject_GetAttrId(err, &PyId_lineno);
if (!v)
goto finally;
- hold = PyLong_AsLong(v);
+ hold = _PyLong_AsInt(v);
Py_DECREF(v);
if (hold < 0 && PyErr_Occurred())
goto finally;
- *lineno = (int)hold;
+ *lineno = hold;
v = _PyObject_GetAttrId(err, &PyId_offset);
if (!v)
@@ -477,11 +477,11 @@ parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
*offset = -1;
Py_DECREF(v);
} else {
- hold = PyLong_AsLong(v);
+ hold = _PyLong_AsInt(v);
Py_DECREF(v);
if (hold < 0 && PyErr_Occurred())
goto finally;
- *offset = (int)hold;
+ *offset = hold;
}
v = _PyObject_GetAttrId(err, &PyId_text);
@@ -791,11 +791,11 @@ print_exception(PyObject *f, PyObject *value)
PyErr_Clear();
}
-static const char *cause_message =
+static const char cause_message[] =
"\nThe above exception was the direct cause "
"of the following exception:\n\n";
-static const char *context_message =
+static const char context_message[] =
"\nDuring handling of the above exception, "
"another exception occurred:\n\n";
@@ -1144,8 +1144,8 @@ PyParser_ASTFromString(const char *s, const char *filename_str, int start,
mod_ty
PyParser_ASTFromFileObject(FILE *fp, PyObject *filename, const char* enc,
- int start, char *ps1,
- char *ps2, PyCompilerFlags *flags, int *errcode,
+ int start, const char *ps1,
+ const char *ps2, PyCompilerFlags *flags, int *errcode,
PyArena *arena)
{
mod_ty mod;
@@ -1177,8 +1177,8 @@ PyParser_ASTFromFileObject(FILE *fp, PyObject *filename, const char* enc,
mod_ty
PyParser_ASTFromFile(FILE *fp, const char *filename_str, const char* enc,
- int start, char *ps1,
- char *ps2, PyCompilerFlags *flags, int *errcode,
+ int start, const char *ps1,
+ const char *ps2, PyCompilerFlags *flags, int *errcode,
PyArena *arena)
{
mod_ty mod;
diff --git a/Python/pytime.c b/Python/pytime.c
index 7f65824..81682ca 100644
--- a/Python/pytime.c
+++ b/Python/pytime.c
@@ -7,6 +7,11 @@
#include <mach/mach_time.h> /* mach_absolute_time(), mach_timebase_info() */
#endif
+#define _PyTime_check_mul_overflow(a, b) \
+ (assert(b > 0), \
+ (_PyTime_t)(a) < _PyTime_MIN / (_PyTime_t)(b) \
+ || _PyTime_MAX / (_PyTime_t)(b) < (_PyTime_t)(a))
+
/* To millisecond (10^-3) */
#define SEC_TO_MS 1000
@@ -38,7 +43,7 @@ _PyLong_AsTime_t(PyObject *obj)
val = PyLong_AsLongLong(obj);
#else
long val;
- assert(sizeof(time_t) <= sizeof(long));
+ Py_BUILD_ASSERT(sizeof(time_t) <= sizeof(long));
val = PyLong_AsLong(obj);
#endif
if (val == -1 && PyErr_Occurred()) {
@@ -55,55 +60,88 @@ _PyLong_FromTime_t(time_t t)
#if defined(HAVE_LONG_LONG) && SIZEOF_TIME_T == SIZEOF_LONG_LONG
return PyLong_FromLongLong((PY_LONG_LONG)t);
#else
- assert(sizeof(time_t) <= sizeof(long));
+ Py_BUILD_ASSERT(sizeof(time_t) <= sizeof(long));
return PyLong_FromLong((long)t);
#endif
}
+/* Round to nearest with ties going to nearest even integer
+ (_PyTime_ROUND_HALF_EVEN) */
+static double
+_PyTime_RoundHalfEven(double x)
+{
+ double rounded = round(x);
+ if (fabs(x-rounded) == 0.5)
+ /* halfway case: round to even */
+ rounded = 2.0*round(x/2.0);
+ return rounded;
+}
+
+static double
+_PyTime_Round(double x, _PyTime_round_t round)
+{
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ d = x;
+ if (round == _PyTime_ROUND_HALF_EVEN)
+ d = _PyTime_RoundHalfEven(d);
+ else if (round == _PyTime_ROUND_CEILING)
+ d = ceil(d);
+ else
+ d = floor(d);
+ return d;
+}
+
static int
-_PyTime_ObjectToDenominator(PyObject *obj, time_t *sec, long *numerator,
+_PyTime_DoubleToDenominator(double d, time_t *sec, long *numerator,
double denominator, _PyTime_round_t round)
{
- assert(denominator <= LONG_MAX);
- if (PyFloat_Check(obj)) {
- double d, intpart, err;
- /* volatile avoids unsafe optimization on float enabled by gcc -O3 */
- volatile double floatpart;
+ double intpart, err;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double floatpart;
- d = PyFloat_AsDouble(obj);
- floatpart = modf(d, &intpart);
- if (floatpart < 0) {
- floatpart = 1.0 + floatpart;
- intpart -= 1.0;
- }
+ floatpart = modf(d, &intpart);
- floatpart *= denominator;
- if (round == _PyTime_ROUND_CEILING) {
- floatpart = ceil(floatpart);
- if (floatpart >= denominator) {
- floatpart = 0.0;
- intpart += 1.0;
- }
- }
- else {
- floatpart = floor(floatpart);
- }
+ floatpart *= denominator;
+ floatpart = _PyTime_Round(floatpart, round);
+ if (floatpart >= denominator) {
+ floatpart -= denominator;
+ intpart += 1.0;
+ }
+ else if (floatpart < 0) {
+ floatpart += denominator;
+ intpart -= 1.0;
+ }
+ assert(0.0 <= floatpart && floatpart < denominator);
- *sec = (time_t)intpart;
- err = intpart - (double)*sec;
- if (err <= -1.0 || err >= 1.0) {
- error_time_t_overflow();
- return -1;
- }
+ *sec = (time_t)intpart;
+ *numerator = (long)floatpart;
- *numerator = (long)floatpart;
- return 0;
+ err = intpart - (double)*sec;
+ if (err <= -1.0 || err >= 1.0) {
+ error_time_t_overflow();
+ return -1;
+ }
+ return 0;
+}
+
+static int
+_PyTime_ObjectToDenominator(PyObject *obj, time_t *sec, long *numerator,
+ double denominator, _PyTime_round_t round)
+{
+ assert(denominator <= (double)LONG_MAX);
+
+ if (PyFloat_Check(obj)) {
+ double d = PyFloat_AsDouble(obj);
+ return _PyTime_DoubleToDenominator(d, sec, numerator,
+ denominator, round);
}
else {
*sec = _PyLong_AsTime_t(obj);
+ *numerator = 0;
if (*sec == (time_t)-1 && PyErr_Occurred())
return -1;
- *numerator = 0;
return 0;
}
}
@@ -112,13 +150,12 @@ int
_PyTime_ObjectToTime_t(PyObject *obj, time_t *sec, _PyTime_round_t round)
{
if (PyFloat_Check(obj)) {
- double d, intpart, err;
+ double intpart, err;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
d = PyFloat_AsDouble(obj);
- if (round == _PyTime_ROUND_CEILING)
- d = ceil(d);
- else
- d = floor(d);
+ d = _PyTime_Round(d, round);
(void)modf(d, &intpart);
*sec = (time_t)intpart;
@@ -141,14 +178,20 @@ int
_PyTime_ObjectToTimespec(PyObject *obj, time_t *sec, long *nsec,
_PyTime_round_t round)
{
- return _PyTime_ObjectToDenominator(obj, sec, nsec, 1e9, round);
+ int res;
+ res = _PyTime_ObjectToDenominator(obj, sec, nsec, 1e9, round);
+ assert(0 <= *nsec && *nsec < SEC_TO_NS);
+ return res;
}
int
_PyTime_ObjectToTimeval(PyObject *obj, time_t *sec, long *usec,
_PyTime_round_t round)
{
- return _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
+ int res;
+ res = _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
+ assert(0 <= *usec && *usec < SEC_TO_US);
+ return res;
}
static void
@@ -162,12 +205,15 @@ _PyTime_t
_PyTime_FromSeconds(int seconds)
{
_PyTime_t t;
+ t = (_PyTime_t)seconds;
/* ensure that integer overflow cannot happen, int type should have 32
bits, whereas _PyTime_t type has at least 64 bits (SEC_TO_MS takes 30
bits). */
- assert((seconds >= 0 && seconds <= _PyTime_MAX / SEC_TO_NS)
- || (seconds < 0 && seconds >= _PyTime_MIN / SEC_TO_NS));
- t = (_PyTime_t)seconds * SEC_TO_NS;
+ Py_BUILD_ASSERT(INT_MAX <= _PyTime_MAX / SEC_TO_NS);
+ Py_BUILD_ASSERT(INT_MIN >= _PyTime_MIN / SEC_TO_NS);
+ assert((t >= 0 && t <= _PyTime_MAX / SEC_TO_NS)
+ || (t < 0 && t >= _PyTime_MIN / SEC_TO_NS));
+ t *= SEC_TO_NS;
return t;
}
@@ -175,7 +221,7 @@ _PyTime_t
_PyTime_FromNanoseconds(PY_LONG_LONG ns)
{
_PyTime_t t;
- assert(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
t = Py_SAFE_DOWNCAST(ns, PY_LONG_LONG, _PyTime_t);
return t;
}
@@ -187,12 +233,15 @@ _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts, int raise)
_PyTime_t t;
int res = 0;
- t = (_PyTime_t)ts->tv_sec * SEC_TO_NS;
- if (t / SEC_TO_NS != ts->tv_sec) {
+ Py_BUILD_ASSERT(sizeof(ts->tv_sec) <= sizeof(_PyTime_t));
+ t = (_PyTime_t)ts->tv_sec;
+
+ if (_PyTime_check_mul_overflow(t, SEC_TO_NS)) {
if (raise)
_PyTime_overflow();
res = -1;
}
+ t = t * SEC_TO_NS;
t += ts->tv_nsec;
@@ -206,12 +255,15 @@ _PyTime_FromTimeval(_PyTime_t *tp, struct timeval *tv, int raise)
_PyTime_t t;
int res = 0;
- t = (_PyTime_t)tv->tv_sec * SEC_TO_NS;
- if (t / SEC_TO_NS != tv->tv_sec) {
+ Py_BUILD_ASSERT(sizeof(tv->tv_sec) <= sizeof(_PyTime_t));
+ t = (_PyTime_t)tv->tv_sec;
+
+ if (_PyTime_check_mul_overflow(t, SEC_TO_NS)) {
if (raise)
_PyTime_overflow();
res = -1;
}
+ t = t * SEC_TO_NS;
t += (_PyTime_t)tv->tv_usec * US_TO_NS;
@@ -221,50 +273,59 @@ _PyTime_FromTimeval(_PyTime_t *tp, struct timeval *tv, int raise)
#endif
static int
-_PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round,
- long to_nanoseconds)
+_PyTime_FromFloatObject(_PyTime_t *t, double value, _PyTime_round_t round,
+ long unit_to_ns)
{
- if (PyFloat_Check(obj)) {
- /* volatile avoids unsafe optimization on float enabled by gcc -O3 */
- volatile double d, err;
+ double err;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
- /* convert to a number of nanoseconds */
- d = PyFloat_AsDouble(obj);
- d *= to_nanoseconds;
+ /* convert to a number of nanoseconds */
+ d = value;
+ d *= (double)unit_to_ns;
+ d = _PyTime_Round(d, round);
- if (round == _PyTime_ROUND_CEILING)
- d = ceil(d);
- else
- d = floor(d);
+ *t = (_PyTime_t)d;
+ err = d - (double)*t;
+ if (fabs(err) >= 1.0) {
+ _PyTime_overflow();
+ return -1;
+ }
+ return 0;
+}
- *t = (_PyTime_t)d;
- err = d - (double)*t;
- if (fabs(err) >= 1.0) {
- _PyTime_overflow();
- return -1;
- }
- return 0;
+static int
+_PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round,
+ long unit_to_ns)
+{
+ if (PyFloat_Check(obj)) {
+ double d;
+ d = PyFloat_AsDouble(obj);
+ return _PyTime_FromFloatObject(t, d, round, unit_to_ns);
}
else {
#ifdef HAVE_LONG_LONG
PY_LONG_LONG sec;
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
+
sec = PyLong_AsLongLong(obj);
- assert(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
#else
long sec;
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
+
sec = PyLong_AsLong(obj);
- assert(sizeof(PY_LONG_LONG) <= sizeof(_PyTime_t));
#endif
if (sec == -1 && PyErr_Occurred()) {
if (PyErr_ExceptionMatches(PyExc_OverflowError))
_PyTime_overflow();
return -1;
}
- *t = sec * to_nanoseconds;
- if (*t / to_nanoseconds != sec) {
+
+ if (_PyTime_check_mul_overflow(sec, unit_to_ns)) {
_PyTime_overflow();
return -1;
}
+ *t = sec * unit_to_ns;
return 0;
}
}
@@ -284,22 +345,31 @@ _PyTime_FromMillisecondsObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t roun
double
_PyTime_AsSecondsDouble(_PyTime_t t)
{
- _PyTime_t sec, ns;
- /* Divide using integers to avoid rounding issues on the integer part.
- 1e-9 cannot be stored exactly in IEEE 64-bit. */
- sec = t / SEC_TO_NS;
- ns = t % SEC_TO_NS;
- return (double)sec + (double)ns * 1e-9;
+ /* volatile avoids optimization changing how numbers are rounded */
+ volatile double d;
+
+ if (t % SEC_TO_NS == 0) {
+ _PyTime_t secs;
+ /* Divide using integers to avoid rounding issues on the integer part.
+ 1e-9 cannot be stored exactly in IEEE 64-bit. */
+ secs = t / SEC_TO_NS;
+ d = (double)secs;
+ }
+ else {
+ d = (double)t;
+ d /= 1e9;
+ }
+ return d;
}
PyObject *
_PyTime_AsNanosecondsObject(_PyTime_t t)
{
#ifdef HAVE_LONG_LONG
- assert(sizeof(PY_LONG_LONG) >= sizeof(_PyTime_t));
+ Py_BUILD_ASSERT(sizeof(PY_LONG_LONG) >= sizeof(_PyTime_t));
return PyLong_FromLongLong((PY_LONG_LONG)t);
#else
- assert(sizeof(long) >= sizeof(_PyTime_t));
+ Py_BUILD_ASSERT(sizeof(long) >= sizeof(_PyTime_t));
return PyLong_FromLong((long)t);
#endif
}
@@ -309,7 +379,20 @@ _PyTime_Divide(const _PyTime_t t, const _PyTime_t k,
const _PyTime_round_t round)
{
assert(k > 1);
- if (round == _PyTime_ROUND_CEILING) {
+ if (round == _PyTime_ROUND_HALF_EVEN) {
+ _PyTime_t x, r, abs_r;
+ x = t / k;
+ r = t % k;
+ abs_r = Py_ABS(r);
+ if (abs_r > k / 2 || (abs_r == k / 2 && (Py_ABS(x) & 1))) {
+ if (t >= 0)
+ x++;
+ else
+ x--;
+ }
+ return x;
+ }
+ else if (round == _PyTime_ROUND_CEILING) {
if (t >= 0)
return (t + k - 1) / k;
else
@@ -373,7 +456,7 @@ static int
_PyTime_AsTimevalStruct_impl(_PyTime_t t, struct timeval *tv,
_PyTime_round_t round, int raise)
{
- _PyTime_t secs;
+ _PyTime_t secs, secs2;
int us;
int res;
@@ -386,7 +469,8 @@ _PyTime_AsTimevalStruct_impl(_PyTime_t t, struct timeval *tv,
#endif
tv->tv_usec = us;
- if (res < 0 || (_PyTime_t)tv->tv_sec != secs) {
+ secs2 = (_PyTime_t)tv->tv_sec;
+ if (res < 0 || secs2 != secs) {
if (raise)
error_time_t_overflow();
return -1;
@@ -424,6 +508,7 @@ _PyTime_AsTimevalTime_t(_PyTime_t t, time_t *p_secs, int *us,
return 0;
}
+
#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_KQUEUE)
int
_PyTime_AsTimespec(_PyTime_t t, struct timespec *ts)
@@ -437,13 +522,13 @@ _PyTime_AsTimespec(_PyTime_t t, struct timespec *ts)
secs -= 1;
}
ts->tv_sec = (time_t)secs;
+ assert(0 <= nsec && nsec < SEC_TO_NS);
+ ts->tv_nsec = nsec;
+
if ((_PyTime_t)ts->tv_sec != secs) {
- _PyTime_overflow();
+ error_time_t_overflow();
return -1;
}
- ts->tv_nsec = nsec;
-
- assert(0 <= ts->tv_nsec && ts->tv_nsec <= 999999999);
return 0;
}
#endif
@@ -557,19 +642,20 @@ _PyTime_GetSystemClockWithInfo(_PyTime_t *t, _Py_clock_info_t *info)
return pygettimeofday(t, info, 1);
}
-
static int
pymonotonic(_PyTime_t *tp, _Py_clock_info_t *info, int raise)
{
#if defined(MS_WINDOWS)
- ULONGLONG result;
+ ULONGLONG ticks;
+ _PyTime_t t;
assert(info == NULL || raise);
- result = GetTickCount64();
+ ticks = GetTickCount64();
+ Py_BUILD_ASSERT(sizeof(ticks) <= sizeof(_PyTime_t));
+ t = (_PyTime_t)ticks;
- *tp = result * MS_TO_NS;
- if (*tp / MS_TO_NS != result) {
+ if (_PyTime_check_mul_overflow(t, MS_TO_NS)) {
if (raise) {
_PyTime_overflow();
return -1;
@@ -577,6 +663,7 @@ pymonotonic(_PyTime_t *tp, _Py_clock_info_t *info, int raise)
/* Hello, time traveler! */
assert(0);
}
+ *tp = t * MS_TO_NS;
if (info) {
DWORD timeAdjustment, timeIncrement;
@@ -689,8 +776,5 @@ _PyTime_Init(void)
if (_PyTime_GetMonotonicClockWithInfo(&t, NULL) < 0)
return -1;
- /* check that _PyTime_FromSeconds() cannot overflow */
- assert(INT_MAX <= _PyTime_MAX / SEC_TO_NS);
- assert(INT_MIN >= _PyTime_MIN / SEC_TO_NS);
return 0;
}
diff --git a/Python/random.c b/Python/random.c
index 772bfef..9b42d54 100644
--- a/Python/random.c
+++ b/Python/random.c
@@ -379,7 +379,7 @@ _PyRandom_Init(void)
char *env;
unsigned char *secret = (unsigned char *)&_Py_HashSecret.uc;
Py_ssize_t secret_size = sizeof(_Py_HashSecret_t);
- assert(secret_size == sizeof(_Py_HashSecret.uc));
+ Py_BUILD_ASSERT(sizeof(_Py_HashSecret_t) == sizeof(_Py_HashSecret.uc));
if (_Py_HashSecret_Initialized)
return;
diff --git a/Python/symtable.c b/Python/symtable.c
index 6d1a62b..558bb06 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -160,7 +160,7 @@ PyTypeObject PySTEntry_Type = {
};
static int symtable_analyze(struct symtable *st);
-static int symtable_warn(struct symtable *st, char *msg, int lineno);
+static int symtable_warn(struct symtable *st, const char *msg, int lineno);
static int symtable_enter_block(struct symtable *st, identifier name,
_Py_block_ty block, void *ast, int lineno,
int col_offset);
@@ -908,7 +908,7 @@ symtable_analyze(struct symtable *st)
static int
-symtable_warn(struct symtable *st, char *msg, int lineno)
+symtable_warn(struct symtable *st, const char *msg, int lineno)
{
PyObject *message = PyUnicode_FromString(msg);
if (message == NULL)
@@ -1447,6 +1447,15 @@ symtable_visit_expr(struct symtable *st, expr_ty e)
VISIT_SEQ(st, expr, e->v.Call.args);
VISIT_SEQ_WITH_NULL(st, keyword, e->v.Call.keywords);
break;
+ case FormattedValue_kind:
+ VISIT(st, expr, e->v.FormattedValue.value);
+ if (e->v.FormattedValue.format_spec)
+ VISIT(st, expr, e->v.FormattedValue.format_spec);
+ break;
+ case JoinedStr_kind:
+ VISIT_SEQ(st, expr, e->v.JoinedStr.values);
+ break;
+ case Constant_kind:
case Num_kind:
case Str_kind:
case Bytes_kind:
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 8d7e05a..0c68c54 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -346,8 +346,10 @@ static PyObject *whatstrings[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
static int
trace_init(void)
{
- static char *whatnames[7] = {"call", "exception", "line", "return",
- "c_call", "c_exception", "c_return"};
+ static const char * const whatnames[7] = {
+ "call", "exception", "line", "return",
+ "c_call", "c_exception", "c_return"
+ };
PyObject *name;
int i;
for (i = 0; i < 7; ++i) {
@@ -434,10 +436,7 @@ trace_trampoline(PyObject *self, PyFrameObject *frame,
return -1;
}
if (result != Py_None) {
- PyObject *temp = frame->f_trace;
- frame->f_trace = NULL;
- Py_XDECREF(temp);
- frame->f_trace = result;
+ Py_XSETREF(frame->f_trace, result);
}
else {
Py_DECREF(result);
@@ -1152,8 +1151,10 @@ static PyObject *
sys_debugmallocstats(PyObject *self, PyObject *args)
{
#ifdef WITH_PYMALLOC
- _PyObject_DebugMallocStats(stderr);
- fputc('\n', stderr);
+ if (_PyMem_PymallocEnabled()) {
+ _PyObject_DebugMallocStats(stderr);
+ fputc('\n', stderr);
+ }
#endif
_PyObject_DebugTypeStats(stderr);
@@ -1643,15 +1644,11 @@ make_version_info(void)
/* sys.implementation values */
#define NAME "cpython"
const char *_PySys_ImplName = NAME;
-#define QUOTE(arg) #arg
-#define STRIFY(name) QUOTE(name)
-#define MAJOR STRIFY(PY_MAJOR_VERSION)
-#define MINOR STRIFY(PY_MINOR_VERSION)
+#define MAJOR Py_STRINGIFY(PY_MAJOR_VERSION)
+#define MINOR Py_STRINGIFY(PY_MINOR_VERSION)
#define TAG NAME "-" MAJOR MINOR
const char *_PySys_ImplCacheTag = TAG;
#undef NAME
-#undef QUOTE
-#undef STRIFY
#undef MAJOR
#undef MINOR
#undef TAG
diff --git a/Python/traceback.c b/Python/traceback.c
index 941d1cb..62a6b1e 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -479,40 +479,26 @@ PyTraceBack_Print(PyObject *v, PyObject *f)
This function is signal safe. */
-static void
-reverse_string(char *text, const size_t len)
-{
- char tmp;
- size_t i, j;
- if (len == 0)
- return;
- for (i=0, j=len-1; i < j; i++, j--) {
- tmp = text[i];
- text[i] = text[j];
- text[j] = tmp;
- }
-}
-
-/* Format an integer in range [0; 999999] to decimal,
- and write it into the file fd.
-
- This function is signal safe. */
-
-static void
-dump_decimal(int fd, int value)
+void
+_Py_DumpDecimal(int fd, unsigned long value)
{
- char buffer[7];
- int len;
- if (value < 0 || 999999 < value)
- return;
- len = 0;
+ /* maximum number of characters required for output of %lld or %p.
+ We need at most ceil(log10(256)*SIZEOF_LONG_LONG) digits,
+ plus 1 for the null byte. 53/22 is an upper bound for log10(256). */
+ char buffer[1 + (sizeof(unsigned long)*53-1) / 22 + 1];
+ char *ptr, *end;
+
+ end = &buffer[Py_ARRAY_LENGTH(buffer) - 1];
+ ptr = end;
+ *ptr = '\0';
do {
- buffer[len] = '0' + (value % 10);
+ --ptr;
+ assert(ptr >= buffer);
+ *ptr = '0' + (value % 10);
value /= 10;
- len++;
} while (value);
- reverse_string(buffer, len);
- _Py_write_noraise(fd, buffer, len);
+
+ _Py_write_noraise(fd, ptr, end - ptr);
}
/* Format an integer in range [0; 0xffffffff] to hexadecimal of 'width' digits,
@@ -520,27 +506,31 @@ dump_decimal(int fd, int value)
This function is signal safe. */
-static void
-dump_hexadecimal(int fd, unsigned long value, int width)
+void
+_Py_DumpHexadecimal(int fd, unsigned long value, Py_ssize_t width)
{
- int len;
- char buffer[sizeof(unsigned long) * 2 + 1];
- len = 0;
+ char buffer[sizeof(unsigned long) * 2 + 1], *ptr, *end;
+ const Py_ssize_t size = Py_ARRAY_LENGTH(buffer) - 1;
+
+ if (width > size)
+ width = size;
+ /* it's ok if width is negative */
+
+ end = &buffer[size];
+ ptr = end;
+ *ptr = '\0';
do {
- buffer[len] = Py_hexdigits[value & 15];
+ --ptr;
+ assert(ptr >= buffer);
+ *ptr = Py_hexdigits[value & 15];
value >>= 4;
- len++;
- } while (len < width || value);
- reverse_string(buffer, len);
- _Py_write_noraise(fd, buffer, len);
-}
+ } while ((end - ptr) < width || value);
-/* Write an unicode object into the file fd using ascii+backslashreplace.
-
- This function is signal safe. */
+ _Py_write_noraise(fd, ptr, end - ptr);
+}
-static void
-dump_ascii(int fd, PyObject *text)
+void
+_Py_DumpASCII(int fd, PyObject *text)
{
PyASCIIObject *ascii = (PyASCIIObject *)text;
Py_ssize_t i, size;
@@ -550,32 +540,36 @@ dump_ascii(int fd, PyObject *text)
wchar_t *wstr = NULL;
Py_UCS4 ch;
+ if (!PyUnicode_Check(text))
+ return;
+
size = ascii->length;
kind = ascii->state.kind;
- if (ascii->state.compact) {
+ if (kind == PyUnicode_WCHAR_KIND) {
+ wstr = ((PyASCIIObject *)text)->wstr;
+ if (wstr == NULL)
+ return;
+ size = ((PyCompactUnicodeObject *)text)->wstr_length;
+ }
+ else if (ascii->state.compact) {
if (ascii->state.ascii)
data = ((PyASCIIObject*)text) + 1;
else
data = ((PyCompactUnicodeObject*)text) + 1;
}
- else if (kind != PyUnicode_WCHAR_KIND) {
+ else {
data = ((PyUnicodeObject *)text)->data.any;
if (data == NULL)
return;
}
- else {
- wstr = ((PyASCIIObject *)text)->wstr;
- if (wstr == NULL)
- return;
- size = ((PyCompactUnicodeObject *)text)->wstr_length;
- }
if (MAX_STRING_LENGTH < size) {
size = MAX_STRING_LENGTH;
truncated = 1;
}
- else
+ else {
truncated = 0;
+ }
for (i=0; i < size; i++) {
if (kind != PyUnicode_WCHAR_KIND)
@@ -589,19 +583,20 @@ dump_ascii(int fd, PyObject *text)
}
else if (ch <= 0xff) {
PUTS(fd, "\\x");
- dump_hexadecimal(fd, ch, 2);
+ _Py_DumpHexadecimal(fd, ch, 2);
}
else if (ch <= 0xffff) {
PUTS(fd, "\\u");
- dump_hexadecimal(fd, ch, 4);
+ _Py_DumpHexadecimal(fd, ch, 4);
}
else {
PUTS(fd, "\\U");
- dump_hexadecimal(fd, ch, 8);
+ _Py_DumpHexadecimal(fd, ch, 8);
}
}
- if (truncated)
+ if (truncated) {
PUTS(fd, "...");
+ }
}
/* Write a frame into the file fd: "File "xxx", line xxx in xxx".
@@ -620,7 +615,7 @@ dump_frame(int fd, PyFrameObject *frame)
&& PyUnicode_Check(code->co_filename))
{
PUTS(fd, "\"");
- dump_ascii(fd, code->co_filename);
+ _Py_DumpASCII(fd, code->co_filename);
PUTS(fd, "\"");
} else {
PUTS(fd, "???");
@@ -629,14 +624,21 @@ dump_frame(int fd, PyFrameObject *frame)
/* PyFrame_GetLineNumber() was introduced in Python 2.7.0 and 3.2.0 */
lineno = PyCode_Addr2Line(code, frame->f_lasti);
PUTS(fd, ", line ");
- dump_decimal(fd, lineno);
+ if (lineno >= 0) {
+ _Py_DumpDecimal(fd, (unsigned long)lineno);
+ }
+ else {
+ PUTS(fd, "???");
+ }
PUTS(fd, " in ");
if (code != NULL && code->co_name != NULL
- && PyUnicode_Check(code->co_name))
- dump_ascii(fd, code->co_name);
- else
+ && PyUnicode_Check(code->co_name)) {
+ _Py_DumpASCII(fd, code->co_name);
+ }
+ else {
PUTS(fd, "???");
+ }
PUTS(fd, "\n");
}
@@ -692,7 +694,9 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current)
PUTS(fd, "Current thread 0x");
else
PUTS(fd, "Thread 0x");
- dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(unsigned long)*2);
+ _Py_DumpHexadecimal(fd,
+ (unsigned long)tstate->thread_id,
+ sizeof(unsigned long) * 2);
PUTS(fd, " (most recent call first):\n");
}
@@ -704,11 +708,56 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current)
handlers if signals were received. */
const char*
_Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
- PyThreadState *current_thread)
+ PyThreadState *current_tstate)
{
PyThreadState *tstate;
unsigned int nthreads;
+#ifdef WITH_THREAD
+ if (current_tstate == NULL) {
+ /* _Py_DumpTracebackThreads() is called from signal handlers by
+ faulthandler.
+
+ SIGSEGV, SIGFPE, SIGABRT, SIGBUS and SIGILL are synchronous signals
+ and are thus delivered to the thread that caused the fault. Get the
+ Python thread state of the current thread.
+
+ PyThreadState_Get() doesn't give the state of the thread that caused
+ the fault if the thread released the GIL, and so this function
+ cannot be used. Read the thread local storage (TLS) instead: call
+ PyGILState_GetThisThreadState(). */
+ current_tstate = PyGILState_GetThisThreadState();
+ }
+
+ if (interp == NULL) {
+ if (current_tstate == NULL) {
+ interp = _PyGILState_GetInterpreterStateUnsafe();
+ if (interp == NULL) {
+ /* We need the interpreter state to get Python threads */
+ return "unable to get the interpreter state";
+ }
+ }
+ else {
+ interp = current_tstate->interp;
+ }
+ }
+#else
+ if (current_tstate == NULL) {
+ /* Call _PyThreadState_UncheckedGet() instead of PyThreadState_Get()
+ to not fail with a fatal error if the thread state is NULL. */
+ current_thread = _PyThreadState_UncheckedGet();
+ }
+
+ if (interp == NULL) {
+ if (current_tstate == NULL) {
+ /* We need the interpreter state to get Python threads */
+ return "unable to get the interpreter state";
+ }
+ interp = current_tstate->interp;
+ }
+#endif
+ assert(interp != NULL);
+
/* Get the current interpreter from the current thread */
tstate = PyInterpreterState_ThreadHead(interp);
if (tstate == NULL)
@@ -726,7 +775,7 @@ _Py_DumpTracebackThreads(int fd, PyInterpreterState *interp,
PUTS(fd, "...\n");
break;
}
- write_thread_id(fd, tstate, tstate == current_thread);
+ write_thread_id(fd, tstate, tstate == current_tstate);
dump_traceback(fd, tstate, 0);
tstate = PyThreadState_Next(tstate);
nthreads++;