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.c1257
-rw-r--r--Python/bltinmodule.c18
-rw-r--r--Python/ceval.c424
-rw-r--r--Python/clinic/bltinmodule.c.h44
-rw-r--r--Python/clinic/import.c.h29
-rw-r--r--Python/compile.c723
-rw-r--r--Python/dtoa.c6
-rw-r--r--Python/dynload_win.c8
-rw-r--r--Python/fileutils.c34
-rw-r--r--Python/formatter_unicode.c2
-rw-r--r--Python/frozen.c20
-rw-r--r--Python/frozenmain.c4
-rw-r--r--Python/future.c5
-rw-r--r--Python/getargs.c243
-rw-r--r--Python/graminit.c106
-rw-r--r--Python/import.c143
-rw-r--r--Python/importdl.c4
-rw-r--r--Python/importlib.h3713
-rw-r--r--Python/importlib_external.h4920
-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.h6
-rw-r--r--Python/peephole.c617
-rw-r--r--Python/pylifecycle.c93
-rw-r--r--Python/pystate.c36
-rw-r--r--Python/pystrtod.c9
-rw-r--r--Python/pythonrun.c22
-rw-r--r--Python/pytime.c274
-rw-r--r--Python/random.c15
-rw-r--r--Python/symtable.c13
-rw-r--r--Python/sysmodule.c37
-rw-r--r--Python/traceback.c183
-rw-r--r--Python/wordcode_helpers.h38
37 files changed, 7679 insertions, 6003 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..1efd0b7 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");
@@ -943,13 +990,8 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
s = e->v.List.elts;
break;
case Tuple_kind:
- if (asdl_seq_LEN(e->v.Tuple.elts)) {
- e->v.Tuple.ctx = ctx;
- s = e->v.Tuple.elts;
- }
- else {
- expr_name = "()";
- }
+ e->v.Tuple.ctx = ctx;
+ s = e->v.Tuple.elts;
break;
case Lambda_kind:
expr_name = "lambda";
@@ -986,6 +1028,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 +1303,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 +1418,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 +2042,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 +2063,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 +2080,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 +2090,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 +3250,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 +3977,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 +4916,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 +4942,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 +4970,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 f3d0c9a..0637a2d 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;
@@ -1930,9 +1931,8 @@ builtin_input_impl(PyModuleDef *module, PyObject *prompt)
Py_CLEAR(stringpo);
if (po == NULL)
goto _readline_errors;
- promptstr = PyBytes_AsString(po);
- if (promptstr == NULL)
- goto _readline_errors;
+ assert(PyBytes_Check(po));
+ promptstr = PyBytes_AS_STRING(po);
}
else {
po = NULL;
diff --git a/Python/ceval.c b/Python/ceval.c
index 3d69038..38ac509 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 *,
@@ -144,7 +144,7 @@ static int import_all_from(PyObject *, PyObject *);
static void format_exc_check_arg(PyObject *, const char *, PyObject *);
static void format_exc_unbound(PyCodeObject *co, int oparg);
static PyObject * unicode_concatenate(PyObject *, PyObject *,
- PyFrameObject *, unsigned char *);
+ PyFrameObject *, const unsigned short *);
static PyObject * special_lookup(PyObject *, _Py_Identifier *);
#define NAME_ERROR_MSG \
@@ -800,7 +800,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
int lastopcode = 0;
#endif
PyObject **stack_pointer; /* Next free slot in value stack */
- unsigned char *next_instr;
+ const unsigned short *next_instr;
int opcode; /* Current opcode */
int oparg; /* Current opcode argument, if any */
enum why_code why; /* Reason for block stack unwind */
@@ -818,7 +818,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
time it is tested. */
int instr_ub = -1, instr_lb = 0, instr_prev = -1;
- unsigned char *first_instr;
+ const unsigned short *first_instr;
PyObject *names;
PyObject *consts;
@@ -886,24 +886,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Import the static jump table */
#include "opcode_targets.h"
-/* This macro is used when several opcodes defer to the same implementation
- (e.g. SETUP_LOOP, SETUP_FINALLY) */
-#define TARGET_WITH_IMPL(op, impl) \
- TARGET_##op: \
- opcode = op; \
- if (HAS_ARG(op)) \
- oparg = NEXTARG(); \
- case op: \
- goto impl; \
-
#define TARGET(op) \
TARGET_##op: \
- opcode = op; \
- if (HAS_ARG(op)) \
- oparg = NEXTARG(); \
case op:
-
#define DISPATCH() \
{ \
if (!_Py_atomic_load_relaxed(&eval_breaker)) { \
@@ -917,7 +903,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
{ \
if (!lltrace && !_Py_TracingPossible) { \
f->f_lasti = INSTR_OFFSET(); \
- goto *opcode_targets[*next_instr++]; \
+ NEXTOPARG(); \
+ goto *opcode_targets[opcode]; \
} \
goto fast_next_opcode; \
}
@@ -926,7 +913,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
{ \
if (!_Py_TracingPossible) { \
f->f_lasti = INSTR_OFFSET(); \
- goto *opcode_targets[*next_instr++]; \
+ NEXTOPARG(); \
+ goto *opcode_targets[opcode]; \
} \
goto fast_next_opcode; \
}
@@ -935,10 +923,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#else
#define TARGET(op) \
case op:
-#define TARGET_WITH_IMPL(op, impl) \
- /* silence compiler warnings about `impl` unused */ \
- if (0) goto impl; \
- case op:
+
#define DISPATCH() continue
#define FAST_DISPATCH() goto fast_next_opcode
#endif
@@ -994,12 +979,23 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Code access macros */
-#define INSTR_OFFSET() ((int)(next_instr - first_instr))
-#define NEXTOP() (*next_instr++)
-#define NEXTARG() (next_instr += 2, (next_instr[-1]<<8) + next_instr[-2])
-#define PEEKARG() ((next_instr[2]<<8) + next_instr[1])
-#define JUMPTO(x) (next_instr = first_instr + (x))
-#define JUMPBY(x) (next_instr += (x))
+#ifdef WORDS_BIGENDIAN
+ #define OPCODE(word) ((word) >> 8)
+ #define OPARG(word) ((word) & 255)
+#else
+ #define OPCODE(word) ((word) & 255)
+ #define OPARG(word) ((word) >> 8)
+#endif
+/* The integer overflow is checked by an assertion below. */
+#define INSTR_OFFSET() (2*(int)(next_instr - first_instr))
+#define NEXTOPARG() do { \
+ unsigned short word = *next_instr; \
+ opcode = OPCODE(word); \
+ oparg = OPARG(word); \
+ next_instr++; \
+ } while (0)
+#define JUMPTO(x) (next_instr = first_instr + (x)/2)
+#define JUMPBY(x) (next_instr += (x)/2)
/* OpCode prediction macros
Some opcodes tend to come in pairs thus making it possible to
@@ -1012,10 +1008,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
processor's own internal branch predication has a high likelihood of
success, resulting in a nearly zero-overhead transition to the
next opcode. A successful prediction saves a trip through the eval-loop
- including its two unpredictable branches, the HAS_ARG test and the
- switch-case. Combined with the processor's internal branch prediction,
- a successful PREDICT has the effect of making the two opcodes run as if
- they were a single new opcode with the bodies combined.
+ including its unpredictable switch-case branch. Combined with the
+ processor's internal branch prediction, a successful PREDICT has the
+ effect of making the two opcodes run as if they were a single new opcode
+ with the bodies combined.
If collecting opcode statistics, your choices are to either keep the
predictions turned-on and interpret the results as if some opcodes
@@ -1030,13 +1026,19 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#if defined(DYNAMIC_EXECUTION_PROFILE) || USE_COMPUTED_GOTOS
#define PREDICT(op) if (0) goto PRED_##op
-#define PREDICTED(op) PRED_##op:
-#define PREDICTED_WITH_ARG(op) PRED_##op:
#else
-#define PREDICT(op) if (*next_instr == op) goto PRED_##op
-#define PREDICTED(op) PRED_##op: next_instr++
-#define PREDICTED_WITH_ARG(op) PRED_##op: oparg = PEEKARG(); next_instr += 3
+#define PREDICT(op) \
+ do{ \
+ unsigned short word = *next_instr; \
+ opcode = OPCODE(word); \
+ if (opcode == op){ \
+ oparg = OPARG(word); \
+ next_instr++; \
+ goto PRED_##op; \
+ } \
+ } while(0)
#endif
+#define PREDICTED(op) PRED_##op:
/* Stack manipulation macros */
@@ -1100,7 +1102,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
#define UNWIND_EXCEPT_HANDLER(b) \
- { \
+ do { \
PyObject *type, *value, *traceback; \
assert(STACK_LEVEL() >= (b)->b_level + 3); \
while (STACK_LEVEL() > (b)->b_level + 3) { \
@@ -1116,7 +1118,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_XDECREF(type); \
Py_XDECREF(value); \
Py_XDECREF(traceback); \
- }
+ } while(0)
/* Start of code */
@@ -1165,16 +1167,16 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
consts = co->co_consts;
fastlocals = f->f_localsplus;
freevars = f->f_localsplus + co->co_nlocals;
- first_instr = (unsigned char*) PyBytes_AS_STRING(co->co_code);
- /* An explanation is in order for the next line.
-
- f->f_lasti now refers to the index of the last instruction
- executed. You might think this was obvious from the name, but
- this wasn't always true before 2.3! PyFrame_New now sets
- f->f_lasti to -1 (i.e. the index *before* the first instruction)
- and YIELD_VALUE doesn't fiddle with f_lasti any more. So this
- does work. Promise.
- YIELD_FROM sets f_lasti to itself, in order to repeated yield
+ assert(PyBytes_Check(co->co_code));
+ assert(PyBytes_GET_SIZE(co->co_code) <= INT_MAX);
+ assert(PyBytes_GET_SIZE(co->co_code) % 2 == 0);
+ assert(_Py_IS_ALIGNED(PyBytes_AS_STRING(co->co_code), 2));
+ first_instr = (unsigned short*) PyBytes_AS_STRING(co->co_code);
+ /*
+ f->f_lasti refers to the index of the last instruction,
+ unless it's -1 in which case next_instr should be first_instr.
+
+ YIELD_FROM sets f_lasti to itself, in order to repeatedly yield
multiple values.
When the PREDICT() macros are enabled, some opcode pairs follow in
@@ -1183,9 +1185,13 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
were a single new opcode; accordingly,f->f_lasti will point to
the first code in the pair (for instance, GET_ITER followed by
FOR_ITER is effectively a single opcode and f->f_lasti will point
- at to the beginning of the combined pair.)
+ to the beginning of the combined pair.)
*/
- next_instr = first_instr + f->f_lasti + 1;
+ next_instr = first_instr;
+ if (f->f_lasti >= 0) {
+ assert(f->f_lasti % 2 == 0);
+ next_instr += f->f_lasti/2 + 1;
+ }
stack_pointer = f->f_stacktop;
assert(stack_pointer != NULL);
f->f_stacktop = NULL; /* remains NULL unless yield suspends frame */
@@ -1249,7 +1255,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_MakePendingCalls() above. */
if (_Py_atomic_load_relaxed(&eval_breaker)) {
- if (*next_instr == SETUP_FINALLY) {
+ if (OPCODE(*next_instr) == SETUP_FINALLY) {
/* Make the last opcode before
a try: finally: block uninterruptible. */
goto fast_next_opcode;
@@ -1322,11 +1328,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Extract opcode and argument */
- opcode = NEXTOP();
- oparg = 0; /* allows oparg to be stored in a register because
- it doesn't have to be remembered across a full loop */
- if (HAS_ARG(opcode))
- oparg = NEXTARG();
+ NEXTOPARG();
dispatch_opcode:
#ifdef DYNAMIC_EXECUTION_PROFILE
#ifdef DXPAIRS
@@ -1384,7 +1386,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
FAST_DISPATCH();
}
- PREDICTED_WITH_ARG(STORE_FAST);
+ PREDICTED(STORE_FAST);
TARGET(STORE_FAST) {
PyObject *value = POP();
SETLOCAL(oparg, value);
@@ -2111,7 +2113,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
f->f_stacktop = stack_pointer;
why = WHY_YIELD;
/* and repeat... */
- f->f_lasti--;
+ f->f_lasti -= 2;
goto fast_yield;
}
@@ -2249,7 +2251,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
+ PREDICTED(UNPACK_SEQUENCE);
TARGET(UNPACK_SEQUENCE) {
PyObject *seq = POP(), *item, **items;
if (PyTuple_CheckExact(seq) &&
@@ -2358,7 +2360,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();
@@ -2398,26 +2400,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))
@@ -2477,7 +2486,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();
@@ -2540,9 +2549,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(BUILD_TUPLE_UNPACK, _build_list_unpack)
- TARGET(BUILD_LIST_UNPACK)
- _build_list_unpack: {
+ TARGET(BUILD_TUPLE_UNPACK)
+ TARGET(BUILD_LIST_UNPACK) {
int convert_to_tuple = opcode == BUILD_TUPLE_UNPACK;
int i;
PyObject *sum = PyList_New(0);
@@ -2639,9 +2647,41 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(BUILD_MAP_UNPACK_WITH_CALL, _build_map_unpack)
- TARGET(BUILD_MAP_UNPACK)
- _build_map_unpack: {
+ TARGET(BUILD_CONST_KEY_MAP) {
+ int i;
+ PyObject *map;
+ PyObject *keys = TOP();
+ if (!PyTuple_CheckExact(keys) ||
+ PyTuple_GET_SIZE(keys) != (Py_ssize_t)oparg) {
+ PyErr_SetString(PyExc_SystemError,
+ "bad BUILD_CONST_KEY_MAP keys argument");
+ goto error;
+ }
+ map = _PyDict_NewPresized((Py_ssize_t)oparg);
+ if (map == NULL) {
+ goto error;
+ }
+ for (i = oparg; i > 0; i--) {
+ int err;
+ PyObject *key = PyTuple_GET_ITEM(keys, oparg - i);
+ PyObject *value = PEEK(i + 1);
+ err = PyDict_SetItem(map, key, value);
+ if (err != 0) {
+ Py_DECREF(map);
+ goto error;
+ }
+ }
+
+ Py_DECREF(POP());
+ while (oparg--) {
+ Py_DECREF(POP());
+ }
+ PUSH(map);
+ DISPATCH();
+ }
+
+ TARGET(BUILD_MAP_UNPACK_WITH_CALL)
+ TARGET(BUILD_MAP_UNPACK) {
int with_call = opcode == BUILD_MAP_UNPACK_WITH_CALL;
int num_maps;
int function_location;
@@ -2848,7 +2888,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
FAST_DISPATCH();
}
- PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE);
+ PREDICTED(POP_JUMP_IF_FALSE);
TARGET(POP_JUMP_IF_FALSE) {
PyObject *cond = POP();
int err;
@@ -2872,7 +2912,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE);
+ PREDICTED(POP_JUMP_IF_TRUE);
TARGET(POP_JUMP_IF_TRUE) {
PyObject *cond = POP();
int err;
@@ -2949,7 +2989,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
+ PREDICTED(JUMP_ABSOLUTE);
TARGET(JUMP_ABSOLUTE) {
JUMPTO(oparg);
#if FAST_LOOPS
@@ -3006,7 +3046,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- PREDICTED_WITH_ARG(FOR_ITER);
+ PREDICTED(FOR_ITER);
TARGET(FOR_ITER) {
/* before: [iter]; after: [iter, iter()] *or* [] */
PyObject *iter = TOP();
@@ -3044,10 +3084,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
goto fast_block_end;
}
- TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally)
- TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally)
- TARGET(SETUP_FINALLY)
- _setup_finally: {
+ TARGET(SETUP_LOOP)
+ TARGET(SETUP_EXCEPT)
+ TARGET(SETUP_FINALLY) {
/* NOTE: If you add any new block-setup opcodes that
are not try/except/finally handlers, you may need
to update the PyGen_NeedsFinalizing() function.
@@ -3242,10 +3281,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(CALL_FUNCTION_VAR, _call_function_var_kw)
- TARGET_WITH_IMPL(CALL_FUNCTION_KW, _call_function_var_kw)
- TARGET(CALL_FUNCTION_VAR_KW)
- _call_function_var_kw: {
+ TARGET(CALL_FUNCTION_VAR)
+ TARGET(CALL_FUNCTION_KW)
+ TARGET(CALL_FUNCTION_VAR_KW) {
int na = oparg & 0xff;
int nk = (oparg>>8) & 0xff;
int flags = (opcode - CALL_FUNCTION) & 3;
@@ -3287,117 +3325,36 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
- TARGET_WITH_IMPL(MAKE_CLOSURE, _make_function)
- TARGET(MAKE_FUNCTION)
- _make_function: {
- int posdefaults = oparg & 0xff;
- int kwdefaults = (oparg>>8) & 0xff;
- int num_annotations = (oparg >> 16) & 0x7fff;
+ TARGET(MAKE_FUNCTION) {
+ PyObject *qualname = POP();
+ PyObject *codeobj = POP();
+ PyFunctionObject *func = (PyFunctionObject *)
+ PyFunction_NewWithQualName(codeobj, f->f_globals, qualname);
- PyObject *qualname = POP(); /* qualname */
- PyObject *code = POP(); /* code object */
- PyObject *func = PyFunction_NewWithQualName(code, f->f_globals, qualname);
- Py_DECREF(code);
+ Py_DECREF(codeobj);
Py_DECREF(qualname);
-
- if (func == NULL)
+ if (func == NULL) {
goto error;
-
- if (opcode == MAKE_CLOSURE) {
- PyObject *closure = POP();
- if (PyFunction_SetClosure(func, closure) != 0) {
- /* Can't happen unless bytecode is corrupt. */
- Py_DECREF(func);
- Py_DECREF(closure);
- goto error;
- }
- Py_DECREF(closure);
}
- if (num_annotations > 0) {
- Py_ssize_t name_ix;
- PyObject *names = POP(); /* names of args with annotations */
- PyObject *anns = PyDict_New();
- if (anns == NULL) {
- Py_DECREF(func);
- Py_DECREF(names);
- goto error;
- }
- name_ix = PyTuple_Size(names);
- assert(num_annotations == name_ix+1);
- while (name_ix > 0) {
- PyObject *name, *value;
- int err;
- --name_ix;
- name = PyTuple_GET_ITEM(names, name_ix);
- value = POP();
- err = PyDict_SetItem(anns, name, value);
- Py_DECREF(value);
- if (err != 0) {
- Py_DECREF(anns);
- Py_DECREF(func);
- Py_DECREF(names);
- goto error;
- }
- }
- Py_DECREF(names);
-
- if (PyFunction_SetAnnotations(func, anns) != 0) {
- /* Can't happen unless
- PyFunction_SetAnnotations changes. */
- Py_DECREF(anns);
- Py_DECREF(func);
- goto error;
- }
- Py_DECREF(anns);
+ if (oparg & 0x08) {
+ assert(PyTuple_CheckExact(TOP()));
+ func ->func_closure = POP();
}
-
- /* XXX Maybe this should be a separate opcode? */
- if (kwdefaults > 0) {
- PyObject *defs = PyDict_New();
- if (defs == NULL) {
- Py_DECREF(func);
- goto error;
- }
- while (--kwdefaults >= 0) {
- PyObject *v = POP(); /* default value */
- PyObject *key = POP(); /* kw only arg name */
- int err = PyDict_SetItem(defs, key, v);
- Py_DECREF(v);
- Py_DECREF(key);
- if (err != 0) {
- Py_DECREF(defs);
- Py_DECREF(func);
- goto error;
- }
- }
- if (PyFunction_SetKwDefaults(func, defs) != 0) {
- /* Can't happen unless
- PyFunction_SetKwDefaults changes. */
- Py_DECREF(func);
- Py_DECREF(defs);
- goto error;
- }
- Py_DECREF(defs);
+ if (oparg & 0x04) {
+ assert(PyDict_CheckExact(TOP()));
+ func->func_annotations = POP();
}
- if (posdefaults > 0) {
- PyObject *defs = PyTuple_New(posdefaults);
- if (defs == NULL) {
- Py_DECREF(func);
- goto error;
- }
- while (--posdefaults >= 0)
- PyTuple_SET_ITEM(defs, posdefaults, POP());
- if (PyFunction_SetDefaults(func, defs) != 0) {
- /* Can't happen unless
- PyFunction_SetDefaults changes. */
- Py_DECREF(defs);
- Py_DECREF(func);
- goto error;
- }
- Py_DECREF(defs);
+ if (oparg & 0x02) {
+ assert(PyDict_CheckExact(TOP()));
+ func->func_kwdefaults = POP();
}
- PUSH(func);
+ if (oparg & 0x01) {
+ assert(PyTuple_CheckExact(TOP()));
+ func->func_defaults = POP();
+ }
+
+ PUSH((PyObject *)func);
DISPATCH();
}
@@ -3419,9 +3376,68 @@ 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();
+ int oldoparg = oparg;
+ NEXTOPARG();
+ oparg |= oldoparg << 8;
goto dispatch_opcode;
}
@@ -4297,7 +4313,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)
@@ -4863,6 +4879,21 @@ update_star_args(int nstack, int nstar, PyObject *stararg,
{
PyObject *callargs, *w;
+ if (!nstack) {
+ if (!stararg) {
+ /* There are no positional arguments on the stack and there is no
+ sequence to be unpacked. */
+ return PyTuple_New(0);
+ }
+ if (PyTuple_CheckExact(stararg)) {
+ /* No arguments are passed on the stack and the sequence is not a
+ tuple subclass so we can just pass the stararg tuple directly
+ to the function. */
+ Py_INCREF(stararg);
+ return stararg;
+ }
+ }
+
callargs = PyTuple_New(nstack + nstar);
if (callargs == NULL) {
return NULL;
@@ -4951,7 +4982,7 @@ ext_do_call(PyObject *func, PyObject ***pp_stack, int flags, int na, int nk)
if (flags & CALL_FLAG_KW) {
kwdict = EXT_POP(*pp_stack);
- if (!PyDict_Check(kwdict)) {
+ if (!PyDict_CheckExact(kwdict)) {
PyObject *d;
d = PyDict_New();
if (d == NULL)
@@ -5261,7 +5292,7 @@ format_exc_unbound(PyCodeObject *co, int oparg)
static PyObject *
unicode_concatenate(PyObject *v, PyObject *w,
- PyFrameObject *f, unsigned char *next_instr)
+ PyFrameObject *f, const unsigned short *next_instr)
{
PyObject *res;
if (Py_REFCNT(v) == 2) {
@@ -5271,10 +5302,11 @@ unicode_concatenate(PyObject *v, PyObject *w,
* 'variable'. We try to delete the variable now to reduce
* the refcnt to 1.
*/
- switch (*next_instr) {
+ int opcode, oparg;
+ NEXTOPARG();
+ switch (opcode) {
case STORE_FAST:
{
- int oparg = PEEKARG();
PyObject **fastlocals = f->f_localsplus;
if (GETLOCAL(oparg) == v)
SETLOCAL(oparg, NULL);
@@ -5284,7 +5316,7 @@ unicode_concatenate(PyObject *v, PyObject *w,
{
PyObject **freevars = (f->f_localsplus +
f->f_code->co_nlocals);
- PyObject *c = freevars[PEEKARG()];
+ PyObject *c = freevars[oparg];
if (PyCell_GET(c) == v)
PyCell_Set(c, NULL);
break;
@@ -5292,7 +5324,7 @@ unicode_concatenate(PyObject *v, PyObject *w,
case STORE_NAME:
{
PyObject *names = f->f_code->co_names;
- PyObject *name = GETITEM(names, PEEKARG());
+ PyObject *name = GETITEM(names, oparg);
PyObject *locals = f->f_locals;
if (PyDict_CheckExact(locals) &&
PyDict_GetItem(locals, name) == v) {
diff --git a/Python/clinic/bltinmodule.c.h b/Python/clinic/bltinmodule.c.h
index 90995e5..6df3ef5 100644
--- a/Python/clinic/bltinmodule.c.h
+++ b/Python/clinic/bltinmodule.c.h
@@ -94,8 +94,9 @@ builtin_format(PyModuleDef *module, PyObject *args)
PyObject *format_spec = NULL;
if (!PyArg_ParseTuple(args, "O|U:format",
- &value, &format_spec))
+ &value, &format_spec)) {
goto exit;
+ }
return_value = builtin_format_impl(module, value, format_spec);
exit:
@@ -120,8 +121,9 @@ builtin_chr(PyModuleDef *module, PyObject *arg)
PyObject *return_value = NULL;
int i;
- if (!PyArg_Parse(arg, "i:chr", &i))
+ if (!PyArg_Parse(arg, "i:chr", &i)) {
goto exit;
+ }
return_value = builtin_chr_impl(module, i);
exit:
@@ -167,8 +169,9 @@ builtin_compile(PyModuleDef *module, PyObject *args, PyObject *kwargs)
int optimize = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO&s|iii:compile", _keywords,
- &source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize))
+ &source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize)) {
goto exit;
+ }
return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize);
exit:
@@ -196,8 +199,9 @@ builtin_divmod(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "divmod",
2, 2,
- &x, &y))
+ &x, &y)) {
goto exit;
+ }
return_value = builtin_divmod_impl(module, x, y);
exit:
@@ -233,8 +237,9 @@ builtin_eval(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "eval",
1, 3,
- &source, &globals, &locals))
+ &source, &globals, &locals)) {
goto exit;
+ }
return_value = builtin_eval_impl(module, source, globals, locals);
exit:
@@ -270,8 +275,9 @@ builtin_exec(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "exec",
1, 3,
- &source, &globals, &locals))
+ &source, &globals, &locals)) {
goto exit;
+ }
return_value = builtin_exec_impl(module, source, globals, locals);
exit:
@@ -322,8 +328,9 @@ builtin_hasattr(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "hasattr",
2, 2,
- &obj, &name))
+ &obj, &name)) {
goto exit;
+ }
return_value = builtin_hasattr_impl(module, obj, name);
exit:
@@ -367,8 +374,9 @@ builtin_setattr(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "setattr",
3, 3,
- &obj, &name, &value))
+ &obj, &name, &value)) {
goto exit;
+ }
return_value = builtin_setattr_impl(module, obj, name, value);
exit:
@@ -398,8 +406,9 @@ builtin_delattr(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "delattr",
2, 2,
- &obj, &name))
+ &obj, &name)) {
goto exit;
+ }
return_value = builtin_delattr_impl(module, obj, name);
exit:
@@ -507,8 +516,9 @@ builtin_pow(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "pow",
2, 3,
- &x, &y, &z))
+ &x, &y, &z)) {
goto exit;
+ }
return_value = builtin_pow_impl(module, x, y, z);
exit:
@@ -541,8 +551,9 @@ builtin_input(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "input",
0, 1,
- &prompt))
+ &prompt)) {
goto exit;
+ }
return_value = builtin_input_impl(module, prompt);
exit:
@@ -585,8 +596,9 @@ builtin_sum(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "sum",
1, 2,
- &iterable, &start))
+ &iterable, &start)) {
goto exit;
+ }
return_value = builtin_sum_impl(module, iterable, start);
exit:
@@ -619,8 +631,9 @@ builtin_isinstance(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "isinstance",
2, 2,
- &obj, &class_or_tuple))
+ &obj, &class_or_tuple)) {
goto exit;
+ }
return_value = builtin_isinstance_impl(module, obj, class_or_tuple);
exit:
@@ -653,11 +666,12 @@ builtin_issubclass(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "issubclass",
2, 2,
- &cls, &class_or_tuple))
+ &cls, &class_or_tuple)) {
goto exit;
+ }
return_value = builtin_issubclass_impl(module, cls, class_or_tuple);
exit:
return return_value;
}
-/*[clinic end generated code: output=4bef16b6aa432879 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=940f25126caf8166 input=a9049054013a1b77]*/
diff --git a/Python/clinic/import.c.h b/Python/clinic/import.c.h
index 2477665..9b9f812 100644
--- a/Python/clinic/import.c.h
+++ b/Python/clinic/import.c.h
@@ -89,8 +89,9 @@ _imp__fix_co_filename(PyModuleDef *module, PyObject *args)
PyObject *path;
if (!PyArg_ParseTuple(args, "O!U:_fix_co_filename",
- &PyCode_Type, &code, &path))
+ &PyCode_Type, &code, &path)) {
goto exit;
+ }
return_value = _imp__fix_co_filename_impl(module, code, path);
exit:
@@ -142,8 +143,9 @@ _imp_init_frozen(PyModuleDef *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:init_frozen", &name))
+ if (!PyArg_Parse(arg, "U:init_frozen", &name)) {
goto exit;
+ }
return_value = _imp_init_frozen_impl(module, name);
exit:
@@ -168,8 +170,9 @@ _imp_get_frozen_object(PyModuleDef *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:get_frozen_object", &name))
+ if (!PyArg_Parse(arg, "U:get_frozen_object", &name)) {
goto exit;
+ }
return_value = _imp_get_frozen_object_impl(module, name);
exit:
@@ -194,8 +197,9 @@ _imp_is_frozen_package(PyModuleDef *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:is_frozen_package", &name))
+ if (!PyArg_Parse(arg, "U:is_frozen_package", &name)) {
goto exit;
+ }
return_value = _imp_is_frozen_package_impl(module, name);
exit:
@@ -220,8 +224,9 @@ _imp_is_builtin(PyModuleDef *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:is_builtin", &name))
+ if (!PyArg_Parse(arg, "U:is_builtin", &name)) {
goto exit;
+ }
return_value = _imp_is_builtin_impl(module, name);
exit:
@@ -246,8 +251,9 @@ _imp_is_frozen(PyModuleDef *module, PyObject *arg)
PyObject *return_value = NULL;
PyObject *name;
- if (!PyArg_Parse(arg, "U:is_frozen", &name))
+ if (!PyArg_Parse(arg, "U:is_frozen", &name)) {
goto exit;
+ }
return_value = _imp_is_frozen_impl(module, name);
exit:
@@ -277,8 +283,9 @@ _imp_create_dynamic(PyModuleDef *module, PyObject *args)
if (!PyArg_UnpackTuple(args, "create_dynamic",
1, 2,
- &spec, &file))
+ &spec, &file)) {
goto exit;
+ }
return_value = _imp_create_dynamic_impl(module, spec, file);
exit:
@@ -308,8 +315,9 @@ _imp_exec_dynamic(PyModuleDef *module, PyObject *mod)
int _return_value;
_return_value = _imp_exec_dynamic_impl(module, mod);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong((long)_return_value);
exit:
@@ -337,8 +345,9 @@ _imp_exec_builtin(PyModuleDef *module, PyObject *mod)
int _return_value;
_return_value = _imp_exec_builtin_impl(module, mod);
- if ((_return_value == -1) && PyErr_Occurred())
+ if ((_return_value == -1) && PyErr_Occurred()) {
goto exit;
+ }
return_value = PyLong_FromLong((long)_return_value);
exit:
@@ -352,4 +361,4 @@ exit:
#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
#define _IMP_EXEC_DYNAMIC_METHODDEF
#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
-/*[clinic end generated code: output=32324a5e46cdfc4b input=a9049054013a1b77]*/
+/*[clinic end generated code: output=22a7225925755674 input=a9049054013a1b77]*/
diff --git a/Python/compile.c b/Python/compile.c
index 0c4a6c8..efb6c7e 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -29,6 +29,7 @@
#include "code.h"
#include "symtable.h"
#include "opcode.h"
+#include "wordcode_helpers.h"
#define DEFAULT_BLOCK_SIZE 16
#define DEFAULT_BLOCKS 8
@@ -43,7 +44,6 @@
struct instr {
unsigned i_jabs : 1;
unsigned i_jrel : 1;
- unsigned i_hasarg : 1;
unsigned char i_opcode;
int i_oparg;
struct basicblock_ *i_target; /* target block (if jump instruction) */
@@ -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);
@@ -986,6 +980,8 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return 1 - (oparg & 0xFF);
case BUILD_MAP:
return 1 - 2*oparg;
+ case BUILD_CONST_KEY_MAP:
+ return -oparg;
case LOAD_ATTR:
return 0;
case COMPARE_OP:
@@ -1034,11 +1030,10 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg)
return -NARGS(oparg)-1;
case CALL_FUNCTION_VAR_KW:
return -NARGS(oparg)-2;
- case MAKE_FUNCTION:
- return -1 -NARGS(oparg) - ((oparg >> 16) & 0xffff);
- case MAKE_CLOSURE:
- return -2 - NARGS(oparg) - ((oparg >> 16) & 0xffff);
#undef NARGS
+ case MAKE_FUNCTION:
+ return -1 - ((oparg & 0x01) != 0) - ((oparg & 0x02) != 0) -
+ ((oparg & 0x04) != 0) - ((oparg & 0x08) != 0);
case BUILD_SLICE:
if (oparg == 3)
return -2;
@@ -1066,6 +1061,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;
}
@@ -1082,13 +1081,14 @@ compiler_addop(struct compiler *c, int opcode)
basicblock *b;
struct instr *i;
int off;
+ assert(!HAS_ARG(opcode));
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
return 0;
b = c->u->u_curblock;
i = &b->b_instr[off];
i->i_opcode = opcode;
- i->i_hasarg = 0;
+ i->i_oparg = 0;
if (opcode == RETURN_VALUE)
b->b_return = 1;
compiler_set_lineno(c, off);
@@ -1165,10 +1165,15 @@ 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 8-bit.
+ EXTENDED_ARG is used for 16, 24, and 32-bit arguments. */
+ assert(HAS_ARG(opcode));
+ assert(0 <= oparg && oparg <= 2147483647);
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
@@ -1176,7 +1181,6 @@ compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
i = &c->u->u_curblock->b_instr[off];
i->i_opcode = opcode;
i->i_oparg = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int);
- i->i_hasarg = 1;
compiler_set_lineno(c, off);
return 1;
}
@@ -1187,6 +1191,7 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
struct instr *i;
int off;
+ assert(HAS_ARG(opcode));
assert(b != NULL);
off = compiler_next_instr(c, c->u->u_curblock);
if (off < 0)
@@ -1194,7 +1199,6 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
i = &c->u->u_curblock->b_instr[off];
i->i_opcode = opcode;
i->i_target = b;
- i->i_hasarg = 1;
if (absolute)
i->i_jabs = 1;
else
@@ -1203,22 +1207,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; \
@@ -1241,6 +1235,15 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b, int absolute)
return 0; \
}
+/* Same as ADDOP_O, but steals a reference. */
+#define ADDOP_N(C, OP, O, TYPE) { \
+ if (!compiler_addop_o((C), (OP), (C)->u->u_ ## TYPE, (O))) { \
+ Py_DECREF((O)); \
+ return 0; \
+ } \
+ Py_DECREF((O)); \
+}
+
#define ADDOP_NAME(C, OP, O, TYPE) { \
if (!compiler_addop_name((C), (OP), (C)->u->u_ ## TYPE, (O))) \
return 0; \
@@ -1309,7 +1312,49 @@ 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;
+}
+
+static int
+is_const(expr_ty e)
+{
+ switch (e->kind) {
+ case Constant_kind:
+ case Num_kind:
+ case Str_kind:
+ case Bytes_kind:
+ case Ellipsis_kind:
+ case NameConstant_kind:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static PyObject *
+get_const_value(expr_ty e)
+{
+ switch (e->kind) {
+ case Constant_kind:
+ return e->v.Constant.value;
+ case Num_kind:
+ return e->v.Num.n;
+ case Str_kind:
+ return e->v.Str.s;
+ case Bytes_kind:
+ return e->v.Bytes.s;
+ case Ellipsis_kind:
+ return Py_Ellipsis;
+ case NameConstant_kind:
+ return e->v.NameConstant.value;
+ default:
+ assert(!is_const(e));
+ return NULL;
+ }
}
/* Compile a sequence of statements, checking for a docstring. */
@@ -1426,53 +1471,50 @@ compiler_lookup_arg(PyObject *dict, PyObject *name)
}
static int
-compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t args, PyObject *qualname)
+compiler_make_closure(struct compiler *c, PyCodeObject *co, Py_ssize_t flags, PyObject *qualname)
{
Py_ssize_t i, free = PyCode_GetNumFree(co);
if (qualname == NULL)
qualname = co->co_name;
- if (free == 0) {
- ADDOP_O(c, LOAD_CONST, (PyObject*)co, consts);
- ADDOP_O(c, LOAD_CONST, qualname, consts);
- ADDOP_I(c, MAKE_FUNCTION, args);
- return 1;
- }
- for (i = 0; i < free; ++i) {
- /* Bypass com_addop_varname because it will generate
- LOAD_DEREF but LOAD_CLOSURE is needed.
- */
- PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i);
- int arg, reftype;
-
- /* Special case: If a class contains a method with a
- free variable that has the same name as a method,
- the name will be considered free *and* local in the
- class. It should be handled by the closure, as
- well as by the normal name loookup logic.
- */
- reftype = get_ref_type(c, name);
- if (reftype == CELL)
- arg = compiler_lookup_arg(c->u->u_cellvars, name);
- else /* (reftype == FREE) */
- arg = compiler_lookup_arg(c->u->u_freevars, name);
- if (arg == -1) {
- fprintf(stderr,
- "lookup %s in %s %d %d\n"
- "freevars of %s: %s\n",
- PyUnicode_AsUTF8(PyObject_Repr(name)),
- PyUnicode_AsUTF8(c->u->u_name),
- reftype, arg,
- PyUnicode_AsUTF8(co->co_name),
- PyUnicode_AsUTF8(PyObject_Repr(co->co_freevars)));
- Py_FatalError("compiler_make_closure()");
+ if (free) {
+ for (i = 0; i < free; ++i) {
+ /* Bypass com_addop_varname because it will generate
+ LOAD_DEREF but LOAD_CLOSURE is needed.
+ */
+ PyObject *name = PyTuple_GET_ITEM(co->co_freevars, i);
+ int arg, reftype;
+
+ /* Special case: If a class contains a method with a
+ free variable that has the same name as a method,
+ the name will be considered free *and* local in the
+ class. It should be handled by the closure, as
+ well as by the normal name loookup logic.
+ */
+ reftype = get_ref_type(c, name);
+ if (reftype == CELL)
+ arg = compiler_lookup_arg(c->u->u_cellvars, name);
+ else /* (reftype == FREE) */
+ arg = compiler_lookup_arg(c->u->u_freevars, name);
+ if (arg == -1) {
+ fprintf(stderr,
+ "lookup %s in %s %d %d\n"
+ "freevars of %s: %s\n",
+ PyUnicode_AsUTF8(PyObject_Repr(name)),
+ PyUnicode_AsUTF8(c->u->u_name),
+ reftype, arg,
+ PyUnicode_AsUTF8(co->co_name),
+ PyUnicode_AsUTF8(PyObject_Repr(co->co_freevars)));
+ Py_FatalError("compiler_make_closure()");
+ }
+ ADDOP_I(c, LOAD_CLOSURE, arg);
}
- ADDOP_I(c, LOAD_CLOSURE, arg);
+ flags |= 0x08;
+ ADDOP_I(c, BUILD_TUPLE, free);
}
- ADDOP_I(c, BUILD_TUPLE, free);
ADDOP_O(c, LOAD_CONST, (PyObject*)co, consts);
ADDOP_O(c, LOAD_CONST, qualname, consts);
- ADDOP_I(c, MAKE_CLOSURE, args);
+ ADDOP_I(c, MAKE_FUNCTION, flags);
return 1;
}
@@ -1490,27 +1532,59 @@ compiler_decorators(struct compiler *c, asdl_seq* decos)
return 1;
}
-static int
+static Py_ssize_t
compiler_visit_kwonlydefaults(struct compiler *c, asdl_seq *kwonlyargs,
asdl_seq *kw_defaults)
{
- int i, default_count = 0;
+ int i;
+ PyObject *keys = NULL;
+
for (i = 0; i < asdl_seq_LEN(kwonlyargs); i++) {
arg_ty arg = asdl_seq_GET(kwonlyargs, i);
expr_ty default_ = asdl_seq_GET(kw_defaults, i);
if (default_) {
PyObject *mangled = _Py_Mangle(c->u->u_private, arg->arg);
- if (!mangled)
- return -1;
- ADDOP_O(c, LOAD_CONST, mangled, consts);
- Py_DECREF(mangled);
+ if (!mangled) {
+ goto error;
+ }
+ if (keys == NULL) {
+ keys = PyList_New(1);
+ if (keys == NULL) {
+ Py_DECREF(mangled);
+ return -1;
+ }
+ PyList_SET_ITEM(keys, 0, mangled);
+ }
+ else {
+ int res = PyList_Append(keys, mangled);
+ Py_DECREF(mangled);
+ if (res == -1) {
+ goto error;
+ }
+ }
if (!compiler_visit_expr(c, default_)) {
- return -1;
+ goto error;
}
- default_count++;
}
}
- return default_count;
+ if (keys != NULL) {
+ Py_ssize_t default_count = PyList_GET_SIZE(keys);
+ PyObject *keys_tuple = PyList_AsTuple(keys);
+ Py_DECREF(keys);
+ if (keys_tuple == NULL) {
+ return -1;
+ }
+ ADDOP_N(c, LOAD_CONST, keys_tuple, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, default_count);
+ return default_count;
+ }
+ else {
+ return 0;
+ }
+
+error:
+ Py_XDECREF(keys);
+ return -1;
}
static int
@@ -1549,15 +1623,14 @@ compiler_visit_argannotations(struct compiler *c, asdl_seq* args,
return 1;
}
-static int
+static Py_ssize_t
compiler_visit_annotations(struct compiler *c, arguments_ty args,
expr_ty returns)
{
- /* Push arg annotations and a list of the argument names. Return the #
- of items pushed. The expressions are evaluated out-of-order wrt the
- source code.
+ /* Push arg annotation dict. Return # of items pushed.
+ The expressions are evaluated out-of-order wrt the source code.
- More than 2^16-1 annotations is a SyntaxError. Returns -1 on error.
+ Returns -1 on error.
*/
static identifier return_str;
PyObject *names;
@@ -1589,38 +1662,47 @@ compiler_visit_annotations(struct compiler *c, arguments_ty args,
}
len = PyList_GET_SIZE(names);
- if (len > 65534) {
- /* len must fit in 16 bits, and len is incremented below */
- PyErr_SetString(PyExc_SyntaxError,
- "too many annotations");
- goto error;
- }
if (len) {
- /* convert names to a tuple and place on stack */
- PyObject *elt;
- Py_ssize_t i;
- PyObject *s = PyTuple_New(len);
- if (!s)
- goto error;
- for (i = 0; i < len; i++) {
- elt = PyList_GET_ITEM(names, i);
- Py_INCREF(elt);
- PyTuple_SET_ITEM(s, i, elt);
+ PyObject *keytuple = PyList_AsTuple(names);
+ Py_DECREF(names);
+ if (keytuple == NULL) {
+ return -1;
}
- ADDOP_O(c, LOAD_CONST, s, consts);
- Py_DECREF(s);
- len++; /* include the just-pushed tuple */
+ ADDOP_N(c, LOAD_CONST, keytuple, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, len);
}
- Py_DECREF(names);
-
- /* We just checked that len <= 65535, see above */
- return Py_SAFE_DOWNCAST(len, Py_ssize_t, int);
+ else {
+ Py_DECREF(names);
+ }
+ return len;
error:
Py_DECREF(names);
return -1;
}
+static Py_ssize_t
+compiler_default_arguments(struct compiler *c, arguments_ty args)
+{
+ Py_ssize_t funcflags = 0;
+ if (args->defaults && asdl_seq_LEN(args->defaults) > 0) {
+ VISIT_SEQ(c, expr, args->defaults);
+ ADDOP_I(c, BUILD_TUPLE, asdl_seq_LEN(args->defaults));
+ funcflags |= 0x01;
+ }
+ if (args->kwonlyargs) {
+ Py_ssize_t res = compiler_visit_kwonlydefaults(c, args->kwonlyargs,
+ args->kw_defaults);
+ if (res < 0) {
+ return -1;
+ }
+ else if (res > 0) {
+ funcflags |= 0x02;
+ }
+ }
+ return funcflags;
+}
+
static int
compiler_function(struct compiler *c, stmt_ty s, int is_async)
{
@@ -1632,12 +1714,11 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
asdl_seq* decos;
asdl_seq *body;
stmt_ty st;
- Py_ssize_t i, n, arglength;
- int docstring, kw_default_count = 0;
+ Py_ssize_t i, n, funcflags;
+ int docstring;
int num_annotations;
int scope_type;
-
if (is_async) {
assert(s->kind == AsyncFunctionDef_kind);
@@ -1662,29 +1743,32 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
if (!compiler_decorators(c, decos))
return 0;
- if (args->defaults)
- VISIT_SEQ(c, expr, args->defaults);
- if (args->kwonlyargs) {
- int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs,
- args->kw_defaults);
- if (res < 0)
- return 0;
- kw_default_count = res;
+
+ funcflags = compiler_default_arguments(c, args);
+ if (funcflags == -1) {
+ return 0;
}
+
num_annotations = compiler_visit_annotations(c, args, returns);
- if (num_annotations < 0)
+ if (num_annotations < 0) {
return 0;
- assert((num_annotations & 0xFFFF) == num_annotations);
+ }
+ else if (num_annotations > 0) {
+ funcflags |= 0x04;
+ }
- if (!compiler_enter_scope(c, name,
- scope_type, (void *)s,
- s->lineno))
+ if (!compiler_enter_scope(c, name, scope_type, (void *)s, s->lineno)) {
return 0;
+ }
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;
@@ -1708,12 +1792,9 @@ compiler_function(struct compiler *c, stmt_ty s, int is_async)
return 0;
}
- arglength = asdl_seq_LEN(args->defaults);
- arglength |= kw_default_count << 8;
- arglength |= num_annotations << 16;
if (is_async)
co->co_flags |= CO_COROUTINE;
- compiler_make_closure(c, co, arglength, qualname);
+ compiler_make_closure(c, co, funcflags, qualname);
Py_DECREF(qualname);
Py_DECREF(co);
@@ -1873,8 +1954,7 @@ compiler_lambda(struct compiler *c, expr_ty e)
PyCodeObject *co;
PyObject *qualname;
static identifier name;
- int kw_default_count = 0;
- Py_ssize_t arglength;
+ Py_ssize_t funcflags;
arguments_ty args = e->v.Lambda.args;
assert(e->kind == Lambda_kind);
@@ -1884,14 +1964,11 @@ compiler_lambda(struct compiler *c, expr_ty e)
return 0;
}
- if (args->defaults)
- VISIT_SEQ(c, expr, args->defaults);
- if (args->kwonlyargs) {
- int res = compiler_visit_kwonlydefaults(c, args->kwonlyargs,
- args->kw_defaults);
- if (res < 0) return 0;
- kw_default_count = res;
+ funcflags = compiler_default_arguments(c, args);
+ if (funcflags == -1) {
+ return 0;
}
+
if (!compiler_enter_scope(c, name, COMPILER_SCOPE_LAMBDA,
(void *)e, e->lineno))
return 0;
@@ -1917,9 +1994,7 @@ compiler_lambda(struct compiler *c, expr_ty e)
if (co == NULL)
return 0;
- arglength = asdl_seq_LEN(args->defaults);
- arglength |= kw_default_count << 8;
- compiler_make_closure(c, co, arglength, qualname);
+ compiler_make_closure(c, co, funcflags, qualname);
Py_DECREF(qualname);
Py_DECREF(co);
@@ -2595,6 +2670,25 @@ 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;
+ }
+
+ if (is_const(value)) {
+ /* ignore constant statement */
+ return 1;
+ }
+
+ 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 +2758,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:
@@ -3075,9 +3160,53 @@ compiler_set(struct compiler *c, expr_ty e)
}
static int
+are_all_items_const(asdl_seq *seq, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i;
+ for (i = begin; i < end; i++) {
+ expr_ty key = (expr_ty)asdl_seq_GET(seq, i);
+ if (key == NULL || !is_const(key))
+ return 0;
+ }
+ return 1;
+}
+
+static int
+compiler_subdict(struct compiler *c, expr_ty e, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i, n = end - begin;
+ PyObject *keys, *key;
+ if (n > 1 && are_all_items_const(e->v.Dict.keys, begin, end)) {
+ for (i = begin; i < end; i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ }
+ keys = PyTuple_New(n);
+ if (keys == NULL) {
+ return 0;
+ }
+ for (i = begin; i < end; i++) {
+ key = get_const_value((expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ Py_INCREF(key);
+ PyTuple_SET_ITEM(keys, i - begin, key);
+ }
+ ADDOP_N(c, LOAD_CONST, keys, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, n);
+ }
+ else {
+ for (i = begin; i < end; i++) {
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
+ }
+ ADDOP_I(c, BUILD_MAP, n);
+ }
+ return 1;
+}
+
+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;
@@ -3085,7 +3214,8 @@ compiler_dict(struct compiler *c, expr_ty e)
for (i = 0; i < n; i++) {
is_unpacking = (expr_ty)asdl_seq_GET(e->v.Dict.keys, i) == NULL;
if (elements == 0xFFFF || (elements && is_unpacking)) {
- ADDOP_I(c, BUILD_MAP, elements);
+ if (!compiler_subdict(c, e, i - elements, i))
+ return 0;
containers++;
elements = 0;
}
@@ -3094,13 +3224,12 @@ compiler_dict(struct compiler *c, expr_ty e)
containers++;
}
else {
- VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
- VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Dict.values, i));
elements++;
}
}
if (elements || containers == 0) {
- ADDOP_I(c, BUILD_MAP, elements);
+ if (!compiler_subdict(c, e, n - elements, n))
+ return 0;
containers++;
}
/* If there is more than one dict, they need to be merged into a new
@@ -3169,15 +3298,127 @@ 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;
+}
+
+static int
+compiler_subkwargs(struct compiler *c, asdl_seq *keywords, Py_ssize_t begin, Py_ssize_t end)
+{
+ Py_ssize_t i, n = end - begin;
+ keyword_ty kw;
+ PyObject *keys, *key;
+ assert(n > 0);
+ if (n > 1) {
+ for (i = begin; i < end; i++) {
+ kw = asdl_seq_GET(keywords, i);
+ VISIT(c, expr, kw->value);
+ }
+ keys = PyTuple_New(n);
+ if (keys == NULL) {
+ return 0;
+ }
+ for (i = begin; i < end; i++) {
+ key = ((keyword_ty) asdl_seq_GET(keywords, i))->arg;
+ Py_INCREF(key);
+ PyTuple_SET_ITEM(keys, i - begin, key);
+ }
+ ADDOP_N(c, LOAD_CONST, keys, consts);
+ ADDOP_I(c, BUILD_CONST_KEY_MAP, n);
+ }
+ else {
+ /* a for loop only executes once */
+ for (i = begin; i < end; i++) {
+ kw = asdl_seq_GET(keywords, i);
+ ADDOP_O(c, LOAD_CONST, kw->arg, consts);
+ VISIT(c, expr, kw->value);
+ }
+ ADDOP_I(c, BUILD_MAP, n);
+ }
+ 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;
@@ -3234,29 +3475,38 @@ compiler_call_helper(struct compiler *c,
if (kw->arg == NULL) {
/* A keyword argument unpacking. */
if (nseen) {
- ADDOP_I(c, BUILD_MAP, nseen);
+ if (nsubkwargs) {
+ if (!compiler_subkwargs(c, keywords, i - nseen, i))
+ return 0;
+ nsubkwargs++;
+ }
+ else {
+ Py_ssize_t j;
+ for (j = 0; j < nseen; j++) {
+ VISIT(c, keyword, asdl_seq_GET(keywords, j));
+ }
+ nkw = nseen;
+ }
nseen = 0;
- nsubkwargs++;
}
VISIT(c, expr, kw->value);
nsubkwargs++;
}
- else if (nsubkwargs) {
- /* A keyword argument and we already have a dict. */
- ADDOP_O(c, LOAD_CONST, kw->arg, consts);
- VISIT(c, expr, kw->value);
- nseen++;
- }
else {
- /* keyword argument */
- VISIT(c, keyword, kw)
- nkw++;
+ nseen++;
}
}
if (nseen) {
- /* Pack up any trailing keyword arguments. */
- ADDOP_I(c, BUILD_MAP, nseen);
- nsubkwargs++;
+ if (nsubkwargs) {
+ /* Pack up any trailing keyword arguments. */
+ if (!compiler_subkwargs(c, keywords, nelts - nseen, nelts))
+ return 0;
+ nsubkwargs++;
+ }
+ else {
+ VISIT_SEQ(c, keyword, keywords);
+ nkw = nseen;
+ }
}
if (nsubkwargs) {
code |= 2;
@@ -3545,6 +3795,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 +3840,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 +4084,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;
@@ -4291,18 +4550,6 @@ assemble_free(struct assembler *a)
PyObject_Free(a->a_postorder);
}
-/* Return the size of a basic block in bytes. */
-
-static int
-instrsize(struct instr *instr)
-{
- if (!instr->i_hasarg)
- return 1; /* 1 byte for the opcode*/
- if (instr->i_oparg > 0xffff)
- return 6; /* 1 (opcode) + 1 (EXTENDED_ARG opcode) + 2 (oparg) + 2(oparg extended) */
- return 3; /* 1 (opcode) + 2 (oparg) */
-}
-
static int
blocksize(basicblock *b)
{
@@ -4310,7 +4557,7 @@ blocksize(basicblock *b)
int size = 0;
for (i = 0; i < b->b_iused; i++)
- size += instrsize(&b->b_instr[i]);
+ size += instrsize(b->b_instr[i].i_oparg);
return size;
}
@@ -4329,7 +4576,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 +4605,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 +4637,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) {
@@ -4419,15 +4677,12 @@ assemble_lnotab(struct assembler *a, struct instr *i)
static int
assemble_emit(struct assembler *a, struct instr *i)
{
- int size, arg = 0, ext = 0;
+ int size, arg = 0;
Py_ssize_t len = PyBytes_GET_SIZE(a->a_bytecode);
char *code;
- size = instrsize(i);
- if (i->i_hasarg) {
- arg = i->i_oparg;
- ext = arg >> 16;
- }
+ arg = i->i_oparg;
+ size = instrsize(arg);
if (i->i_lineno && !assemble_lnotab(a, i))
return 0;
if (a->a_offset + size >= len) {
@@ -4438,19 +4693,7 @@ assemble_emit(struct assembler *a, struct instr *i)
}
code = PyBytes_AS_STRING(a->a_bytecode) + a->a_offset;
a->a_offset += size;
- if (size == 6) {
- assert(i->i_hasarg);
- *code++ = (char)EXTENDED_ARG;
- *code++ = ext & 0xff;
- *code++ = ext >> 8;
- arg &= 0xffff;
- }
- *code++ = i->i_opcode;
- if (i->i_hasarg) {
- assert(size == 3 || size == 6);
- *code++ = arg & 0xff;
- *code++ = arg >> 8;
- }
+ write_op_arg((unsigned char*)code, i->i_opcode, arg, size);
return 1;
}
@@ -4458,7 +4701,7 @@ static void
assemble_jump_offsets(struct assembler *a, struct compiler *c)
{
basicblock *b;
- int bsize, totsize, extended_arg_count = 0, last_extended_arg_count;
+ int bsize, totsize, extended_arg_recompile;
int i;
/* Compute the size of each block and fixup jump args.
@@ -4471,27 +4714,26 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c)
b->b_offset = totsize;
totsize += bsize;
}
- last_extended_arg_count = extended_arg_count;
- extended_arg_count = 0;
+ extended_arg_recompile = 0;
for (b = c->u->u_blocks; b != NULL; b = b->b_list) {
bsize = b->b_offset;
for (i = 0; i < b->b_iused; i++) {
struct instr *instr = &b->b_instr[i];
+ int isize = instrsize(instr->i_oparg);
/* Relative jumps are computed relative to
the instruction pointer after fetching
the jump instruction.
*/
- bsize += instrsize(instr);
- if (instr->i_jabs)
+ bsize += isize;
+ if (instr->i_jabs || instr->i_jrel) {
instr->i_oparg = instr->i_target->b_offset;
- else if (instr->i_jrel) {
- int delta = instr->i_target->b_offset - bsize;
- instr->i_oparg = delta;
+ if (instr->i_jrel) {
+ instr->i_oparg -= bsize;
+ }
+ if (instrsize(instr->i_oparg) != isize) {
+ extended_arg_recompile = 1;
+ }
}
- else
- continue;
- if (instr->i_oparg > 0xffff)
- extended_arg_count++;
}
}
@@ -4501,7 +4743,7 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c)
The issue is that in the first loop blocksize() is called
which calls instrsize() which requires i_oparg be set
- appropriately. There is a bootstrap problem because
+ appropriately. There is a bootstrap problem because
i_oparg is calculated in the second loop above.
So we loop until we stop seeing new EXTENDED_ARGs.
@@ -4509,7 +4751,7 @@ assemble_jump_offsets(struct assembler *a, struct compiler *c)
ones in jump instructions. So this should converge
fairly quickly.
*/
- } while (last_extended_arg_count != extended_arg_count);
+ } while (extended_arg_recompile);
}
static PyObject *
@@ -4655,9 +4897,9 @@ dump_instr(const struct instr *i)
char arg[128];
*arg = '\0';
- if (i->i_hasarg)
+ if (HAS_ARG(i->i_opcode)) {
sprintf(arg, "arg: %d ", i->i_oparg);
-
+ }
fprintf(stderr, "line: %d, opcode: %d %s%s%s\n",
i->i_lineno, i->i_opcode, arg, jabs, jrel);
}
@@ -4745,4 +4987,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 23eed71..06531d9 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
@@ -794,7 +798,7 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
int request;
int err;
#endif
- int flags;
+ int flags, new_flags;
int res;
#endif
@@ -885,10 +889,18 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
return -1;
}
- if (inheritable)
- flags &= ~FD_CLOEXEC;
- else
- flags |= FD_CLOEXEC;
+ if (inheritable) {
+ new_flags = flags & ~FD_CLOEXEC;
+ }
+ else {
+ new_flags = flags | FD_CLOEXEC;
+ }
+
+ if (new_flags == flags) {
+ /* FD_CLOEXEC flag already set/cleared: nothing to do */
+ return 0;
+ }
+
res = fcntl(fd, F_SETFD, flags);
if (res < 0) {
if (raise)
@@ -1169,6 +1181,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. */
@@ -1324,6 +1340,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. */
@@ -1473,6 +1493,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 8e9c502..d573288 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/frozen.c b/Python/frozen.c
index 676f395..7e04f3c 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -14,17 +14,15 @@
the appropriate bytes from M___main__.c. */
static unsigned char M___hello__[] = {
- 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
- 0,64,0,0,0,115,20,0,0,0,100,2,0,90,1,0,
- 101,2,0,100,0,0,131,1,0,1,100,1,0,83,40,3,
- 0,0,0,117,12,0,0,0,72,101,108,108,111,32,119,111,
- 114,108,100,33,78,84,40,3,0,0,0,117,4,0,0,0,
- 84,114,117,101,117,11,0,0,0,105,110,105,116,105,97,108,
- 105,122,101,100,117,5,0,0,0,112,114,105,110,116,40,0,
- 0,0,0,40,0,0,0,0,40,0,0,0,0,117,7,0,
- 0,0,102,108,97,103,46,112,121,117,8,0,0,0,60,109,
- 111,100,117,108,101,62,1,0,0,0,115,2,0,0,0,6,
- 1,
+ 227,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,64,0,0,0,115,16,0,0,0,100,0,90,0,101,1,
+ 100,1,131,1,1,0,100,2,83,0,41,3,84,122,12,72,
+ 101,108,108,111,32,119,111,114,108,100,33,78,41,2,218,11,
+ 105,110,105,116,105,97,108,105,122,101,100,218,5,112,114,105,
+ 110,116,169,0,114,3,0,0,0,114,3,0,0,0,250,22,
+ 46,47,84,111,111,108,115,47,102,114,101,101,122,101,47,102,
+ 108,97,103,46,112,121,218,8,60,109,111,100,117,108,101,62,
+ 1,0,0,0,115,2,0,0,0,4,1,
};
#define SIZE (int)sizeof(M___hello__)
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..4418ebb 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);
@@ -1051,35 +1056,25 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
return converterr("(AsCharBuffer failed)",
arg, msgbuf, bufsize);
}
- else {
- PyObject *u;
-
- /* Convert object to Unicode */
- u = PyUnicode_FromObject(arg);
- if (u == NULL)
- return converterr(
- "string or unicode or text buffer",
- arg, msgbuf, bufsize);
-
+ else if (PyUnicode_Check(arg)) {
/* Encode object; use default error handling */
- s = PyUnicode_AsEncodedString(u,
+ s = PyUnicode_AsEncodedString(arg,
encoding,
NULL);
- Py_DECREF(u);
if (s == NULL)
return converterr("(encoding failed)",
arg, msgbuf, bufsize);
- if (!PyBytes_Check(s)) {
- Py_DECREF(s);
- return converterr(
- "(encoder failed to return bytes)",
- arg, msgbuf, bufsize);
- }
+ assert(PyBytes_Check(s));
size = PyBytes_GET_SIZE(s);
ptr = PyBytes_AS_STRING(s);
if (ptr == NULL)
ptr = "";
}
+ else {
+ return converterr(
+ recode_strings ? "str" : "str, bytes or bytearray",
+ arg, msgbuf, bufsize);
+ }
/* Write output; output is guaranteed to be 0-terminated */
if (*format == '#') {
@@ -1129,7 +1124,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 +1278,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 +1300,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";
@@ -1448,7 +1443,8 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
const char *fname, *msg, *custom_msg, *keyword;
int min = INT_MAX;
int max = INT_MAX;
- int i, len;
+ int i, pos, len;
+ int skip = 0;
Py_ssize_t nargs, nkeywords;
PyObject *current_arg;
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
@@ -1476,9 +1472,17 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
custom_msg++;
}
+ /* scan kwlist and count the number of positional-only parameters */
+ for (pos = 0; kwlist[pos] && !*kwlist[pos]; pos++) {
+ }
/* scan kwlist and get greatest possible nbr of args */
- for (len=0; kwlist[len]; len++)
- continue;
+ for (len = pos; kwlist[len]; len++) {
+ if (!*kwlist[len]) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty keyword parameter name");
+ return cleanreturn(0, &freelist);
+ }
+ }
if (len > STATIC_FREELIST_ENTRIES) {
freelist.entries = PyMem_NEW(freelistentry_t, len);
@@ -1507,7 +1511,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 +1520,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);
}
@@ -1531,6 +1535,14 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
max = i;
format++;
+ if (max < pos) {
+ PyErr_SetString(PyExc_SystemError,
+ "Empty parameter name after $");
+ return cleanreturn(0, &freelist);
+ }
+ if (skip) {
+ break;
+ }
if (max < nargs) {
PyErr_Format(PyExc_TypeError,
"Function takes %s %d positional arguments"
@@ -1541,66 +1553,86 @@ 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);
}
- current_arg = NULL;
- if (nkeywords) {
- current_arg = PyDict_GetItemString(keywords, keyword);
- }
- if (current_arg) {
- --nkeywords;
- if (i < nargs) {
- /* arg present in tuple and in dict */
- PyErr_Format(PyExc_TypeError,
- "Argument given by name ('%s') "
- "and position (%d)",
- keyword, i+1);
- return cleanreturn(0, &freelist);
+ if (!skip) {
+ current_arg = NULL;
+ if (nkeywords && i >= pos) {
+ current_arg = PyDict_GetItemString(keywords, keyword);
+ if (!current_arg && PyErr_Occurred()) {
+ return cleanreturn(0, &freelist);
+ }
}
- }
- else if (nkeywords && PyErr_Occurred())
- return cleanreturn(0, &freelist);
- else if (i < nargs)
- current_arg = PyTuple_GET_ITEM(args, i);
-
- if (current_arg) {
- msg = convertitem(current_arg, &format, p_va, flags,
- levels, msgbuf, sizeof(msgbuf), &freelist);
- if (msg) {
- seterror(i+1, msg, levels, fname, custom_msg);
- return cleanreturn(0, &freelist);
+ if (current_arg) {
+ --nkeywords;
+ if (i < nargs) {
+ /* arg present in tuple and in dict */
+ PyErr_Format(PyExc_TypeError,
+ "Argument given by name ('%s') "
+ "and position (%d)",
+ keyword, i+1);
+ return cleanreturn(0, &freelist);
+ }
+ }
+ else if (i < nargs)
+ current_arg = PyTuple_GET_ITEM(args, i);
+
+ if (current_arg) {
+ msg = convertitem(current_arg, &format, p_va, flags,
+ levels, msgbuf, sizeof(msgbuf), &freelist);
+ if (msg) {
+ seterror(i+1, msg, levels, fname, custom_msg);
+ return cleanreturn(0, &freelist);
+ }
+ continue;
}
- continue;
- }
- if (i < min) {
- PyErr_Format(PyExc_TypeError, "Required argument "
- "'%s' (pos %d) not found",
- keyword, i+1);
- return cleanreturn(0, &freelist);
+ if (i < min) {
+ if (i < pos) {
+ assert (min == INT_MAX);
+ assert (max == INT_MAX);
+ skip = 1;
+ }
+ else {
+ PyErr_Format(PyExc_TypeError, "Required argument "
+ "'%s' (pos %d) not found",
+ keyword, i+1);
+ return cleanreturn(0, &freelist);
+ }
+ }
+ /* current code reports success when all required args
+ * fulfilled and no keyword args left, with no further
+ * validation. XXX Maybe skip this in debug build ?
+ */
+ if (!nkeywords && !skip) {
+ return cleanreturn(1, &freelist);
+ }
}
- /* current code reports success when all required args
- * fulfilled and no keyword args left, with no further
- * validation. XXX Maybe skip this in debug build ?
- */
- if (!nkeywords)
- return cleanreturn(1, &freelist);
/* We are into optional args, skip thru to any remaining
* 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 (skip) {
+ PyErr_Format(PyExc_TypeError,
+ "Function takes %s %d positional arguments"
+ " (%d given)",
+ (Py_MIN(pos, min) < i) ? "at least" : "exactly",
+ Py_MIN(pos, min), nargs);
+ 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);
@@ -1618,7 +1650,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
return cleanreturn(0, &freelist);
}
for (i = 0; i < len; i++) {
- if (!PyUnicode_CompareWithASCIIString(key, kwlist[i])) {
+ if (*kwlist[i] && !PyUnicode_CompareWithASCIIString(key, kwlist[i])) {
match = 1;
break;
}
@@ -1637,7 +1669,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 +1762,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 +1798,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 +1818,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 +1834,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..d4c358f 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -38,14 +38,6 @@ module _imp
#include "clinic/import.c.h"
-/*[python input]
-class fs_unicode_converter(CConverter):
- type = 'PyObject *'
- converter = 'PyUnicode_FSDecoder'
-
-[python start generated code]*/
-/*[python end generated code: output=da39a3ee5e6b4b0d input=9d6786230166006e]*/
-
/* Initialize things */
void
@@ -320,7 +312,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 +322,7 @@ static char* sys_deletes[] = {
NULL
};
-static char* sys_files[] = {
+static const char * const sys_files[] = {
"stdin", "__stdin__",
"stdout", "__stdout__",
"stderr", "__stderr__",
@@ -347,7 +339,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 +875,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 +1321,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 {
@@ -1361,12 +1349,12 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
_Py_IDENTIFIER(_find_and_load);
_Py_IDENTIFIER(_handle_fromlist);
_Py_IDENTIFIER(_lock_unlock_module);
- _Py_static_string(single_dot, ".");
PyObject *abs_name = NULL;
PyObject *builtins_import = NULL;
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,42 +1411,93 @@ 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;
- PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot);
- if (borrowed_dot == NULL) {
+ Py_ssize_t dot;
+
+ if (PyUnicode_READY(package) < 0) {
goto error;
}
- partition = PyUnicode_RPartition(package, borrowed_dot);
- Py_DECREF(package);
- if (partition == NULL) {
+
+ dot = PyUnicode_FindChar(package, '.',
+ 0, PyUnicode_GET_LENGTH(package), -1);
+ if (dot == -2) {
goto error;
}
- package = PyTuple_GET_ITEM(partition, 0);
- Py_INCREF(package);
- Py_DECREF(partition);
+
+ if (dot >= 0) {
+ PyObject *substr = PyUnicode_Substring(package, 0, dot);
+ if (substr == NULL) {
+ goto error;
+ }
+ Py_SETREF(package, substr);
+ }
}
}
- 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);
@@ -1497,17 +1536,8 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
goto error;
if (PyUnicode_GET_LENGTH(name) > 0) {
- PyObject *borrowed_dot, *seq = NULL;
-
- borrowed_dot = _PyUnicode_FromId(&single_dot);
- seq = PyTuple_Pack(2, base, name);
+ abs_name = PyUnicode_FromFormat("%U.%U", base, name);
Py_DECREF(base);
- if (borrowed_dot == NULL || seq == NULL) {
- goto error;
- }
-
- abs_name = PyUnicode_Join(borrowed_dot, seq);
- Py_DECREF(seq);
if (abs_name == NULL) {
goto error;
}
@@ -1605,43 +1635,36 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
if (has_from < 0)
goto error;
if (!has_from) {
- if (level == 0 || PyUnicode_GET_LENGTH(name) > 0) {
- PyObject *front = NULL;
- PyObject *partition = NULL;
- PyObject *borrowed_dot = _PyUnicode_FromId(&single_dot);
-
- if (borrowed_dot == NULL) {
- goto error;
- }
+ Py_ssize_t len = PyUnicode_GET_LENGTH(name);
+ if (level == 0 || len > 0) {
+ Py_ssize_t dot;
- partition = PyUnicode_Partition(name, borrowed_dot);
- if (partition == NULL) {
+ dot = PyUnicode_FindChar(name, '.', 0, len, 1);
+ if (dot == -2) {
goto error;
}
- if (PyUnicode_GET_LENGTH(PyTuple_GET_ITEM(partition, 1)) == 0) {
+ if (dot == -1) {
/* No dot in module name, simple exit */
- Py_DECREF(partition);
final_mod = mod;
Py_INCREF(mod);
goto error;
}
- front = PyTuple_GET_ITEM(partition, 0);
- Py_INCREF(front);
- Py_DECREF(partition);
-
if (level == 0) {
+ PyObject *front = PyUnicode_Substring(name, 0, dot);
+ if (front == NULL) {
+ goto error;
+ }
+
final_mod = PyObject_CallFunctionObjArgs(builtins_import, front, NULL);
Py_DECREF(front);
}
else {
- Py_ssize_t cut_off = PyUnicode_GET_LENGTH(name) -
- PyUnicode_GET_LENGTH(front);
+ Py_ssize_t cut_off = len - dot;
Py_ssize_t abs_name_len = PyUnicode_GET_LENGTH(abs_name);
PyObject *to_return = PyUnicode_Substring(abs_name, 0,
abs_name_len - cut_off);
- Py_DECREF(front);
if (to_return == NULL) {
goto error;
}
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 7f6b753..e3364b3 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -1,171 +1,154 @@
/* Auto-generated by Programs/_freeze_importlib.c */
const unsigned char _Py_M__importlib[] = {
- 99,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
- 0,64,0,0,0,115,169,2,0,0,100,0,0,90,0,0,
- 100,1,0,97,1,0,100,2,0,100,3,0,132,0,0,90,
- 2,0,100,4,0,100,5,0,132,0,0,90,3,0,71,100,
- 6,0,100,7,0,132,0,0,100,7,0,131,2,0,90,4,
- 0,105,0,0,90,5,0,105,0,0,90,6,0,71,100,8,
- 0,100,9,0,132,0,0,100,9,0,101,7,0,131,3,0,
- 90,8,0,71,100,10,0,100,11,0,132,0,0,100,11,0,
- 131,2,0,90,9,0,71,100,12,0,100,13,0,132,0,0,
- 100,13,0,131,2,0,90,10,0,71,100,14,0,100,15,0,
- 132,0,0,100,15,0,131,2,0,90,11,0,100,16,0,100,
- 17,0,132,0,0,90,12,0,100,18,0,100,19,0,132,0,
- 0,90,13,0,100,20,0,100,21,0,132,0,0,90,14,0,
- 100,22,0,100,23,0,100,24,0,100,25,0,132,0,1,90,
- 15,0,100,26,0,100,27,0,132,0,0,90,16,0,100,28,
- 0,100,29,0,132,0,0,90,17,0,100,30,0,100,31,0,
- 132,0,0,90,18,0,100,32,0,100,33,0,132,0,0,90,
- 19,0,71,100,34,0,100,35,0,132,0,0,100,35,0,131,
- 2,0,90,20,0,71,100,36,0,100,37,0,132,0,0,100,
- 37,0,131,2,0,90,21,0,100,38,0,100,1,0,100,39,
- 0,100,1,0,100,40,0,100,41,0,132,0,2,90,22,0,
- 101,23,0,131,0,0,90,24,0,100,1,0,100,1,0,100,
- 42,0,100,43,0,132,2,0,90,25,0,100,44,0,100,45,
- 0,100,46,0,100,47,0,132,0,1,90,26,0,100,48,0,
- 100,49,0,132,0,0,90,27,0,100,50,0,100,51,0,132,
- 0,0,90,28,0,100,52,0,100,53,0,132,0,0,90,29,
- 0,100,54,0,100,55,0,132,0,0,90,30,0,100,56,0,
- 100,57,0,132,0,0,90,31,0,100,58,0,100,59,0,132,
- 0,0,90,32,0,71,100,60,0,100,61,0,132,0,0,100,
- 61,0,131,2,0,90,33,0,71,100,62,0,100,63,0,132,
- 0,0,100,63,0,131,2,0,90,34,0,71,100,64,0,100,
- 65,0,132,0,0,100,65,0,131,2,0,90,35,0,100,66,
- 0,100,67,0,132,0,0,90,36,0,100,68,0,100,69,0,
- 132,0,0,90,37,0,100,1,0,100,70,0,100,71,0,132,
- 1,0,90,38,0,100,72,0,100,73,0,132,0,0,90,39,
- 0,100,74,0,90,40,0,101,40,0,100,75,0,23,90,41,
- 0,100,76,0,100,77,0,132,0,0,90,42,0,100,78,0,
- 100,79,0,132,0,0,90,43,0,100,1,0,100,80,0,100,
- 81,0,100,82,0,132,2,0,90,44,0,100,83,0,100,84,
- 0,132,0,0,90,45,0,100,85,0,100,86,0,132,0,0,
- 90,46,0,100,1,0,100,1,0,102,0,0,100,80,0,100,
- 87,0,100,88,0,132,4,0,90,47,0,100,89,0,100,90,
- 0,132,0,0,90,48,0,100,91,0,100,92,0,132,0,0,
- 90,49,0,100,93,0,100,94,0,132,0,0,90,50,0,100,
- 1,0,83,41,95,97,83,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,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,78,99,2,
- 0,0,0,0,0,0,0,3,0,0,0,7,0,0,0,67,
- 0,0,0,115,92,0,0,0,120,66,0,100,1,0,100,2,
- 0,100,3,0,100,4,0,103,4,0,68,93,46,0,125,2,
- 0,116,0,0,124,1,0,124,2,0,131,2,0,114,19,0,
- 116,1,0,124,0,0,124,2,0,116,2,0,124,1,0,124,
- 2,0,131,2,0,131,3,0,1,113,19,0,87,124,0,0,
- 106,3,0,106,4,0,124,1,0,106,3,0,131,1,0,1,
- 100,5,0,83,41,6,122,47,83,105,109,112,108,101,32,115,
- 117,98,115,116,105,116,117,116,101,32,102,111,114,32,102,117,
- 110,99,116,111,111,108,115,46,117,112,100,97,116,101,95,119,
- 114,97,112,112,101,114,46,218,10,95,95,109,111,100,117,108,
- 101,95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,
- 95,113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,
- 111,99,95,95,78,41,5,218,7,104,97,115,97,116,116,114,
- 218,7,115,101,116,97,116,116,114,218,7,103,101,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,
- 218,7,114,101,112,108,97,99,101,169,0,114,10,0,0,0,
- 250,29,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,62,218,
- 5,95,119,114,97,112,27,0,0,0,115,8,0,0,0,0,
- 2,25,1,15,1,29,1,114,12,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,16,0,0,0,116,0,0,116,1,0,131,1,0,124,
- 0,0,131,1,0,83,41,1,78,41,2,218,4,116,121,112,
- 101,218,3,115,121,115,41,1,218,4,110,97,109,101,114,10,
- 0,0,0,114,10,0,0,0,114,11,0,0,0,218,11,95,
- 110,101,119,95,109,111,100,117,108,101,35,0,0,0,115,2,
- 0,0,0,0,1,114,16,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,
- 58,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,83,41,9,
- 218,13,95,77,97,110,97,103,101,82,101,108,111,97,100,122,
- 63,77,97,110,97,103,101,115,32,116,104,101,32,112,111,115,
- 115,105,98,108,101,32,99,108,101,97,110,45,117,112,32,111,
- 102,32,115,121,115,46,109,111,100,117,108,101,115,32,102,111,
- 114,32,108,111,97,100,95,109,111,100,117,108,101,40,41,46,
- 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,
- 0,67,0,0,0,115,13,0,0,0,124,1,0,124,0,0,
- 95,0,0,100,0,0,83,41,1,78,41,1,218,5,95,110,
- 97,109,101,41,2,218,4,115,101,108,102,114,15,0,0,0,
- 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,
- 8,95,95,105,110,105,116,95,95,43,0,0,0,115,2,0,
- 0,0,0,1,122,22,95,77,97,110,97,103,101,82,101,108,
- 111,97,100,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,25,0,0,0,124,0,0,106,0,0,116,1,0,106,
- 2,0,107,6,0,124,0,0,95,3,0,100,0,0,83,41,
- 1,78,41,4,114,18,0,0,0,114,14,0,0,0,218,7,
- 109,111,100,117,108,101,115,218,10,95,105,115,95,114,101,108,
- 111,97,100,41,1,114,19,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,218,9,95,95,101,110,116,
- 101,114,95,95,46,0,0,0,115,2,0,0,0,0,1,122,
- 23,95,77,97,110,97,103,101,82,101,108,111,97,100,46,95,
- 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0,
- 0,2,0,0,0,11,0,0,0,71,0,0,0,115,77,0,
- 0,0,116,0,0,100,1,0,100,2,0,132,0,0,124,1,
- 0,68,131,1,0,131,1,0,114,73,0,124,0,0,106,1,
- 0,12,114,73,0,121,17,0,116,2,0,106,3,0,124,0,
- 0,106,4,0,61,87,110,18,0,4,116,5,0,107,10,0,
- 114,72,0,1,1,1,89,110,1,0,88,100,0,0,83,41,
- 3,78,99,1,0,0,0,0,0,0,0,2,0,0,0,3,
- 0,0,0,115,0,0,0,115,27,0,0,0,124,0,0,93,
- 17,0,125,1,0,124,1,0,100,0,0,107,9,0,86,1,
- 113,3,0,100,0,0,83,41,1,78,114,10,0,0,0,41,
- 2,218,2,46,48,218,3,97,114,103,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,250,9,60,103,101,110,101,
- 120,112,114,62,50,0,0,0,115,2,0,0,0,6,0,122,
- 41,95,77,97,110,97,103,101,82,101,108,111,97,100,46,95,
- 95,101,120,105,116,95,95,46,60,108,111,99,97,108,115,62,
- 46,60,103,101,110,101,120,112,114,62,41,6,218,3,97,110,
- 121,114,22,0,0,0,114,14,0,0,0,114,21,0,0,0,
- 114,18,0,0,0,218,8,75,101,121,69,114,114,111,114,41,
- 2,114,19,0,0,0,218,4,97,114,103,115,114,10,0,0,
- 0,114,10,0,0,0,114,11,0,0,0,218,8,95,95,101,
- 120,105,116,95,95,49,0,0,0,115,10,0,0,0,0,1,
- 35,1,3,1,17,1,13,1,122,22,95,77,97,110,97,103,
- 101,82,101,108,111,97,100,46,95,95,101,120,105,116,95,95,
- 78,41,7,114,1,0,0,0,114,0,0,0,0,114,2,0,
- 0,0,114,3,0,0,0,114,20,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,17,0,0,0,39,
- 0,0,0,115,8,0,0,0,12,2,6,2,12,3,12,3,
- 114,17,0,0,0,99,0,0,0,0,0,0,0,0,0,0,
- 0,0,1,0,0,0,64,0,0,0,115,16,0,0,0,101,
- 0,0,90,1,0,100,0,0,90,2,0,100,1,0,83,41,
- 2,218,14,95,68,101,97,100,108,111,99,107,69,114,114,111,
- 114,78,41,3,114,1,0,0,0,114,0,0,0,0,114,2,
- 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,11,0,0,0,114,31,0,0,0,64,0,0,0,
- 115,2,0,0,0,12,1,114,31,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,82,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,83,41,13,218,11,95,77,111,100,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,
+ 0,64,0,0,0,115,216,1,0,0,100,0,90,0,100,1,
+ 97,1,100,2,100,3,132,0,90,2,100,4,100,5,132,0,
+ 90,3,71,0,100,6,100,7,132,0,100,7,131,2,90,4,
+ 105,0,90,5,105,0,90,6,71,0,100,8,100,9,132,0,
+ 100,9,101,7,131,3,90,8,71,0,100,10,100,11,132,0,
+ 100,11,131,2,90,9,71,0,100,12,100,13,132,0,100,13,
+ 131,2,90,10,71,0,100,14,100,15,132,0,100,15,131,2,
+ 90,11,100,16,100,17,132,0,90,12,100,18,100,19,132,0,
+ 90,13,100,20,100,21,132,0,90,14,100,22,100,23,156,1,
+ 100,24,100,25,132,2,90,15,100,26,100,27,132,0,90,16,
+ 100,28,100,29,132,0,90,17,100,30,100,31,132,0,90,18,
+ 100,32,100,33,132,0,90,19,71,0,100,34,100,35,132,0,
+ 100,35,131,2,90,20,71,0,100,36,100,37,132,0,100,37,
+ 131,2,90,21,100,1,100,1,100,38,156,2,100,39,100,40,
+ 132,2,90,22,101,23,131,0,90,24,100,94,100,41,100,42,
+ 132,1,90,25,100,43,100,44,156,1,100,45,100,46,132,2,
+ 90,26,100,47,100,48,132,0,90,27,100,49,100,50,132,0,
+ 90,28,100,51,100,52,132,0,90,29,100,53,100,54,132,0,
+ 90,30,100,55,100,56,132,0,90,31,100,57,100,58,132,0,
+ 90,32,71,0,100,59,100,60,132,0,100,60,131,2,90,33,
+ 71,0,100,61,100,62,132,0,100,62,131,2,90,34,71,0,
+ 100,63,100,64,132,0,100,64,131,2,90,35,100,65,100,66,
+ 132,0,90,36,100,67,100,68,132,0,90,37,100,95,100,69,
+ 100,70,132,1,90,38,100,71,100,72,132,0,90,39,100,73,
+ 90,40,101,40,100,74,23,0,90,41,100,75,100,76,132,0,
+ 90,42,100,77,100,78,132,0,90,43,100,96,100,80,100,81,
+ 132,1,90,44,100,82,100,83,132,0,90,45,100,84,100,85,
+ 132,0,90,46,100,1,100,1,102,0,100,79,102,4,100,86,
+ 100,87,132,1,90,47,100,88,100,89,132,0,90,48,100,90,
+ 100,91,132,0,90,49,100,92,100,93,132,0,90,50,100,1,
+ 83,0,41,97,97,83,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,
+ 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,78,99,2,0,
+ 0,0,0,0,0,0,3,0,0,0,7,0,0,0,67,0,
+ 0,0,115,60,0,0,0,120,40,100,6,68,0,93,32,125,
+ 2,116,0,124,1,124,2,131,2,114,6,116,1,124,0,124,
+ 2,116,2,124,1,124,2,131,2,131,3,1,0,113,6,87,
+ 0,124,0,106,3,106,4,124,1,106,3,131,1,1,0,100,
+ 5,83,0,41,7,122,47,83,105,109,112,108,101,32,115,117,
+ 98,115,116,105,116,117,116,101,32,102,111,114,32,102,117,110,
+ 99,116,111,111,108,115,46,117,112,100,97,116,101,95,119,114,
+ 97,112,112,101,114,46,218,10,95,95,109,111,100,117,108,101,
+ 95,95,218,8,95,95,110,97,109,101,95,95,218,12,95,95,
+ 113,117,97,108,110,97,109,101,95,95,218,7,95,95,100,111,
+ 99,95,95,78,41,4,122,10,95,95,109,111,100,117,108,101,
+ 95,95,122,8,95,95,110,97,109,101,95,95,122,12,95,95,
+ 113,117,97,108,110,97,109,101,95,95,122,7,95,95,100,111,
+ 99,95,95,41,5,218,7,104,97,115,97,116,116,114,218,7,
+ 115,101,116,97,116,116,114,218,7,103,101,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,218,7,
+ 114,101,112,108,97,99,101,169,0,114,10,0,0,0,250,29,
+ 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,62,218,5,95,
+ 119,114,97,112,27,0,0,0,115,8,0,0,0,0,2,10,
+ 1,10,1,22,1,114,12,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,
+ 12,0,0,0,116,0,116,1,131,1,124,0,131,1,83,0,
+ 41,1,78,41,2,218,4,116,121,112,101,218,3,115,121,115,
+ 41,1,218,4,110,97,109,101,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,218,11,95,110,101,119,95,109,111,
+ 100,117,108,101,35,0,0,0,115,2,0,0,0,0,1,114,
+ 16,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,40,0,0,0,101,0,
+ 90,1,100,0,90,2,100,1,90,3,100,2,100,3,132,0,
+ 90,4,100,4,100,5,132,0,90,5,100,6,100,7,132,0,
+ 90,6,100,8,83,0,41,9,218,13,95,77,97,110,97,103,
+ 101,82,101,108,111,97,100,122,63,77,97,110,97,103,101,115,
+ 32,116,104,101,32,112,111,115,115,105,98,108,101,32,99,108,
+ 101,97,110,45,117,112,32,111,102,32,115,121,115,46,109,111,
+ 100,117,108,101,115,32,102,111,114,32,108,111,97,100,95,109,
+ 111,100,117,108,101,40,41,46,99,2,0,0,0,0,0,0,
+ 0,2,0,0,0,2,0,0,0,67,0,0,0,115,10,0,
+ 0,0,124,1,124,0,95,0,100,0,83,0,41,1,78,41,
+ 1,218,5,95,110,97,109,101,41,2,218,4,115,101,108,102,
+ 114,15,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,218,8,95,95,105,110,105,116,95,95,43,0,
+ 0,0,115,2,0,0,0,0,1,122,22,95,77,97,110,97,
+ 103,101,82,101,108,111,97,100,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,18,0,0,0,124,0,106,0,116,
+ 1,106,2,107,6,124,0,95,3,100,0,83,0,41,1,78,
+ 41,4,114,18,0,0,0,114,14,0,0,0,218,7,109,111,
+ 100,117,108,101,115,218,10,95,105,115,95,114,101,108,111,97,
+ 100,41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,218,9,95,95,101,110,116,101,114,
+ 95,95,46,0,0,0,115,2,0,0,0,0,1,122,23,95,
+ 77,97,110,97,103,101,82,101,108,111,97,100,46,95,95,101,
+ 110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,2,
+ 0,0,0,11,0,0,0,71,0,0,0,115,66,0,0,0,
+ 116,0,100,1,100,2,132,0,124,1,68,0,131,1,131,1,
+ 114,62,124,0,106,1,12,0,114,62,121,14,116,2,106,3,
+ 124,0,106,4,61,0,87,0,110,20,4,0,116,5,107,10,
+ 114,60,1,0,1,0,1,0,89,0,110,2,88,0,100,0,
+ 83,0,41,3,78,99,1,0,0,0,0,0,0,0,2,0,
+ 0,0,3,0,0,0,115,0,0,0,115,22,0,0,0,124,
+ 0,93,14,125,1,124,1,100,0,107,9,86,0,1,0,113,
+ 2,100,0,83,0,41,1,78,114,10,0,0,0,41,2,218,
+ 2,46,48,218,3,97,114,103,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,250,9,60,103,101,110,101,120,112,
+ 114,62,50,0,0,0,115,2,0,0,0,4,0,122,41,95,
+ 77,97,110,97,103,101,82,101,108,111,97,100,46,95,95,101,
+ 120,105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,
+ 103,101,110,101,120,112,114,62,41,6,218,3,97,110,121,114,
+ 22,0,0,0,114,14,0,0,0,114,21,0,0,0,114,18,
+ 0,0,0,218,8,75,101,121,69,114,114,111,114,41,2,114,
+ 19,0,0,0,218,4,97,114,103,115,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,218,8,95,95,101,120,105,
+ 116,95,95,49,0,0,0,115,10,0,0,0,0,1,26,1,
+ 2,1,14,1,14,1,122,22,95,77,97,110,97,103,101,82,
+ 101,108,111,97,100,46,95,95,101,120,105,116,95,95,78,41,
+ 7,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,
+ 114,3,0,0,0,114,20,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,17,0,0,0,39,0,0,
+ 0,115,8,0,0,0,8,2,4,2,8,3,8,3,114,17,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 1,0,0,0,64,0,0,0,115,12,0,0,0,101,0,90,
+ 1,100,0,90,2,100,1,83,0,41,2,218,14,95,68,101,
+ 97,100,108,111,99,107,69,114,114,111,114,78,41,3,114,1,
+ 0,0,0,114,0,0,0,0,114,2,0,0,0,114,10,0,
+ 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,31,0,0,0,64,0,0,0,115,2,0,0,0,8,
+ 1,114,31,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,56,0,0,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,
+ 132,0,90,4,100,4,100,5,132,0,90,5,100,6,100,7,
+ 132,0,90,6,100,8,100,9,132,0,90,7,100,10,100,11,
+ 132,0,90,8,100,12,83,0,41,13,218,11,95,77,111,100,
117,108,101,76,111,99,107,122,169,65,32,114,101,99,117,114,
115,105,118,101,32,108,111,99,107,32,105,109,112,108,101,109,
101,110,116,97,116,105,111,110,32,119,104,105,99,104,32,105,
@@ -178,162 +161,151 @@ const unsigned char _Py_M__importlib[] = {
32,116,111,10,32,32,32,32,116,97,107,101,32,108,111,99,
107,115,32,66,32,116,104,101,110,32,65,41,46,10,32,32,
32,32,99,2,0,0,0,0,0,0,0,2,0,0,0,2,
- 0,0,0,67,0,0,0,115,70,0,0,0,116,0,0,106,
- 1,0,131,0,0,124,0,0,95,2,0,116,0,0,106,1,
- 0,131,0,0,124,0,0,95,3,0,124,1,0,124,0,0,
- 95,4,0,100,0,0,124,0,0,95,5,0,100,1,0,124,
- 0,0,95,6,0,100,1,0,124,0,0,95,7,0,100,0,
- 0,83,41,2,78,233,0,0,0,0,41,8,218,7,95,116,
- 104,114,101,97,100,90,13,97,108,108,111,99,97,116,101,95,
- 108,111,99,107,218,4,108,111,99,107,218,6,119,97,107,101,
- 117,112,114,15,0,0,0,218,5,111,119,110,101,114,218,5,
- 99,111,117,110,116,218,7,119,97,105,116,101,114,115,41,2,
- 114,19,0,0,0,114,15,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,20,0,0,0,74,0,
- 0,0,115,12,0,0,0,0,1,15,1,15,1,9,1,9,
- 1,9,1,122,20,95,77,111,100,117,108,101,76,111,99,107,
- 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,
- 0,0,4,0,0,0,2,0,0,0,67,0,0,0,115,88,
- 0,0,0,116,0,0,106,1,0,131,0,0,125,1,0,124,
- 0,0,106,2,0,125,2,0,120,60,0,116,3,0,106,4,
- 0,124,2,0,131,1,0,125,3,0,124,3,0,100,0,0,
- 107,8,0,114,55,0,100,1,0,83,124,3,0,106,2,0,
- 125,2,0,124,2,0,124,1,0,107,2,0,114,24,0,100,
- 2,0,83,113,24,0,87,100,0,0,83,41,3,78,70,84,
- 41,5,114,34,0,0,0,218,9,103,101,116,95,105,100,101,
- 110,116,114,37,0,0,0,218,12,95,98,108,111,99,107,105,
- 110,103,95,111,110,218,3,103,101,116,41,4,114,19,0,0,
- 0,90,2,109,101,218,3,116,105,100,114,35,0,0,0,114,
- 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,12,
- 104,97,115,95,100,101,97,100,108,111,99,107,82,0,0,0,
- 115,18,0,0,0,0,2,12,1,9,1,3,1,15,1,12,
- 1,4,1,9,1,12,1,122,24,95,77,111,100,117,108,101,
- 76,111,99,107,46,104,97,115,95,100,101,97,100,108,111,99,
- 107,99,1,0,0,0,0,0,0,0,2,0,0,0,16,0,
- 0,0,67,0,0,0,115,210,0,0,0,116,0,0,106,1,
- 0,131,0,0,125,1,0,124,0,0,116,2,0,124,1,0,
- 60,122,173,0,120,166,0,124,0,0,106,3,0,143,124,0,
- 1,124,0,0,106,4,0,100,1,0,107,2,0,115,68,0,
- 124,0,0,106,5,0,124,1,0,107,2,0,114,96,0,124,
- 1,0,124,0,0,95,5,0,124,0,0,4,106,4,0,100,
- 2,0,55,2,95,4,0,100,3,0,83,124,0,0,106,6,
- 0,131,0,0,114,124,0,116,7,0,100,4,0,124,0,0,
- 22,131,1,0,130,1,0,124,0,0,106,8,0,106,9,0,
- 100,5,0,131,1,0,114,157,0,124,0,0,4,106,10,0,
- 100,2,0,55,2,95,10,0,87,100,6,0,81,82,88,124,
- 0,0,106,8,0,106,9,0,131,0,0,1,124,0,0,106,
- 8,0,106,11,0,131,0,0,1,113,28,0,87,87,100,6,
- 0,116,2,0,124,1,0,61,88,100,6,0,83,41,7,122,
- 185,10,32,32,32,32,32,32,32,32,65,99,113,117,105,114,
- 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,
- 107,46,32,32,73,102,32,97,32,112,111,116,101,110,116,105,
- 97,108,32,100,101,97,100,108,111,99,107,32,105,115,32,100,
- 101,116,101,99,116,101,100,44,10,32,32,32,32,32,32,32,
- 32,97,32,95,68,101,97,100,108,111,99,107,69,114,114,111,
- 114,32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,
- 32,32,32,32,32,79,116,104,101,114,119,105,115,101,44,32,
- 116,104,101,32,108,111,99,107,32,105,115,32,97,108,119,97,
- 121,115,32,97,99,113,117,105,114,101,100,32,97,110,100,32,
- 84,114,117,101,32,105,115,32,114,101,116,117,114,110,101,100,
- 46,10,32,32,32,32,32,32,32,32,114,33,0,0,0,233,
- 1,0,0,0,84,122,23,100,101,97,100,108,111,99,107,32,
- 100,101,116,101,99,116,101,100,32,98,121,32,37,114,70,78,
- 41,12,114,34,0,0,0,114,40,0,0,0,114,41,0,0,
- 0,114,35,0,0,0,114,38,0,0,0,114,37,0,0,0,
- 114,44,0,0,0,114,31,0,0,0,114,36,0,0,0,218,
- 7,97,99,113,117,105,114,101,114,39,0,0,0,218,7,114,
- 101,108,101,97,115,101,41,2,114,19,0,0,0,114,43,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,114,46,0,0,0,94,0,0,0,115,32,0,0,0,0,
- 6,12,1,10,1,3,1,3,1,10,1,30,1,9,1,15,
- 1,4,1,12,1,16,1,18,1,22,2,13,1,21,2,122,
- 19,95,77,111,100,117,108,101,76,111,99,107,46,97,99,113,
- 117,105,114,101,99,1,0,0,0,0,0,0,0,2,0,0,
- 0,10,0,0,0,67,0,0,0,115,157,0,0,0,116,0,
- 0,106,1,0,131,0,0,125,1,0,124,0,0,106,2,0,
- 143,129,0,1,124,0,0,106,3,0,124,1,0,107,3,0,
- 114,49,0,116,4,0,100,1,0,131,1,0,130,1,0,124,
- 0,0,106,5,0,100,2,0,107,4,0,115,70,0,116,6,
- 0,130,1,0,124,0,0,4,106,5,0,100,3,0,56,2,
- 95,5,0,124,0,0,106,5,0,100,2,0,107,2,0,114,
- 146,0,100,0,0,124,0,0,95,3,0,124,0,0,106,7,
- 0,114,146,0,124,0,0,4,106,7,0,100,3,0,56,2,
- 95,7,0,124,0,0,106,8,0,106,9,0,131,0,0,1,
- 87,100,0,0,81,82,88,100,0,0,83,41,4,78,122,31,
- 99,97,110,110,111,116,32,114,101,108,101,97,115,101,32,117,
- 110,45,97,99,113,117,105,114,101,100,32,108,111,99,107,114,
- 33,0,0,0,114,45,0,0,0,41,10,114,34,0,0,0,
- 114,40,0,0,0,114,35,0,0,0,114,37,0,0,0,218,
- 12,82,117,110,116,105,109,101,69,114,114,111,114,114,38,0,
- 0,0,218,14,65,115,115,101,114,116,105,111,110,69,114,114,
- 111,114,114,39,0,0,0,114,36,0,0,0,114,47,0,0,
- 0,41,2,114,19,0,0,0,114,43,0,0,0,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,47,0,0,
- 0,119,0,0,0,115,22,0,0,0,0,1,12,1,10,1,
- 15,1,12,1,21,1,15,1,15,1,9,1,9,1,15,1,
- 122,19,95,77,111,100,117,108,101,76,111,99,107,46,114,101,
- 108,101,97,115,101,99,1,0,0,0,0,0,0,0,1,0,
- 0,0,4,0,0,0,67,0,0,0,115,25,0,0,0,100,
- 1,0,106,0,0,124,0,0,106,1,0,116,2,0,124,0,
- 0,131,1,0,131,2,0,83,41,2,78,122,23,95,77,111,
- 100,117,108,101,76,111,99,107,40,123,33,114,125,41,32,97,
- 116,32,123,125,41,3,218,6,102,111,114,109,97,116,114,15,
- 0,0,0,218,2,105,100,41,1,114,19,0,0,0,114,10,
- 0,0,0,114,10,0,0,0,114,11,0,0,0,218,8,95,
- 95,114,101,112,114,95,95,132,0,0,0,115,2,0,0,0,
- 0,1,122,20,95,77,111,100,117,108,101,76,111,99,107,46,
- 95,95,114,101,112,114,95,95,78,41,9,114,1,0,0,0,
- 114,0,0,0,0,114,2,0,0,0,114,3,0,0,0,114,
- 20,0,0,0,114,44,0,0,0,114,46,0,0,0,114,47,
- 0,0,0,114,52,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,32,0,0,
- 0,68,0,0,0,115,12,0,0,0,12,4,6,2,12,8,
- 12,12,12,25,12,13,114,32,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,16,95,
- 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,122,
- 86,65,32,115,105,109,112,108,101,32,95,77,111,100,117,108,
- 101,76,111,99,107,32,101,113,117,105,118,97,108,101,110,116,
- 32,102,111,114,32,80,121,116,104,111,110,32,98,117,105,108,
- 100,115,32,119,105,116,104,111,117,116,10,32,32,32,32,109,
- 117,108,116,105,45,116,104,114,101,97,100,105,110,103,32,115,
- 117,112,112,111,114,116,46,99,2,0,0,0,0,0,0,0,
- 2,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,100,1,0,124,0,0,
- 95,1,0,100,0,0,83,41,2,78,114,33,0,0,0,41,
- 2,114,15,0,0,0,114,38,0,0,0,41,2,114,19,0,
- 0,0,114,15,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,20,0,0,0,140,0,0,0,115,
- 4,0,0,0,0,1,9,1,122,25,95,68,117,109,109,121,
+ 0,0,0,67,0,0,0,115,48,0,0,0,116,0,106,1,
+ 131,0,124,0,95,2,116,0,106,1,131,0,124,0,95,3,
+ 124,1,124,0,95,4,100,0,124,0,95,5,100,1,124,0,
+ 95,6,100,1,124,0,95,7,100,0,83,0,41,2,78,233,
+ 0,0,0,0,41,8,218,7,95,116,104,114,101,97,100,90,
+ 13,97,108,108,111,99,97,116,101,95,108,111,99,107,218,4,
+ 108,111,99,107,218,6,119,97,107,101,117,112,114,15,0,0,
+ 0,218,5,111,119,110,101,114,218,5,99,111,117,110,116,218,
+ 7,119,97,105,116,101,114,115,41,2,114,19,0,0,0,114,
+ 15,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,114,20,0,0,0,74,0,0,0,115,12,0,0,
+ 0,0,1,10,1,10,1,6,1,6,1,6,1,122,20,95,
77,111,100,117,108,101,76,111,99,107,46,95,95,105,110,105,
- 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 3,0,0,0,67,0,0,0,115,19,0,0,0,124,0,0,
- 4,106,0,0,100,1,0,55,2,95,0,0,100,2,0,83,
- 41,3,78,114,45,0,0,0,84,41,1,114,38,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,46,0,0,0,144,0,0,0,115,
- 4,0,0,0,0,1,15,1,122,24,95,68,117,109,109,121,
- 77,111,100,117,108,101,76,111,99,107,46,97,99,113,117,105,
- 114,101,99,1,0,0,0,0,0,0,0,1,0,0,0,3,
- 0,0,0,67,0,0,0,115,46,0,0,0,124,0,0,106,
- 0,0,100,1,0,107,2,0,114,27,0,116,1,0,100,2,
- 0,131,1,0,130,1,0,124,0,0,4,106,0,0,100,3,
- 0,56,2,95,0,0,100,0,0,83,41,4,78,114,33,0,
- 0,0,122,31,99,97,110,110,111,116,32,114,101,108,101,97,
- 115,101,32,117,110,45,97,99,113,117,105,114,101,100,32,108,
- 111,99,107,114,45,0,0,0,41,2,114,38,0,0,0,114,
- 48,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,47,0,0,0,148,
- 0,0,0,115,6,0,0,0,0,1,15,1,12,1,122,24,
- 95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,
- 46,114,101,108,101,97,115,101,99,1,0,0,0,0,0,0,
- 0,1,0,0,0,4,0,0,0,67,0,0,0,115,25,0,
- 0,0,100,1,0,106,0,0,124,0,0,106,1,0,116,2,
- 0,124,0,0,131,1,0,131,2,0,83,41,2,78,122,28,
+ 116,95,95,99,1,0,0,0,0,0,0,0,4,0,0,0,
+ 2,0,0,0,67,0,0,0,115,64,0,0,0,116,0,106,
+ 1,131,0,125,1,124,0,106,2,125,2,120,44,116,3,106,
+ 4,124,2,131,1,125,3,124,3,100,0,107,8,114,38,100,
+ 1,83,0,124,3,106,2,125,2,124,2,124,1,107,2,114,
+ 16,100,2,83,0,113,16,87,0,100,0,83,0,41,3,78,
+ 70,84,41,5,114,34,0,0,0,218,9,103,101,116,95,105,
+ 100,101,110,116,114,37,0,0,0,218,12,95,98,108,111,99,
+ 107,105,110,103,95,111,110,218,3,103,101,116,41,4,114,19,
+ 0,0,0,90,2,109,101,218,3,116,105,100,114,35,0,0,
+ 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
+ 218,12,104,97,115,95,100,101,97,100,108,111,99,107,82,0,
+ 0,0,115,18,0,0,0,0,2,8,1,6,1,2,1,10,
+ 1,8,1,4,1,6,1,8,1,122,24,95,77,111,100,117,
+ 108,101,76,111,99,107,46,104,97,115,95,100,101,97,100,108,
+ 111,99,107,99,1,0,0,0,0,0,0,0,2,0,0,0,
+ 16,0,0,0,67,0,0,0,115,168,0,0,0,116,0,106,
+ 1,131,0,125,1,124,0,116,2,124,1,60,0,122,138,120,
+ 132,124,0,106,3,143,96,1,0,124,0,106,4,100,1,107,
+ 2,115,48,124,0,106,5,124,1,107,2,114,72,124,1,124,
+ 0,95,5,124,0,4,0,106,4,100,2,55,0,2,0,95,
+ 4,100,3,83,0,124,0,106,6,131,0,114,92,116,7,100,
+ 4,124,0,22,0,131,1,130,1,124,0,106,8,106,9,100,
+ 5,131,1,114,118,124,0,4,0,106,10,100,2,55,0,2,
+ 0,95,10,87,0,100,6,81,0,82,0,88,0,124,0,106,
+ 8,106,9,131,0,1,0,124,0,106,8,106,11,131,0,1,
+ 0,113,20,87,0,87,0,100,6,116,2,124,1,61,0,88,
+ 0,100,6,83,0,41,7,122,185,10,32,32,32,32,32,32,
+ 32,32,65,99,113,117,105,114,101,32,116,104,101,32,109,111,
+ 100,117,108,101,32,108,111,99,107,46,32,32,73,102,32,97,
+ 32,112,111,116,101,110,116,105,97,108,32,100,101,97,100,108,
+ 111,99,107,32,105,115,32,100,101,116,101,99,116,101,100,44,
+ 10,32,32,32,32,32,32,32,32,97,32,95,68,101,97,100,
+ 108,111,99,107,69,114,114,111,114,32,105,115,32,114,97,105,
+ 115,101,100,46,10,32,32,32,32,32,32,32,32,79,116,104,
+ 101,114,119,105,115,101,44,32,116,104,101,32,108,111,99,107,
+ 32,105,115,32,97,108,119,97,121,115,32,97,99,113,117,105,
+ 114,101,100,32,97,110,100,32,84,114,117,101,32,105,115,32,
+ 114,101,116,117,114,110,101,100,46,10,32,32,32,32,32,32,
+ 32,32,114,33,0,0,0,233,1,0,0,0,84,122,23,100,
+ 101,97,100,108,111,99,107,32,100,101,116,101,99,116,101,100,
+ 32,98,121,32,37,114,70,78,41,12,114,34,0,0,0,114,
+ 40,0,0,0,114,41,0,0,0,114,35,0,0,0,114,38,
+ 0,0,0,114,37,0,0,0,114,44,0,0,0,114,31,0,
+ 0,0,114,36,0,0,0,218,7,97,99,113,117,105,114,101,
+ 114,39,0,0,0,218,7,114,101,108,101,97,115,101,41,2,
+ 114,19,0,0,0,114,43,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,114,46,0,0,0,94,0,
+ 0,0,115,32,0,0,0,0,6,8,1,8,1,2,1,2,
+ 1,8,1,20,1,6,1,14,1,4,1,8,1,12,1,12,
+ 1,24,2,10,1,18,2,122,19,95,77,111,100,117,108,101,
+ 76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0,
+ 0,0,0,0,0,2,0,0,0,10,0,0,0,67,0,0,
+ 0,115,122,0,0,0,116,0,106,1,131,0,125,1,124,0,
+ 106,2,143,98,1,0,124,0,106,3,124,1,107,3,114,34,
+ 116,4,100,1,131,1,130,1,124,0,106,5,100,2,107,4,
+ 115,48,116,6,130,1,124,0,4,0,106,5,100,3,56,0,
+ 2,0,95,5,124,0,106,5,100,2,107,2,114,108,100,0,
+ 124,0,95,3,124,0,106,7,114,108,124,0,4,0,106,7,
+ 100,3,56,0,2,0,95,7,124,0,106,8,106,9,131,0,
+ 1,0,87,0,100,0,81,0,82,0,88,0,100,0,83,0,
+ 41,4,78,122,31,99,97,110,110,111,116,32,114,101,108,101,
+ 97,115,101,32,117,110,45,97,99,113,117,105,114,101,100,32,
+ 108,111,99,107,114,33,0,0,0,114,45,0,0,0,41,10,
+ 114,34,0,0,0,114,40,0,0,0,114,35,0,0,0,114,
+ 37,0,0,0,218,12,82,117,110,116,105,109,101,69,114,114,
+ 111,114,114,38,0,0,0,218,14,65,115,115,101,114,116,105,
+ 111,110,69,114,114,111,114,114,39,0,0,0,114,36,0,0,
+ 0,114,47,0,0,0,41,2,114,19,0,0,0,114,43,0,
+ 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,47,0,0,0,119,0,0,0,115,22,0,0,0,0,
+ 1,8,1,8,1,10,1,8,1,14,1,14,1,10,1,6,
+ 1,6,1,14,1,122,19,95,77,111,100,117,108,101,76,111,
+ 99,107,46,114,101,108,101,97,115,101,99,1,0,0,0,0,
+ 0,0,0,1,0,0,0,4,0,0,0,67,0,0,0,115,
+ 18,0,0,0,100,1,106,0,124,0,106,1,116,2,124,0,
+ 131,1,131,2,83,0,41,2,78,122,23,95,77,111,100,117,
+ 108,101,76,111,99,107,40,123,33,114,125,41,32,97,116,32,
+ 123,125,41,3,218,6,102,111,114,109,97,116,114,15,0,0,
+ 0,218,2,105,100,41,1,114,19,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,218,8,95,95,114,
+ 101,112,114,95,95,132,0,0,0,115,2,0,0,0,0,1,
+ 122,20,95,77,111,100,117,108,101,76,111,99,107,46,95,95,
+ 114,101,112,114,95,95,78,41,9,114,1,0,0,0,114,0,
+ 0,0,0,114,2,0,0,0,114,3,0,0,0,114,20,0,
+ 0,0,114,44,0,0,0,114,46,0,0,0,114,47,0,0,
+ 0,114,52,0,0,0,114,10,0,0,0,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,114,32,0,0,0,68,
+ 0,0,0,115,12,0,0,0,8,4,4,2,8,8,8,12,
+ 8,25,8,13,114,32,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,48,
+ 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,
+ 6,100,7,132,0,90,6,100,8,100,9,132,0,90,7,100,
+ 10,83,0,41,11,218,16,95,68,117,109,109,121,77,111,100,
+ 117,108,101,76,111,99,107,122,86,65,32,115,105,109,112,108,
+ 101,32,95,77,111,100,117,108,101,76,111,99,107,32,101,113,
+ 117,105,118,97,108,101,110,116,32,102,111,114,32,80,121,116,
+ 104,111,110,32,98,117,105,108,100,115,32,119,105,116,104,111,
+ 117,116,10,32,32,32,32,109,117,108,116,105,45,116,104,114,
+ 101,97,100,105,110,103,32,115,117,112,112,111,114,116,46,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,124,0,95,0,100,
+ 1,124,0,95,1,100,0,83,0,41,2,78,114,33,0,0,
+ 0,41,2,114,15,0,0,0,114,38,0,0,0,41,2,114,
+ 19,0,0,0,114,15,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,114,20,0,0,0,140,0,0,
+ 0,115,4,0,0,0,0,1,6,1,122,25,95,68,117,109,
+ 109,121,77,111,100,117,108,101,76,111,99,107,46,95,95,105,
+ 110,105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,
+ 0,0,3,0,0,0,67,0,0,0,115,18,0,0,0,124,
+ 0,4,0,106,0,100,1,55,0,2,0,95,0,100,2,83,
+ 0,41,3,78,114,45,0,0,0,84,41,1,114,38,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,46,0,0,0,144,0,0,0,
+ 115,4,0,0,0,0,1,14,1,122,24,95,68,117,109,109,
+ 121,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117,
+ 105,114,101,99,1,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,67,0,0,0,115,36,0,0,0,124,0,106,
+ 0,100,1,107,2,114,18,116,1,100,2,131,1,130,1,124,
+ 0,4,0,106,0,100,3,56,0,2,0,95,0,100,0,83,
+ 0,41,4,78,114,33,0,0,0,122,31,99,97,110,110,111,
+ 116,32,114,101,108,101,97,115,101,32,117,110,45,97,99,113,
+ 117,105,114,101,100,32,108,111,99,107,114,45,0,0,0,41,
+ 2,114,38,0,0,0,114,48,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,47,0,0,0,148,0,0,0,115,6,0,0,0,0,
+ 1,10,1,8,1,122,24,95,68,117,109,109,121,77,111,100,
+ 117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99,
+ 1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,
+ 67,0,0,0,115,18,0,0,0,100,1,106,0,124,0,106,
+ 1,116,2,124,0,131,1,131,2,83,0,41,2,78,122,28,
95,68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,
40,123,33,114,125,41,32,97,116,32,123,125,41,3,114,50,
0,0,0,114,15,0,0,0,114,51,0,0,0,41,1,114,
@@ -345,262 +317,249 @@ const unsigned char _Py_M__importlib[] = {
114,3,0,0,0,114,20,0,0,0,114,46,0,0,0,114,
47,0,0,0,114,52,0,0,0,114,10,0,0,0,114,10,
0,0,0,114,10,0,0,0,114,11,0,0,0,114,53,0,
- 0,0,136,0,0,0,115,10,0,0,0,12,2,6,2,12,
- 4,12,4,12,5,114,53,0,0,0,99,0,0,0,0,0,
+ 0,0,136,0,0,0,115,10,0,0,0,8,2,4,2,8,
+ 4,8,4,8,5,114,53,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,
- 52,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,83,41,8,218,18,95,77,111,100,
+ 36,0,0,0,101,0,90,1,100,0,90,2,100,1,100,2,
+ 132,0,90,3,100,3,100,4,132,0,90,4,100,5,100,6,
+ 132,0,90,5,100,7,83,0,41,8,218,18,95,77,111,100,
117,108,101,76,111,99,107,77,97,110,97,103,101,114,99,2,
0,0,0,0,0,0,0,2,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,100,0,0,124,0,0,95,1,0,100,0,0,83,41,1,
- 78,41,2,114,18,0,0,0,218,5,95,108,111,99,107,41,
- 2,114,19,0,0,0,114,15,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,20,0,0,0,159,
- 0,0,0,115,4,0,0,0,0,1,9,1,122,27,95,77,
- 111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,114,
- 46,95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,
- 0,0,1,0,0,0,10,0,0,0,67,0,0,0,115,53,
- 0,0,0,122,22,0,116,0,0,124,0,0,106,1,0,131,
- 1,0,124,0,0,95,2,0,87,100,0,0,116,3,0,106,
- 4,0,131,0,0,1,88,124,0,0,106,2,0,106,5,0,
- 131,0,0,1,100,0,0,83,41,1,78,41,6,218,16,95,
- 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,114,
- 18,0,0,0,114,55,0,0,0,218,4,95,105,109,112,218,
- 12,114,101,108,101,97,115,101,95,108,111,99,107,114,46,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,163,0,0,
- 0,115,8,0,0,0,0,1,3,1,22,2,11,1,122,28,
- 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,
- 101,114,46,95,95,101,110,116,101,114,95,95,99,1,0,0,
- 0,0,0,0,0,3,0,0,0,1,0,0,0,79,0,0,
- 0,115,17,0,0,0,124,0,0,106,0,0,106,1,0,131,
- 0,0,1,100,0,0,83,41,1,78,41,2,114,55,0,0,
- 0,114,47,0,0,0,41,3,114,19,0,0,0,114,29,0,
- 0,0,90,6,107,119,97,114,103,115,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,30,0,0,0,170,0,
- 0,0,115,2,0,0,0,0,1,122,27,95,77,111,100,117,
- 108,101,76,111,99,107,77,97,110,97,103,101,114,46,95,95,
- 101,120,105,116,95,95,78,41,6,114,1,0,0,0,114,0,
- 0,0,0,114,2,0,0,0,114,20,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,54,0,0,0,
- 157,0,0,0,115,6,0,0,0,12,2,12,4,12,7,114,
- 54,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,139,0,0,0,100,1,
- 0,125,1,0,121,17,0,116,0,0,136,0,0,25,131,0,
- 0,125,1,0,87,110,18,0,4,116,1,0,107,10,0,114,
- 43,0,1,1,1,89,110,1,0,88,124,1,0,100,1,0,
- 107,8,0,114,135,0,116,2,0,100,1,0,107,8,0,114,
- 83,0,116,3,0,136,0,0,131,1,0,125,1,0,110,12,
- 0,116,4,0,136,0,0,131,1,0,125,1,0,135,0,0,
- 102,1,0,100,2,0,100,3,0,134,0,0,125,2,0,116,
- 5,0,106,6,0,124,1,0,124,2,0,131,2,0,116,0,
- 0,136,0,0,60,124,1,0,83,41,4,122,109,71,101,116,
- 32,111,114,32,99,114,101,97,116,101,32,116,104,101,32,109,
- 111,100,117,108,101,32,108,111,99,107,32,102,111,114,32,97,
- 32,103,105,118,101,110,32,109,111,100,117,108,101,32,110,97,
- 109,101,46,10,10,32,32,32,32,83,104,111,117,108,100,32,
- 111,110,108,121,32,98,101,32,99,97,108,108,101,100,32,119,
- 105,116,104,32,116,104,101,32,105,109,112,111,114,116,32,108,
- 111,99,107,32,116,97,107,101,110,46,78,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,2,0,0,0,19,0,0,0,
- 115,11,0,0,0,116,0,0,136,0,0,61,100,0,0,83,
- 41,1,78,41,1,218,13,95,109,111,100,117,108,101,95,108,
- 111,99,107,115,41,1,218,1,95,41,1,114,15,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,218,2,99,98,190,0,
- 0,0,115,2,0,0,0,0,1,122,28,95,103,101,116,95,
- 109,111,100,117,108,101,95,108,111,99,107,46,60,108,111,99,
- 97,108,115,62,46,99,98,41,7,114,59,0,0,0,114,28,
- 0,0,0,114,34,0,0,0,114,53,0,0,0,114,32,0,
- 0,0,218,8,95,119,101,97,107,114,101,102,90,3,114,101,
- 102,41,3,114,15,0,0,0,114,35,0,0,0,114,61,0,
- 0,0,114,10,0,0,0,41,1,114,15,0,0,0,114,11,
- 0,0,0,114,56,0,0,0,176,0,0,0,115,24,0,0,
- 0,0,4,6,1,3,1,17,1,13,1,5,1,12,1,12,
- 1,15,2,12,1,18,2,22,1,114,56,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,71,0,0,0,116,0,0,124,0,0,131,1,
- 0,125,1,0,116,1,0,106,2,0,131,0,0,1,121,14,
- 0,124,1,0,106,3,0,131,0,0,1,87,110,18,0,4,
- 116,4,0,107,10,0,114,56,0,1,1,1,89,110,11,0,
- 88,124,1,0,106,5,0,131,0,0,1,100,1,0,83,41,
- 2,97,21,1,0,0,82,101,108,101,97,115,101,32,116,104,
- 101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,32,
- 108,111,99,107,44,32,97,110,100,32,97,99,113,117,105,114,
- 101,115,32,116,104,101,110,32,114,101,108,101,97,115,101,32,
- 116,104,101,10,32,32,32,32,109,111,100,117,108,101,32,108,
- 111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32,
- 109,111,100,117,108,101,32,110,97,109,101,46,10,32,32,32,
- 32,84,104,105,115,32,105,115,32,117,115,101,100,32,116,111,
- 32,101,110,115,117,114,101,32,97,32,109,111,100,117,108,101,
- 32,105,115,32,99,111,109,112,108,101,116,101,108,121,32,105,
- 110,105,116,105,97,108,105,122,101,100,44,32,105,110,32,116,
- 104,101,10,32,32,32,32,101,118,101,110,116,32,105,116,32,
- 105,115,32,98,101,105,110,103,32,105,109,112,111,114,116,101,
- 100,32,98,121,32,97,110,111,116,104,101,114,32,116,104,114,
- 101,97,100,46,10,10,32,32,32,32,83,104,111,117,108,100,
- 32,111,110,108,121,32,98,101,32,99,97,108,108,101,100,32,
- 119,105,116,104,32,116,104,101,32,105,109,112,111,114,116,32,
- 108,111,99,107,32,116,97,107,101,110,46,78,41,6,114,56,
- 0,0,0,114,57,0,0,0,114,58,0,0,0,114,46,0,
- 0,0,114,31,0,0,0,114,47,0,0,0,41,2,114,15,
- 0,0,0,114,35,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,11,0,0,0,218,19,95,108,111,99,107,95,117,
- 110,108,111,99,107,95,109,111,100,117,108,101,195,0,0,0,
- 115,14,0,0,0,0,7,12,1,10,1,3,1,14,1,13,
- 3,5,2,114,63,0,0,0,99,1,0,0,0,0,0,0,
- 0,3,0,0,0,3,0,0,0,79,0,0,0,115,13,0,
- 0,0,124,0,0,124,1,0,124,2,0,142,0,0,83,41,
- 1,97,46,1,0,0,114,101,109,111,118,101,95,105,109,112,
- 111,114,116,108,105,98,95,102,114,97,109,101,115,32,105,110,
- 32,105,109,112,111,114,116,46,99,32,119,105,108,108,32,97,
- 108,119,97,121,115,32,114,101,109,111,118,101,32,115,101,113,
- 117,101,110,99,101,115,10,32,32,32,32,111,102,32,105,109,
- 112,111,114,116,108,105,98,32,102,114,97,109,101,115,32,116,
- 104,97,116,32,101,110,100,32,119,105,116,104,32,97,32,99,
- 97,108,108,32,116,111,32,116,104,105,115,32,102,117,110,99,
- 116,105,111,110,10,10,32,32,32,32,85,115,101,32,105,116,
- 32,105,110,115,116,101,97,100,32,111,102,32,97,32,110,111,
- 114,109,97,108,32,99,97,108,108,32,105,110,32,112,108,97,
- 99,101,115,32,119,104,101,114,101,32,105,110,99,108,117,100,
- 105,110,103,32,116,104,101,32,105,109,112,111,114,116,108,105,
- 98,10,32,32,32,32,102,114,97,109,101,115,32,105,110,116,
- 114,111,100,117,99,101,115,32,117,110,119,97,110,116,101,100,
- 32,110,111,105,115,101,32,105,110,116,111,32,116,104,101,32,
- 116,114,97,99,101,98,97,99,107,32,40,101,46,103,46,32,
- 119,104,101,110,32,101,120,101,99,117,116,105,110,103,10,32,
- 32,32,32,109,111,100,117,108,101,32,99,111,100,101,41,10,
- 32,32,32,32,114,10,0,0,0,41,3,218,1,102,114,29,
- 0,0,0,90,4,107,119,100,115,114,10,0,0,0,114,10,
- 0,0,0,114,11,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,214,0,0,0,115,2,0,0,0,0,8,114,65,
- 0,0,0,218,9,118,101,114,98,111,115,105,116,121,114,45,
- 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,90,4,102,105,108,101,78,
- 41,2,114,67,0,0,0,114,68,0,0,0,41,7,114,14,
- 0,0,0,218,5,102,108,97,103,115,218,7,118,101,114,98,
- 111,115,101,218,10,115,116,97,114,116,115,119,105,116,104,218,
- 5,112,114,105,110,116,114,50,0,0,0,218,6,115,116,100,
- 101,114,114,41,3,218,7,109,101,115,115,97,103,101,114,66,
- 0,0,0,114,29,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,11,0,0,0,218,16,95,118,101,114,98,111,115,
- 101,95,109,101,115,115,97,103,101,225,0,0,0,115,8,0,
- 0,0,0,2,18,1,15,1,10,1,114,75,0,0,0,99,
- 1,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,
- 3,0,0,0,115,35,0,0,0,135,0,0,102,1,0,100,
- 1,0,100,2,0,134,0,0,125,1,0,116,0,0,124,1,
- 0,136,0,0,131,2,0,1,124,1,0,83,41,3,122,49,
- 68,101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,
- 105,102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,
- 100,117,108,101,32,105,115,32,98,117,105,108,116,45,105,110,
- 46,99,2,0,0,0,0,0,0,0,2,0,0,0,4,0,
- 0,0,19,0,0,0,115,55,0,0,0,124,1,0,116,0,
- 0,106,1,0,107,7,0,114,42,0,116,2,0,100,1,0,
- 106,3,0,124,1,0,131,1,0,100,2,0,124,1,0,131,
- 1,1,130,1,0,136,0,0,124,0,0,124,1,0,131,2,
- 0,83,41,3,78,122,29,123,33,114,125,32,105,115,32,110,
- 111,116,32,97,32,98,117,105,108,116,45,105,110,32,109,111,
- 100,117,108,101,114,15,0,0,0,41,4,114,14,0,0,0,
- 218,20,98,117,105,108,116,105,110,95,109,111,100,117,108,101,
- 95,110,97,109,101,115,218,11,73,109,112,111,114,116,69,114,
- 114,111,114,114,50,0,0,0,41,2,114,19,0,0,0,218,
- 8,102,117,108,108,110,97,109,101,41,1,218,3,102,120,110,
- 114,10,0,0,0,114,11,0,0,0,218,25,95,114,101,113,
- 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114,
- 97,112,112,101,114,235,0,0,0,115,8,0,0,0,0,1,
- 15,1,18,1,9,1,122,52,95,114,101,113,117,105,114,101,
- 115,95,98,117,105,108,116,105,110,46,60,108,111,99,97,108,
- 115,62,46,95,114,101,113,117,105,114,101,115,95,98,117,105,
- 108,116,105,110,95,119,114,97,112,112,101,114,41,1,114,12,
- 0,0,0,41,2,114,79,0,0,0,114,80,0,0,0,114,
- 10,0,0,0,41,1,114,79,0,0,0,114,11,0,0,0,
- 218,17,95,114,101,113,117,105,114,101,115,95,98,117,105,108,
- 116,105,110,233,0,0,0,115,6,0,0,0,0,2,18,5,
- 13,1,114,81,0,0,0,99,1,0,0,0,0,0,0,0,
- 2,0,0,0,3,0,0,0,3,0,0,0,115,35,0,0,
- 0,135,0,0,102,1,0,100,1,0,100,2,0,134,0,0,
- 125,1,0,116,0,0,124,1,0,136,0,0,131,2,0,1,
- 124,1,0,83,41,3,122,47,68,101,99,111,114,97,116,111,
- 114,32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,
- 110,97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,
- 102,114,111,122,101,110,46,99,2,0,0,0,0,0,0,0,
- 2,0,0,0,4,0,0,0,19,0,0,0,115,55,0,0,
- 0,116,0,0,106,1,0,124,1,0,131,1,0,115,42,0,
- 116,2,0,100,1,0,106,3,0,124,1,0,131,1,0,100,
- 2,0,124,1,0,131,1,1,130,1,0,136,0,0,124,0,
- 0,124,1,0,131,2,0,83,41,3,78,122,27,123,33,114,
- 125,32,105,115,32,110,111,116,32,97,32,102,114,111,122,101,
- 110,32,109,111,100,117,108,101,114,15,0,0,0,41,4,114,
- 57,0,0,0,218,9,105,115,95,102,114,111,122,101,110,114,
- 77,0,0,0,114,50,0,0,0,41,2,114,19,0,0,0,
- 114,78,0,0,0,41,1,114,79,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,218,24,95,114,101,113,117,105,114,101,
- 115,95,102,114,111,122,101,110,95,119,114,97,112,112,101,114,
- 246,0,0,0,115,8,0,0,0,0,1,15,1,18,1,9,
- 1,122,50,95,114,101,113,117,105,114,101,115,95,102,114,111,
- 122,101,110,46,60,108,111,99,97,108,115,62,46,95,114,101,
- 113,117,105,114,101,115,95,102,114,111,122,101,110,95,119,114,
- 97,112,112,101,114,41,1,114,12,0,0,0,41,2,114,79,
- 0,0,0,114,83,0,0,0,114,10,0,0,0,41,1,114,
- 79,0,0,0,114,11,0,0,0,218,16,95,114,101,113,117,
- 105,114,101,115,95,102,114,111,122,101,110,244,0,0,0,115,
- 6,0,0,0,0,2,18,5,13,1,114,84,0,0,0,99,
- 2,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,
- 67,0,0,0,115,81,0,0,0,116,0,0,124,1,0,124,
- 0,0,131,2,0,125,2,0,124,1,0,116,1,0,106,2,
- 0,107,6,0,114,67,0,116,1,0,106,2,0,124,1,0,
- 25,125,3,0,116,3,0,124,2,0,124,3,0,131,2,0,
- 1,116,1,0,106,2,0,124,1,0,25,83,116,4,0,124,
- 2,0,131,1,0,83,100,1,0,83,41,2,122,128,76,111,
- 97,100,32,116,104,101,32,115,112,101,99,105,102,105,101,100,
- 32,109,111,100,117,108,101,32,105,110,116,111,32,115,121,115,
- 46,109,111,100,117,108,101,115,32,97,110,100,32,114,101,116,
- 117,114,110,32,105,116,46,10,10,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,108,111,97,
- 100,101,114,46,101,120,101,99,95,109,111,100,117,108,101,32,
- 105,110,115,116,101,97,100,46,10,10,32,32,32,32,78,41,
- 5,218,16,115,112,101,99,95,102,114,111,109,95,108,111,97,
- 100,101,114,114,14,0,0,0,114,21,0,0,0,218,5,95,
- 101,120,101,99,218,5,95,108,111,97,100,41,4,114,19,0,
- 0,0,114,78,0,0,0,218,4,115,112,101,99,218,6,109,
- 111,100,117,108,101,114,10,0,0,0,114,10,0,0,0,114,
- 11,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,
- 108,101,95,115,104,105,109,0,1,0,0,115,12,0,0,0,
- 0,6,15,1,15,1,13,1,13,1,11,2,114,90,0,0,
- 0,99,1,0,0,0,0,0,0,0,5,0,0,0,35,0,
- 0,0,67,0,0,0,115,6,1,0,0,116,0,0,124,0,
- 0,100,1,0,100,0,0,131,3,0,125,1,0,116,1,0,
- 124,1,0,100,2,0,131,2,0,114,71,0,121,17,0,124,
- 1,0,106,2,0,124,0,0,131,1,0,83,87,110,18,0,
- 4,116,3,0,107,10,0,114,70,0,1,1,1,89,110,1,
- 0,88,121,13,0,124,0,0,106,4,0,125,2,0,87,110,
- 18,0,4,116,5,0,107,10,0,114,104,0,1,1,1,89,
- 110,23,0,88,124,2,0,100,0,0,107,9,0,114,127,0,
- 116,6,0,124,2,0,131,1,0,83,121,13,0,124,0,0,
- 106,7,0,125,3,0,87,110,24,0,4,116,5,0,107,10,
- 0,114,166,0,1,1,1,100,3,0,125,3,0,89,110,1,
- 0,88,121,13,0,124,0,0,106,8,0,125,4,0,87,110,
- 59,0,4,116,5,0,107,10,0,114,241,0,1,1,1,124,
- 1,0,100,0,0,107,8,0,114,221,0,100,4,0,106,9,
- 0,124,3,0,131,1,0,83,100,5,0,106,9,0,124,3,
- 0,124,1,0,131,2,0,83,89,110,17,0,88,100,6,0,
- 106,9,0,124,3,0,124,4,0,131,2,0,83,100,0,0,
- 83,41,7,78,218,10,95,95,108,111,97,100,101,114,95,95,
+ 0,0,0,115,16,0,0,0,124,1,124,0,95,0,100,0,
+ 124,0,95,1,100,0,83,0,41,1,78,41,2,114,18,0,
+ 0,0,218,5,95,108,111,99,107,41,2,114,19,0,0,0,
+ 114,15,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,114,20,0,0,0,159,0,0,0,115,4,0,
+ 0,0,0,1,6,1,122,27,95,77,111,100,117,108,101,76,
+ 111,99,107,77,97,110,97,103,101,114,46,95,95,105,110,105,
+ 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,
+ 10,0,0,0,67,0,0,0,115,42,0,0,0,122,16,116,
+ 0,124,0,106,1,131,1,124,0,95,2,87,0,100,0,116,
+ 3,106,4,131,0,1,0,88,0,124,0,106,2,106,5,131,
+ 0,1,0,100,0,83,0,41,1,78,41,6,218,16,95,103,
+ 101,116,95,109,111,100,117,108,101,95,108,111,99,107,114,18,
+ 0,0,0,114,55,0,0,0,218,4,95,105,109,112,218,12,
+ 114,101,108,101,97,115,101,95,108,111,99,107,114,46,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,163,0,0,0,
+ 115,8,0,0,0,0,1,2,1,16,2,10,1,122,28,95,
+ 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101,
+ 114,46,95,95,101,110,116,101,114,95,95,99,1,0,0,0,
+ 0,0,0,0,3,0,0,0,1,0,0,0,79,0,0,0,
+ 115,14,0,0,0,124,0,106,0,106,1,131,0,1,0,100,
+ 0,83,0,41,1,78,41,2,114,55,0,0,0,114,47,0,
+ 0,0,41,3,114,19,0,0,0,114,29,0,0,0,90,6,
+ 107,119,97,114,103,115,114,10,0,0,0,114,10,0,0,0,
+ 114,11,0,0,0,114,30,0,0,0,170,0,0,0,115,2,
+ 0,0,0,0,1,122,27,95,77,111,100,117,108,101,76,111,
+ 99,107,77,97,110,97,103,101,114,46,95,95,101,120,105,116,
+ 95,95,78,41,6,114,1,0,0,0,114,0,0,0,0,114,
+ 2,0,0,0,114,20,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,54,0,0,0,157,0,0,0,
+ 115,6,0,0,0,8,2,8,4,8,7,114,54,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,106,0,0,0,100,1,125,1,121,14,
+ 116,0,136,0,25,0,131,0,125,1,87,0,110,20,4,0,
+ 116,1,107,10,114,38,1,0,1,0,1,0,89,0,110,2,
+ 88,0,124,1,100,1,107,8,114,102,116,2,100,1,107,8,
+ 114,66,116,3,136,0,131,1,125,1,110,8,116,4,136,0,
+ 131,1,125,1,135,0,102,1,100,2,100,3,132,8,125,2,
+ 116,5,106,6,124,1,124,2,131,2,116,0,136,0,60,0,
+ 124,1,83,0,41,4,122,109,71,101,116,32,111,114,32,99,
+ 114,101,97,116,101,32,116,104,101,32,109,111,100,117,108,101,
+ 32,108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,
+ 110,32,109,111,100,117,108,101,32,110,97,109,101,46,10,10,
+ 32,32,32,32,83,104,111,117,108,100,32,111,110,108,121,32,
+ 98,101,32,99,97,108,108,101,100,32,119,105,116,104,32,116,
+ 104,101,32,105,109,112,111,114,116,32,108,111,99,107,32,116,
+ 97,107,101,110,46,78,99,1,0,0,0,0,0,0,0,1,
+ 0,0,0,2,0,0,0,19,0,0,0,115,10,0,0,0,
+ 116,0,136,0,61,0,100,0,83,0,41,1,78,41,1,218,
+ 13,95,109,111,100,117,108,101,95,108,111,99,107,115,41,1,
+ 218,1,95,41,1,114,15,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,218,2,99,98,190,0,0,0,115,2,0,0,
+ 0,0,1,122,28,95,103,101,116,95,109,111,100,117,108,101,
+ 95,108,111,99,107,46,60,108,111,99,97,108,115,62,46,99,
+ 98,41,7,114,59,0,0,0,114,28,0,0,0,114,34,0,
+ 0,0,114,53,0,0,0,114,32,0,0,0,218,8,95,119,
+ 101,97,107,114,101,102,90,3,114,101,102,41,3,114,15,0,
+ 0,0,114,35,0,0,0,114,61,0,0,0,114,10,0,0,
+ 0,41,1,114,15,0,0,0,114,11,0,0,0,114,56,0,
+ 0,0,176,0,0,0,115,24,0,0,0,0,4,4,1,2,
+ 1,14,1,14,1,6,1,8,1,8,1,10,2,8,1,12,
+ 2,16,1,114,56,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,62,0,
+ 0,0,116,0,124,0,131,1,125,1,116,1,106,2,131,0,
+ 1,0,121,12,124,1,106,3,131,0,1,0,87,0,110,20,
+ 4,0,116,4,107,10,114,48,1,0,1,0,1,0,89,0,
+ 110,10,88,0,124,1,106,5,131,0,1,0,100,1,83,0,
+ 41,2,97,21,1,0,0,82,101,108,101,97,115,101,32,116,
+ 104,101,32,103,108,111,98,97,108,32,105,109,112,111,114,116,
+ 32,108,111,99,107,44,32,97,110,100,32,97,99,113,117,105,
+ 114,101,115,32,116,104,101,110,32,114,101,108,101,97,115,101,
+ 32,116,104,101,10,32,32,32,32,109,111,100,117,108,101,32,
+ 108,111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,
+ 32,109,111,100,117,108,101,32,110,97,109,101,46,10,32,32,
+ 32,32,84,104,105,115,32,105,115,32,117,115,101,100,32,116,
+ 111,32,101,110,115,117,114,101,32,97,32,109,111,100,117,108,
+ 101,32,105,115,32,99,111,109,112,108,101,116,101,108,121,32,
+ 105,110,105,116,105,97,108,105,122,101,100,44,32,105,110,32,
+ 116,104,101,10,32,32,32,32,101,118,101,110,116,32,105,116,
+ 32,105,115,32,98,101,105,110,103,32,105,109,112,111,114,116,
+ 101,100,32,98,121,32,97,110,111,116,104,101,114,32,116,104,
+ 114,101,97,100,46,10,10,32,32,32,32,83,104,111,117,108,
+ 100,32,111,110,108,121,32,98,101,32,99,97,108,108,101,100,
+ 32,119,105,116,104,32,116,104,101,32,105,109,112,111,114,116,
+ 32,108,111,99,107,32,116,97,107,101,110,46,78,41,6,114,
+ 56,0,0,0,114,57,0,0,0,114,58,0,0,0,114,46,
+ 0,0,0,114,31,0,0,0,114,47,0,0,0,41,2,114,
+ 15,0,0,0,114,35,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,218,19,95,108,111,99,107,95,
+ 117,110,108,111,99,107,95,109,111,100,117,108,101,195,0,0,
+ 0,115,14,0,0,0,0,7,8,1,8,1,2,1,12,1,
+ 14,3,6,2,114,63,0,0,0,99,1,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,79,0,0,0,115,10,
+ 0,0,0,124,0,124,1,124,2,142,0,83,0,41,1,97,
+ 46,1,0,0,114,101,109,111,118,101,95,105,109,112,111,114,
+ 116,108,105,98,95,102,114,97,109,101,115,32,105,110,32,105,
+ 109,112,111,114,116,46,99,32,119,105,108,108,32,97,108,119,
+ 97,121,115,32,114,101,109,111,118,101,32,115,101,113,117,101,
+ 110,99,101,115,10,32,32,32,32,111,102,32,105,109,112,111,
+ 114,116,108,105,98,32,102,114,97,109,101,115,32,116,104,97,
+ 116,32,101,110,100,32,119,105,116,104,32,97,32,99,97,108,
+ 108,32,116,111,32,116,104,105,115,32,102,117,110,99,116,105,
+ 111,110,10,10,32,32,32,32,85,115,101,32,105,116,32,105,
+ 110,115,116,101,97,100,32,111,102,32,97,32,110,111,114,109,
+ 97,108,32,99,97,108,108,32,105,110,32,112,108,97,99,101,
+ 115,32,119,104,101,114,101,32,105,110,99,108,117,100,105,110,
+ 103,32,116,104,101,32,105,109,112,111,114,116,108,105,98,10,
+ 32,32,32,32,102,114,97,109,101,115,32,105,110,116,114,111,
+ 100,117,99,101,115,32,117,110,119,97,110,116,101,100,32,110,
+ 111,105,115,101,32,105,110,116,111,32,116,104,101,32,116,114,
+ 97,99,101,98,97,99,107,32,40,101,46,103,46,32,119,104,
+ 101,110,32,101,120,101,99,117,116,105,110,103,10,32,32,32,
+ 32,109,111,100,117,108,101,32,99,111,100,101,41,10,32,32,
+ 32,32,114,10,0,0,0,41,3,218,1,102,114,29,0,0,
+ 0,90,4,107,119,100,115,114,10,0,0,0,114,10,0,0,
+ 0,114,11,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,214,0,0,0,115,2,0,0,0,0,8,114,65,0,0,
+ 0,114,45,0,0,0,41,1,218,9,118,101,114,98,111,115,
+ 105,116,121,99,1,0,0,0,1,0,0,0,3,0,0,0,
+ 4,0,0,0,71,0,0,0,115,56,0,0,0,116,0,106,
+ 1,106,2,124,1,107,5,114,52,124,0,106,3,100,6,131,
+ 1,115,30,100,3,124,0,23,0,125,0,116,4,124,0,106,
+ 5,124,2,140,0,100,4,116,0,106,6,144,1,131,1,1,
+ 0,100,5,83,0,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,90,4,102,105,108,101,78,41,2,114,
+ 67,0,0,0,114,68,0,0,0,41,7,114,14,0,0,0,
+ 218,5,102,108,97,103,115,218,7,118,101,114,98,111,115,101,
+ 218,10,115,116,97,114,116,115,119,105,116,104,218,5,112,114,
+ 105,110,116,114,50,0,0,0,218,6,115,116,100,101,114,114,
+ 41,3,218,7,109,101,115,115,97,103,101,114,66,0,0,0,
+ 114,29,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,
+ 101,115,115,97,103,101,225,0,0,0,115,8,0,0,0,0,
+ 2,12,1,10,1,8,1,114,75,0,0,0,99,1,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,
+ 0,115,26,0,0,0,135,0,102,1,100,1,100,2,132,8,
+ 125,1,116,0,124,1,136,0,131,2,1,0,124,1,83,0,
+ 41,3,122,49,68,101,99,111,114,97,116,111,114,32,116,111,
+ 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101,
+ 100,32,109,111,100,117,108,101,32,105,115,32,98,117,105,108,
+ 116,45,105,110,46,99,2,0,0,0,0,0,0,0,2,0,
+ 0,0,4,0,0,0,19,0,0,0,115,40,0,0,0,124,
+ 1,116,0,106,1,107,7,114,30,116,2,100,1,106,3,124,
+ 1,131,1,100,2,124,1,144,1,131,1,130,1,136,0,124,
+ 0,124,1,131,2,83,0,41,3,78,122,29,123,33,114,125,
+ 32,105,115,32,110,111,116,32,97,32,98,117,105,108,116,45,
+ 105,110,32,109,111,100,117,108,101,114,15,0,0,0,41,4,
+ 114,14,0,0,0,218,20,98,117,105,108,116,105,110,95,109,
+ 111,100,117,108,101,95,110,97,109,101,115,218,11,73,109,112,
+ 111,114,116,69,114,114,111,114,114,50,0,0,0,41,2,114,
+ 19,0,0,0,218,8,102,117,108,108,110,97,109,101,41,1,
+ 218,3,102,120,110,114,10,0,0,0,114,11,0,0,0,218,
+ 25,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116,
+ 105,110,95,119,114,97,112,112,101,114,235,0,0,0,115,8,
+ 0,0,0,0,1,10,1,12,1,8,1,122,52,95,114,101,
+ 113,117,105,114,101,115,95,98,117,105,108,116,105,110,46,60,
+ 108,111,99,97,108,115,62,46,95,114,101,113,117,105,114,101,
+ 115,95,98,117,105,108,116,105,110,95,119,114,97,112,112,101,
+ 114,41,1,114,12,0,0,0,41,2,114,79,0,0,0,114,
+ 80,0,0,0,114,10,0,0,0,41,1,114,79,0,0,0,
+ 114,11,0,0,0,218,17,95,114,101,113,117,105,114,101,115,
+ 95,98,117,105,108,116,105,110,233,0,0,0,115,6,0,0,
+ 0,0,2,12,5,10,1,114,81,0,0,0,99,1,0,0,
+ 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0,
+ 0,115,26,0,0,0,135,0,102,1,100,1,100,2,132,8,
+ 125,1,116,0,124,1,136,0,131,2,1,0,124,1,83,0,
+ 41,3,122,47,68,101,99,111,114,97,116,111,114,32,116,111,
+ 32,118,101,114,105,102,121,32,116,104,101,32,110,97,109,101,
+ 100,32,109,111,100,117,108,101,32,105,115,32,102,114,111,122,
+ 101,110,46,99,2,0,0,0,0,0,0,0,2,0,0,0,
+ 4,0,0,0,19,0,0,0,115,40,0,0,0,116,0,106,
+ 1,124,1,131,1,115,30,116,2,100,1,106,3,124,1,131,
+ 1,100,2,124,1,144,1,131,1,130,1,136,0,124,0,124,
+ 1,131,2,83,0,41,3,78,122,27,123,33,114,125,32,105,
+ 115,32,110,111,116,32,97,32,102,114,111,122,101,110,32,109,
+ 111,100,117,108,101,114,15,0,0,0,41,4,114,57,0,0,
+ 0,218,9,105,115,95,102,114,111,122,101,110,114,77,0,0,
+ 0,114,50,0,0,0,41,2,114,19,0,0,0,114,78,0,
+ 0,0,41,1,114,79,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,218,24,95,114,101,113,117,105,114,101,115,95,102,
+ 114,111,122,101,110,95,119,114,97,112,112,101,114,246,0,0,
+ 0,115,8,0,0,0,0,1,10,1,12,1,8,1,122,50,
+ 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,
+ 46,60,108,111,99,97,108,115,62,46,95,114,101,113,117,105,
+ 114,101,115,95,102,114,111,122,101,110,95,119,114,97,112,112,
+ 101,114,41,1,114,12,0,0,0,41,2,114,79,0,0,0,
+ 114,83,0,0,0,114,10,0,0,0,41,1,114,79,0,0,
+ 0,114,11,0,0,0,218,16,95,114,101,113,117,105,114,101,
+ 115,95,102,114,111,122,101,110,244,0,0,0,115,6,0,0,
+ 0,0,2,12,5,10,1,114,84,0,0,0,99,2,0,0,
+ 0,0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,
+ 0,115,64,0,0,0,116,0,124,1,124,0,131,2,125,2,
+ 124,1,116,1,106,2,107,6,114,52,116,1,106,2,124,1,
+ 25,0,125,3,116,3,124,2,124,3,131,2,1,0,116,1,
+ 106,2,124,1,25,0,83,0,110,8,116,4,124,2,131,1,
+ 83,0,100,1,83,0,41,2,122,128,76,111,97,100,32,116,
+ 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,
+ 117,108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,
+ 117,108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,
+ 105,116,46,10,10,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,108,111,97,100,101,114,46,
+ 101,120,101,99,95,109,111,100,117,108,101,32,105,110,115,116,
+ 101,97,100,46,10,10,32,32,32,32,78,41,5,218,16,115,
+ 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,
+ 14,0,0,0,114,21,0,0,0,218,5,95,101,120,101,99,
+ 218,5,95,108,111,97,100,41,4,114,19,0,0,0,114,78,
+ 0,0,0,218,4,115,112,101,99,218,6,109,111,100,117,108,
+ 101,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
+ 218,17,95,108,111,97,100,95,109,111,100,117,108,101,95,115,
+ 104,105,109,0,1,0,0,115,12,0,0,0,0,6,10,1,
+ 10,1,10,1,10,1,12,2,114,90,0,0,0,99,1,0,
+ 0,0,0,0,0,0,5,0,0,0,35,0,0,0,67,0,
+ 0,0,115,218,0,0,0,116,0,124,0,100,1,100,0,131,
+ 3,125,1,116,1,124,1,100,2,131,2,114,54,121,10,124,
+ 1,106,2,124,0,131,1,83,0,4,0,116,3,107,10,114,
+ 52,1,0,1,0,1,0,89,0,110,2,88,0,121,10,124,
+ 0,106,4,125,2,87,0,110,20,4,0,116,5,107,10,114,
+ 84,1,0,1,0,1,0,89,0,110,18,88,0,124,2,100,
+ 0,107,9,114,102,116,6,124,2,131,1,83,0,121,10,124,
+ 0,106,7,125,3,87,0,110,24,4,0,116,5,107,10,114,
+ 136,1,0,1,0,1,0,100,3,125,3,89,0,110,2,88,
+ 0,121,10,124,0,106,8,125,4,87,0,110,52,4,0,116,
+ 5,107,10,114,200,1,0,1,0,1,0,124,1,100,0,107,
+ 8,114,184,100,4,106,9,124,3,131,1,83,0,110,12,100,
+ 5,106,9,124,3,124,1,131,2,83,0,89,0,110,14,88,
+ 0,100,6,106,9,124,3,124,4,131,2,83,0,100,0,83,
+ 0,41,7,78,218,10,95,95,108,111,97,100,101,114,95,95,
218,11,109,111,100,117,108,101,95,114,101,112,114,250,1,63,
122,13,60,109,111,100,117,108,101,32,123,33,114,125,62,122,
20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,
@@ -616,1374 +575,1310 @@ const unsigned char _Py_M__importlib[] = {
88,0,0,0,114,15,0,0,0,218,8,102,105,108,101,110,
97,109,101,114,10,0,0,0,114,10,0,0,0,114,11,0,
0,0,218,12,95,109,111,100,117,108,101,95,114,101,112,114,
- 16,1,0,0,115,46,0,0,0,0,2,18,1,15,4,3,
- 1,17,1,13,1,5,1,3,1,13,1,13,1,5,2,12,
- 1,10,4,3,1,13,1,13,1,11,1,3,1,13,1,13,
- 1,12,1,13,2,21,2,114,101,0,0,0,99,0,0,0,
+ 16,1,0,0,115,46,0,0,0,0,2,12,1,10,4,2,
+ 1,10,1,14,1,6,1,2,1,10,1,14,1,6,2,8,
+ 1,8,4,2,1,10,1,14,1,10,1,2,1,10,1,14,
+ 1,8,1,12,2,18,2,114,101,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,52,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,83,41,8,218,17,95,105,
+ 0,115,36,0,0,0,101,0,90,1,100,0,90,2,100,1,
+ 100,2,132,0,90,3,100,3,100,4,132,0,90,4,100,5,
+ 100,6,132,0,90,5,100,7,83,0,41,8,218,17,95,105,
110,115,116,97,108,108,101,100,95,115,97,102,101,108,121,99,
2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,
- 67,0,0,0,115,25,0,0,0,124,1,0,124,0,0,95,
- 0,0,124,1,0,106,1,0,124,0,0,95,2,0,100,0,
- 0,83,41,1,78,41,3,218,7,95,109,111,100,117,108,101,
- 114,95,0,0,0,218,5,95,115,112,101,99,41,2,114,19,
- 0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,11,0,0,0,114,20,0,0,0,54,1,0,0,
- 115,4,0,0,0,0,1,9,1,122,26,95,105,110,115,116,
- 97,108,108,101,100,95,115,97,102,101,108,121,46,95,95,105,
- 110,105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,
- 0,0,3,0,0,0,67,0,0,0,115,38,0,0,0,100,
- 1,0,124,0,0,106,0,0,95,1,0,124,0,0,106,2,
- 0,116,3,0,106,4,0,124,0,0,106,0,0,106,5,0,
- 60,100,0,0,83,41,2,78,84,41,6,114,104,0,0,0,
- 218,13,95,105,110,105,116,105,97,108,105,122,105,110,103,114,
- 103,0,0,0,114,14,0,0,0,114,21,0,0,0,114,15,
- 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,58,1,
- 0,0,115,4,0,0,0,0,4,12,1,122,27,95,105,110,
- 115,116,97,108,108,101,100,95,115,97,102,101,108,121,46,95,
- 95,101,110,116,101,114,95,95,99,1,0,0,0,0,0,0,
- 0,3,0,0,0,17,0,0,0,71,0,0,0,115,121,0,
- 0,0,122,101,0,124,0,0,106,0,0,125,2,0,116,1,
- 0,100,1,0,100,2,0,132,0,0,124,1,0,68,131,1,
- 0,131,1,0,114,78,0,121,17,0,116,2,0,106,3,0,
- 124,2,0,106,4,0,61,87,113,100,0,4,116,5,0,107,
- 10,0,114,74,0,1,1,1,89,113,100,0,88,110,22,0,
- 116,6,0,100,3,0,124,2,0,106,4,0,124,2,0,106,
- 7,0,131,3,0,1,87,100,0,0,100,4,0,124,0,0,
- 106,0,0,95,8,0,88,100,0,0,83,41,5,78,99,1,
- 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,
- 0,0,0,115,27,0,0,0,124,0,0,93,17,0,125,1,
- 0,124,1,0,100,0,0,107,9,0,86,1,113,3,0,100,
- 0,0,83,41,1,78,114,10,0,0,0,41,2,114,24,0,
- 0,0,114,25,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,26,0,0,0,68,1,0,0,115,
- 2,0,0,0,6,0,122,45,95,105,110,115,116,97,108,108,
- 101,100,95,115,97,102,101,108,121,46,95,95,101,120,105,116,
- 95,95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,
- 101,120,112,114,62,122,18,105,109,112,111,114,116,32,123,33,
- 114,125,32,35,32,123,33,114,125,70,41,9,114,104,0,0,
- 0,114,27,0,0,0,114,14,0,0,0,114,21,0,0,0,
- 114,15,0,0,0,114,28,0,0,0,114,75,0,0,0,114,
- 99,0,0,0,114,105,0,0,0,41,3,114,19,0,0,0,
- 114,29,0,0,0,114,88,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,30,0,0,0,65,1,
- 0,0,115,18,0,0,0,0,1,3,1,9,1,25,1,3,
- 1,17,1,13,1,8,2,26,2,122,26,95,105,110,115,116,
+ 67,0,0,0,115,18,0,0,0,124,1,124,0,95,0,124,
+ 1,106,1,124,0,95,2,100,0,83,0,41,1,78,41,3,
+ 218,7,95,109,111,100,117,108,101,114,95,0,0,0,218,5,
+ 95,115,112,101,99,41,2,114,19,0,0,0,114,89,0,0,
+ 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
+ 114,20,0,0,0,54,1,0,0,115,4,0,0,0,0,1,
+ 6,1,122,26,95,105,110,115,116,97,108,108,101,100,95,115,
+ 97,102,101,108,121,46,95,95,105,110,105,116,95,95,99,1,
+ 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,
+ 0,0,0,115,28,0,0,0,100,1,124,0,106,0,95,1,
+ 124,0,106,2,116,3,106,4,124,0,106,0,106,5,60,0,
+ 100,0,83,0,41,2,78,84,41,6,114,104,0,0,0,218,
+ 13,95,105,110,105,116,105,97,108,105,122,105,110,103,114,103,
+ 0,0,0,114,14,0,0,0,114,21,0,0,0,114,15,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,58,1,0,
+ 0,115,4,0,0,0,0,4,8,1,122,27,95,105,110,115,
+ 116,97,108,108,101,100,95,115,97,102,101,108,121,46,95,95,
+ 101,110,116,101,114,95,95,99,1,0,0,0,0,0,0,0,
+ 3,0,0,0,17,0,0,0,71,0,0,0,115,98,0,0,
+ 0,122,82,124,0,106,0,125,2,116,1,100,1,100,2,132,
+ 0,124,1,68,0,131,1,131,1,114,64,121,14,116,2,106,
+ 3,124,2,106,4,61,0,87,0,113,80,4,0,116,5,107,
+ 10,114,60,1,0,1,0,1,0,89,0,113,80,88,0,110,
+ 16,116,6,100,3,124,2,106,4,124,2,106,7,131,3,1,
+ 0,87,0,100,0,100,4,124,0,106,0,95,8,88,0,100,
+ 0,83,0,41,5,78,99,1,0,0,0,0,0,0,0,2,
+ 0,0,0,3,0,0,0,115,0,0,0,115,22,0,0,0,
+ 124,0,93,14,125,1,124,1,100,0,107,9,86,0,1,0,
+ 113,2,100,0,83,0,41,1,78,114,10,0,0,0,41,2,
+ 114,24,0,0,0,114,25,0,0,0,114,10,0,0,0,114,
+ 10,0,0,0,114,11,0,0,0,114,26,0,0,0,68,1,
+ 0,0,115,2,0,0,0,4,0,122,45,95,105,110,115,116,
97,108,108,101,100,95,115,97,102,101,108,121,46,95,95,101,
- 120,105,116,95,95,78,41,6,114,1,0,0,0,114,0,0,
- 0,0,114,2,0,0,0,114,20,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,102,0,0,0,52,
- 1,0,0,115,6,0,0,0,12,2,12,4,12,7,114,102,
- 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
- 8,0,0,0,64,0,0,0,115,172,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,100,4,0,100,3,0,100,5,0,100,3,
- 0,100,6,0,100,7,0,132,0,3,90,4,0,100,8,0,
- 100,9,0,132,0,0,90,5,0,100,10,0,100,11,0,132,
- 0,0,90,6,0,101,7,0,100,12,0,100,13,0,132,0,
- 0,131,1,0,90,8,0,101,8,0,106,9,0,100,14,0,
- 100,13,0,132,0,0,131,1,0,90,8,0,101,7,0,100,
- 15,0,100,16,0,132,0,0,131,1,0,90,10,0,101,7,
- 0,100,17,0,100,18,0,132,0,0,131,1,0,90,11,0,
- 101,11,0,106,9,0,100,19,0,100,18,0,132,0,0,131,
- 1,0,90,11,0,100,3,0,83,41,20,218,10,77,111,100,
- 117,108,101,83,112,101,99,97,208,5,0,0,84,104,101,32,
- 115,112,101,99,105,102,105,99,97,116,105,111,110,32,102,111,
- 114,32,97,32,109,111,100,117,108,101,44,32,117,115,101,100,
- 32,102,111,114,32,108,111,97,100,105,110,103,46,10,10,32,
- 32,32,32,65,32,109,111,100,117,108,101,39,115,32,115,112,
- 101,99,32,105,115,32,116,104,101,32,115,111,117,114,99,101,
- 32,102,111,114,32,105,110,102,111,114,109,97,116,105,111,110,
- 32,97,98,111,117,116,32,116,104,101,32,109,111,100,117,108,
- 101,46,32,32,70,111,114,10,32,32,32,32,100,97,116,97,
- 32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,
- 32,116,104,101,32,109,111,100,117,108,101,44,32,105,110,99,
- 108,117,100,105,110,103,32,115,111,117,114,99,101,44,32,117,
- 115,101,32,116,104,101,32,115,112,101,99,39,115,10,32,32,
- 32,32,108,111,97,100,101,114,46,10,10,32,32,32,32,96,
- 110,97,109,101,96,32,105,115,32,116,104,101,32,97,98,115,
- 111,108,117,116,101,32,110,97,109,101,32,111,102,32,116,104,
- 101,32,109,111,100,117,108,101,46,32,32,96,108,111,97,100,
- 101,114,96,32,105,115,32,116,104,101,32,108,111,97,100,101,
- 114,10,32,32,32,32,116,111,32,117,115,101,32,119,104,101,
- 110,32,108,111,97,100,105,110,103,32,116,104,101,32,109,111,
- 100,117,108,101,46,32,32,96,112,97,114,101,110,116,96,32,
- 105,115,32,116,104,101,32,110,97,109,101,32,111,102,32,116,
- 104,101,10,32,32,32,32,112,97,99,107,97,103,101,32,116,
- 104,101,32,109,111,100,117,108,101,32,105,115,32,105,110,46,
- 32,32,84,104,101,32,112,97,114,101,110,116,32,105,115,32,
- 100,101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,
- 32,110,97,109,101,46,10,10,32,32,32,32,96,105,115,95,
- 112,97,99,107,97,103,101,96,32,100,101,116,101,114,109,105,
- 110,101,115,32,105,102,32,116,104,101,32,109,111,100,117,108,
- 101,32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,
- 97,32,112,97,99,107,97,103,101,32,111,114,10,32,32,32,
- 32,110,111,116,46,32,32,79,110,32,109,111,100,117,108,101,
- 115,32,116,104,105,115,32,105,115,32,114,101,102,108,101,99,
- 116,101,100,32,98,121,32,116,104,101,32,96,95,95,112,97,
- 116,104,95,95,96,32,97,116,116,114,105,98,117,116,101,46,
- 10,10,32,32,32,32,96,111,114,105,103,105,110,96,32,105,
- 115,32,116,104,101,32,115,112,101,99,105,102,105,99,32,108,
- 111,99,97,116,105,111,110,32,117,115,101,100,32,98,121,32,
- 116,104,101,32,108,111,97,100,101,114,32,102,114,111,109,32,
- 119,104,105,99,104,32,116,111,10,32,32,32,32,108,111,97,
- 100,32,116,104,101,32,109,111,100,117,108,101,44,32,105,102,
- 32,116,104,97,116,32,105,110,102,111,114,109,97,116,105,111,
- 110,32,105,115,32,97,118,97,105,108,97,98,108,101,46,32,
- 32,87,104,101,110,32,102,105,108,101,110,97,109,101,32,105,
- 115,10,32,32,32,32,115,101,116,44,32,111,114,105,103,105,
- 110,32,119,105,108,108,32,109,97,116,99,104,46,10,10,32,
- 32,32,32,96,104,97,115,95,108,111,99,97,116,105,111,110,
- 96,32,105,110,100,105,99,97,116,101,115,32,116,104,97,116,
- 32,97,32,115,112,101,99,39,115,32,34,111,114,105,103,105,
- 110,34,32,114,101,102,108,101,99,116,115,32,97,32,108,111,
- 99,97,116,105,111,110,46,10,32,32,32,32,87,104,101,110,
- 32,116,104,105,115,32,105,115,32,84,114,117,101,44,32,96,
- 95,95,102,105,108,101,95,95,96,32,97,116,116,114,105,98,
- 117,116,101,32,111,102,32,116,104,101,32,109,111,100,117,108,
- 101,32,105,115,32,115,101,116,46,10,10,32,32,32,32,96,
- 99,97,99,104,101,100,96,32,105,115,32,116,104,101,32,108,
- 111,99,97,116,105,111,110,32,111,102,32,116,104,101,32,99,
- 97,99,104,101,100,32,98,121,116,101,99,111,100,101,32,102,
- 105,108,101,44,32,105,102,32,97,110,121,46,32,32,73,116,
- 10,32,32,32,32,99,111,114,114,101,115,112,111,110,100,115,
- 32,116,111,32,116,104,101,32,96,95,95,99,97,99,104,101,
- 100,95,95,96,32,97,116,116,114,105,98,117,116,101,46,10,
- 10,32,32,32,32,96,115,117,98,109,111,100,117,108,101,95,
+ 120,105,116,95,95,46,60,108,111,99,97,108,115,62,46,60,
+ 103,101,110,101,120,112,114,62,122,18,105,109,112,111,114,116,
+ 32,123,33,114,125,32,35,32,123,33,114,125,70,41,9,114,
+ 104,0,0,0,114,27,0,0,0,114,14,0,0,0,114,21,
+ 0,0,0,114,15,0,0,0,114,28,0,0,0,114,75,0,
+ 0,0,114,99,0,0,0,114,105,0,0,0,41,3,114,19,
+ 0,0,0,114,29,0,0,0,114,88,0,0,0,114,10,0,
+ 0,0,114,10,0,0,0,114,11,0,0,0,114,30,0,0,
+ 0,65,1,0,0,115,18,0,0,0,0,1,2,1,6,1,
+ 18,1,2,1,14,1,14,1,8,2,20,2,122,26,95,105,
+ 110,115,116,97,108,108,101,100,95,115,97,102,101,108,121,46,
+ 95,95,101,120,105,116,95,95,78,41,6,114,1,0,0,0,
+ 114,0,0,0,0,114,2,0,0,0,114,20,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,102,0,
+ 0,0,52,1,0,0,115,6,0,0,0,8,2,8,4,8,
+ 7,114,102,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,114,0,0,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,2,
+ 100,2,100,3,156,3,100,4,100,5,132,2,90,4,100,6,
+ 100,7,132,0,90,5,100,8,100,9,132,0,90,6,101,7,
+ 100,10,100,11,132,0,131,1,90,8,101,8,106,9,100,12,
+ 100,11,132,0,131,1,90,8,101,7,100,13,100,14,132,0,
+ 131,1,90,10,101,7,100,15,100,16,132,0,131,1,90,11,
+ 101,11,106,9,100,17,100,16,132,0,131,1,90,11,100,2,
+ 83,0,41,18,218,10,77,111,100,117,108,101,83,112,101,99,
+ 97,208,5,0,0,84,104,101,32,115,112,101,99,105,102,105,
+ 99,97,116,105,111,110,32,102,111,114,32,97,32,109,111,100,
+ 117,108,101,44,32,117,115,101,100,32,102,111,114,32,108,111,
+ 97,100,105,110,103,46,10,10,32,32,32,32,65,32,109,111,
+ 100,117,108,101,39,115,32,115,112,101,99,32,105,115,32,116,
+ 104,101,32,115,111,117,114,99,101,32,102,111,114,32,105,110,
+ 102,111,114,109,97,116,105,111,110,32,97,98,111,117,116,32,
+ 116,104,101,32,109,111,100,117,108,101,46,32,32,70,111,114,
+ 10,32,32,32,32,100,97,116,97,32,97,115,115,111,99,105,
+ 97,116,101,100,32,119,105,116,104,32,116,104,101,32,109,111,
+ 100,117,108,101,44,32,105,110,99,108,117,100,105,110,103,32,
+ 115,111,117,114,99,101,44,32,117,115,101,32,116,104,101,32,
+ 115,112,101,99,39,115,10,32,32,32,32,108,111,97,100,101,
+ 114,46,10,10,32,32,32,32,96,110,97,109,101,96,32,105,
+ 115,32,116,104,101,32,97,98,115,111,108,117,116,101,32,110,
+ 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108,
+ 101,46,32,32,96,108,111,97,100,101,114,96,32,105,115,32,
+ 116,104,101,32,108,111,97,100,101,114,10,32,32,32,32,116,
+ 111,32,117,115,101,32,119,104,101,110,32,108,111,97,100,105,
+ 110,103,32,116,104,101,32,109,111,100,117,108,101,46,32,32,
+ 96,112,97,114,101,110,116,96,32,105,115,32,116,104,101,32,
+ 110,97,109,101,32,111,102,32,116,104,101,10,32,32,32,32,
+ 112,97,99,107,97,103,101,32,116,104,101,32,109,111,100,117,
+ 108,101,32,105,115,32,105,110,46,32,32,84,104,101,32,112,
+ 97,114,101,110,116,32,105,115,32,100,101,114,105,118,101,100,
+ 32,102,114,111,109,32,116,104,101,32,110,97,109,101,46,10,
+ 10,32,32,32,32,96,105,115,95,112,97,99,107,97,103,101,
+ 96,32,100,101,116,101,114,109,105,110,101,115,32,105,102,32,
+ 116,104,101,32,109,111,100,117,108,101,32,105,115,32,99,111,
+ 110,115,105,100,101,114,101,100,32,97,32,112,97,99,107,97,
+ 103,101,32,111,114,10,32,32,32,32,110,111,116,46,32,32,
+ 79,110,32,109,111,100,117,108,101,115,32,116,104,105,115,32,
+ 105,115,32,114,101,102,108,101,99,116,101,100,32,98,121,32,
+ 116,104,101,32,96,95,95,112,97,116,104,95,95,96,32,97,
+ 116,116,114,105,98,117,116,101,46,10,10,32,32,32,32,96,
+ 111,114,105,103,105,110,96,32,105,115,32,116,104,101,32,115,
+ 112,101,99,105,102,105,99,32,108,111,99,97,116,105,111,110,
+ 32,117,115,101,100,32,98,121,32,116,104,101,32,108,111,97,
+ 100,101,114,32,102,114,111,109,32,119,104,105,99,104,32,116,
+ 111,10,32,32,32,32,108,111,97,100,32,116,104,101,32,109,
+ 111,100,117,108,101,44,32,105,102,32,116,104,97,116,32,105,
+ 110,102,111,114,109,97,116,105,111,110,32,105,115,32,97,118,
+ 97,105,108,97,98,108,101,46,32,32,87,104,101,110,32,102,
+ 105,108,101,110,97,109,101,32,105,115,10,32,32,32,32,115,
+ 101,116,44,32,111,114,105,103,105,110,32,119,105,108,108,32,
+ 109,97,116,99,104,46,10,10,32,32,32,32,96,104,97,115,
+ 95,108,111,99,97,116,105,111,110,96,32,105,110,100,105,99,
+ 97,116,101,115,32,116,104,97,116,32,97,32,115,112,101,99,
+ 39,115,32,34,111,114,105,103,105,110,34,32,114,101,102,108,
+ 101,99,116,115,32,97,32,108,111,99,97,116,105,111,110,46,
+ 10,32,32,32,32,87,104,101,110,32,116,104,105,115,32,105,
+ 115,32,84,114,117,101,44,32,96,95,95,102,105,108,101,95,
+ 95,96,32,97,116,116,114,105,98,117,116,101,32,111,102,32,
+ 116,104,101,32,109,111,100,117,108,101,32,105,115,32,115,101,
+ 116,46,10,10,32,32,32,32,96,99,97,99,104,101,100,96,
+ 32,105,115,32,116,104,101,32,108,111,99,97,116,105,111,110,
+ 32,111,102,32,116,104,101,32,99,97,99,104,101,100,32,98,
+ 121,116,101,99,111,100,101,32,102,105,108,101,44,32,105,102,
+ 32,97,110,121,46,32,32,73,116,10,32,32,32,32,99,111,
+ 114,114,101,115,112,111,110,100,115,32,116,111,32,116,104,101,
+ 32,96,95,95,99,97,99,104,101,100,95,95,96,32,97,116,
+ 116,114,105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,
+ 101,32,115,101,113,117,101,110,99,101,32,111,102,32,112,97,
+ 116,104,32,101,110,116,114,105,101,115,32,116,111,10,32,32,
+ 32,32,115,101,97,114,99,104,32,119,104,101,110,32,105,109,
+ 112,111,114,116,105,110,103,32,115,117,98,109,111,100,117,108,
+ 101,115,46,32,32,73,102,32,115,101,116,44,32,105,115,95,
+ 112,97,99,107,97,103,101,32,115,104,111,117,108,100,32,98,
+ 101,10,32,32,32,32,84,114,117,101,45,45,97,110,100,32,
+ 70,97,108,115,101,32,111,116,104,101,114,119,105,115,101,46,
+ 10,10,32,32,32,32,80,97,99,107,97,103,101,115,32,97,
+ 114,101,32,115,105,109,112,108,121,32,109,111,100,117,108,101,
+ 115,32,116,104,97,116,32,40,109,97,121,41,32,104,97,118,
+ 101,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73,
+ 102,32,97,32,115,112,101,99,10,32,32,32,32,104,97,115,
+ 32,97,32,110,111,110,45,78,111,110,101,32,118,97,108,117,
+ 101,32,105,110,32,96,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,
- 96,32,105,115,32,116,104,101,32,115,101,113,117,101,110,99,
- 101,32,111,102,32,112,97,116,104,32,101,110,116,114,105,101,
- 115,32,116,111,10,32,32,32,32,115,101,97,114,99,104,32,
- 119,104,101,110,32,105,109,112,111,114,116,105,110,103,32,115,
- 117,98,109,111,100,117,108,101,115,46,32,32,73,102,32,115,
- 101,116,44,32,105,115,95,112,97,99,107,97,103,101,32,115,
- 104,111,117,108,100,32,98,101,10,32,32,32,32,84,114,117,
- 101,45,45,97,110,100,32,70,97,108,115,101,32,111,116,104,
- 101,114,119,105,115,101,46,10,10,32,32,32,32,80,97,99,
- 107,97,103,101,115,32,97,114,101,32,115,105,109,112,108,121,
- 32,109,111,100,117,108,101,115,32,116,104,97,116,32,40,109,
- 97,121,41,32,104,97,118,101,32,115,117,98,109,111,100,117,
- 108,101,115,46,32,32,73,102,32,97,32,115,112,101,99,10,
- 32,32,32,32,104,97,115,32,97,32,110,111,110,45,78,111,
- 110,101,32,118,97,108,117,101,32,105,110,32,96,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,96,44,32,116,104,101,32,105,109,
- 112,111,114,116,10,32,32,32,32,115,121,115,116,101,109,32,
- 119,105,108,108,32,99,111,110,115,105,100,101,114,32,109,111,
- 100,117,108,101,115,32,108,111,97,100,101,100,32,102,114,111,
- 109,32,116,104,101,32,115,112,101,99,32,97,115,32,112,97,
- 99,107,97,103,101,115,46,10,10,32,32,32,32,79,110,108,
- 121,32,102,105,110,100,101,114,115,32,40,115,101,101,32,105,
- 109,112,111,114,116,108,105,98,46,97,98,99,46,77,101,116,
- 97,80,97,116,104,70,105,110,100,101,114,32,97,110,100,10,
- 32,32,32,32,105,109,112,111,114,116,108,105,98,46,97,98,
- 99,46,80,97,116,104,69,110,116,114,121,70,105,110,100,101,
- 114,41,32,115,104,111,117,108,100,32,109,111,100,105,102,121,
- 32,77,111,100,117,108,101,83,112,101,99,32,105,110,115,116,
- 97,110,99,101,115,46,10,10,32,32,32,32,218,6,111,114,
- 105,103,105,110,78,218,12,108,111,97,100,101,114,95,115,116,
- 97,116,101,218,10,105,115,95,112,97,99,107,97,103,101,99,
- 3,0,0,0,3,0,0,0,6,0,0,0,2,0,0,0,
- 67,0,0,0,115,79,0,0,0,124,1,0,124,0,0,95,
- 0,0,124,2,0,124,0,0,95,1,0,124,3,0,124,0,
- 0,95,2,0,124,4,0,124,0,0,95,3,0,124,5,0,
- 114,48,0,103,0,0,110,3,0,100,0,0,124,0,0,95,
- 4,0,100,1,0,124,0,0,95,5,0,100,0,0,124,0,
- 0,95,6,0,100,0,0,83,41,2,78,70,41,7,114,15,
- 0,0,0,114,99,0,0,0,114,107,0,0,0,114,108,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,218,13,
- 95,115,101,116,95,102,105,108,101,97,116,116,114,218,7,95,
- 99,97,99,104,101,100,41,6,114,19,0,0,0,114,15,0,
- 0,0,114,99,0,0,0,114,107,0,0,0,114,108,0,0,
- 0,114,109,0,0,0,114,10,0,0,0,114,10,0,0,0,
- 114,11,0,0,0,114,20,0,0,0,116,1,0,0,115,14,
- 0,0,0,0,2,9,1,9,1,9,1,9,1,21,3,9,
- 1,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95,
- 105,110,105,116,95,95,99,1,0,0,0,0,0,0,0,2,
- 0,0,0,4,0,0,0,67,0,0,0,115,147,0,0,0,
- 100,1,0,106,0,0,124,0,0,106,1,0,131,1,0,100,
- 2,0,106,0,0,124,0,0,106,2,0,131,1,0,103,2,
- 0,125,1,0,124,0,0,106,3,0,100,0,0,107,9,0,
- 114,76,0,124,1,0,106,4,0,100,3,0,106,0,0,124,
- 0,0,106,3,0,131,1,0,131,1,0,1,124,0,0,106,
- 5,0,100,0,0,107,9,0,114,116,0,124,1,0,106,4,
- 0,100,4,0,106,0,0,124,0,0,106,5,0,131,1,0,
- 131,1,0,1,100,5,0,106,0,0,124,0,0,106,6,0,
- 106,7,0,100,6,0,106,8,0,124,1,0,131,1,0,131,
- 2,0,83,41,7,78,122,9,110,97,109,101,61,123,33,114,
- 125,122,11,108,111,97,100,101,114,61,123,33,114,125,122,11,
- 111,114,105,103,105,110,61,123,33,114,125,122,29,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,61,123,125,122,6,123,125,40,123,
- 125,41,122,2,44,32,41,9,114,50,0,0,0,114,15,0,
- 0,0,114,99,0,0,0,114,107,0,0,0,218,6,97,112,
- 112,101,110,100,114,110,0,0,0,218,9,95,95,99,108,97,
- 115,115,95,95,114,1,0,0,0,218,4,106,111,105,110,41,
- 2,114,19,0,0,0,114,29,0,0,0,114,10,0,0,0,
- 114,10,0,0,0,114,11,0,0,0,114,52,0,0,0,128,
- 1,0,0,115,16,0,0,0,0,1,15,1,21,1,15,1,
- 25,1,15,1,12,1,13,1,122,19,77,111,100,117,108,101,
- 83,112,101,99,46,95,95,114,101,112,114,95,95,99,2,0,
- 0,0,0,0,0,0,3,0,0,0,11,0,0,0,67,0,
- 0,0,115,145,0,0,0,124,0,0,106,0,0,125,2,0,
- 121,107,0,124,0,0,106,1,0,124,1,0,106,1,0,107,
- 2,0,111,114,0,124,0,0,106,2,0,124,1,0,106,2,
- 0,107,2,0,111,114,0,124,0,0,106,3,0,124,1,0,
- 106,3,0,107,2,0,111,114,0,124,2,0,124,1,0,106,
- 0,0,107,2,0,111,114,0,124,0,0,106,4,0,124,1,
- 0,106,4,0,107,2,0,111,114,0,124,0,0,106,5,0,
- 124,1,0,106,5,0,107,2,0,83,87,110,22,0,4,116,
- 6,0,107,10,0,114,140,0,1,1,1,100,1,0,83,89,
- 110,1,0,88,100,0,0,83,41,2,78,70,41,7,114,110,
- 0,0,0,114,15,0,0,0,114,99,0,0,0,114,107,0,
- 0,0,218,6,99,97,99,104,101,100,218,12,104,97,115,95,
- 108,111,99,97,116,105,111,110,114,96,0,0,0,41,3,114,
- 19,0,0,0,90,5,111,116,104,101,114,90,4,115,109,115,
- 108,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
- 218,6,95,95,101,113,95,95,138,1,0,0,115,20,0,0,
- 0,0,1,9,1,3,1,18,1,18,1,18,1,15,1,18,
- 1,20,1,13,1,122,17,77,111,100,117,108,101,83,112,101,
- 99,46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,
- 0,1,0,0,0,2,0,0,0,67,0,0,0,115,85,0,
- 0,0,124,0,0,106,0,0,100,0,0,107,8,0,114,78,
- 0,124,0,0,106,1,0,100,0,0,107,9,0,114,78,0,
- 124,0,0,106,2,0,114,78,0,116,3,0,100,0,0,107,
- 8,0,114,57,0,116,4,0,130,1,0,116,3,0,106,5,
- 0,124,0,0,106,1,0,131,1,0,124,0,0,95,0,0,
- 124,0,0,106,0,0,83,41,1,78,41,6,114,112,0,0,
- 0,114,107,0,0,0,114,111,0,0,0,218,19,95,98,111,
- 111,116,115,116,114,97,112,95,101,120,116,101,114,110,97,108,
- 218,19,78,111,116,73,109,112,108,101,109,101,110,116,101,100,
- 69,114,114,111,114,90,11,95,103,101,116,95,99,97,99,104,
- 101,100,41,1,114,19,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,116,0,0,0,150,1,0,
- 0,115,12,0,0,0,0,2,15,1,24,1,12,1,6,1,
- 21,1,122,17,77,111,100,117,108,101,83,112,101,99,46,99,
- 97,99,104,101,100,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,2,0,0,0,67,0,0,0,115,13,0,0,0,124,
- 1,0,124,0,0,95,0,0,100,0,0,83,41,1,78,41,
- 1,114,112,0,0,0,41,2,114,19,0,0,0,114,116,0,
- 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
- 0,114,116,0,0,0,159,1,0,0,115,2,0,0,0,0,
- 2,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,
- 0,0,67,0,0,0,115,46,0,0,0,124,0,0,106,0,
- 0,100,1,0,107,8,0,114,35,0,124,0,0,106,1,0,
- 106,2,0,100,2,0,131,1,0,100,3,0,25,83,124,0,
- 0,106,1,0,83,100,1,0,83,41,4,122,32,84,104,101,
- 32,110,97,109,101,32,111,102,32,116,104,101,32,109,111,100,
- 117,108,101,39,115,32,112,97,114,101,110,116,46,78,218,1,
- 46,114,33,0,0,0,41,3,114,110,0,0,0,114,15,0,
- 0,0,218,10,114,112,97,114,116,105,116,105,111,110,41,1,
- 114,19,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
- 11,0,0,0,218,6,112,97,114,101,110,116,163,1,0,0,
- 115,6,0,0,0,0,3,15,1,20,2,122,17,77,111,100,
- 117,108,101,83,112,101,99,46,112,97,114,101,110,116,99,1,
- 0,0,0,0,0,0,0,1,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,78,41,1,114,111,0,0,0,41,1,114,19,0,0,0,
+ 96,44,32,116,104,101,32,105,109,112,111,114,116,10,32,32,
+ 32,32,115,121,115,116,101,109,32,119,105,108,108,32,99,111,
+ 110,115,105,100,101,114,32,109,111,100,117,108,101,115,32,108,
+ 111,97,100,101,100,32,102,114,111,109,32,116,104,101,32,115,
+ 112,101,99,32,97,115,32,112,97,99,107,97,103,101,115,46,
+ 10,10,32,32,32,32,79,110,108,121,32,102,105,110,100,101,
+ 114,115,32,40,115,101,101,32,105,109,112,111,114,116,108,105,
+ 98,46,97,98,99,46,77,101,116,97,80,97,116,104,70,105,
+ 110,100,101,114,32,97,110,100,10,32,32,32,32,105,109,112,
+ 111,114,116,108,105,98,46,97,98,99,46,80,97,116,104,69,
+ 110,116,114,121,70,105,110,100,101,114,41,32,115,104,111,117,
+ 108,100,32,109,111,100,105,102,121,32,77,111,100,117,108,101,
+ 83,112,101,99,32,105,110,115,116,97,110,99,101,115,46,10,
+ 10,32,32,32,32,78,41,3,218,6,111,114,105,103,105,110,
+ 218,12,108,111,97,100,101,114,95,115,116,97,116,101,218,10,
+ 105,115,95,112,97,99,107,97,103,101,99,3,0,0,0,3,
+ 0,0,0,6,0,0,0,2,0,0,0,67,0,0,0,115,
+ 54,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1,
+ 124,3,124,0,95,2,124,4,124,0,95,3,124,5,114,32,
+ 103,0,110,2,100,0,124,0,95,4,100,1,124,0,95,5,
+ 100,0,124,0,95,6,100,0,83,0,41,2,78,70,41,7,
+ 114,15,0,0,0,114,99,0,0,0,114,107,0,0,0,114,
+ 108,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,
+ 218,13,95,115,101,116,95,102,105,108,101,97,116,116,114,218,
+ 7,95,99,97,99,104,101,100,41,6,114,19,0,0,0,114,
+ 15,0,0,0,114,99,0,0,0,114,107,0,0,0,114,108,
+ 0,0,0,114,109,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,20,0,0,0,116,1,0,0,
+ 115,14,0,0,0,0,2,6,1,6,1,6,1,6,1,14,
+ 3,6,1,122,19,77,111,100,117,108,101,83,112,101,99,46,
+ 95,95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,
+ 0,2,0,0,0,4,0,0,0,67,0,0,0,115,102,0,
+ 0,0,100,1,106,0,124,0,106,1,131,1,100,2,106,0,
+ 124,0,106,2,131,1,103,2,125,1,124,0,106,3,100,0,
+ 107,9,114,52,124,1,106,4,100,3,106,0,124,0,106,3,
+ 131,1,131,1,1,0,124,0,106,5,100,0,107,9,114,80,
+ 124,1,106,4,100,4,106,0,124,0,106,5,131,1,131,1,
+ 1,0,100,5,106,0,124,0,106,6,106,7,100,6,106,8,
+ 124,1,131,1,131,2,83,0,41,7,78,122,9,110,97,109,
+ 101,61,123,33,114,125,122,11,108,111,97,100,101,114,61,123,
+ 33,114,125,122,11,111,114,105,103,105,110,61,123,33,114,125,
+ 122,29,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,61,123,125,122,
+ 6,123,125,40,123,125,41,122,2,44,32,41,9,114,50,0,
+ 0,0,114,15,0,0,0,114,99,0,0,0,114,107,0,0,
+ 0,218,6,97,112,112,101,110,100,114,110,0,0,0,218,9,
+ 95,95,99,108,97,115,115,95,95,114,1,0,0,0,218,4,
+ 106,111,105,110,41,2,114,19,0,0,0,114,29,0,0,0,
114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,
- 117,0,0,0,171,1,0,0,115,2,0,0,0,0,2,122,
- 23,77,111,100,117,108,101,83,112,101,99,46,104,97,115,95,
- 108,111,99,97,116,105,111,110,99,2,0,0,0,0,0,0,
- 0,2,0,0,0,2,0,0,0,67,0,0,0,115,19,0,
- 0,0,116,0,0,124,1,0,131,1,0,124,0,0,95,1,
- 0,100,0,0,83,41,1,78,41,2,218,4,98,111,111,108,
- 114,111,0,0,0,41,2,114,19,0,0,0,218,5,118,97,
- 108,117,101,114,10,0,0,0,114,10,0,0,0,114,11,0,
- 0,0,114,117,0,0,0,175,1,0,0,115,2,0,0,0,
- 0,2,41,12,114,1,0,0,0,114,0,0,0,0,114,2,
- 0,0,0,114,3,0,0,0,114,20,0,0,0,114,52,0,
- 0,0,114,118,0,0,0,218,8,112,114,111,112,101,114,116,
- 121,114,116,0,0,0,218,6,115,101,116,116,101,114,114,123,
- 0,0,0,114,117,0,0,0,114,10,0,0,0,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,106,0,0,
- 0,79,1,0,0,115,20,0,0,0,12,35,6,2,15,1,
- 15,11,12,10,12,12,18,9,21,4,18,8,18,4,114,106,
- 0,0,0,114,107,0,0,0,114,109,0,0,0,99,2,0,
+ 52,0,0,0,128,1,0,0,115,16,0,0,0,0,1,10,
+ 1,14,1,10,1,18,1,10,1,8,1,10,1,122,19,77,
+ 111,100,117,108,101,83,112,101,99,46,95,95,114,101,112,114,
+ 95,95,99,2,0,0,0,0,0,0,0,3,0,0,0,11,
+ 0,0,0,67,0,0,0,115,102,0,0,0,124,0,106,0,
+ 125,2,121,70,124,0,106,1,124,1,106,1,107,2,111,76,
+ 124,0,106,2,124,1,106,2,107,2,111,76,124,0,106,3,
+ 124,1,106,3,107,2,111,76,124,2,124,1,106,0,107,2,
+ 111,76,124,0,106,4,124,1,106,4,107,2,111,76,124,0,
+ 106,5,124,1,106,5,107,2,83,0,4,0,116,6,107,10,
+ 114,96,1,0,1,0,1,0,100,1,83,0,88,0,100,0,
+ 83,0,41,2,78,70,41,7,114,110,0,0,0,114,15,0,
+ 0,0,114,99,0,0,0,114,107,0,0,0,218,6,99,97,
+ 99,104,101,100,218,12,104,97,115,95,108,111,99,97,116,105,
+ 111,110,114,96,0,0,0,41,3,114,19,0,0,0,90,5,
+ 111,116,104,101,114,90,4,115,109,115,108,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,218,6,95,95,101,113,
+ 95,95,138,1,0,0,115,20,0,0,0,0,1,6,1,2,
+ 1,12,1,12,1,12,1,10,1,12,1,12,1,14,1,122,
+ 17,77,111,100,117,108,101,83,112,101,99,46,95,95,101,113,
+ 95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,2,
+ 0,0,0,67,0,0,0,115,58,0,0,0,124,0,106,0,
+ 100,0,107,8,114,52,124,0,106,1,100,0,107,9,114,52,
+ 124,0,106,2,114,52,116,3,100,0,107,8,114,38,116,4,
+ 130,1,116,3,106,5,124,0,106,1,131,1,124,0,95,0,
+ 124,0,106,0,83,0,41,1,78,41,6,114,112,0,0,0,
+ 114,107,0,0,0,114,111,0,0,0,218,19,95,98,111,111,
+ 116,115,116,114,97,112,95,101,120,116,101,114,110,97,108,218,
+ 19,78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,
+ 114,114,111,114,90,11,95,103,101,116,95,99,97,99,104,101,
+ 100,41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,
+ 0,0,114,11,0,0,0,114,116,0,0,0,150,1,0,0,
+ 115,12,0,0,0,0,2,10,1,16,1,8,1,4,1,14,
+ 1,122,17,77,111,100,117,108,101,83,112,101,99,46,99,97,
+ 99,104,101,100,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,2,0,0,0,67,0,0,0,115,10,0,0,0,124,1,
+ 124,0,95,0,100,0,83,0,41,1,78,41,1,114,112,0,
+ 0,0,41,2,114,19,0,0,0,114,116,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,114,116,0,
+ 0,0,159,1,0,0,115,2,0,0,0,0,2,99,1,0,
+ 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,
+ 0,0,115,38,0,0,0,124,0,106,0,100,1,107,8,114,
+ 28,124,0,106,1,106,2,100,2,131,1,100,3,25,0,83,
+ 0,110,6,124,0,106,1,83,0,100,1,83,0,41,4,122,
+ 32,84,104,101,32,110,97,109,101,32,111,102,32,116,104,101,
+ 32,109,111,100,117,108,101,39,115,32,112,97,114,101,110,116,
+ 46,78,218,1,46,114,33,0,0,0,41,3,114,110,0,0,
+ 0,114,15,0,0,0,218,10,114,112,97,114,116,105,116,105,
+ 111,110,41,1,114,19,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,218,6,112,97,114,101,110,116,
+ 163,1,0,0,115,6,0,0,0,0,3,10,1,18,2,122,
+ 17,77,111,100,117,108,101,83,112,101,99,46,112,97,114,101,
+ 110,116,99,1,0,0,0,0,0,0,0,1,0,0,0,1,
+ 0,0,0,67,0,0,0,115,6,0,0,0,124,0,106,0,
+ 83,0,41,1,78,41,1,114,111,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,117,0,0,0,171,1,0,0,115,2,0,0,0,
+ 0,2,122,23,77,111,100,117,108,101,83,112,101,99,46,104,
+ 97,115,95,108,111,99,97,116,105,111,110,99,2,0,0,0,
+ 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,
+ 115,14,0,0,0,116,0,124,1,131,1,124,0,95,1,100,
+ 0,83,0,41,1,78,41,2,218,4,98,111,111,108,114,111,
+ 0,0,0,41,2,114,19,0,0,0,218,5,118,97,108,117,
+ 101,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,
+ 114,117,0,0,0,175,1,0,0,115,2,0,0,0,0,2,
+ 41,12,114,1,0,0,0,114,0,0,0,0,114,2,0,0,
+ 0,114,3,0,0,0,114,20,0,0,0,114,52,0,0,0,
+ 114,118,0,0,0,218,8,112,114,111,112,101,114,116,121,114,
+ 116,0,0,0,218,6,115,101,116,116,101,114,114,123,0,0,
+ 0,114,117,0,0,0,114,10,0,0,0,114,10,0,0,0,
+ 114,10,0,0,0,114,11,0,0,0,114,106,0,0,0,79,
+ 1,0,0,115,20,0,0,0,8,35,4,2,4,1,14,11,
+ 8,10,8,12,12,9,14,4,12,8,12,4,114,106,0,0,
+ 0,41,2,114,107,0,0,0,114,109,0,0,0,99,2,0,
0,0,2,0,0,0,6,0,0,0,15,0,0,0,67,0,
- 0,0,115,217,0,0,0,116,0,0,124,1,0,100,1,0,
- 131,2,0,114,110,0,116,1,0,100,2,0,107,8,0,114,
- 33,0,116,2,0,130,1,0,116,1,0,106,3,0,125,4,
- 0,124,3,0,100,2,0,107,8,0,114,70,0,124,4,0,
- 124,0,0,100,3,0,124,1,0,131,1,1,83,124,3,0,
- 114,82,0,103,0,0,110,3,0,100,2,0,125,5,0,124,
- 4,0,124,0,0,100,3,0,124,1,0,100,4,0,124,5,
- 0,131,1,2,83,124,3,0,100,2,0,107,8,0,114,192,
- 0,116,0,0,124,1,0,100,5,0,131,2,0,114,186,0,
- 121,19,0,124,1,0,106,4,0,124,0,0,131,1,0,125,
- 3,0,87,113,192,0,4,116,5,0,107,10,0,114,182,0,
- 1,1,1,100,2,0,125,3,0,89,113,192,0,88,110,6,
- 0,100,6,0,125,3,0,116,6,0,124,0,0,124,1,0,
- 100,7,0,124,2,0,100,5,0,124,3,0,131,2,2,83,
- 41,8,122,53,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,118,97,114,105,111,117,115,32,108,111,97,100,101,114,
- 32,109,101,116,104,111,100,115,46,90,12,103,101,116,95,102,
- 105,108,101,110,97,109,101,78,114,99,0,0,0,114,110,0,
- 0,0,114,109,0,0,0,70,114,107,0,0,0,41,7,114,
- 4,0,0,0,114,119,0,0,0,114,120,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,114,109,0,0,0,114,77,0,0,
- 0,114,106,0,0,0,41,6,114,15,0,0,0,114,99,0,
- 0,0,114,107,0,0,0,114,109,0,0,0,114,128,0,0,
- 0,90,6,115,101,97,114,99,104,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,85,0,0,0,180,1,0,
- 0,115,34,0,0,0,0,2,15,1,12,1,6,1,9,2,
- 12,1,16,1,18,1,15,1,7,2,12,1,15,1,3,1,
- 19,1,13,1,14,3,6,2,114,85,0,0,0,99,3,0,
- 0,0,0,0,0,0,8,0,0,0,53,0,0,0,67,0,
- 0,0,115,118,1,0,0,121,13,0,124,0,0,106,0,0,
- 125,3,0,87,110,18,0,4,116,1,0,107,10,0,114,33,
- 0,1,1,1,89,110,17,0,88,124,3,0,100,0,0,107,
- 9,0,114,50,0,124,3,0,83,124,0,0,106,2,0,125,
- 4,0,124,1,0,100,0,0,107,8,0,114,105,0,121,13,
- 0,124,0,0,106,3,0,125,1,0,87,110,18,0,4,116,
- 1,0,107,10,0,114,104,0,1,1,1,89,110,1,0,88,
- 121,13,0,124,0,0,106,4,0,125,5,0,87,110,24,0,
- 4,116,1,0,107,10,0,114,144,0,1,1,1,100,0,0,
- 125,5,0,89,110,1,0,88,124,2,0,100,0,0,107,8,
- 0,114,218,0,124,5,0,100,0,0,107,8,0,114,212,0,
- 121,13,0,124,1,0,106,5,0,125,2,0,87,113,218,0,
- 4,116,1,0,107,10,0,114,208,0,1,1,1,100,0,0,
- 125,2,0,89,113,218,0,88,110,6,0,124,5,0,125,2,
- 0,121,13,0,124,0,0,106,6,0,125,6,0,87,110,24,
- 0,4,116,1,0,107,10,0,114,1,1,1,1,1,100,0,
- 0,125,6,0,89,110,1,0,88,121,19,0,116,7,0,124,
- 0,0,106,8,0,131,1,0,125,7,0,87,110,24,0,4,
- 116,1,0,107,10,0,114,47,1,1,1,1,100,0,0,125,
- 7,0,89,110,1,0,88,116,9,0,124,4,0,124,1,0,
- 100,1,0,124,2,0,131,2,1,125,3,0,124,5,0,100,
- 0,0,107,8,0,114,87,1,100,2,0,110,3,0,100,3,
- 0,124,3,0,95,10,0,124,6,0,124,3,0,95,11,0,
- 124,7,0,124,3,0,95,12,0,124,3,0,83,41,4,78,
- 114,107,0,0,0,70,84,41,13,114,95,0,0,0,114,96,
- 0,0,0,114,1,0,0,0,114,91,0,0,0,114,98,0,
- 0,0,90,7,95,79,82,73,71,73,78,218,10,95,95,99,
- 97,99,104,101,100,95,95,218,4,108,105,115,116,218,8,95,
- 95,112,97,116,104,95,95,114,106,0,0,0,114,111,0,0,
- 0,114,116,0,0,0,114,110,0,0,0,41,8,114,89,0,
- 0,0,114,99,0,0,0,114,107,0,0,0,114,88,0,0,
- 0,114,15,0,0,0,90,8,108,111,99,97,116,105,111,110,
- 114,116,0,0,0,114,110,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,218,17,95,115,112,101,99,
- 95,102,114,111,109,95,109,111,100,117,108,101,209,1,0,0,
- 115,72,0,0,0,0,2,3,1,13,1,13,1,5,2,12,
- 1,4,2,9,1,12,1,3,1,13,1,13,2,5,1,3,
- 1,13,1,13,1,11,1,12,1,12,1,3,1,13,1,13,
- 1,14,2,6,1,3,1,13,1,13,1,11,1,3,1,19,
- 1,13,1,11,2,21,1,27,1,9,1,9,1,114,132,0,
- 0,0,218,8,111,118,101,114,114,105,100,101,70,99,2,0,
- 0,0,1,0,0,0,5,0,0,0,59,0,0,0,67,0,
- 0,0,115,54,2,0,0,124,2,0,115,30,0,116,0,0,
- 124,1,0,100,1,0,100,0,0,131,3,0,100,0,0,107,
- 8,0,114,67,0,121,16,0,124,0,0,106,1,0,124,1,
- 0,95,2,0,87,110,18,0,4,116,3,0,107,10,0,114,
- 66,0,1,1,1,89,110,1,0,88,124,2,0,115,97,0,
- 116,0,0,124,1,0,100,2,0,100,0,0,131,3,0,100,
- 0,0,107,8,0,114,221,0,124,0,0,106,4,0,125,3,
- 0,124,3,0,100,0,0,107,8,0,114,187,0,124,0,0,
- 106,5,0,100,0,0,107,9,0,114,187,0,116,6,0,100,
- 0,0,107,8,0,114,151,0,116,7,0,130,1,0,116,6,
- 0,106,8,0,125,4,0,124,4,0,106,9,0,124,4,0,
- 131,1,0,125,3,0,124,0,0,106,5,0,124,3,0,95,
- 10,0,121,13,0,124,3,0,124,1,0,95,11,0,87,110,
- 18,0,4,116,3,0,107,10,0,114,220,0,1,1,1,89,
- 110,1,0,88,124,2,0,115,251,0,116,0,0,124,1,0,
- 100,3,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 32,1,121,16,0,124,0,0,106,12,0,124,1,0,95,13,
- 0,87,110,18,0,4,116,3,0,107,10,0,114,31,1,1,
- 1,1,89,110,1,0,88,121,13,0,124,0,0,124,1,0,
- 95,14,0,87,110,18,0,4,116,3,0,107,10,0,114,65,
- 1,1,1,1,89,110,1,0,88,124,2,0,115,96,1,116,
- 0,0,124,1,0,100,4,0,100,0,0,131,3,0,100,0,
- 0,107,8,0,114,148,1,124,0,0,106,5,0,100,0,0,
- 107,9,0,114,148,1,121,16,0,124,0,0,106,5,0,124,
- 1,0,95,15,0,87,110,18,0,4,116,3,0,107,10,0,
- 114,147,1,1,1,1,89,110,1,0,88,124,0,0,106,16,
- 0,114,50,2,124,2,0,115,187,1,116,0,0,124,1,0,
- 100,5,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 224,1,121,16,0,124,0,0,106,17,0,124,1,0,95,18,
- 0,87,110,18,0,4,116,3,0,107,10,0,114,223,1,1,
- 1,1,89,110,1,0,88,124,2,0,115,254,1,116,0,0,
- 124,1,0,100,6,0,100,0,0,131,3,0,100,0,0,107,
- 8,0,114,50,2,124,0,0,106,19,0,100,0,0,107,9,
- 0,114,50,2,121,16,0,124,0,0,106,19,0,124,1,0,
- 95,20,0,87,110,18,0,4,116,3,0,107,10,0,114,49,
- 2,1,1,1,89,110,1,0,88,124,1,0,83,41,7,78,
- 114,1,0,0,0,114,91,0,0,0,218,11,95,95,112,97,
- 99,107,97,103,101,95,95,114,131,0,0,0,114,98,0,0,
- 0,114,129,0,0,0,41,21,114,6,0,0,0,114,15,0,
- 0,0,114,1,0,0,0,114,96,0,0,0,114,99,0,0,
- 0,114,110,0,0,0,114,119,0,0,0,114,120,0,0,0,
- 218,16,95,78,97,109,101,115,112,97,99,101,76,111,97,100,
- 101,114,218,7,95,95,110,101,119,95,95,90,5,95,112,97,
- 116,104,114,91,0,0,0,114,123,0,0,0,114,134,0,0,
- 0,114,95,0,0,0,114,131,0,0,0,114,117,0,0,0,
- 114,107,0,0,0,114,98,0,0,0,114,116,0,0,0,114,
- 129,0,0,0,41,5,114,88,0,0,0,114,89,0,0,0,
- 114,133,0,0,0,114,99,0,0,0,114,135,0,0,0,114,
- 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,18,
- 95,105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,
- 114,115,254,1,0,0,115,92,0,0,0,0,4,30,1,3,
- 1,16,1,13,1,5,2,30,1,9,1,12,2,15,1,12,
- 1,6,1,9,2,15,1,12,1,3,1,13,1,13,1,5,
- 2,30,1,3,1,16,1,13,1,5,2,3,1,13,1,13,
- 1,5,2,30,1,15,1,3,1,16,1,13,1,5,2,9,
- 1,30,1,3,1,16,1,13,1,5,2,30,1,15,1,3,
- 1,16,1,13,1,5,1,114,137,0,0,0,99,1,0,0,
- 0,0,0,0,0,2,0,0,0,5,0,0,0,67,0,0,
- 0,115,129,0,0,0,100,1,0,125,1,0,116,0,0,124,
- 0,0,106,1,0,100,2,0,131,2,0,114,45,0,124,0,
- 0,106,1,0,106,2,0,124,0,0,131,1,0,125,1,0,
- 110,40,0,116,0,0,124,0,0,106,1,0,100,3,0,131,
- 2,0,114,85,0,116,3,0,106,4,0,100,4,0,116,5,
- 0,100,5,0,100,6,0,131,2,1,1,124,1,0,100,1,
- 0,107,8,0,114,112,0,116,6,0,124,0,0,106,7,0,
- 131,1,0,125,1,0,116,8,0,124,0,0,124,1,0,131,
- 2,0,1,124,1,0,83,41,7,122,43,67,114,101,97,116,
- 101,32,97,32,109,111,100,117,108,101,32,98,97,115,101,100,
- 32,111,110,32,116,104,101,32,112,114,111,118,105,100,101,100,
- 32,115,112,101,99,46,78,218,13,99,114,101,97,116,101,95,
- 109,111,100,117,108,101,218,11,101,120,101,99,95,109,111,100,
- 117,108,101,122,87,115,116,97,114,116,105,110,103,32,105,110,
- 32,80,121,116,104,111,110,32,51,46,54,44,32,108,111,97,
- 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,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,
- 18,68,101,112,114,101,99,97,116,105,111,110,87,97,114,110,
- 105,110,103,114,16,0,0,0,114,15,0,0,0,114,137,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,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,
- 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,
- 124,0,0,106,0,0,125,1,0,124,0,0,106,1,0,100,
- 1,0,107,8,0,114,95,0,124,0,0,106,2,0,100,1,
- 0,107,8,0,114,73,0,100,3,0,106,3,0,124,1,0,
- 131,1,0,83,100,4,0,106,3,0,124,1,0,124,0,0,
- 106,2,0,131,2,0,83,110,50,0,124,0,0,106,4,0,
- 114,123,0,100,5,0,106,3,0,124,1,0,124,0,0,106,
- 1,0,131,2,0,83,100,6,0,106,3,0,124,0,0,106,
- 0,0,124,0,0,106,1,0,131,2,0,83,100,1,0,83,
- 41,7,122,38,82,101,116,117,114,110,32,116,104,101,32,114,
- 101,112,114,32,116,111,32,117,115,101,32,102,111,114,32,116,
- 104,101,32,109,111,100,117,108,101,46,78,114,93,0,0,0,
- 122,13,60,109,111,100,117,108,101,32,123,33,114,125,62,122,
- 20,60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,
- 33,114,125,41,62,122,23,60,109,111,100,117,108,101,32,123,
- 33,114,125,32,102,114,111,109,32,123,33,114,125,62,122,18,
- 60,109,111,100,117,108,101,32,123,33,114,125,32,40,123,125,
- 41,62,41,5,114,15,0,0,0,114,107,0,0,0,114,99,
- 0,0,0,114,50,0,0,0,114,117,0,0,0,41,2,114,
- 88,0,0,0,114,15,0,0,0,114,10,0,0,0,114,10,
- 0,0,0,114,11,0,0,0,114,97,0,0,0,76,2,0,
- 0,115,16,0,0,0,0,3,30,1,15,1,15,1,13,2,
- 22,2,9,1,19,2,114,97,0,0,0,99,2,0,0,0,
- 0,0,0,0,4,0,0,0,12,0,0,0,67,0,0,0,
- 115,253,0,0,0,124,0,0,106,0,0,125,2,0,116,1,
- 0,106,2,0,131,0,0,1,116,3,0,124,2,0,131,1,
- 0,143,208,0,1,116,4,0,106,5,0,106,6,0,124,2,
- 0,131,1,0,124,1,0,107,9,0,114,89,0,100,1,0,
- 106,7,0,124,2,0,131,1,0,125,3,0,116,8,0,124,
- 3,0,100,2,0,124,2,0,131,1,1,130,1,0,124,0,
- 0,106,9,0,100,3,0,107,8,0,114,163,0,124,0,0,
- 106,10,0,100,3,0,107,8,0,114,140,0,116,8,0,100,
- 4,0,100,2,0,124,0,0,106,0,0,131,1,1,130,1,
- 0,116,11,0,124,0,0,124,1,0,100,5,0,100,6,0,
- 131,2,1,1,124,1,0,83,116,11,0,124,0,0,124,1,
- 0,100,5,0,100,6,0,131,2,1,1,116,12,0,124,0,
- 0,106,9,0,100,7,0,131,2,0,115,219,0,124,0,0,
- 106,9,0,106,13,0,124,2,0,131,1,0,1,110,16,0,
- 124,0,0,106,9,0,106,14,0,124,1,0,131,1,0,1,
- 87,100,3,0,81,82,88,116,4,0,106,5,0,124,2,0,
- 25,83,41,8,122,51,69,120,101,99,117,116,101,32,116,104,
- 101,32,115,112,101,99,32,105,110,32,97,110,32,101,120,105,
- 115,116,105,110,103,32,109,111,100,117,108,101,39,115,32,110,
- 97,109,101,115,112,97,99,101,46,122,30,109,111,100,117,108,
- 101,32,123,33,114,125,32,110,111,116,32,105,110,32,115,121,
- 115,46,109,111,100,117,108,101,115,114,15,0,0,0,78,122,
- 14,109,105,115,115,105,110,103,32,108,111,97,100,101,114,114,
- 133,0,0,0,84,114,139,0,0,0,41,15,114,15,0,0,
- 0,114,57,0,0,0,218,12,97,99,113,117,105,114,101,95,
- 108,111,99,107,114,54,0,0,0,114,14,0,0,0,114,21,
- 0,0,0,114,42,0,0,0,114,50,0,0,0,114,77,0,
- 0,0,114,99,0,0,0,114,110,0,0,0,114,137,0,0,
- 0,114,4,0,0,0,218,11,108,111,97,100,95,109,111,100,
- 117,108,101,114,139,0,0,0,41,4,114,88,0,0,0,114,
- 89,0,0,0,114,15,0,0,0,218,3,109,115,103,114,10,
- 0,0,0,114,10,0,0,0,114,11,0,0,0,114,86,0,
- 0,0,93,2,0,0,115,32,0,0,0,0,2,9,1,10,
- 1,13,1,24,1,15,1,18,1,15,1,15,1,21,2,19,
- 1,4,1,19,1,18,4,19,2,23,1,114,86,0,0,0,
- 99,1,0,0,0,0,0,0,0,2,0,0,0,27,0,0,
- 0,67,0,0,0,115,3,1,0,0,124,0,0,106,0,0,
- 106,1,0,124,0,0,106,2,0,131,1,0,1,116,3,0,
- 106,4,0,124,0,0,106,2,0,25,125,1,0,116,5,0,
- 124,1,0,100,1,0,100,0,0,131,3,0,100,0,0,107,
- 8,0,114,96,0,121,16,0,124,0,0,106,0,0,124,1,
- 0,95,6,0,87,110,18,0,4,116,7,0,107,10,0,114,
- 95,0,1,1,1,89,110,1,0,88,116,5,0,124,1,0,
- 100,2,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 197,0,121,56,0,124,1,0,106,8,0,124,1,0,95,9,
- 0,116,10,0,124,1,0,100,3,0,131,2,0,115,175,0,
- 124,0,0,106,2,0,106,11,0,100,4,0,131,1,0,100,
- 5,0,25,124,1,0,95,9,0,87,110,18,0,4,116,7,
- 0,107,10,0,114,196,0,1,1,1,89,110,1,0,88,116,
- 5,0,124,1,0,100,6,0,100,0,0,131,3,0,100,0,
- 0,107,8,0,114,255,0,121,13,0,124,0,0,124,1,0,
- 95,12,0,87,110,18,0,4,116,7,0,107,10,0,114,254,
- 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,
- 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,
- 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,25,95,108,
- 111,97,100,95,98,97,99,107,119,97,114,100,95,99,111,109,
- 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,
- 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,
- 1,0,131,2,0,115,43,0,116,2,0,124,0,0,131,1,
- 0,83,116,3,0,124,0,0,131,1,0,125,1,0,116,4,
- 0,124,1,0,131,1,0,143,75,0,1,124,0,0,106,0,
- 0,100,0,0,107,8,0,114,122,0,124,0,0,106,5,0,
- 100,0,0,107,8,0,114,138,0,116,6,0,100,2,0,100,
- 3,0,124,0,0,106,7,0,131,1,1,130,1,0,110,16,
- 0,124,0,0,106,0,0,106,8,0,124,1,0,131,1,0,
- 1,87,100,0,0,81,82,88,116,9,0,106,10,0,124,0,
- 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,
- 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,115,164,0,0,0,116,0,124,1,100,1,131,2,114,
+ 80,116,1,100,2,107,8,114,22,116,2,130,1,116,1,106,
+ 3,125,4,124,3,100,2,107,8,114,50,124,4,124,0,100,
+ 3,124,1,144,1,131,1,83,0,124,3,114,58,103,0,110,
+ 2,100,2,125,5,124,4,124,0,100,3,124,1,100,4,124,
+ 5,144,2,131,1,83,0,124,3,100,2,107,8,114,144,116,
+ 0,124,1,100,5,131,2,114,140,121,14,124,1,106,4,124,
+ 0,131,1,125,3,87,0,113,144,4,0,116,5,107,10,114,
+ 136,1,0,1,0,1,0,100,2,125,3,89,0,113,144,88,
+ 0,110,4,100,6,125,3,116,6,124,0,124,1,100,7,124,
+ 2,100,5,124,3,144,2,131,2,83,0,41,8,122,53,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,118,97,114,
+ 105,111,117,115,32,108,111,97,100,101,114,32,109,101,116,104,
+ 111,100,115,46,90,12,103,101,116,95,102,105,108,101,110,97,
+ 109,101,78,114,99,0,0,0,114,110,0,0,0,114,109,0,
+ 0,0,70,114,107,0,0,0,41,7,114,4,0,0,0,114,
+ 119,0,0,0,114,120,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,114,109,0,0,0,114,77,0,0,0,114,106,0,0,
+ 0,41,6,114,15,0,0,0,114,99,0,0,0,114,107,0,
+ 0,0,114,109,0,0,0,114,128,0,0,0,90,6,115,101,
+ 97,114,99,104,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,114,85,0,0,0,180,1,0,0,115,34,0,0,
+ 0,0,2,10,1,8,1,4,1,6,2,8,1,14,1,12,
+ 1,10,1,8,2,8,1,10,1,2,1,14,1,14,1,12,
+ 3,4,2,114,85,0,0,0,99,3,0,0,0,0,0,0,
+ 0,8,0,0,0,53,0,0,0,67,0,0,0,115,58,1,
+ 0,0,121,10,124,0,106,0,125,3,87,0,110,20,4,0,
+ 116,1,107,10,114,30,1,0,1,0,1,0,89,0,110,14,
+ 88,0,124,3,100,0,107,9,114,44,124,3,83,0,124,0,
+ 106,2,125,4,124,1,100,0,107,8,114,90,121,10,124,0,
+ 106,3,125,1,87,0,110,20,4,0,116,1,107,10,114,88,
+ 1,0,1,0,1,0,89,0,110,2,88,0,121,10,124,0,
+ 106,4,125,5,87,0,110,24,4,0,116,1,107,10,114,124,
+ 1,0,1,0,1,0,100,0,125,5,89,0,110,2,88,0,
+ 124,2,100,0,107,8,114,184,124,5,100,0,107,8,114,180,
+ 121,10,124,1,106,5,125,2,87,0,113,184,4,0,116,1,
+ 107,10,114,176,1,0,1,0,1,0,100,0,125,2,89,0,
+ 113,184,88,0,110,4,124,5,125,2,121,10,124,0,106,6,
+ 125,6,87,0,110,24,4,0,116,1,107,10,114,218,1,0,
+ 1,0,1,0,100,0,125,6,89,0,110,2,88,0,121,14,
+ 116,7,124,0,106,8,131,1,125,7,87,0,110,26,4,0,
+ 116,1,107,10,144,1,114,4,1,0,1,0,1,0,100,0,
+ 125,7,89,0,110,2,88,0,116,9,124,4,124,1,100,1,
+ 124,2,144,1,131,2,125,3,124,5,100,0,107,8,144,1,
+ 114,36,100,2,110,2,100,3,124,3,95,10,124,6,124,3,
+ 95,11,124,7,124,3,95,12,124,3,83,0,41,4,78,114,
+ 107,0,0,0,70,84,41,13,114,95,0,0,0,114,96,0,
+ 0,0,114,1,0,0,0,114,91,0,0,0,114,98,0,0,
+ 0,90,7,95,79,82,73,71,73,78,218,10,95,95,99,97,
+ 99,104,101,100,95,95,218,4,108,105,115,116,218,8,95,95,
+ 112,97,116,104,95,95,114,106,0,0,0,114,111,0,0,0,
+ 114,116,0,0,0,114,110,0,0,0,41,8,114,89,0,0,
+ 0,114,99,0,0,0,114,107,0,0,0,114,88,0,0,0,
+ 114,15,0,0,0,90,8,108,111,99,97,116,105,111,110,114,
+ 116,0,0,0,114,110,0,0,0,114,10,0,0,0,114,10,
+ 0,0,0,114,11,0,0,0,218,17,95,115,112,101,99,95,
+ 102,114,111,109,95,109,111,100,117,108,101,209,1,0,0,115,
+ 72,0,0,0,0,2,2,1,10,1,14,1,6,2,8,1,
+ 4,2,6,1,8,1,2,1,10,1,14,2,6,1,2,1,
+ 10,1,14,1,10,1,8,1,8,1,2,1,10,1,14,1,
+ 12,2,4,1,2,1,10,1,14,1,10,1,2,1,14,1,
+ 16,1,10,2,16,1,20,1,6,1,6,1,114,132,0,0,
+ 0,70,41,1,218,8,111,118,101,114,114,105,100,101,99,2,
+ 0,0,0,1,0,0,0,5,0,0,0,59,0,0,0,67,
+ 0,0,0,115,212,1,0,0,124,2,115,20,116,0,124,1,
+ 100,1,100,0,131,3,100,0,107,8,114,54,121,12,124,0,
+ 106,1,124,1,95,2,87,0,110,20,4,0,116,3,107,10,
+ 114,52,1,0,1,0,1,0,89,0,110,2,88,0,124,2,
+ 115,74,116,0,124,1,100,2,100,0,131,3,100,0,107,8,
+ 114,166,124,0,106,4,125,3,124,3,100,0,107,8,114,134,
+ 124,0,106,5,100,0,107,9,114,134,116,6,100,0,107,8,
+ 114,110,116,7,130,1,116,6,106,8,125,4,124,4,106,9,
+ 124,4,131,1,125,3,124,0,106,5,124,3,95,10,121,10,
+ 124,3,124,1,95,11,87,0,110,20,4,0,116,3,107,10,
+ 114,164,1,0,1,0,1,0,89,0,110,2,88,0,124,2,
+ 115,186,116,0,124,1,100,3,100,0,131,3,100,0,107,8,
+ 114,220,121,12,124,0,106,12,124,1,95,13,87,0,110,20,
+ 4,0,116,3,107,10,114,218,1,0,1,0,1,0,89,0,
+ 110,2,88,0,121,10,124,0,124,1,95,14,87,0,110,20,
+ 4,0,116,3,107,10,114,250,1,0,1,0,1,0,89,0,
+ 110,2,88,0,124,2,144,1,115,20,116,0,124,1,100,4,
+ 100,0,131,3,100,0,107,8,144,1,114,68,124,0,106,5,
+ 100,0,107,9,144,1,114,68,121,12,124,0,106,5,124,1,
+ 95,15,87,0,110,22,4,0,116,3,107,10,144,1,114,66,
+ 1,0,1,0,1,0,89,0,110,2,88,0,124,0,106,16,
+ 144,1,114,208,124,2,144,1,115,100,116,0,124,1,100,5,
+ 100,0,131,3,100,0,107,8,144,1,114,136,121,12,124,0,
+ 106,17,124,1,95,18,87,0,110,22,4,0,116,3,107,10,
+ 144,1,114,134,1,0,1,0,1,0,89,0,110,2,88,0,
+ 124,2,144,1,115,160,116,0,124,1,100,6,100,0,131,3,
+ 100,0,107,8,144,1,114,208,124,0,106,19,100,0,107,9,
+ 144,1,114,208,121,12,124,0,106,19,124,1,95,20,87,0,
+ 110,22,4,0,116,3,107,10,144,1,114,206,1,0,1,0,
+ 1,0,89,0,110,2,88,0,124,1,83,0,41,7,78,114,
+ 1,0,0,0,114,91,0,0,0,218,11,95,95,112,97,99,
+ 107,97,103,101,95,95,114,131,0,0,0,114,98,0,0,0,
+ 114,129,0,0,0,41,21,114,6,0,0,0,114,15,0,0,
+ 0,114,1,0,0,0,114,96,0,0,0,114,99,0,0,0,
+ 114,110,0,0,0,114,119,0,0,0,114,120,0,0,0,218,
+ 16,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,
+ 114,218,7,95,95,110,101,119,95,95,90,5,95,112,97,116,
+ 104,114,91,0,0,0,114,123,0,0,0,114,134,0,0,0,
+ 114,95,0,0,0,114,131,0,0,0,114,117,0,0,0,114,
+ 107,0,0,0,114,98,0,0,0,114,116,0,0,0,114,129,
+ 0,0,0,41,5,114,88,0,0,0,114,89,0,0,0,114,
+ 133,0,0,0,114,99,0,0,0,114,135,0,0,0,114,10,
+ 0,0,0,114,10,0,0,0,114,11,0,0,0,218,18,95,
+ 105,110,105,116,95,109,111,100,117,108,101,95,97,116,116,114,
+ 115,254,1,0,0,115,92,0,0,0,0,4,20,1,2,1,
+ 12,1,14,1,6,2,20,1,6,1,8,2,10,1,8,1,
+ 4,1,6,2,10,1,8,1,2,1,10,1,14,1,6,2,
+ 20,1,2,1,12,1,14,1,6,2,2,1,10,1,14,1,
+ 6,2,24,1,12,1,2,1,12,1,16,1,6,2,8,1,
+ 24,1,2,1,12,1,16,1,6,2,24,1,12,1,2,1,
+ 12,1,16,1,6,1,114,137,0,0,0,99,1,0,0,0,
+ 0,0,0,0,2,0,0,0,5,0,0,0,67,0,0,0,
+ 115,92,0,0,0,100,1,125,1,116,0,124,0,106,1,100,
+ 2,131,2,114,30,124,0,106,1,106,2,124,0,131,1,125,
+ 1,110,30,116,0,124,0,106,1,100,3,131,2,114,60,116,
+ 3,106,4,100,4,116,5,100,5,100,6,144,1,131,2,1,
+ 0,124,1,100,1,107,8,114,78,116,6,124,0,106,7,131,
+ 1,125,1,116,8,124,0,124,1,131,2,1,0,124,1,83,
+ 0,41,7,122,43,67,114,101,97,116,101,32,97,32,109,111,
+ 100,117,108,101,32,98,97,115,101,100,32,111,110,32,116,104,
+ 101,32,112,114,111,118,105,100,101,100,32,115,112,101,99,46,
+ 78,218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,
+ 218,11,101,120,101,99,95,109,111,100,117,108,101,122,87,115,
+ 116,97,114,116,105,110,103,32,105,110,32,80,121,116,104,111,
+ 110,32,51,46,54,44,32,108,111,97,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,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,18,68,101,112,114,101,
+ 99,97,116,105,111,110,87,97,114,110,105,110,103,114,16,0,
+ 0,0,114,15,0,0,0,114,137,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,
- 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,
- 124,0,0,131,1,0,83,87,100,1,0,81,82,88,100,1,
- 0,83,41,2,122,191,82,101,116,117,114,110,32,97,32,110,
- 101,119,32,109,111,100,117,108,101,32,111,98,106,101,99,116,
- 44,32,108,111,97,100,101,100,32,98,121,32,116,104,101,32,
- 115,112,101,99,39,115,32,108,111,97,100,101,114,46,10,10,
- 32,32,32,32,84,104,101,32,109,111,100,117,108,101,32,105,
- 115,32,110,111,116,32,97,100,100,101,100,32,116,111,32,105,
- 116,115,32,112,97,114,101,110,116,46,10,10,32,32,32,32,
- 73,102,32,97,32,109,111,100,117,108,101,32,105,115,32,97,
- 108,114,101,97,100,121,32,105,110,32,115,121,115,46,109,111,
- 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,
- 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,
- 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
- 0,64,0,0,0,115,205,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,6,
- 0,100,4,0,100,4,0,100,5,0,100,6,0,132,2,0,
- 131,1,0,90,7,0,101,6,0,100,4,0,100,7,0,100,
- 8,0,132,1,0,131,1,0,90,8,0,101,6,0,100,9,
- 0,100,10,0,132,0,0,131,1,0,90,9,0,101,6,0,
- 100,11,0,100,12,0,132,0,0,131,1,0,90,10,0,101,
- 6,0,101,11,0,100,13,0,100,14,0,132,0,0,131,1,
- 0,131,1,0,90,12,0,101,6,0,101,11,0,100,15,0,
- 100,16,0,132,0,0,131,1,0,131,1,0,90,13,0,101,
- 6,0,101,11,0,100,17,0,100,18,0,132,0,0,131,1,
- 0,131,1,0,90,14,0,101,6,0,101,15,0,131,1,0,
- 90,16,0,100,4,0,83,41,19,218,15,66,117,105,108,116,
- 105,110,73,109,112,111,114,116,101,114,122,144,77,101,116,97,
- 32,112,97,116,104,32,105,109,112,111,114,116,32,102,111,114,
- 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,
- 115,46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,
- 111,100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,
- 108,97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,
- 101,116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,
- 116,104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,
- 105,110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,
- 99,108,97,115,115,46,10,10,32,32,32,32,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,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,24,60,
- 109,111,100,117,108,101,32,123,33,114,125,32,40,98,117,105,
- 108,116,45,105,110,41,62,41,2,114,50,0,0,0,114,1,
- 0,0,0,41,1,114,89,0,0,0,114,10,0,0,0,114,
- 10,0,0,0,114,11,0,0,0,114,92,0,0,0,195,2,
- 0,0,115,2,0,0,0,0,7,122,27,66,117,105,108,116,
- 105,110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,
- 101,95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,
- 4,0,0,0,5,0,0,0,67,0,0,0,115,58,0,0,
- 0,124,2,0,100,0,0,107,9,0,114,16,0,100,0,0,
- 83,116,0,0,106,1,0,124,1,0,131,1,0,114,50,0,
- 116,2,0,124,1,0,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,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,4,1,12,3,14,1,12,1,6,2,12,1,
+ 8,1,10,1,10,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,110,0,0,0,124,0,106,0,100,1,107,8,114,14,100,
+ 2,110,4,124,0,106,0,125,1,124,0,106,1,100,1,107,
+ 8,114,68,124,0,106,2,100,1,107,8,114,52,100,3,106,
+ 3,124,1,131,1,83,0,113,106,100,4,106,3,124,1,124,
+ 0,106,2,131,2,83,0,110,38,124,0,106,4,114,90,100,
+ 5,106,3,124,1,124,0,106,1,131,2,83,0,110,16,100,
+ 6,106,3,124,0,106,0,124,0,106,1,131,2,83,0,100,
+ 1,83,0,41,7,122,38,82,101,116,117,114,110,32,116,104,
+ 101,32,114,101,112,114,32,116,111,32,117,115,101,32,102,111,
+ 114,32,116,104,101,32,109,111,100,117,108,101,46,78,114,93,
+ 0,0,0,122,13,60,109,111,100,117,108,101,32,123,33,114,
+ 125,62,122,20,60,109,111,100,117,108,101,32,123,33,114,125,
+ 32,40,123,33,114,125,41,62,122,23,60,109,111,100,117,108,
+ 101,32,123,33,114,125,32,102,114,111,109,32,123,33,114,125,
+ 62,122,18,60,109,111,100,117,108,101,32,123,33,114,125,32,
+ 40,123,125,41,62,41,5,114,15,0,0,0,114,107,0,0,
+ 0,114,99,0,0,0,114,50,0,0,0,114,117,0,0,0,
+ 41,2,114,88,0,0,0,114,15,0,0,0,114,10,0,0,
+ 0,114,10,0,0,0,114,11,0,0,0,114,97,0,0,0,
+ 76,2,0,0,115,16,0,0,0,0,3,20,1,10,1,10,
+ 1,12,2,16,2,6,1,16,2,114,97,0,0,0,99,2,
+ 0,0,0,0,0,0,0,4,0,0,0,12,0,0,0,67,
+ 0,0,0,115,194,0,0,0,124,0,106,0,125,2,116,1,
+ 106,2,131,0,1,0,116,3,124,2,131,1,143,156,1,0,
+ 116,4,106,5,106,6,124,2,131,1,124,1,107,9,114,64,
+ 100,1,106,7,124,2,131,1,125,3,116,8,124,3,100,2,
+ 124,2,144,1,131,1,130,1,124,0,106,9,100,3,107,8,
+ 114,120,124,0,106,10,100,3,107,8,114,100,116,8,100,4,
+ 100,2,124,0,106,0,144,1,131,1,130,1,116,11,124,0,
+ 124,1,100,5,100,6,144,1,131,2,1,0,124,1,83,0,
+ 116,11,124,0,124,1,100,5,100,6,144,1,131,2,1,0,
+ 116,12,124,0,106,9,100,7,131,2,115,162,124,0,106,9,
+ 106,13,124,2,131,1,1,0,110,12,124,0,106,9,106,14,
+ 124,1,131,1,1,0,87,0,100,3,81,0,82,0,88,0,
+ 116,4,106,5,124,2,25,0,83,0,41,8,122,51,69,120,
+ 101,99,117,116,101,32,116,104,101,32,115,112,101,99,32,105,
+ 110,32,97,110,32,101,120,105,115,116,105,110,103,32,109,111,
+ 100,117,108,101,39,115,32,110,97,109,101,115,112,97,99,101,
+ 46,122,30,109,111,100,117,108,101,32,123,33,114,125,32,110,
+ 111,116,32,105,110,32,115,121,115,46,109,111,100,117,108,101,
+ 115,114,15,0,0,0,78,122,14,109,105,115,115,105,110,103,
+ 32,108,111,97,100,101,114,114,133,0,0,0,84,114,139,0,
+ 0,0,41,15,114,15,0,0,0,114,57,0,0,0,218,12,
+ 97,99,113,117,105,114,101,95,108,111,99,107,114,54,0,0,
+ 0,114,14,0,0,0,114,21,0,0,0,114,42,0,0,0,
+ 114,50,0,0,0,114,77,0,0,0,114,99,0,0,0,114,
+ 110,0,0,0,114,137,0,0,0,114,4,0,0,0,218,11,
+ 108,111,97,100,95,109,111,100,117,108,101,114,139,0,0,0,
+ 41,4,114,88,0,0,0,114,89,0,0,0,114,15,0,0,
+ 0,218,3,109,115,103,114,10,0,0,0,114,10,0,0,0,
+ 114,11,0,0,0,114,86,0,0,0,93,2,0,0,115,32,
+ 0,0,0,0,2,6,1,8,1,10,1,16,1,10,1,14,
+ 1,10,1,10,1,16,2,16,1,4,1,16,1,12,4,14,
+ 2,22,1,114,86,0,0,0,99,1,0,0,0,0,0,0,
+ 0,2,0,0,0,27,0,0,0,67,0,0,0,115,206,0,
+ 0,0,124,0,106,0,106,1,124,0,106,2,131,1,1,0,
+ 116,3,106,4,124,0,106,2,25,0,125,1,116,5,124,1,
+ 100,1,100,0,131,3,100,0,107,8,114,76,121,12,124,0,
+ 106,0,124,1,95,6,87,0,110,20,4,0,116,7,107,10,
+ 114,74,1,0,1,0,1,0,89,0,110,2,88,0,116,5,
+ 124,1,100,2,100,0,131,3,100,0,107,8,114,154,121,40,
+ 124,1,106,8,124,1,95,9,116,10,124,1,100,3,131,2,
+ 115,130,124,0,106,2,106,11,100,4,131,1,100,5,25,0,
+ 124,1,95,9,87,0,110,20,4,0,116,7,107,10,114,152,
+ 1,0,1,0,1,0,89,0,110,2,88,0,116,5,124,1,
+ 100,6,100,0,131,3,100,0,107,8,114,202,121,10,124,0,
+ 124,1,95,12,87,0,110,20,4,0,116,7,107,10,114,200,
+ 1,0,1,0,1,0,89,0,110,2,88,0,124,1,83,0,
+ 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,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,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,
+ 25,95,108,111,97,100,95,98,97,99,107,119,97,114,100,95,
+ 99,111,109,112,97,116,105,98,108,101,118,2,0,0,115,40,
+ 0,0,0,0,4,14,2,12,1,16,1,2,1,12,1,14,
+ 1,6,1,16,1,2,4,8,1,10,1,22,1,14,1,6,
+ 1,16,1,2,1,10,1,14,1,6,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,120,0,0,0,124,0,106,0,100,0,
+ 107,9,114,30,116,1,124,0,106,0,100,1,131,2,115,30,
+ 116,2,124,0,131,1,83,0,116,3,124,0,131,1,125,1,
+ 116,4,124,1,131,1,143,56,1,0,124,0,106,0,100,0,
+ 107,8,114,86,124,0,106,5,100,0,107,8,114,98,116,6,
+ 100,2,100,3,124,0,106,7,144,1,131,1,130,1,110,12,
+ 124,0,106,0,106,8,124,1,131,1,1,0,87,0,100,0,
+ 81,0,82,0,88,0,116,9,106,10,124,0,106,7,25,0,
+ 83,0,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,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,10,2,
+ 12,1,8,2,8,1,10,1,10,1,10,1,18,3,22,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,38,0,0,0,116,
+ 0,106,1,131,0,1,0,116,2,124,0,106,3,131,1,143,
+ 10,1,0,116,4,124,0,131,1,83,0,81,0,82,0,88,
+ 0,100,1,83,0,41,2,122,191,82,101,116,117,114,110,32,
+ 97,32,110,101,119,32,109,111,100,117,108,101,32,111,98,106,
+ 101,99,116,44,32,108,111,97,100,101,100,32,98,121,32,116,
+ 104,101,32,115,112,101,99,39,115,32,108,111,97,100,101,114,
+ 46,10,10,32,32,32,32,84,104,101,32,109,111,100,117,108,
+ 101,32,105,115,32,110,111,116,32,97,100,100,101,100,32,116,
+ 111,32,105,116,115,32,112,97,114,101,110,116,46,10,10,32,
+ 32,32,32,73,102,32,97,32,109,111,100,117,108,101,32,105,
+ 115,32,97,108,114,101,97,100,121,32,105,110,32,115,121,115,
+ 46,109,111,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,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,8,1,12,1,114,87,
+ 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,136,0,0,0,101,0,90,
+ 1,100,0,90,2,100,1,90,3,101,4,100,2,100,3,132,
+ 0,131,1,90,5,101,6,100,19,100,5,100,6,132,1,131,
+ 1,90,7,101,6,100,20,100,7,100,8,132,1,131,1,90,
+ 8,101,6,100,9,100,10,132,0,131,1,90,9,101,6,100,
+ 11,100,12,132,0,131,1,90,10,101,6,101,11,100,13,100,
+ 14,132,0,131,1,131,1,90,12,101,6,101,11,100,15,100,
+ 16,132,0,131,1,131,1,90,13,101,6,101,11,100,17,100,
+ 18,132,0,131,1,131,1,90,14,101,6,101,15,131,1,90,
+ 16,100,4,83,0,41,21,218,15,66,117,105,108,116,105,110,
+ 73,109,112,111,114,116,101,114,122,144,77,101,116,97,32,112,
+ 97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,98,
+ 117,105,108,116,45,105,110,32,109,111,100,117,108,101,115,46,
+ 10,10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,
+ 115,32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,
+ 115,115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,
+ 104,111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,
+ 101,32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,
+ 115,116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,
+ 97,115,115,46,10,10,32,32,32,32,99,1,0,0,0,0,
+ 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,
+ 12,0,0,0,100,1,106,0,124,0,106,1,131,1,83,0,
+ 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,24,60,109,111,100,117,108,101,
+ 32,123,33,114,125,32,40,98,117,105,108,116,45,105,110,41,
+ 62,41,2,114,50,0,0,0,114,1,0,0,0,41,1,114,
+ 89,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,
+ 0,0,0,114,92,0,0,0,195,2,0,0,115,2,0,0,
+ 0,0,7,122,27,66,117,105,108,116,105,110,73,109,112,111,
+ 114,116,101,114,46,109,111,100,117,108,101,95,114,101,112,114,
+ 78,99,4,0,0,0,0,0,0,0,4,0,0,0,5,0,
+ 0,0,67,0,0,0,115,48,0,0,0,124,2,100,0,107,
+ 9,114,12,100,0,83,0,116,0,106,1,124,1,131,1,114,
+ 40,116,2,124,1,124,0,100,1,100,2,144,1,131,2,83,
+ 0,110,4,100,0,83,0,100,0,83,0,41,3,78,114,107,
0,0,0,122,8,98,117,105,108,116,45,105,110,41,3,114,
57,0,0,0,90,10,105,115,95,98,117,105,108,116,105,110,
114,85,0,0,0,41,4,218,3,99,108,115,114,78,0,0,
0,218,4,112,97,116,104,218,6,116,97,114,103,101,116,114,
10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,9,
102,105,110,100,95,115,112,101,99,204,2,0,0,115,10,0,
- 0,0,0,2,12,1,4,1,15,1,19,2,122,25,66,117,
+ 0,0,0,2,8,1,4,1,10,1,18,2,122,25,66,117,
105,108,116,105,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,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,9,0,114,37,0,124,
- 3,0,106,1,0,83,100,1,0,83,41,2,122,175,70,105,
- 110,100,32,116,104,101,32,98,117,105,108,116,45,105,110,32,
- 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32,
- 32,73,102,32,39,112,97,116,104,39,32,105,115,32,101,118,
- 101,114,32,115,112,101,99,105,102,105,101,100,32,116,104,101,
- 110,32,116,104,101,32,115,101,97,114,99,104,32,105,115,32,
- 99,111,110,115,105,100,101,114,101,100,32,97,32,102,97,105,
- 108,117,114,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,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,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,
- 105,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,0,4,0,0,0,67,0,0,0,115,67,0,0,0,
- 124,1,0,106,0,0,116,1,0,106,2,0,107,7,0,114,
- 51,0,116,3,0,100,1,0,106,4,0,124,1,0,106,0,
- 0,131,1,0,100,2,0,124,1,0,106,0,0,131,1,1,
- 130,1,0,116,5,0,116,6,0,106,7,0,124,1,0,131,
- 2,0,83,41,3,122,24,67,114,101,97,116,101,32,97,32,
- 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,122,
- 29,123,33,114,125,32,105,115,32,110,111,116,32,97,32,98,
- 117,105,108,116,45,105,110,32,109,111,100,117,108,101,114,15,
- 0,0,0,41,8,114,15,0,0,0,114,14,0,0,0,114,
- 76,0,0,0,114,77,0,0,0,114,50,0,0,0,114,65,
- 0,0,0,114,57,0,0,0,90,14,99,114,101,97,116,101,
- 95,98,117,105,108,116,105,110,41,2,114,19,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,225,2,0,0,115,8,0,0,
- 0,0,3,18,1,21,1,12,1,122,29,66,117,105,108,116,
- 105,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,20,0,
- 0,0,116,0,0,116,1,0,106,2,0,124,1,0,131,2,
- 0,1,100,1,0,83,41,2,122,22,69,120,101,99,32,97,
+ 4,0,0,0,3,0,0,0,67,0,0,0,115,30,0,0,
+ 0,124,0,106,0,124,1,124,2,131,2,125,3,124,3,100,
+ 1,107,9,114,26,124,3,106,1,83,0,100,1,83,0,41,
+ 2,122,175,70,105,110,100,32,116,104,101,32,98,117,105,108,
+ 116,45,105,110,32,109,111,100,117,108,101,46,10,10,32,32,
+ 32,32,32,32,32,32,73,102,32,39,112,97,116,104,39,32,
+ 105,115,32,101,118,101,114,32,115,112,101,99,105,102,105,101,
+ 100,32,116,104,101,110,32,116,104,101,32,115,101,97,114,99,
+ 104,32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,
+ 97,32,102,97,105,108,117,114,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,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,12,1,122,27,
+ 66,117,105,108,116,105,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,0,4,0,0,0,67,0,0,0,
+ 115,48,0,0,0,124,1,106,0,116,1,106,2,107,7,114,
+ 36,116,3,100,1,106,4,124,1,106,0,131,1,100,2,124,
+ 1,106,0,144,1,131,1,130,1,116,5,116,6,106,7,124,
+ 1,131,2,83,0,41,3,122,24,67,114,101,97,116,101,32,
+ 97,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,
+ 101,122,29,123,33,114,125,32,105,115,32,110,111,116,32,97,
32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,
- 78,41,3,114,65,0,0,0,114,57,0,0,0,90,12,101,
- 120,101,99,95,98,117,105,108,116,105,110,41,2,114,19,0,
- 0,0,114,89,0,0,0,114,10,0,0,0,114,10,0,0,
- 0,114,11,0,0,0,114,139,0,0,0,233,2,0,0,115,
- 2,0,0,0,0,3,122,27,66,117,105,108,116,105,110,73,
- 109,112,111,114,116,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,
- 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,
- 83,41,2,122,57,82,101,116,117,114,110,32,78,111,110,101,
- 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,
- 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,
- 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,0,0,0,67,
- 0,0,0,115,4,0,0,0,100,1,0,83,41,2,122,56,
- 82,101,116,117,114,110,32,78,111,110,101,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,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,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,
- 114,46,103,101,116,95,115,111,117,114,99,101,99,2,0,0,
+ 114,15,0,0,0,41,8,114,15,0,0,0,114,14,0,0,
+ 0,114,76,0,0,0,114,77,0,0,0,114,50,0,0,0,
+ 114,65,0,0,0,114,57,0,0,0,90,14,99,114,101,97,
+ 116,101,95,98,117,105,108,116,105,110,41,2,114,19,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,225,2,0,0,115,8,
+ 0,0,0,0,3,12,1,14,1,10,1,122,29,66,117,105,
+ 108,116,105,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,
+ 16,0,0,0,116,0,116,1,106,2,124,1,131,2,1,0,
+ 100,1,83,0,41,2,122,22,69,120,101,99,32,97,32,98,
+ 117,105,108,116,45,105,110,32,109,111,100,117,108,101,78,41,
+ 3,114,65,0,0,0,114,57,0,0,0,90,12,101,120,101,
+ 99,95,98,117,105,108,116,105,110,41,2,114,19,0,0,0,
+ 114,89,0,0,0,114,10,0,0,0,114,10,0,0,0,114,
+ 11,0,0,0,114,139,0,0,0,233,2,0,0,115,2,0,
+ 0,0,0,3,122,27,66,117,105,108,116,105,110,73,109,112,
+ 111,114,116,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,1,0,
+ 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,
+ 2,122,57,82,101,116,117,114,110,32,78,111,110,101,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,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,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,0,0,0,67,0,0,
- 0,115,4,0,0,0,100,1,0,83,41,2,122,52,82,101,
- 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,
- 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,
- 114,116,101,114,46,105,115,95,112,97,99,107,97,103,101,41,
- 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,
- 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,
- 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,
- 0,132,0,0,131,1,0,90,5,0,101,6,0,100,4,0,
- 100,4,0,100,5,0,100,6,0,132,2,0,131,1,0,90,
- 7,0,101,6,0,100,4,0,100,7,0,100,8,0,132,1,
- 0,131,1,0,90,8,0,101,6,0,100,9,0,100,10,0,
- 132,0,0,131,1,0,90,9,0,101,4,0,100,11,0,100,
- 12,0,132,0,0,131,1,0,90,10,0,101,6,0,100,13,
- 0,100,14,0,132,0,0,131,1,0,90,11,0,101,6,0,
- 101,12,0,100,15,0,100,16,0,132,0,0,131,1,0,131,
- 1,0,90,13,0,101,6,0,101,12,0,100,17,0,100,18,
- 0,132,0,0,131,1,0,131,1,0,90,14,0,101,6,0,
- 101,12,0,100,19,0,100,20,0,132,0,0,131,1,0,131,
- 1,0,90,15,0,100,4,0,83,41,21,218,14,70,114,111,
- 122,101,110,73,109,112,111,114,116,101,114,122,142,77,101,116,
- 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111,
- 114,32,102,114,111,122,101,110,32,109,111,100,117,108,101,115,
- 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111,
- 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108,
- 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101,
- 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116,
- 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105,
- 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99,
- 108,97,115,115,46,10,10,32,32,32,32,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,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,22,60,109,
- 111,100,117,108,101,32,123,33,114,125,32,40,102,114,111,122,
- 101,110,41,62,41,2,114,50,0,0,0,114,1,0,0,0,
- 41,1,218,1,109,114,10,0,0,0,114,10,0,0,0,114,
- 11,0,0,0,114,92,0,0,0,12,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,109,111,100,117,108,101,95,114,101,112,114,
- 78,99,4,0,0,0,0,0,0,0,4,0,0,0,5,0,
- 0,0,67,0,0,0,115,42,0,0,0,116,0,0,106,1,
- 0,124,1,0,131,1,0,114,34,0,116,2,0,124,1,0,
- 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,
- 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,
- 0,0,3,0,0,0,2,0,0,0,67,0,0,0,115,23,
- 0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,114,
- 19,0,124,0,0,83,100,1,0,83,41,2,122,93,70,105,
- 110,100,32,97,32,102,114,111,122,101,110,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,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,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,
- 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,10,0,0,0,41,2,114,151,0,0,0,114,88,0,
+ 0,115,4,0,0,0,100,1,83,0,41,2,122,56,82,101,
+ 116,117,114,110,32,78,111,110,101,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,115,111,117,114,99,101,
+ 32,99,111,100,101,46,78,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,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,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,
+ 4,0,0,0,100,1,83,0,41,2,122,52,82,101,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,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,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,
- 99,114,101,97,116,101,95,109,111,100,117,108,101,99,1,0,
- 0,0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,
- 0,0,115,92,0,0,0,124,0,0,106,0,0,106,1,0,
- 125,1,0,116,2,0,106,3,0,124,1,0,131,1,0,115,
- 54,0,116,4,0,100,1,0,106,5,0,124,1,0,131,1,
- 0,100,2,0,124,1,0,131,1,1,130,1,0,116,6,0,
- 116,2,0,106,7,0,124,1,0,131,2,0,125,2,0,116,
- 8,0,124,2,0,124,0,0,106,9,0,131,2,0,1,100,
- 0,0,83,41,3,78,122,27,123,33,114,125,32,105,115,32,
- 110,111,116,32,97,32,102,114,111,122,101,110,32,109,111,100,
- 117,108,101,114,15,0,0,0,41,10,114,95,0,0,0,114,
- 15,0,0,0,114,57,0,0,0,114,82,0,0,0,114,77,
- 0,0,0,114,50,0,0,0,114,65,0,0,0,218,17,103,
- 101,116,95,102,114,111,122,101,110,95,111,98,106,101,99,116,
- 218,4,101,120,101,99,114,7,0,0,0,41,3,114,89,0,
- 0,0,114,15,0,0,0,218,4,99,111,100,101,114,10,0,
- 0,0,114,10,0,0,0,114,11,0,0,0,114,139,0,0,
- 0,41,3,0,0,115,12,0,0,0,0,2,12,1,15,1,
- 18,1,9,1,18,1,122,26,70,114,111,122,101,110,73,109,
- 112,111,114,116,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,13,0,0,0,116,0,0,124,
- 0,0,124,1,0,131,2,0,83,41,1,122,95,76,111,97,
+ 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,114,116,
+ 101,114,46,105,115,95,112,97,99,107,97,103,101,41,2,78,
+ 78,41,1,78,41,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,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,8,7,
+ 4,2,12,9,2,1,12,8,2,1,12,11,12,8,12,5,
+ 2,1,14,5,2,1,14,5,2,1,14,5,114,151,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,140,0,0,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,101,4,100,2,100,3,132,0,131,
+ 1,90,5,101,6,100,21,100,5,100,6,132,1,131,1,90,
+ 7,101,6,100,22,100,7,100,8,132,1,131,1,90,8,101,
+ 6,100,9,100,10,132,0,131,1,90,9,101,4,100,11,100,
+ 12,132,0,131,1,90,10,101,6,100,13,100,14,132,0,131,
+ 1,90,11,101,6,101,12,100,15,100,16,132,0,131,1,131,
+ 1,90,13,101,6,101,12,100,17,100,18,132,0,131,1,131,
+ 1,90,14,101,6,101,12,100,19,100,20,132,0,131,1,131,
+ 1,90,15,100,4,83,0,41,23,218,14,70,114,111,122,101,
+ 110,73,109,112,111,114,116,101,114,122,142,77,101,116,97,32,
+ 112,97,116,104,32,105,109,112,111,114,116,32,102,111,114,32,
+ 102,114,111,122,101,110,32,109,111,100,117,108,101,115,46,10,
+ 10,32,32,32,32,65,108,108,32,109,101,116,104,111,100,115,
+ 32,97,114,101,32,101,105,116,104,101,114,32,99,108,97,115,
+ 115,32,111,114,32,115,116,97,116,105,99,32,109,101,116,104,
+ 111,100,115,32,116,111,32,97,118,111,105,100,32,116,104,101,
+ 32,110,101,101,100,32,116,111,10,32,32,32,32,105,110,115,
+ 116,97,110,116,105,97,116,101,32,116,104,101,32,99,108,97,
+ 115,115,46,10,10,32,32,32,32,99,1,0,0,0,0,0,
+ 0,0,1,0,0,0,2,0,0,0,67,0,0,0,115,12,
+ 0,0,0,100,1,106,0,124,0,106,1,131,1,83,0,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,22,60,109,111,100,117,108,101,32,
+ 123,33,114,125,32,40,102,114,111,122,101,110,41,62,41,2,
+ 114,50,0,0,0,114,1,0,0,0,41,1,218,1,109,114,
+ 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,92,
+ 0,0,0,12,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,109,
+ 111,100,117,108,101,95,114,101,112,114,78,99,4,0,0,0,
+ 0,0,0,0,4,0,0,0,5,0,0,0,67,0,0,0,
+ 115,36,0,0,0,116,0,106,1,124,1,131,1,114,28,116,
+ 2,124,1,124,0,100,1,100,2,144,1,131,2,83,0,110,
+ 4,100,0,83,0,100,0,83,0,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,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,10,
+ 1,18,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,0,0,3,0,0,0,2,0,0,0,67,0,
+ 0,0,115,18,0,0,0,116,0,106,1,124,1,131,1,114,
+ 14,124,0,83,0,100,1,83,0,41,2,122,93,70,105,110,
100,32,97,32,102,114,111,122,101,110,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,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,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,
- 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,
- 13,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,
- 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,
- 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,
- 0,0,0,67,0,0,0,115,4,0,0,0,100,1,0,83,
- 41,2,122,54,82,101,116,117,114,110,32,78,111,110,101,32,
- 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,
- 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,
- 0,0,0,2,0,0,0,67,0,0,0,115,13,0,0,0,
- 116,0,0,106,1,0,124,1,0,131,1,0,83,41,1,122,
- 46,82,101,116,117,114,110,32,84,114,117,101,32,105,102,32,
- 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,
- 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,
- 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,
- 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,
- 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,18,95,73,109,112,111,114,116,76,111,99,107,67,111,110,
- 116,101,120,116,122,36,67,111,110,116,101,120,116,32,109,97,
- 110,97,103,101,114,32,102,111,114,32,116,104,101,32,105,109,
- 112,111,114,116,32,108,111,99,107,46,99,1,0,0,0,0,
- 0,0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,
- 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,
+ 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,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,0,
+ 1,0,0,0,67,0,0,0,115,4,0,0,0,100,1,83,
+ 0,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,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,99,
+ 114,101,97,116,101,95,109,111,100,117,108,101,99,1,0,0,
+ 0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,
+ 0,115,66,0,0,0,124,0,106,0,106,1,125,1,116,2,
+ 106,3,124,1,131,1,115,38,116,4,100,1,106,5,124,1,
+ 131,1,100,2,124,1,144,1,131,1,130,1,116,6,116,2,
+ 106,7,124,1,131,2,125,2,116,8,124,2,124,0,106,9,
+ 131,2,1,0,100,0,83,0,41,3,78,122,27,123,33,114,
+ 125,32,105,115,32,110,111,116,32,97,32,102,114,111,122,101,
+ 110,32,109,111,100,117,108,101,114,15,0,0,0,41,10,114,
+ 95,0,0,0,114,15,0,0,0,114,57,0,0,0,114,82,
+ 0,0,0,114,77,0,0,0,114,50,0,0,0,114,65,0,
+ 0,0,218,17,103,101,116,95,102,114,111,122,101,110,95,111,
+ 98,106,101,99,116,218,4,101,120,101,99,114,7,0,0,0,
+ 41,3,114,89,0,0,0,114,15,0,0,0,218,4,99,111,
+ 100,101,114,10,0,0,0,114,10,0,0,0,114,11,0,0,
+ 0,114,139,0,0,0,41,3,0,0,115,12,0,0,0,0,
+ 2,8,1,10,1,12,1,8,1,12,1,122,26,70,114,111,
+ 122,101,110,73,109,112,111,114,116,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,10,0,0,
+ 0,116,0,124,0,124,1,131,2,83,0,41,1,122,95,76,
+ 111,97,100,32,97,32,102,114,111,122,101,110,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,41,1,
+ 114,90,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,0,0,0,2,0,0,0,2,0,0,0,67,0,0,
+ 0,115,10,0,0,0,116,0,106,1,124,1,131,1,83,0,
+ 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,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,0,
+ 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41,
+ 2,122,54,82,101,116,117,114,110,32,78,111,110,101,32,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,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,0,
+ 0,0,2,0,0,0,67,0,0,0,115,10,0,0,0,116,
+ 0,106,1,124,1,131,1,83,0,41,1,122,46,82,101,116,
+ 117,114,110,32,84,114,117,101,32,105,102,32,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,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,2,78,78,41,
+ 1,78,41,16,114,1,0,0,0,114,0,0,0,0,114,2,
+ 0,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,161,0,0,0,3,3,0,
+ 0,115,30,0,0,0,8,7,4,2,12,9,2,1,12,6,
+ 2,1,12,8,12,4,12,9,12,9,2,1,14,5,2,1,
+ 14,5,2,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,32,
+ 0,0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,
+ 2,100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,
+ 6,83,0,41,7,218,18,95,73,109,112,111,114,116,76,111,
+ 99,107,67,111,110,116,101,120,116,122,36,67,111,110,116,101,
+ 120,116,32,109,97,110,97,103,101,114,32,102,111,114,32,116,
+ 104,101,32,105,109,112,111,114,116,32,108,111,99,107,46,99,
+ 1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,
+ 67,0,0,0,115,12,0,0,0,116,0,106,1,131,0,1,
+ 0,100,1,83,0,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,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,110,116,101,120,116,46,95,95,101,110,116,101,114,
+ 95,95,99,4,0,0,0,0,0,0,0,4,0,0,0,1,
+ 0,0,0,67,0,0,0,115,12,0,0,0,116,0,106,1,
+ 131,0,1,0,100,1,83,0,41,2,122,60,82,101,108,101,
+ 97,115,101,32,116,104,101,32,105,109,112,111,114,116,32,108,
+ 111,99,107,32,114,101,103,97,114,100,108,101,115,115,32,111,
+ 102,32,97,110,121,32,114,97,105,115,101,100,32,101,120,99,
+ 101,112,116,105,111,110,115,46,78,41,2,114,57,0,0,0,
+ 114,58,0,0,0,41,4,114,19,0,0,0,90,8,101,120,
+ 99,95,116,121,112,101,90,9,101,120,99,95,118,97,108,117,
+ 101,90,13,101,120,99,95,116,114,97,99,101,98,97,99,107,
+ 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,
+ 30,0,0,0,88,3,0,0,115,2,0,0,0,0,2,122,
+ 27,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,
+ 101,120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,
+ 1,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,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,
- 110,116,101,120,116,46,95,95,101,110,116,101,114,95,95,99,
- 4,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,
- 67,0,0,0,115,14,0,0,0,116,0,0,106,1,0,131,
- 0,0,1,100,1,0,83,41,2,122,60,82,101,108,101,97,
- 115,101,32,116,104,101,32,105,109,112,111,114,116,32,108,111,
- 99,107,32,114,101,103,97,114,100,108,101,115,115,32,111,102,
- 32,97,110,121,32,114,97,105,115,101,100,32,101,120,99,101,
- 112,116,105,111,110,115,46,78,41,2,114,57,0,0,0,114,
- 58,0,0,0,41,4,114,19,0,0,0,90,8,101,120,99,
- 95,116,121,112,101,90,9,101,120,99,95,118,97,108,117,101,
- 90,13,101,120,99,95,116,114,97,99,101,98,97,99,107,114,
- 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,30,
- 0,0,0,88,3,0,0,115,2,0,0,0,0,2,122,27,
- 95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,
- 120,116,46,95,95,101,120,105,116,95,95,78,41,6,114,1,
- 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,166,0,0,0,80,3,0,0,115,6,0,0,0,8,
+ 2,4,2,8,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,
+ 64,0,0,0,124,1,106,0,100,1,124,2,100,2,24,0,
+ 131,2,125,3,116,1,124,3,131,1,124,2,107,0,114,36,
+ 116,2,100,3,131,1,130,1,124,3,100,4,25,0,125,4,
+ 124,0,114,60,100,5,106,3,124,4,124,0,131,2,83,0,
+ 124,4,83,0,41,6,122,50,82,101,115,111,108,118,101,32,
+ 97,32,114,101,108,97,116,105,118,101,32,109,111,100,117,108,
+ 101,32,110,97,109,101,32,116,111,32,97,110,32,97,98,115,
+ 111,108,117,116,101,32,111,110,101,46,114,121,0,0,0,114,
+ 45,0,0,0,122,50,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,
+ 98,101,121,111,110,100,32,116,111,112,45,108,101,118,101,108,
+ 32,112,97,99,107,97,103,101,114,33,0,0,0,122,5,123,
+ 125,46,123,125,41,4,218,6,114,115,112,108,105,116,218,3,
+ 108,101,110,218,10,86,97,108,117,101,69,114,114,111,114,114,
+ 50,0,0,0,41,5,114,15,0,0,0,218,7,112,97,99,
+ 107,97,103,101,218,5,108,101,118,101,108,90,4,98,105,116,
+ 115,90,4,98,97,115,101,114,10,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,
+ 16,1,12,1,8,1,8,1,114,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,34,0,0,0,124,0,106,0,124,1,124,2,131,
+ 2,125,3,124,3,100,0,107,8,114,24,100,0,83,0,116,
+ 1,124,1,124,3,131,2,83,0,41,1,78,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,
- 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,
- 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,
- 1,0,124,2,0,107,0,0,114,52,0,116,2,0,100,3,
- 0,131,1,0,130,1,0,124,3,0,100,4,0,25,125,4,
- 0,124,0,0,114,84,0,100,5,0,106,3,0,124,4,0,
- 124,0,0,131,2,0,83,124,4,0,83,41,6,122,50,82,
- 101,115,111,108,118,101,32,97,32,114,101,108,97,116,105,118,
- 101,32,109,111,100,117,108,101,32,110,97,109,101,32,116,111,
- 32,97,110,32,97,98,115,111,108,117,116,101,32,111,110,101,
- 46,114,121,0,0,0,114,45,0,0,0,122,50,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,98,101,121,111,110,100,32,116,111,
- 112,45,108,101,118,101,108,32,112,97,99,107,97,103,101,114,
- 33,0,0,0,122,5,123,125,46,123,125,41,4,218,6,114,
- 115,112,108,105,116,218,3,108,101,110,218,10,86,97,108,117,
- 101,69,114,114,111,114,114,50,0,0,0,41,5,114,15,0,
- 0,0,218,7,112,97,99,107,97,103,101,218,5,108,101,118,
- 101,108,90,4,98,105,116,115,90,4,98,97,115,101,114,10,
- 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,
- 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,
- 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,
+ 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,12,1,
+ 8,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,244,
+ 0,0,0,116,0,106,1,125,3,124,3,100,1,107,8,114,
+ 22,116,2,100,2,131,1,130,1,124,3,115,38,116,3,106,
+ 4,100,3,116,5,131,2,1,0,124,0,116,0,106,6,107,
+ 6,125,4,120,190,124,3,68,0,93,178,125,5,116,7,131,
+ 0,143,72,1,0,121,10,124,5,106,8,125,6,87,0,110,
+ 42,4,0,116,9,107,10,114,118,1,0,1,0,1,0,116,
+ 10,124,5,124,0,124,1,131,3,125,7,124,7,100,1,107,
+ 8,114,114,119,54,89,0,110,14,88,0,124,6,124,0,124,
+ 1,124,2,131,3,125,7,87,0,100,1,81,0,82,0,88,
+ 0,124,7,100,1,107,9,114,54,124,4,12,0,114,228,124,
+ 0,116,0,106,6,107,6,114,228,116,0,106,6,124,0,25,
+ 0,125,8,121,10,124,8,106,11,125,9,87,0,110,20,4,
+ 0,116,9,107,10,114,206,1,0,1,0,1,0,124,7,83,
+ 0,88,0,124,9,100,1,107,8,114,222,124,7,83,0,113,
+ 232,124,9,83,0,113,54,124,7,83,0,113,54,87,0,100,
+ 1,83,0,100,1,83,0,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,
+ 6,1,8,2,8,3,4,1,12,5,10,1,10,1,8,1,
+ 2,1,10,1,14,1,12,1,8,1,8,2,22,1,8,2,
+ 16,1,10,1,2,1,10,1,14,4,6,2,8,1,6,2,
+ 6,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,140,
+ 0,0,0,116,0,124,0,116,1,131,2,115,28,116,2,100,
+ 1,106,3,116,4,124,0,131,1,131,1,131,1,130,1,124,
+ 2,100,2,107,0,114,44,116,5,100,3,131,1,130,1,124,
+ 2,100,2,107,4,114,114,116,0,124,1,116,1,131,2,115,
+ 72,116,2,100,4,131,1,130,1,110,42,124,1,115,86,116,
+ 6,100,5,131,1,130,1,110,28,124,1,116,7,106,8,107,
+ 7,114,114,100,6,125,3,116,9,124,3,106,3,124,1,131,
+ 1,131,1,130,1,124,0,12,0,114,136,124,2,100,2,107,
+ 2,114,136,116,5,100,7,131,1,130,1,100,8,83,0,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,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,
+ 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,10,1,18,
+ 1,8,1,8,1,8,1,10,1,10,1,4,1,10,2,10,
+ 1,4,2,14,1,14,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,224,0,0,0,100,0,
+ 125,2,124,0,106,0,100,1,131,1,100,2,25,0,125,3,
+ 124,3,114,136,124,3,116,1,106,2,107,7,114,42,116,3,
+ 124,1,124,3,131,2,1,0,124,0,116,1,106,2,107,6,
+ 114,62,116,1,106,2,124,0,25,0,83,0,116,1,106,2,
+ 124,3,25,0,125,4,121,10,124,4,106,4,125,2,87,0,
+ 110,52,4,0,116,5,107,10,114,134,1,0,1,0,1,0,
+ 116,6,100,3,23,0,106,7,124,0,124,3,131,2,125,5,
+ 116,8,124,5,100,4,124,0,144,1,131,1,100,0,130,2,
+ 89,0,110,2,88,0,116,9,124,0,124,2,131,2,125,6,
+ 124,6,100,0,107,8,114,176,116,8,116,6,106,7,124,0,
+ 131,1,100,4,124,0,144,1,131,1,130,1,110,8,116,10,
+ 124,6,131,1,125,7,124,3,114,220,116,1,106,2,124,3,
+ 25,0,125,4,116,11,124,4,124,0,106,0,100,1,131,1,
+ 100,5,25,0,124,7,131,3,1,0,124,7,83,0,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,4,1,14,1,
+ 4,1,10,1,10,2,10,1,10,1,10,1,2,1,10,1,
+ 14,1,16,1,22,1,10,1,8,1,22,2,8,1,4,2,
+ 10,1,22,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,30,
+ 0,0,0,116,0,124,0,131,1,143,12,1,0,116,1,124,
+ 0,124,1,131,2,83,0,81,0,82,0,88,0,100,1,83,
+ 0,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,10,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,
+ 122,0,0,0,116,0,124,0,124,1,124,2,131,3,1,0,
+ 124,2,100,1,107,4,114,32,116,1,124,0,124,1,124,2,
+ 131,3,125,0,116,2,106,3,131,0,1,0,124,0,116,4,
+ 106,5,107,7,114,60,116,6,124,0,116,7,131,2,83,0,
+ 116,4,106,5,124,0,25,0,125,3,124,3,100,2,107,8,
+ 114,110,116,2,106,8,131,0,1,0,100,3,106,9,124,0,
+ 131,1,125,4,116,10,124,4,100,4,124,0,144,1,131,1,
+ 130,1,116,11,124,0,131,1,1,0,124,3,83,0,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,12,1,8,1,
+ 12,1,8,1,10,1,10,1,10,1,8,1,8,1,4,1,
+ 6,1,14,1,8,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,178,0,0,0,116,0,124,0,100,1,131,2,114,174,100,
+ 2,124,1,107,6,114,58,116,1,124,1,131,1,125,1,124,
+ 1,106,2,100,2,131,1,1,0,116,0,124,0,100,3,131,
+ 2,114,58,124,1,106,3,124,0,106,4,131,1,1,0,120,
+ 114,124,1,68,0,93,106,125,3,116,0,124,0,124,3,131,
+ 2,115,64,100,4,106,5,124,0,106,6,124,3,131,2,125,
+ 4,121,14,116,7,124,2,124,4,131,2,1,0,87,0,113,
+ 64,4,0,116,8,107,10,114,168,1,0,125,5,1,0,122,
+ 34,116,9,124,5,131,1,106,10,116,11,131,1,114,150,124,
+ 5,106,12,124,4,107,2,114,150,119,64,130,0,87,0,89,
+ 0,100,5,100,5,125,5,126,5,88,0,113,64,88,0,113,
+ 64,87,0,124,0,83,0,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,
- 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,215,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,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,
+ 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,10,1,8,1,
+ 8,1,10,1,10,1,12,1,10,1,10,1,14,1,2,1,
+ 14,1,16,4,14,1,10,1,2,1,24,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,160,0,0,0,124,0,106,0,100,
+ 1,131,1,125,1,124,0,106,0,100,2,131,1,125,2,124,
+ 1,100,3,107,9,114,92,124,2,100,3,107,9,114,86,124,
+ 1,124,2,106,1,107,3,114,86,116,2,106,3,100,4,106,
+ 4,100,5,124,1,155,2,100,6,124,2,106,1,155,2,100,
+ 7,103,5,131,1,116,5,100,8,100,9,144,1,131,2,1,
+ 0,124,1,83,0,110,64,124,2,100,3,107,9,114,108,124,
+ 2,106,1,83,0,110,48,116,2,106,3,100,10,116,5,100,
+ 8,100,9,144,1,131,2,1,0,124,0,100,11,25,0,125,
+ 1,100,12,124,0,107,7,114,156,124,1,106,6,100,13,131,
+ 1,100,14,25,0,125,1,124,1,83,0,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,10,1,
+ 10,1,8,1,18,1,28,2,12,1,6,1,8,1,8,2,
+ 6,2,12,1,8,1,8,1,14,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,170,0,0,0,124,4,100,1,107,2,114,
+ 18,116,0,124,0,131,1,125,5,110,36,124,1,100,2,107,
+ 9,114,30,124,1,110,2,105,0,125,6,116,1,124,6,131,
+ 1,125,7,116,0,124,0,124,7,124,4,131,3,125,5,124,
+ 3,115,154,124,4,100,1,107,2,114,86,116,0,124,0,106,
+ 2,100,3,131,1,100,1,25,0,131,1,83,0,113,166,124,
+ 0,115,96,124,5,83,0,113,166,116,3,124,0,131,1,116,
+ 3,124,0,106,2,100,3,131,1,100,1,25,0,131,1,24,
+ 0,125,8,116,4,106,5,124,5,106,6,100,2,116,3,124,
+ 5,106,6,131,1,124,8,24,0,133,2,25,0,25,0,83,
+ 0,110,12,116,7,124,5,124,3,116,0,131,3,83,0,100,
+ 2,83,0,41,4,97,215,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,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,8,1,10,
+ 2,16,1,8,1,12,1,4,3,8,1,20,1,4,1,6,
+ 4,26,3,32,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,
+ 38,0,0,0,116,0,106,1,124,0,131,1,125,1,124,1,
+ 100,0,107,8,114,30,116,2,100,1,124,0,23,0,131,1,
+ 130,1,116,3,124,1,131,1,83,0,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,
+ 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,54,4,0,
- 0,115,8,0,0,0,0,1,15,1,12,1,16,1,114,200,
+ 116,105,110,95,102,114,111,109,95,110,97,109,101,76,4,0,
+ 0,115,8,0,0,0,0,1,10,1,8,1,12,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,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,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,
+ 12,0,0,0,67,0,0,0,115,244,0,0,0,124,1,97,
+ 0,124,0,97,1,116,2,116,1,131,1,125,2,120,86,116,
+ 1,106,3,106,4,131,0,68,0,93,72,92,2,125,3,125,
+ 4,116,5,124,4,124,2,131,2,114,28,124,3,116,1,106,
+ 6,107,6,114,62,116,7,125,5,110,18,116,0,106,8,124,
+ 3,131,1,114,28,116,9,125,5,110,2,113,28,116,10,124,
+ 4,124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,
+ 0,113,28,87,0,116,1,106,3,116,12,25,0,125,7,120,
+ 54,100,5,68,0,93,46,125,8,124,8,116,1,106,3,107,
+ 7,114,144,116,13,124,8,131,1,125,9,110,10,116,1,106,
+ 3,124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,
+ 3,1,0,113,120,87,0,121,12,116,13,100,2,131,1,125,
+ 10,87,0,110,24,4,0,116,15,107,10,114,206,1,0,1,
+ 0,1,0,100,3,125,10,89,0,110,2,88,0,116,14,124,
+ 7,100,2,124,10,131,3,1,0,116,13,100,4,131,1,125,
+ 11,116,14,124,7,100,4,124,11,131,3,1,0,100,3,83,
+ 0,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,4,1,4,3,8,1,20,1,
+ 10,1,10,1,6,1,10,1,6,2,2,1,10,1,14,3,
+ 10,1,10,1,10,1,10,2,10,1,16,3,2,1,12,1,
+ 14,2,10,1,12,3,8,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,66,0,0,0,116,0,124,0,124,1,131,2,1,
+ 0,116,1,106,2,106,3,116,4,131,1,1,0,116,1,106,
+ 2,106,3,116,5,131,1,1,0,100,1,100,2,108,6,125,
+ 2,124,2,97,7,124,2,106,8,116,1,106,9,116,10,25,
+ 0,131,1,1,0,100,2,83,0,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,114,210,0,0,0,130,
+ 4,0,0,115,12,0,0,0,0,2,10,2,12,1,12,3,
+ 8,1,4,1,114,210,0,0,0,41,2,78,78,41,1,78,
+ 41,2,78,114,33,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,4,17,4,2,8,8,8,
+ 4,14,20,4,2,4,3,16,4,14,68,14,21,14,19,8,
+ 19,8,19,8,11,14,8,8,11,8,12,8,16,8,36,14,
+ 27,14,101,16,26,6,3,10,45,14,60,8,18,8,17,8,
+ 25,8,29,8,23,8,16,14,73,14,77,14,13,8,9,8,
+ 9,10,47,8,20,4,1,8,2,8,27,8,6,10,24,8,
+ 32,8,27,18,35,8,7,8,47,
};
diff --git a/Python/importlib_external.h b/Python/importlib_external.h
index a871f54..ba2f6bb 100644
--- a/Python/importlib_external.h
+++ b/Python/importlib_external.h
@@ -1,116 +1,99 @@
/* 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,
- 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,
- 6,0,100,14,0,100,15,0,132,0,0,90,7,0,100,16,
- 0,100,17,0,132,0,0,90,8,0,100,18,0,100,19,0,
- 132,0,0,90,9,0,100,20,0,100,21,0,132,0,0,90,
- 10,0,100,22,0,100,23,0,100,24,0,132,1,0,90,11,
- 0,101,12,0,101,11,0,106,13,0,131,1,0,90,14,0,
- 100,25,0,106,15,0,100,26,0,100,27,0,131,2,0,100,
- 28,0,23,90,16,0,101,17,0,106,18,0,101,16,0,100,
- 27,0,131,2,0,90,19,0,100,29,0,90,20,0,100,30,
- 0,90,21,0,100,31,0,103,1,0,90,22,0,100,32,0,
- 103,1,0,90,23,0,101,23,0,4,90,24,0,90,25,0,
- 100,33,0,100,34,0,100,33,0,100,35,0,100,36,0,132,
- 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,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,
+ 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,
+ 0,64,0,0,0,115,236,1,0,0,100,0,90,0,100,91,
+ 90,1,100,4,100,5,132,0,90,2,100,6,100,7,132,0,
+ 90,3,100,8,100,9,132,0,90,4,100,10,100,11,132,0,
+ 90,5,100,12,100,13,132,0,90,6,100,14,100,15,132,0,
+ 90,7,100,16,100,17,132,0,90,8,100,18,100,19,132,0,
+ 90,9,100,20,100,21,132,0,90,10,100,92,100,23,100,24,
+ 132,1,90,11,101,12,101,11,106,13,131,1,90,14,100,25,
+ 106,15,100,26,100,27,131,2,100,28,23,0,90,16,101,17,
+ 106,18,101,16,100,27,131,2,90,19,100,29,90,20,100,30,
+ 90,21,100,31,103,1,90,22,100,32,103,1,90,23,101,23,
+ 4,0,90,24,90,25,100,93,100,33,100,34,156,1,100,35,
+ 100,36,132,3,90,26,100,37,100,38,132,0,90,27,100,39,
+ 100,40,132,0,90,28,100,41,100,42,132,0,90,29,100,43,
+ 100,44,132,0,90,30,100,45,100,46,132,0,90,31,100,47,
+ 100,48,132,0,90,32,100,94,100,49,100,50,132,1,90,33,
+ 100,95,100,51,100,52,132,1,90,34,100,96,100,54,100,55,
+ 132,1,90,35,100,56,100,57,132,0,90,36,101,37,131,0,
+ 90,38,100,97,100,33,101,38,100,58,156,2,100,59,100,60,
+ 132,3,90,39,71,0,100,61,100,62,132,0,100,62,131,2,
+ 90,40,71,0,100,63,100,64,132,0,100,64,131,2,90,41,
+ 71,0,100,65,100,66,132,0,100,66,101,41,131,3,90,42,
+ 71,0,100,67,100,68,132,0,100,68,131,2,90,43,71,0,
+ 100,69,100,70,132,0,100,70,101,43,101,42,131,4,90,44,
+ 71,0,100,71,100,72,132,0,100,72,101,43,101,41,131,4,
+ 90,45,103,0,90,46,71,0,100,73,100,74,132,0,100,74,
+ 101,43,101,41,131,4,90,47,71,0,100,75,100,76,132,0,
+ 100,76,131,2,90,48,71,0,100,77,100,78,132,0,100,78,
+ 131,2,90,49,71,0,100,79,100,80,132,0,100,80,131,2,
+ 90,50,71,0,100,81,100,82,132,0,100,82,131,2,90,51,
+ 100,98,100,83,100,84,132,1,90,52,100,85,100,86,132,0,
+ 90,53,100,87,100,88,132,0,90,54,100,89,100,90,132,0,
+ 90,55,100,33,83,0,41,99,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,34,0,0,0,116,0,106,1,106,2,
+ 116,3,131,1,114,22,100,1,100,2,132,0,125,0,110,8,
+ 100,3,100,2,132,0,125,0,124,0,83,0,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,10,0,0,0,100,1,116,0,106,1,107,
+ 6,83,0,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,83,0,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,12,1,
+ 10,4,8,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,20,
+ 0,0,0,116,0,124,0,131,1,100,1,64,0,106,1,100,
+ 2,100,3,131,2,83,0,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,
@@ -120,2477 +103,2324 @@ const unsigned char _Py_M__importlib_external[] = {
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,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,
+ 115,12,0,0,0,116,0,106,1,124,0,100,1,131,2,83,
+ 0,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,20,0,0,0,116,0,106,1,100,
+ 1,100,2,132,0,124,0,68,0,131,1,131,1,83,0,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,26,0,0,0,103,0,124,0,
+ 93,18,125,1,124,1,114,4,124,1,106,0,116,1,131,1,
+ 145,2,113,4,83,0,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,6,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,10,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,98,0,0,0,116,
+ 0,116,1,131,1,100,1,107,2,114,36,124,0,106,2,116,
+ 3,131,1,92,3,125,1,125,2,125,3,124,1,124,3,102,
+ 2,83,0,120,52,116,4,124,0,131,1,68,0,93,40,125,
+ 4,124,4,116,1,107,6,114,46,124,0,106,5,124,4,100,
+ 2,100,1,144,1,131,1,92,2,125,1,125,3,124,1,124,
+ 3,102,2,83,0,113,46,87,0,100,3,124,0,102,2,83,
+ 0,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,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,218,11,95,112,97,116,104,95,115,112,108,105,116,56,0,
+ 0,0,115,16,0,0,0,0,2,12,1,16,1,8,1,14,
+ 1,8,1,20,1,12,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,10,0,0,0,116,0,106,1,124,0,131,1,83,0,
+ 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,48,0,0,0,121,12,116,0,124,
+ 0,131,1,125,2,87,0,110,20,4,0,116,1,107,10,114,
+ 32,1,0,1,0,1,0,100,1,83,0,88,0,124,2,106,
+ 2,100,2,64,0,124,1,107,2,83,0,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,2,1,12,1,14,1,6,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,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,23,
- 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,
+ 0,0,0,67,0,0,0,115,10,0,0,0,116,0,124,0,
+ 100,1,131,2,83,0,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,22,
+ 0,0,0,124,0,115,12,116,0,106,1,131,0,125,0,116,
+ 2,124,0,100,1,131,2,83,0,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,4,1,8,1,114,46,0,0,0,233,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,162,0,0,0,100,1,106,0,124,0,
+ 116,1,124,0,131,1,131,2,125,3,116,2,106,3,124,3,
+ 116,2,106,4,116,2,106,5,66,0,116,2,106,6,66,0,
+ 124,2,100,2,64,0,131,3,125,4,121,50,116,7,106,8,
+ 124,4,100,3,131,2,143,16,125,5,124,5,106,9,124,1,
+ 131,1,1,0,87,0,100,4,81,0,82,0,88,0,116,2,
+ 106,10,124,3,124,0,131,2,1,0,87,0,110,58,4,0,
+ 116,11,107,10,114,156,1,0,1,0,1,0,121,14,116,2,
+ 106,12,124,3,131,1,1,0,87,0,110,20,4,0,116,11,
+ 107,10,114,148,1,0,1,0,1,0,89,0,110,2,88,0,
+ 130,0,89,0,110,2,88,0,100,4,83,0,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,
+ 16,1,6,1,26,1,2,3,14,1,20,1,16,1,14,1,
+ 2,1,14,1,14,1,6,1,114,56,0,0,0,105,44,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,41,1,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,234,0,0,0,124,1,100,1,
+ 107,9,114,52,116,0,106,1,100,2,116,2,131,2,1,0,
+ 124,2,100,1,107,9,114,40,100,3,125,3,116,3,124,3,
+ 131,1,130,1,124,1,114,48,100,4,110,2,100,5,125,2,
+ 116,4,124,0,131,1,92,2,125,4,125,5,124,5,106,5,
+ 100,6,131,1,92,3,125,6,125,7,125,8,116,6,106,7,
+ 106,8,125,9,124,9,100,1,107,8,114,104,116,9,100,7,
+ 131,1,130,1,100,4,106,10,124,6,114,116,124,6,110,2,
+ 124,8,124,7,124,9,103,3,131,1,125,10,124,2,100,1,
+ 107,8,114,162,116,6,106,11,106,12,100,8,107,2,114,154,
+ 100,4,125,2,110,8,116,6,106,11,106,12,125,2,116,13,
+ 124,2,131,1,125,2,124,2,100,4,107,3,114,214,124,2,
+ 106,14,131,0,115,200,116,15,100,9,106,16,124,2,131,1,
+ 131,1,130,1,100,10,106,16,124,10,116,17,124,2,131,3,
+ 125,10,116,18,124,4,116,19,124,10,116,20,100,8,25,0,
+ 23,0,131,3,83,0,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,48,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,58,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,249,0,0,0,115,46,
+ 0,0,0,0,18,8,1,6,1,6,1,8,1,4,1,8,
+ 1,12,1,12,1,16,1,8,1,8,1,8,1,24,1,8,
+ 1,12,1,6,2,8,1,8,1,8,1,8,1,14,1,14,
+ 1,114,80,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,220,0,0,0,
+ 116,0,106,1,106,2,100,1,107,8,114,20,116,3,100,2,
+ 131,1,130,1,116,4,124,0,131,1,92,2,125,1,125,2,
+ 116,4,124,1,131,1,92,2,125,1,125,3,124,3,116,5,
+ 107,3,114,68,116,6,100,3,106,7,116,5,124,0,131,2,
+ 131,1,130,1,124,2,106,8,100,4,131,1,125,4,124,4,
+ 100,11,107,7,114,102,116,6,100,7,106,7,124,2,131,1,
+ 131,1,130,1,110,86,124,4,100,6,107,2,114,188,124,2,
+ 106,9,100,4,100,5,131,2,100,12,25,0,125,5,124,5,
+ 106,10,116,11,131,1,115,150,116,6,100,8,106,7,116,11,
+ 131,1,131,1,130,1,124,5,116,12,116,11,131,1,100,1,
+ 133,2,25,0,125,6,124,6,106,13,131,0,115,188,116,6,
+ 100,9,106,7,124,5,131,1,131,1,130,1,124,2,106,14,
+ 100,4,131,1,100,10,25,0,125,7,116,15,124,1,124,7,
+ 116,16,100,10,25,0,23,0,131,2,83,0,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,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,
+ 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,
- 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,247,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,35,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,68,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,87,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,99,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,111,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,
- 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,127,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,
- 101,114,99,2,0,0,0,0,0,0,0,3,0,0,0,7,
- 0,0,0,83,0,0,0,115,92,0,0,0,120,66,0,100,
- 1,0,100,2,0,100,3,0,100,4,0,103,4,0,68,93,
- 46,0,125,2,0,116,0,0,124,1,0,124,2,0,131,2,
- 0,114,19,0,116,1,0,124,0,0,124,2,0,116,2,0,
- 124,1,0,124,2,0,131,2,0,131,3,0,1,113,19,0,
- 87,124,0,0,106,3,0,106,4,0,124,1,0,106,3,0,
- 131,1,0,1,100,0,0,83,41,5,78,218,10,95,95,109,
- 111,100,117,108,101,95,95,218,8,95,95,110,97,109,101,95,
- 95,218,12,95,95,113,117,97,108,110,97,109,101,95,95,218,
- 7,95,95,100,111,99,95,95,41,5,218,7,104,97,115,97,
- 116,116,114,218,7,115,101,116,97,116,116,114,218,7,103,101,
- 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,138,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,119,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,
- 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,
- 1,0,124,3,0,131,1,0,114,80,0,100,2,0,125,4,
- 0,116,2,0,106,3,0,124,4,0,106,4,0,124,3,0,
- 100,3,0,25,131,1,0,116,5,0,131,2,0,1,124,2,
- 0,83,41,4,122,155,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,32,98,121,32,100,101,108,101,103,97,116,105,110,
- 103,32,116,111,10,32,32,32,32,115,101,108,102,46,102,105,
- 110,100,95,108,111,97,100,101,114,40,41,46,10,10,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,32,105,110,32,102,
- 97,118,111,114,32,111,102,32,102,105,110,100,101,114,46,102,
- 105,110,100,95,115,112,101,99,40,41,46,10,10,32,32,32,
- 32,78,122,44,78,111,116,32,105,109,112,111,114,116,105,110,
- 103,32,100,105,114,101,99,116,111,114,121,32,123,125,58,32,
- 109,105,115,115,105,110,103,32,95,95,105,110,105,116,95,95,
- 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,
- 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,147,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,
- 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,
- 0,114,59,0,124,3,0,124,4,0,100,4,0,60,124,0,
- 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,
+ 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,
+ 59,0,0,0,114,57,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,60,0,0,0,62,2,0,0,0,114,57,0,0,
+ 0,114,81,0,0,0,233,254,255,255,255,41,17,114,7,0,
+ 0,0,114,65,0,0,0,114,66,0,0,0,114,67,0,0,
+ 0,114,38,0,0,0,114,74,0,0,0,114,72,0,0,0,
+ 114,48,0,0,0,218,5,99,111,117,110,116,114,34,0,0,
+ 0,114,9,0,0,0,114,73,0,0,0,114,31,0,0,0,
+ 114,71,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,77,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,58,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,37,1,0,0,115,44,0,
+ 0,0,0,9,12,1,8,1,12,1,12,1,8,1,6,1,
+ 10,1,10,1,8,1,6,1,10,1,8,1,16,1,10,1,
+ 6,1,8,1,16,1,8,1,6,1,8,1,14,1,114,86,
+ 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,128,0,0,0,116,0,124,
+ 0,131,1,100,1,107,2,114,16,100,2,83,0,124,0,106,
+ 1,100,3,131,1,92,3,125,1,125,2,125,3,124,1,12,
+ 0,115,58,124,3,106,2,131,0,100,7,100,8,133,2,25,
+ 0,100,6,107,3,114,62,124,0,83,0,121,12,116,3,124,
+ 0,131,1,125,4,87,0,110,36,4,0,116,4,116,5,102,
+ 2,107,10,114,110,1,0,1,0,1,0,124,0,100,2,100,
+ 9,133,2,25,0,125,4,89,0,110,2,88,0,116,6,124,
+ 4,131,1,114,124,124,4,83,0,124,0,83,0,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,60,0,
+ 0,0,78,114,59,0,0,0,114,81,0,0,0,114,29,0,
+ 0,0,90,2,112,121,233,253,255,255,255,233,255,255,255,255,
+ 114,88,0,0,0,41,7,114,31,0,0,0,114,32,0,0,
+ 0,218,5,108,111,119,101,114,114,86,0,0,0,114,67,0,
+ 0,0,114,72,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,79,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,70,
+ 1,0,0,115,20,0,0,0,0,7,12,1,4,1,16,1,
+ 26,1,4,1,2,1,12,1,18,1,18,1,114,92,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,74,0,0,0,124,0,106,0,116,
+ 1,116,2,131,1,131,1,114,46,121,8,116,3,124,0,131,
+ 1,83,0,4,0,116,4,107,10,114,42,1,0,1,0,1,
+ 0,89,0,113,70,88,0,110,24,124,0,106,0,116,1,116,
+ 5,131,1,131,1,114,66,124,0,83,0,110,4,100,0,83,
+ 0,100,0,83,0,41,1,78,41,6,218,8,101,110,100,115,
+ 119,105,116,104,218,5,116,117,112,108,101,114,85,0,0,0,
+ 114,80,0,0,0,114,67,0,0,0,114,75,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,89,1,0,0,115,16,0,0,0,
+ 0,1,14,1,2,1,8,1,14,1,8,1,14,1,6,2,
+ 114,96,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,52,0,0,0,121,
+ 14,116,0,124,0,131,1,106,1,125,1,87,0,110,24,4,
+ 0,116,2,107,10,114,38,1,0,1,0,1,0,100,1,125,
+ 1,89,0,110,2,88,0,124,1,100,2,79,0,125,1,124,
+ 1,83,0,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,101,1,0,0,
+ 115,12,0,0,0,0,2,2,1,14,1,14,1,10,3,8,
+ 1,114,98,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,68,0,0,0,
+ 100,6,135,0,102,1,100,2,100,3,132,9,125,1,121,10,
+ 116,0,106,1,125,2,87,0,110,28,4,0,116,2,107,10,
+ 114,52,1,0,1,0,1,0,100,4,100,5,132,0,125,2,
+ 89,0,110,2,88,0,124,2,124,1,136,0,131,2,1,0,
+ 124,1,83,0,41,7,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,64,0,0,0,124,
+ 1,100,0,107,8,114,16,124,0,106,0,125,1,110,34,124,
+ 0,106,0,124,1,107,3,114,50,116,1,100,1,124,0,106,
+ 0,124,1,102,2,22,0,100,2,124,1,144,1,131,1,130,
+ 1,136,0,124,0,124,1,124,2,124,3,142,2,83,0,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,99,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,99,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,
+ 121,1,0,0,115,12,0,0,0,0,1,8,1,8,1,10,
+ 1,4,1,20,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,101,114,99,
+ 2,0,0,0,0,0,0,0,3,0,0,0,7,0,0,0,
+ 83,0,0,0,115,60,0,0,0,120,40,100,5,68,0,93,
+ 32,125,2,116,0,124,1,124,2,131,2,114,6,116,1,124,
+ 0,124,2,116,2,124,1,124,2,131,2,131,3,1,0,113,
+ 6,87,0,124,0,106,3,106,4,124,1,106,3,131,1,1,
+ 0,100,0,83,0,41,6,78,218,10,95,95,109,111,100,117,
+ 108,101,95,95,218,8,95,95,110,97,109,101,95,95,218,12,
+ 95,95,113,117,97,108,110,97,109,101,95,95,218,7,95,95,
+ 100,111,99,95,95,41,4,122,10,95,95,109,111,100,117,108,
+ 101,95,95,122,8,95,95,110,97,109,101,95,95,122,12,95,
+ 95,113,117,97,108,110,97,109,101,95,95,122,7,95,95,100,
+ 111,99,95,95,41,5,218,7,104,97,115,97,116,116,114,218,
+ 7,115,101,116,97,116,116,114,218,7,103,101,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,
+ 53,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,132,1,0,0,115,8,
+ 0,0,0,0,1,10,1,10,1,22,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,1,78,41,3,218,10,95,98,
+ 111,111,116,115,116,114,97,112,114,114,0,0,0,218,9,78,
+ 97,109,101,69,114,114,111,114,41,3,114,103,0,0,0,114,
+ 104,0,0,0,114,114,0,0,0,114,4,0,0,0,41,1,
+ 114,103,0,0,0,114,5,0,0,0,218,11,95,99,104,101,
+ 99,107,95,110,97,109,101,113,1,0,0,115,14,0,0,0,
+ 0,8,14,7,2,1,10,1,14,2,14,5,10,1,114,117,
+ 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,60,0,0,0,124,0,106,
+ 0,124,1,131,1,92,2,125,2,125,3,124,2,100,1,107,
+ 8,114,56,116,1,124,3,131,1,114,56,100,2,125,4,116,
+ 2,106,3,124,4,106,4,124,3,100,3,25,0,131,1,116,
+ 5,131,2,1,0,124,2,83,0,41,4,122,155,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,32,98,121,32,100,101,
+ 108,101,103,97,116,105,110,103,32,116,111,10,32,32,32,32,
+ 115,101,108,102,46,102,105,110,100,95,108,111,97,100,101,114,
+ 40,41,46,10,10,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,32,105,110,32,102,97,118,111,114,32,111,102,32,102,
+ 105,110,100,101,114,46,102,105,110,100,95,115,112,101,99,40,
+ 41,46,10,10,32,32,32,32,78,122,44,78,111,116,32,105,
+ 109,112,111,114,116,105,110,103,32,100,105,114,101,99,116,111,
+ 114,121,32,123,125,58,32,109,105,115,115,105,110,103,32,95,
+ 95,105,110,105,116,95,95,114,60,0,0,0,41,6,218,11,
+ 102,105,110,100,95,108,111,97,100,101,114,114,31,0,0,0,
+ 114,61,0,0,0,114,62,0,0,0,114,48,0,0,0,218,
+ 13,73,109,112,111,114,116,87,97,114,110,105,110,103,41,5,
+ 114,101,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,141,1,0,0,115,10,0,0,
+ 0,0,10,14,1,16,1,4,1,22,1,114,124,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,128,1,0,0,105,0,125,4,124,2,
+ 100,1,107,9,114,22,124,2,124,4,100,2,60,0,110,4,
+ 100,3,125,2,124,3,100,1,107,9,114,42,124,3,124,4,
+ 100,4,60,0,124,0,100,1,100,5,133,2,25,0,125,5,
+ 124,0,100,5,100,6,133,2,25,0,125,6,124,0,100,6,
+ 100,7,133,2,25,0,125,7,124,5,116,0,107,3,114,122,
+ 100,8,106,1,124,2,124,5,131,2,125,8,116,2,106,3,
+ 100,9,124,8,131,2,1,0,116,4,124,8,124,4,141,1,
+ 130,1,110,86,116,5,124,6,131,1,100,5,107,3,114,166,
+ 100,10,106,1,124,2,131,1,125,8,116,2,106,3,100,9,
+ 124,8,131,2,1,0,116,6,124,8,131,1,130,1,110,42,
+ 116,5,124,7,131,1,100,5,107,3,114,208,100,11,106,1,
+ 124,2,131,1,125,8,116,2,106,3,100,9,124,8,131,2,
+ 1,0,116,6,124,8,131,1,130,1,124,1,100,1,107,9,
+ 144,1,114,116,121,16,116,7,124,1,100,12,25,0,131,1,
+ 125,9,87,0,110,20,4,0,116,8,107,10,114,254,1,0,
+ 1,0,1,0,89,0,110,48,88,0,116,9,124,6,131,1,
+ 124,9,107,3,144,1,114,46,100,13,106,1,124,2,131,1,
+ 125,8,116,2,106,3,100,9,124,8,131,2,1,0,116,4,
+ 124,8,124,4,141,1,130,1,121,16,124,1,100,14,25,0,
+ 100,15,64,0,125,10,87,0,110,22,4,0,116,8,107,10,
+ 144,1,114,84,1,0,1,0,1,0,89,0,110,32,88,0,
+ 116,9,124,7,131,1,124,10,107,3,144,1,114,116,116,4,
+ 100,13,106,1,124,2,131,1,124,4,141,1,130,1,124,0,
+ 100,7,100,1,133,2,25,0,83,0,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,99,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,48,0,0,0,114,115,0,
+ 0,0,218,16,95,118,101,114,98,111,115,101,95,109,101,115,
+ 115,97,103,101,114,100,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,54,
+ 0,0,0,218,12,115,111,117,114,99,101,95,115,116,97,116,
+ 115,114,99,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,76,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,158,1,0,0,115,76,0,0,0,0,11,4,1,8,
+ 1,10,3,4,1,8,1,8,1,12,1,12,1,12,1,8,
+ 1,12,1,12,1,12,1,12,1,10,1,12,1,10,1,12,
+ 1,10,1,12,1,8,1,10,1,2,1,16,1,14,1,6,
+ 2,14,1,10,1,12,1,10,1,2,1,16,1,16,1,6,
+ 2,14,1,10,1,6,1,114,136,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,86,0,0,0,116,0,106,1,124,0,131,1,125,4,
+ 116,2,124,4,116,3,131,2,114,58,116,4,106,5,100,1,
+ 124,2,131,2,1,0,124,3,100,2,107,9,114,52,116,6,
+ 106,7,124,4,124,3,131,2,1,0,124,4,83,0,110,24,
+ 116,8,100,3,106,9,124,2,131,1,100,4,124,1,100,5,
+ 124,2,144,2,131,1,130,1,100,2,83,0,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,164,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,219,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,
+ 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,99,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,115,0,0,0,114,130,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,100,0,0,0,114,48,0,0,0,41,5,114,
+ 54,0,0,0,114,99,0,0,0,114,90,0,0,0,114,91,
+ 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,213,1,0,0,115,
+ 16,0,0,0,0,2,10,1,10,1,12,1,8,1,12,1,
+ 6,2,12,1,114,142,0,0,0,114,60,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,56,0,0,0,116,0,116,1,131,1,125,3,
+ 124,3,106,2,116,3,124,1,131,1,131,1,1,0,124,3,
+ 106,2,116,3,124,2,131,1,131,1,1,0,124,3,106,2,
+ 116,4,106,5,124,0,131,1,131,1,1,0,124,3,83,0,
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,
+ 121,114,129,0,0,0,218,6,101,120,116,101,110,100,114,17,
+ 0,0,0,114,137,0,0,0,90,5,100,117,109,112,115,41,
+ 4,114,141,0,0,0,114,127,0,0,0,114,135,0,0,0,
+ 114,54,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,231,1,0,0,115,10,0,0,0,
- 0,3,12,1,19,1,19,1,22,1,114,150,0,0,0,99,
+ 121,116,101,99,111,100,101,225,1,0,0,115,10,0,0,0,
+ 0,3,8,1,14,1,14,1,16,1,114,145,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,241,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,2,2,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,
+ 67,0,0,0,115,62,0,0,0,100,1,100,2,108,0,125,
+ 1,116,1,106,2,124,0,131,1,106,3,125,2,124,1,106,
+ 4,124,2,131,1,125,3,116,1,106,5,100,2,100,3,131,
+ 2,125,4,124,4,106,6,124,0,106,6,124,3,100,1,25,
+ 0,131,1,131,1,83,0,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,60,0,0,0,78,84,41,7,218,8,116,
+ 111,107,101,110,105,122,101,114,50,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,146,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,235,1,0,0,115,10,0,0,
+ 0,0,5,8,1,12,1,10,1,12,1,114,150,0,0,0,
+ 41,2,114,121,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,8,1,0,0,124,1,100,
+ 1,107,8,114,58,100,2,125,1,116,0,124,2,100,3,131,
+ 2,114,58,121,14,124,2,106,1,124,0,131,1,125,1,87,
+ 0,110,20,4,0,116,2,107,10,114,56,1,0,1,0,1,
+ 0,89,0,110,2,88,0,116,3,106,4,124,0,124,2,100,
+ 4,124,1,144,1,131,2,125,4,100,5,124,4,95,5,124,
+ 2,100,1,107,8,114,146,120,54,116,6,131,0,68,0,93,
+ 40,92,2,125,5,125,6,124,1,106,7,116,8,124,6,131,
+ 1,131,1,114,98,124,5,124,0,124,1,131,2,125,2,124,
+ 2,124,4,95,9,80,0,113,98,87,0,100,1,83,0,124,
+ 3,116,10,107,8,114,212,116,0,124,2,100,6,131,2,114,
+ 218,121,14,124,2,106,11,124,0,131,1,125,7,87,0,110,
+ 20,4,0,116,2,107,10,114,198,1,0,1,0,1,0,89,
+ 0,113,218,88,0,124,7,114,218,103,0,124,4,95,12,110,
+ 6,124,3,124,4,95,12,124,4,106,12,103,0,107,2,144,
+ 1,114,4,124,1,144,1,114,4,116,13,124,1,131,1,100,
+ 7,25,0,125,8,124,4,106,12,106,14,124,8,131,1,1,
+ 0,124,4,83,0,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,60,0,0,0,41,15,114,
+ 109,0,0,0,114,152,0,0,0,114,100,0,0,0,114,115,
+ 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,93,0,0,0,
+ 114,94,0,0,0,114,121,0,0,0,218,9,95,80,79,80,
+ 85,76,65,84,69,114,154,0,0,0,114,151,0,0,0,114,
+ 38,0,0,0,218,6,97,112,112,101,110,100,41,9,114,99,
+ 0,0,0,90,8,108,111,99,97,116,105,111,110,114,121,0,
+ 0,0,114,151,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,154,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,252,1,0,0,115,
+ 60,0,0,0,0,12,8,4,4,1,10,2,2,1,14,1,
+ 14,1,6,8,18,1,6,3,8,1,16,1,14,1,10,1,
+ 6,1,6,2,4,3,8,2,10,1,2,1,14,1,14,1,
+ 6,2,4,1,8,2,6,1,12,1,6,1,12,1,12,2,
+ 114,162,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,80,0,0,0,101,
+ 0,90,1,100,0,90,2,100,1,90,3,100,2,90,4,100,
+ 3,90,5,100,4,90,6,101,7,100,5,100,6,132,0,131,
+ 1,90,8,101,7,100,7,100,8,132,0,131,1,90,9,101,
+ 7,100,14,100,10,100,11,132,1,131,1,90,10,101,7,100,
+ 15,100,12,100,13,132,1,131,1,90,11,100,9,83,0,41,
+ 16,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,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,80,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,87,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,102,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,
+ 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,50,
+ 0,0,0,121,14,116,0,106,1,116,0,106,2,124,1,131,
+ 2,83,0,4,0,116,3,107,10,114,44,1,0,1,0,1,
+ 0,116,0,106,1,116,0,106,4,124,1,131,2,83,0,88,
+ 0,100,0,83,0,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,74,2,0,0,115,8,0,0,0,0,2,2,1,
+ 14,1,14,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,
+ 116,0,0,0,124,0,106,0,114,14,124,0,106,1,125,2,
+ 110,6,124,0,106,2,125,2,124,2,106,3,100,1,124,1,
+ 100,2,100,3,116,4,106,5,100,0,100,4,133,2,25,0,
+ 22,0,144,2,131,0,125,3,121,38,124,0,106,6,124,3,
+ 131,1,143,18,125,4,116,7,106,8,124,4,100,5,131,2,
+ 125,5,87,0,100,0,81,0,82,0,88,0,87,0,110,20,
+ 4,0,116,9,107,10,114,110,1,0,1,0,1,0,100,0,
+ 83,0,88,0,124,5,83,0,41,6,78,114,120,0,0,0,
+ 90,11,115,121,115,95,118,101,114,115,105,111,110,122,5,37,
+ 100,46,37,100,114,57,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,
+ 48,0,0,0,114,7,0,0,0,218,12,118,101,114,115,105,
+ 111,110,95,105,110,102,111,114,167,0,0,0,114,164,0,0,
+ 0,90,10,81,117,101,114,121,86,97,108,117,101,114,40,0,
+ 0,0,41,6,114,165,0,0,0,114,120,0,0,0,90,12,
+ 114,101,103,105,115,116,114,121,95,107,101,121,114,166,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,81,2,0,0,115,22,0,0,0,0,2,6,1,8,
+ 2,6,1,10,1,22,1,2,1,12,1,26,1,14,1,6,
+ 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,
+ 122,0,0,0,124,0,106,0,124,1,131,1,125,4,124,4,
+ 100,0,107,8,114,22,100,0,83,0,121,12,116,1,124,4,
+ 131,1,1,0,87,0,110,20,4,0,116,2,107,10,114,54,
+ 1,0,1,0,1,0,100,0,83,0,88,0,120,60,116,3,
+ 131,0,68,0,93,50,92,2,125,5,125,6,124,4,106,4,
+ 116,5,124,6,131,1,131,1,114,64,116,6,106,7,124,1,
+ 124,5,124,1,124,4,131,2,100,1,124,4,144,1,131,2,
+ 125,7,124,7,83,0,113,64,87,0,100,0,83,0,41,2,
+ 78,114,153,0,0,0,41,8,114,173,0,0,0,114,39,0,
+ 0,0,114,40,0,0,0,114,156,0,0,0,114,93,0,0,
+ 0,114,94,0,0,0,114,115,0,0,0,218,16,115,112,101,
+ 99,95,102,114,111,109,95,108,111,97,100,101,114,41,8,114,
+ 165,0,0,0,114,120,0,0,0,114,35,0,0,0,218,6,
+ 116,97,114,103,101,116,114,172,0,0,0,114,121,0,0,0,
+ 114,161,0,0,0,114,159,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,96,2,0,0,115,26,0,0,0,0,2,10,
+ 1,8,1,4,1,2,1,12,1,14,1,6,1,16,1,14,
+ 1,6,1,10,1,8,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,36,0,
+ 0,0,124,0,106,0,124,1,124,2,131,2,125,3,124,3,
+ 100,1,107,9,114,28,124,3,106,1,83,0,110,4,100,1,
+ 83,0,100,1,83,0,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,
+ 32,32,32,32,32,32,78,41,2,114,176,0,0,0,114,121,
+ 0,0,0,41,4,114,165,0,0,0,114,120,0,0,0,114,
+ 35,0,0,0,114,159,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,118,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,
+ 111,100,117,108,101,112,2,0,0,115,8,0,0,0,0,7,
+ 12,1,8,1,8,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,68,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,137,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,145,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,148,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,156,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,132,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,162,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,
+ 110,100,95,109,111,100,117,108,101,41,2,78,78,41,1,78,
+ 41,12,114,106,0,0,0,114,105,0,0,0,114,107,0,0,
+ 0,114,108,0,0,0,114,170,0,0,0,114,169,0,0,0,
+ 114,168,0,0,0,218,11,99,108,97,115,115,109,101,116,104,
+ 111,100,114,167,0,0,0,114,173,0,0,0,114,176,0,0,
+ 0,114,177,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,163,0,0,0,62,
+ 2,0,0,115,20,0,0,0,8,2,4,3,4,3,4,2,
+ 4,2,12,7,12,15,2,1,12,15,2,1,114,163,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,48,0,0,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,
+ 4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,100,
+ 8,100,9,132,0,90,7,100,10,83,0,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,64,0,0,0,116,0,124,0,106,
+ 1,124,1,131,1,131,1,100,1,25,0,125,2,124,2,106,
+ 2,100,2,100,1,131,2,100,3,25,0,125,3,124,1,106,
+ 3,100,2,131,1,100,4,25,0,125,4,124,3,100,5,107,
+ 2,111,62,124,4,100,5,107,3,83,0,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,59,0,0,0,114,60,0,0,0,114,57,0,0,0,
+ 218,8,95,95,105,110,105,116,95,95,41,4,114,38,0,0,
+ 0,114,152,0,0,0,114,34,0,0,0,114,32,0,0,0,
+ 41,5,114,101,0,0,0,114,120,0,0,0,114,95,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,154,0,0,0,131,
+ 2,0,0,115,8,0,0,0,0,3,18,1,16,1,14,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,83,0,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,101,
+ 0,0,0,114,159,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,139,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,56,0,0,0,124,0,106,0,124,1,106,1,131,1,
+ 125,2,124,2,100,1,107,8,114,36,116,2,100,2,106,3,
+ 124,1,106,1,131,1,131,1,130,1,116,4,106,5,116,6,
+ 124,2,124,1,106,7,131,3,1,0,100,1,83,0,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,106,0,0,0,114,100,0,
+ 0,0,114,48,0,0,0,114,115,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,112,0,
+ 0,0,41,3,114,101,0,0,0,218,6,109,111,100,117,108,
+ 101,114,141,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,142,2,0,0,115,10,0,0,0,0,2,12,1,8,
+ 1,6,1,10,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,12,0,0,0,116,0,106,1,124,0,
+ 124,1,131,2,83,0,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,115,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,101,0,0,0,114,120,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,150,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,
+ 106,0,0,0,114,105,0,0,0,114,107,0,0,0,114,108,
+ 0,0,0,114,154,0,0,0,114,181,0,0,0,114,186,0,
+ 0,0,114,188,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,179,0,0,0,
+ 126,2,0,0,115,10,0,0,0,8,3,4,2,8,8,8,
+ 3,8,8,114,179,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,74,0,
+ 0,0,101,0,90,1,100,0,90,2,100,1,100,2,132,0,
+ 90,3,100,3,100,4,132,0,90,4,100,5,100,6,132,0,
+ 90,5,100,7,100,8,132,0,90,6,100,9,100,10,132,0,
+ 90,7,100,18,100,12,156,1,100,13,100,14,132,2,90,8,
+ 100,15,100,16,132,0,90,9,100,17,83,0,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,8,0,0,0,116,0,130,1,100,1,83,0,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,101,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,157,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,14,0,0,0,100,1,124,0,106,0,124,1,131,1,105,
+ 1,83,0,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,127,0,0,0,41,1,114,191,0,0,0,
+ 41,2,114,101,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,165,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,12,0,0,0,124,0,106,0,124,2,124,3,131,2,83,
+ 0,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,
- 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,170,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,183,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,193,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,200,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,210,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,
- 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,
+ 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,101,0,0,0,114,91,0,0,
+ 0,90,10,99,97,99,104,101,95,112,97,116,104,114,54,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,178,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,83,0,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,101,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,193,0,0,0,188,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,84,0,0,0,124,0,106,0,124,1,131,1,
+ 125,2,121,14,124,0,106,1,124,2,131,1,125,3,87,0,
+ 110,50,4,0,116,2,107,10,114,74,1,0,125,4,1,0,
+ 122,22,116,3,100,1,100,2,124,1,144,1,131,1,124,4,
+ 130,2,87,0,89,0,100,3,100,3,125,4,126,4,88,0,
+ 110,2,88,0,116,4,124,3,131,1,83,0,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,99,0,
+ 0,0,78,41,5,114,152,0,0,0,218,8,103,101,116,95,
+ 100,97,116,97,114,40,0,0,0,114,100,0,0,0,114,150,
+ 0,0,0,41,5,114,101,0,0,0,114,120,0,0,0,114,
+ 35,0,0,0,114,148,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,195,2,0,0,115,14,0,
+ 0,0,0,2,10,1,2,1,14,1,16,1,6,1,28,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,114,29,0,0,0,41,1,
+ 218,9,95,111,112,116,105,109,105,122,101,99,3,0,0,0,
+ 1,0,0,0,4,0,0,0,9,0,0,0,67,0,0,0,
+ 115,26,0,0,0,116,0,106,1,116,2,124,1,124,2,100,
+ 1,100,2,100,3,100,4,124,3,144,2,131,4,83,0,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,184,0,0,0,218,12,100,111,110,116,
+ 95,105,110,104,101,114,105,116,84,114,69,0,0,0,41,3,
+ 114,115,0,0,0,114,183,0,0,0,218,7,99,111,109,112,
+ 105,108,101,41,4,114,101,0,0,0,114,54,0,0,0,114,
+ 35,0,0,0,114,198,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,205,2,0,0,115,4,0,0,
+ 0,0,5,14,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,106,1,0,0,124,0,106,0,
+ 124,1,131,1,125,2,100,1,125,3,121,12,116,1,124,2,
+ 131,1,125,4,87,0,110,24,4,0,116,2,107,10,114,50,
+ 1,0,1,0,1,0,100,1,125,4,89,0,110,174,88,0,
+ 121,14,124,0,106,3,124,2,131,1,125,5,87,0,110,20,
+ 4,0,116,4,107,10,114,86,1,0,1,0,1,0,89,0,
+ 110,138,88,0,116,5,124,5,100,2,25,0,131,1,125,3,
+ 121,14,124,0,106,6,124,4,131,1,125,6,87,0,110,20,
+ 4,0,116,7,107,10,114,134,1,0,1,0,1,0,89,0,
+ 110,90,88,0,121,26,116,8,124,6,100,3,124,5,100,4,
+ 124,1,100,5,124,4,144,3,131,1,125,7,87,0,110,24,
+ 4,0,116,9,116,10,102,2,107,10,114,186,1,0,1,0,
+ 1,0,89,0,110,38,88,0,116,11,106,12,100,6,124,4,
+ 124,2,131,3,1,0,116,13,124,7,100,4,124,1,100,7,
+ 124,4,100,8,124,2,144,3,131,1,83,0,124,0,106,6,
+ 124,2,131,1,125,8,124,0,106,14,124,8,124,2,131,2,
+ 125,9,116,11,106,12,100,9,124,2,131,2,1,0,116,15,
+ 106,16,12,0,144,1,114,102,124,4,100,1,107,9,144,1,
+ 114,102,124,3,100,1,107,9,144,1,114,102,116,17,124,9,
+ 124,3,116,18,124,8,131,1,131,3,125,6,121,30,124,0,
+ 106,19,124,2,124,4,124,6,131,3,1,0,116,11,106,12,
+ 100,10,124,4,131,2,1,0,87,0,110,22,4,0,116,2,
+ 107,10,144,1,114,100,1,0,1,0,1,0,89,0,110,2,
+ 88,0,124,9,83,0,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,
- 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,
- 218,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,160,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,19,
- 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,
+ 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,127,0,0,0,114,133,
+ 0,0,0,114,99,0,0,0,114,35,0,0,0,122,13,123,
+ 125,32,109,97,116,99,104,101,115,32,123,125,114,90,0,0,
+ 0,114,91,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,152,0,0,0,114,80,
+ 0,0,0,114,67,0,0,0,114,192,0,0,0,114,190,0,
+ 0,0,114,14,0,0,0,114,195,0,0,0,114,40,0,0,
+ 0,114,136,0,0,0,114,100,0,0,0,114,131,0,0,0,
+ 114,115,0,0,0,114,130,0,0,0,114,142,0,0,0,114,
+ 201,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,145,
+ 0,0,0,114,31,0,0,0,114,194,0,0,0,41,10,114,
+ 101,0,0,0,114,120,0,0,0,114,91,0,0,0,114,134,
+ 0,0,0,114,90,0,0,0,218,2,115,116,114,54,0,0,
+ 0,218,10,98,121,116,101,115,95,100,97,116,97,114,148,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,182,
+ 0,0,0,213,2,0,0,115,78,0,0,0,0,7,10,1,
+ 4,1,2,1,12,1,14,1,10,2,2,1,14,1,14,1,
+ 6,2,12,1,2,1,14,1,14,1,6,2,2,1,6,1,
+ 8,1,12,1,18,1,6,2,8,1,6,1,10,1,4,1,
+ 8,1,10,1,12,1,12,1,20,1,10,1,6,1,10,1,
+ 2,1,14,1,16,1,16,1,6,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,88,0,0,0,41,10,114,106,0,0,0,114,105,
+ 0,0,0,114,107,0,0,0,114,191,0,0,0,114,192,0,
+ 0,0,114,194,0,0,0,114,193,0,0,0,114,197,0,0,
+ 0,114,201,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,
+ 189,0,0,0,155,2,0,0,115,14,0,0,0,8,2,8,
+ 8,8,13,8,10,8,7,8,10,14,8,114,189,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,76,0,0,0,101,0,90,1,100,0,
+ 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,
+ 100,5,132,0,90,5,100,6,100,7,132,0,90,6,101,7,
+ 135,0,102,1,100,8,100,9,132,8,131,1,90,8,101,7,
+ 100,10,100,11,132,0,131,1,90,9,100,12,100,13,132,0,
+ 90,10,135,0,83,0,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,16,0,0,0,124,1,124,0,95,0,124,2,124,
+ 0,95,1,100,1,83,0,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,99,0,0,0,114,35,
+ 0,0,0,41,3,114,101,0,0,0,114,120,0,0,0,114,
+ 35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,180,0,0,0,14,3,0,0,115,4,0,0,
+ 0,0,3,6,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,
+ 24,0,0,0,124,0,106,0,124,1,106,0,107,2,111,22,
+ 124,0,106,1,124,1,106,1,107,2,83,0,41,1,78,41,
+ 2,218,9,95,95,99,108,97,115,115,95,95,114,112,0,0,
+ 0,41,2,114,101,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,20,3,0,0,115,4,0,0,0,0,
+ 1,12,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,20,0,0,0,
+ 116,0,124,0,106,1,131,1,116,0,124,0,106,2,131,1,
+ 65,0,83,0,41,1,78,41,3,218,4,104,97,115,104,114,
+ 99,0,0,0,114,35,0,0,0,41,1,114,101,0,0,0,
114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
- 6,95,95,101,113,95,95,25,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,
- 29,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,32,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,
+ 8,95,95,104,97,115,104,95,95,24,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,16,
+ 0,0,0,116,0,116,1,124,0,131,2,106,2,124,1,131,
+ 1,83,0,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,205,0,0,0,114,188,0,0,0,41,2,
+ 114,101,0,0,0,114,120,0,0,0,41,1,114,206,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,188,0,0,0,
+ 27,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,6,0,0,0,124,0,106,
+ 0,83,0,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,101,0,0,0,114,
+ 120,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,152,0,0,0,39,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,32,0,0,0,116,0,106,1,124,1,100,1,131,2,
+ 143,10,125,2,124,2,106,2,131,0,83,0,81,0,82,0,
+ 88,0,100,2,83,0,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,50,0,0,0,114,51,0,0,
+ 0,90,4,114,101,97,100,41,3,114,101,0,0,0,114,35,
+ 0,0,0,114,55,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,195,0,0,0,44,3,0,0,
+ 115,4,0,0,0,0,2,14,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,106,0,0,0,114,105,0,0,0,114,107,0,0,0,114,
+ 108,0,0,0,114,180,0,0,0,114,208,0,0,0,114,210,
+ 0,0,0,114,117,0,0,0,114,188,0,0,0,114,152,0,
+ 0,0,114,195,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,41,1,114,206,0,0,0,114,5,0,0,0,114,205,0,
+ 0,0,9,3,0,0,115,14,0,0,0,8,3,4,2,8,
+ 6,8,4,8,3,16,12,12,5,114,205,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,46,0,0,0,101,0,90,1,100,0,90,2,
+ 100,1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,
+ 132,0,90,5,100,6,100,7,156,1,100,8,100,9,132,2,
+ 90,6,100,10,83,0,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,3,0,0,0,67,0,0,0,115,
+ 22,0,0,0,116,0,124,1,131,1,125,2,124,2,106,1,
+ 124,2,106,2,100,1,156,2,83,0,41,2,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,41,
+ 2,122,5,109,116,105,109,101,122,4,115,105,122,101,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,101,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,114,192,0,0,0,54,3,0,
+ 0,115,4,0,0,0,0,2,8,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,26,0,0,
+ 0,116,0,124,1,131,1,125,4,124,0,106,1,124,2,124,
+ 3,100,1,124,4,144,1,131,2,83,0,41,2,78,218,5,
+ 95,109,111,100,101,41,2,114,98,0,0,0,114,193,0,0,
+ 0,41,5,114,101,0,0,0,114,91,0,0,0,114,90,0,
+ 0,0,114,54,0,0,0,114,42,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,194,0,0,0,
+ 59,3,0,0,115,4,0,0,0,0,2,8,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,105,
+ 182,1,0,0,41,1,114,215,0,0,0,99,3,0,0,0,
+ 1,0,0,0,9,0,0,0,17,0,0,0,67,0,0,0,
+ 115,250,0,0,0,116,0,124,1,131,1,92,2,125,4,125,
+ 5,103,0,125,6,120,40,124,4,114,56,116,1,124,4,131,
+ 1,12,0,114,56,116,0,124,4,131,1,92,2,125,4,125,
+ 7,124,6,106,2,124,7,131,1,1,0,113,18,87,0,120,
+ 108,116,3,124,6,131,1,68,0,93,96,125,7,116,4,124,
+ 4,124,7,131,2,125,4,121,14,116,5,106,6,124,4,131,
+ 1,1,0,87,0,113,68,4,0,116,7,107,10,114,118,1,
+ 0,1,0,1,0,119,68,89,0,113,68,4,0,116,8,107,
+ 10,114,162,1,0,125,8,1,0,122,18,116,9,106,10,100,
+ 1,124,4,124,8,131,3,1,0,100,2,83,0,100,2,125,
+ 8,126,8,88,0,113,68,88,0,113,68,87,0,121,28,116,
+ 11,124,1,124,2,124,3,131,3,1,0,116,9,106,10,100,
+ 3,124,1,131,2,1,0,87,0,110,48,4,0,116,8,107,
+ 10,114,244,1,0,125,8,1,0,122,20,116,9,106,10,100,
+ 1,124,1,124,8,131,3,1,0,87,0,89,0,100,2,100,
+ 2,125,8,126,8,88,0,110,2,88,0,100,2,83,0,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,158,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,115,0,0,0,114,130,0,0,
+ 0,114,56,0,0,0,41,9,114,101,0,0,0,114,35,0,
+ 0,0,114,54,0,0,0,114,215,0,0,0,218,6,112,97,
+ 114,101,110,116,114,95,0,0,0,114,27,0,0,0,114,23,
+ 0,0,0,114,196,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,193,0,0,0,64,3,0,0,
+ 115,42,0,0,0,0,2,12,1,4,2,16,1,12,1,14,
+ 2,14,1,10,1,2,1,14,1,14,2,6,1,16,3,6,
+ 1,8,1,20,1,2,1,12,1,16,1,16,2,8,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,106,0,
+ 0,0,114,105,0,0,0,114,107,0,0,0,114,108,0,0,
+ 0,114,192,0,0,0,114,194,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,213,0,0,0,50,3,0,0,115,8,0,
+ 0,0,8,2,4,2,8,5,8,5,114,213,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,32,0,0,0,101,0,90,1,100,0,90,
+ 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100,
+ 5,132,0,90,5,100,6,83,0,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,56,0,0,0,124,0,106,0,124,1,
+ 131,1,125,2,124,0,106,1,124,2,131,1,125,3,116,2,
+ 124,3,100,1,124,1,100,2,124,2,144,2,131,1,125,4,
+ 116,3,124,4,100,1,124,1,100,3,124,2,144,2,131,1,
+ 83,0,41,4,78,114,99,0,0,0,114,35,0,0,0,114,
+ 90,0,0,0,41,4,114,152,0,0,0,114,195,0,0,0,
+ 114,136,0,0,0,114,142,0,0,0,41,5,114,101,0,0,
+ 0,114,120,0,0,0,114,35,0,0,0,114,54,0,0,0,
+ 114,204,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,114,182,0,0,0,99,3,0,0,115,8,0,
+ 0,0,0,1,10,1,10,1,18,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,83,0,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,101,0,0,0,114,
+ 120,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,197,0,0,0,105,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,106,0,0,0,114,105,0,0,
+ 0,114,107,0,0,0,114,108,0,0,0,114,182,0,0,0,
+ 114,197,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,95,3,
+ 0,0,115,6,0,0,0,8,2,4,2,8,6,114,218,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,92,0,0,0,101,0,90,1,
+ 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,
+ 100,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,
+ 100,8,100,9,132,0,90,7,100,10,100,11,132,0,90,8,
+ 100,12,100,13,132,0,90,9,100,14,100,15,132,0,90,10,
+ 100,16,100,17,132,0,90,11,101,12,100,18,100,19,132,0,
+ 131,1,90,13,100,20,83,0,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,16,0,0,0,124,1,124,0,95,0,124,2,
+ 124,0,95,1,100,0,83,0,41,1,78,41,2,114,99,0,
+ 0,0,114,35,0,0,0,41,3,114,101,0,0,0,114,99,
+ 0,0,0,114,35,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,180,0,0,0,122,3,0,0,
+ 115,4,0,0,0,0,1,6,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,24,0,0,
+ 0,124,0,106,0,124,1,106,0,107,2,111,22,124,0,106,
+ 1,124,1,106,1,107,2,83,0,41,1,78,41,2,114,206,
+ 0,0,0,114,112,0,0,0,41,2,114,101,0,0,0,114,
+ 207,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,208,0,0,0,126,3,0,0,115,4,0,0,
+ 0,0,1,12,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,20,0,0,0,116,0,124,0,106,
+ 1,131,1,116,0,124,0,106,2,131,1,65,0,83,0,41,
+ 1,78,41,3,114,209,0,0,0,114,99,0,0,0,114,35,
+ 0,0,0,41,1,114,101,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,210,0,0,0,130,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,36,0,0,
+ 0,116,0,106,1,116,2,106,3,124,1,131,2,125,2,116,
+ 0,106,4,100,1,124,1,106,5,124,0,106,6,131,3,1,
+ 0,124,2,83,0,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,115,0,0,0,114,183,
+ 0,0,0,114,140,0,0,0,90,14,99,114,101,97,116,101,
+ 95,100,121,110,97,109,105,99,114,130,0,0,0,114,99,0,
+ 0,0,114,35,0,0,0,41,3,114,101,0,0,0,114,159,
+ 0,0,0,114,185,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,181,0,0,0,133,3,0,0,
+ 115,10,0,0,0,0,2,4,1,10,1,6,1,12,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,36,0,0,0,116,0,106,1,
+ 116,2,106,3,124,1,131,2,1,0,116,0,106,4,100,1,
+ 124,0,106,5,124,0,106,6,131,3,1,0,100,2,83,0,
+ 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,
+ 115,0,0,0,114,183,0,0,0,114,140,0,0,0,90,12,
+ 101,120,101,99,95,100,121,110,97,109,105,99,114,130,0,0,
+ 0,114,99,0,0,0,114,35,0,0,0,41,2,114,101,0,
+ 0,0,114,185,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,186,0,0,0,141,3,0,0,115,
+ 6,0,0,0,0,2,14,1,6,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,36,0,0,0,116,0,124,0,106,1,131,1,100,1,25,
+ 0,137,0,116,2,135,0,102,1,100,2,100,3,132,8,116,
+ 3,68,0,131,1,131,1,83,0,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,26,0,0,0,124,0,93,
+ 18,125,1,136,0,100,0,124,1,23,0,107,2,86,0,1,
+ 0,113,2,100,1,83,0,41,2,114,180,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,150,3,0,0,115,2,0,0,0,4,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,101,0,0,0,114,
+ 120,0,0,0,114,4,0,0,0,41,1,114,221,0,0,0,
+ 114,5,0,0,0,114,154,0,0,0,147,3,0,0,115,6,
+ 0,0,0,0,2,14,1,12,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,83,0,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,101,0,0,0,114,120,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,182,0,0,0,
+ 153,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,83,0,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,101,0,0,0,114,120,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,197,0,0,0,157,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,6,0,0,0,124,0,106,0,83,
+ 0,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,
+ 1,114,35,0,0,0,41,2,114,101,0,0,0,114,120,0,
0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,157,0,0,0,44,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,49,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,14,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,59,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,64,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,69,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,55,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,102,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,108,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,
- 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,98,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,125,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,129,
- 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,133,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,
+ 0,114,152,0,0,0,161,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,106,0,0,0,114,105,0,0,0,
+ 114,107,0,0,0,114,108,0,0,0,114,180,0,0,0,114,
+ 208,0,0,0,114,210,0,0,0,114,181,0,0,0,114,186,
+ 0,0,0,114,154,0,0,0,114,182,0,0,0,114,197,0,
+ 0,0,114,117,0,0,0,114,152,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,219,0,0,0,114,3,0,0,115,20,0,0,0,8,6,
+ 4,2,8,4,8,4,8,3,8,8,8,6,8,6,8,4,
+ 8,4,114,219,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,96,0,0,
+ 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,
+ 3,132,0,90,4,100,4,100,5,132,0,90,5,100,6,100,
+ 7,132,0,90,6,100,8,100,9,132,0,90,7,100,10,100,
+ 11,132,0,90,8,100,12,100,13,132,0,90,9,100,14,100,
+ 15,132,0,90,10,100,16,100,17,132,0,90,11,100,18,100,
+ 19,132,0,90,12,100,20,100,21,132,0,90,13,100,22,83,
+ 0,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,36,0,0,0,124,1,124,0,95,0,124,2,
+ 124,0,95,1,116,2,124,0,106,3,131,0,131,1,124,0,
+ 95,4,124,3,124,0,95,5,100,0,83,0,41,1,78,41,
+ 6,218,5,95,110,97,109,101,218,5,95,112,97,116,104,114,
+ 94,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,101,0,0,0,114,99,
+ 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,180,0,0,0,174,3,0,0,115,8,0,
+ 0,0,0,1,6,1,6,1,14,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,38,0,0,0,124,0,106,
+ 0,106,1,100,1,131,1,92,3,125,1,125,2,125,3,124,
+ 2,100,2,107,2,114,30,100,6,83,0,124,1,100,5,102,
+ 2,83,0,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,59,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,226,0,0,0,114,32,0,0,0,41,4,114,101,
+ 0,0,0,114,217,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,180,3,0,0,115,8,0,
+ 0,0,0,2,18,1,8,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,28,0,0,0,124,0,106,0,
+ 131,0,92,2,125,1,125,2,116,1,116,2,106,3,124,1,
+ 25,0,124,2,131,2,83,0,41,1,78,41,4,114,233,0,
+ 0,0,114,111,0,0,0,114,7,0,0,0,218,7,109,111,
+ 100,117,108,101,115,41,3,114,101,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,
- 186,0,0,0,136,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,144,3,0,0,
- 115,6,0,0,0,0,2,19,1,6,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,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,153,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,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,150,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,156,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,160,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,164,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,117,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,177,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,183,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,193,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,197,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,210,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,213,
- 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,216,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,219,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,222,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,
+ 228,0,0,0,190,3,0,0,115,4,0,0,0,0,1,12,
+ 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,80,0,0,0,116,0,124,0,
+ 106,1,131,0,131,1,125,1,124,1,124,0,106,2,107,3,
+ 114,74,124,0,106,3,124,0,106,4,124,1,131,2,125,2,
+ 124,2,100,0,107,9,114,68,124,2,106,5,100,0,107,8,
+ 114,68,124,2,106,6,114,68,124,2,106,6,124,0,95,7,
+ 124,1,124,0,95,2,124,0,106,7,83,0,41,1,78,41,
+ 8,114,94,0,0,0,114,228,0,0,0,114,229,0,0,0,
+ 114,230,0,0,0,114,226,0,0,0,114,121,0,0,0,114,
+ 151,0,0,0,114,227,0,0,0,41,3,114,101,0,0,0,
+ 90,11,112,97,114,101,110,116,95,112,97,116,104,114,159,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,194,
+ 3,0,0,115,16,0,0,0,0,2,12,1,10,1,14,3,
+ 18,1,6,1,8,1,6,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,12,0,0,0,116,
+ 0,124,0,106,1,131,0,131,1,83,0,41,1,78,41,2,
+ 218,4,105,116,101,114,114,235,0,0,0,41,1,114,101,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,207,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,14,0,0,0,124,2,124,0,106,0,124,
+ 1,60,0,100,0,83,0,41,1,78,41,1,114,227,0,0,
+ 0,41,3,114,101,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,218,11,95,95,115,101,116,105,116,101,109,95,95,
+ 210,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,12,0,0,
+ 0,116,0,124,0,106,1,131,0,131,1,83,0,41,1,78,
+ 41,2,114,31,0,0,0,114,235,0,0,0,41,1,114,101,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
- 0,0,114,230,0,0,0,170,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,228,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,
+ 0,0,218,7,95,95,108,101,110,95,95,213,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,12,0,0,0,100,1,106,0,124,0,106,1,
+ 131,1,83,0,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,
+ 48,0,0,0,114,227,0,0,0,41,1,114,101,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,216,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,12,0,0,0,124,1,124,0,106,0,131,0,107,
+ 6,83,0,41,1,78,41,1,114,235,0,0,0,41,2,114,
+ 101,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,219,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,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,231,
- 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,240,
- 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,243,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,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,246,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,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,186,0,0,0,249,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,252,3,0,0,115,2,0,0,0,0,1,
+ 67,0,0,0,115,16,0,0,0,124,0,106,0,106,1,124,
+ 1,131,1,1,0,100,0,83,0,41,1,78,41,2,114,227,
+ 0,0,0,114,158,0,0,0,41,2,114,101,0,0,0,114,
+ 242,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,158,0,0,0,222,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,106,0,
+ 0,0,114,105,0,0,0,114,107,0,0,0,114,108,0,0,
+ 0,114,180,0,0,0,114,233,0,0,0,114,228,0,0,0,
+ 114,235,0,0,0,114,237,0,0,0,114,239,0,0,0,114,
+ 240,0,0,0,114,241,0,0,0,114,243,0,0,0,114,158,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,225,0,0,0,167,3,0,0,
+ 115,22,0,0,0,8,5,4,2,8,6,8,10,8,4,8,
+ 13,8,3,8,3,8,3,8,3,8,3,114,225,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,80,0,0,0,101,0,90,1,100,0,
+ 90,2,100,1,100,2,132,0,90,3,101,4,100,3,100,4,
+ 132,0,131,1,90,5,100,5,100,6,132,0,90,6,100,7,
+ 100,8,132,0,90,7,100,9,100,10,132,0,90,8,100,11,
+ 100,12,132,0,90,9,100,13,100,14,132,0,90,10,100,15,
+ 100,16,132,0,90,11,100,17,83,0,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,18,0,0,0,116,0,124,1,124,2,124,3,
+ 131,3,124,0,95,1,100,0,83,0,41,1,78,41,2,114,
+ 225,0,0,0,114,227,0,0,0,41,4,114,101,0,0,0,
+ 114,99,0,0,0,114,35,0,0,0,114,231,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,180,
+ 0,0,0,228,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,12,
+ 0,0,0,100,1,106,0,124,1,106,1,131,1,83,0,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,48,0,0,0,114,106,0,0,0,41,2,114,
+ 165,0,0,0,114,185,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,231,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,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,255,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,227,
- 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,16,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,24,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,41,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,63,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,
+ 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,83,0,41,2,78,84,
+ 114,4,0,0,0,41,2,114,101,0,0,0,114,120,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,78,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,110,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,
- 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 182,0,0,0,132,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,
- 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
- 249,0,0,0,12,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,161,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,155,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,
- 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
- 0,114,250,0,0,0,169,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,175,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,187,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,102,84,114,121,32,116,
- 111,32,102,105,110,100,32,97,32,115,112,101,99,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,46,32,32,82,101,116,117,114,110,115,
- 32,116,104,101,10,32,32,32,32,32,32,32,32,109,97,116,
- 99,104,105,110,103,32,115,112,101,99,44,32,111,114,32,78,
- 111,110,101,32,105,102,32,110,111,116,32,102,111,117,110,100,
- 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,192,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,10,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,237,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,22,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,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,12,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,30,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,
+ 114,154,0,0,0,240,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,83,0,41,2,78,114,30,
+ 0,0,0,114,4,0,0,0,41,2,114,101,0,0,0,114,
+ 120,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,197,0,0,0,243,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,18,0,0,0,116,0,100,1,100,2,
+ 100,3,100,4,100,5,144,1,131,3,83,0,41,6,78,114,
+ 30,0,0,0,122,8,60,115,116,114,105,110,103,62,114,184,
+ 0,0,0,114,199,0,0,0,84,41,1,114,200,0,0,0,
+ 41,2,114,101,0,0,0,114,120,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,182,0,0,0,
+ 246,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,83,0,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,101,0,0,0,114,
+ 159,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,181,0,0,0,249,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,83,0,41,
+ 1,78,114,4,0,0,0,41,2,114,101,0,0,0,114,185,
0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
- 0,0,114,6,1,0,0,146,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,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,36,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,
+ 0,0,114,186,0,0,0,252,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,26,0,0,0,116,0,106,1,100,1,
+ 124,0,106,2,131,2,1,0,116,0,106,3,124,0,124,1,
+ 131,2,83,0,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,115,0,0,0,114,130,0,0,0,114,227,
+ 0,0,0,114,187,0,0,0,41,2,114,101,0,0,0,114,
+ 120,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,188,0,0,0,255,3,0,0,115,6,0,0,
+ 0,0,7,6,1,8,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,106,0,0,0,114,105,0,
+ 0,0,114,107,0,0,0,114,180,0,0,0,114,178,0,0,
+ 0,114,245,0,0,0,114,154,0,0,0,114,197,0,0,0,
+ 114,182,0,0,0,114,181,0,0,0,114,186,0,0,0,114,
+ 188,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,244,0,0,0,227,3,0,
+ 0,115,16,0,0,0,8,1,8,3,12,9,8,3,8,3,
+ 8,3,8,3,8,3,114,244,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,90,1,100,0,90,2,100,1,90,
+ 3,101,4,100,2,100,3,132,0,131,1,90,5,101,4,100,
+ 4,100,5,132,0,131,1,90,6,101,4,100,6,100,7,132,
+ 0,131,1,90,7,101,4,100,8,100,9,132,0,131,1,90,
+ 8,101,4,100,17,100,11,100,12,132,1,131,1,90,9,101,
+ 4,100,18,100,13,100,14,132,1,131,1,90,10,101,4,100,
+ 19,100,15,100,16,132,1,131,1,90,11,100,10,83,0,41,
+ 20,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,42,0,0,0,120,36,116,0,106,1,106,2,131,
+ 0,68,0,93,22,125,1,116,3,124,1,100,1,131,2,114,
+ 12,124,1,106,4,131,0,1,0,113,12,87,0,100,2,83,
+ 0,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,109,0,0,0,114,
+ 247,0,0,0,41,2,114,165,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,247,0,0,0,17,4,0,0,115,6,0,0,0,
+ 0,4,16,1,10,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,86,0,0,0,116,0,
+ 106,1,100,1,107,9,114,30,116,0,106,1,12,0,114,30,
+ 116,2,106,3,100,2,116,4,131,2,1,0,120,50,116,0,
+ 106,1,68,0,93,36,125,2,121,8,124,2,124,1,131,1,
+ 83,0,4,0,116,5,107,10,114,72,1,0,1,0,1,0,
+ 119,38,89,0,113,38,88,0,113,38,87,0,100,1,83,0,
+ 100,1,83,0,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,61,0,0,0,114,62,0,0,0,
+ 114,119,0,0,0,114,100,0,0,0,41,3,114,165,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,25,4,0,0,115,16,0,0,
+ 0,0,7,18,1,12,1,12,1,2,1,8,1,14,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,102,
+ 0,0,0,124,1,100,1,107,2,114,42,121,12,116,0,106,
+ 1,131,0,125,1,87,0,110,20,4,0,116,2,107,10,114,
+ 40,1,0,1,0,1,0,100,2,83,0,88,0,121,14,116,
+ 3,106,4,124,1,25,0,125,2,87,0,110,40,4,0,116,
+ 5,107,10,114,96,1,0,1,0,1,0,124,0,106,6,124,
+ 1,131,1,125,2,124,2,116,3,106,4,124,1,60,0,89,
+ 0,110,2,88,0,124,2,83,0,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,248,0,0,0,114,132,
+ 0,0,0,114,252,0,0,0,41,3,114,165,0,0,0,114,
+ 35,0,0,0,114,250,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,42,4,
+ 0,0,115,22,0,0,0,0,8,8,1,2,1,12,1,14,
+ 3,6,1,2,1,14,1,14,1,10,1,16,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,82,0,0,0,116,0,124,2,100,1,131,2,
+ 114,26,124,2,106,1,124,1,131,1,92,2,125,3,125,4,
+ 110,14,124,2,106,2,124,1,131,1,125,3,103,0,125,4,
+ 124,3,100,0,107,9,114,60,116,3,106,4,124,1,124,3,
+ 131,2,83,0,116,3,106,5,124,1,100,0,131,2,125,5,
+ 124,4,124,5,95,6,124,5,83,0,41,2,78,114,118,0,
+ 0,0,41,7,114,109,0,0,0,114,118,0,0,0,114,177,
+ 0,0,0,114,115,0,0,0,114,174,0,0,0,114,155,0,
+ 0,0,114,151,0,0,0,41,6,114,165,0,0,0,114,120,
+ 0,0,0,114,250,0,0,0,114,121,0,0,0,114,122,0,
+ 0,0,114,159,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,64,4,0,0,115,18,0,0,
+ 0,0,4,10,1,16,2,10,1,4,1,8,1,12,1,12,
+ 1,6,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,170,0,0,0,103,0,125,4,120,
+ 160,124,2,68,0,93,130,125,5,116,0,124,5,116,1,116,
+ 2,102,2,131,2,115,30,113,10,124,0,106,3,124,5,131,
+ 1,125,6,124,6,100,1,107,9,114,10,116,4,124,6,100,
+ 2,131,2,114,72,124,6,106,5,124,1,124,3,131,2,125,
+ 7,110,12,124,0,106,6,124,1,124,6,131,2,125,7,124,
+ 7,100,1,107,8,114,94,113,10,124,7,106,7,100,1,107,
+ 9,114,108,124,7,83,0,124,7,106,8,125,8,124,8,100,
+ 1,107,8,114,130,116,9,100,3,131,1,130,1,124,4,106,
+ 10,124,8,131,1,1,0,113,10,87,0,116,11,106,12,124,
+ 1,100,1,131,2,125,7,124,4,124,7,95,8,124,7,83,
+ 0,100,1,83,0,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,176,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,138,0,0,0,114,70,0,0,0,218,
+ 5,98,121,116,101,115,114,254,0,0,0,114,109,0,0,0,
+ 114,176,0,0,0,114,255,0,0,0,114,121,0,0,0,114,
+ 151,0,0,0,114,100,0,0,0,114,144,0,0,0,114,115,
+ 0,0,0,114,155,0,0,0,41,9,114,165,0,0,0,114,
+ 120,0,0,0,114,35,0,0,0,114,175,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,250,0,0,0,114,159,0,0,0,114,
+ 122,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,79,4,
+ 0,0,115,40,0,0,0,0,5,4,1,10,1,14,1,2,
+ 1,10,1,8,1,10,1,14,2,12,1,8,1,2,1,10,
+ 1,4,1,6,1,8,1,8,5,14,2,12,1,6,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,104,0,0,0,124,
+ 2,100,1,107,8,114,14,116,0,106,1,125,2,124,0,106,
+ 2,124,1,124,2,124,3,131,3,125,4,124,4,100,1,107,
+ 8,114,42,100,1,83,0,110,58,124,4,106,3,100,1,107,
+ 8,114,96,124,4,106,4,125,5,124,5,114,90,100,2,124,
+ 4,95,5,116,6,124,1,124,5,124,0,106,2,131,3,124,
+ 4,95,4,124,4,83,0,113,100,100,1,83,0,110,4,124,
+ 4,83,0,100,1,83,0,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,2,1,0,0,114,121,0,0,0,114,
+ 151,0,0,0,114,153,0,0,0,114,225,0,0,0,41,6,
+ 114,165,0,0,0,114,120,0,0,0,114,35,0,0,0,114,
+ 175,0,0,0,114,159,0,0,0,114,1,1,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,176,0,
+ 0,0,111,4,0,0,115,26,0,0,0,0,4,8,1,6,
+ 1,14,1,8,1,6,1,10,1,6,1,4,3,6,1,16,
+ 1,6,2,6,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,30,0,0,0,124,0,106,0,124,1,124,2,131,2,125,
+ 3,124,3,100,1,107,8,114,24,100,1,83,0,124,3,106,
+ 1,83,0,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,176,0,0,0,114,121,0,0,0,41,4,
+ 114,165,0,0,0,114,120,0,0,0,114,35,0,0,0,114,
+ 159,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,177,0,0,0,133,4,0,0,115,8,0,0,
+ 0,0,8,12,1,8,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,1,78,41,2,78,78,41,1,78,41,12,114,106,0,
+ 0,0,114,105,0,0,0,114,107,0,0,0,114,108,0,0,
+ 0,114,178,0,0,0,114,247,0,0,0,114,252,0,0,0,
+ 114,254,0,0,0,114,255,0,0,0,114,2,1,0,0,114,
+ 176,0,0,0,114,177,0,0,0,114,4,0,0,0,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,22,0,0,0,8,2,4,2,12,
+ 8,12,17,12,22,12,15,2,1,12,31,2,1,12,21,2,
+ 1,114,246,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,90,0,0,0,
+ 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3,
+ 132,0,90,4,100,4,100,5,132,0,90,5,101,6,90,7,
+ 100,6,100,7,132,0,90,8,100,8,100,9,132,0,90,9,
+ 100,19,100,11,100,12,132,1,90,10,100,13,100,14,132,0,
+ 90,11,101,12,100,15,100,16,132,0,131,1,90,13,100,17,
+ 100,18,132,0,90,14,100,10,83,0,41,20,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,88,0,0,0,
+ 103,0,125,3,120,40,124,2,68,0,93,32,92,2,137,0,
+ 125,4,124,3,106,0,135,0,102,1,100,1,100,2,132,8,
+ 124,4,68,0,131,1,131,1,1,0,113,10,87,0,124,3,
+ 124,0,95,1,124,1,112,58,100,3,124,0,95,2,100,6,
+ 124,0,95,3,116,4,131,0,124,0,95,5,116,4,131,0,
+ 124,0,95,6,100,5,83,0,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,22,0,0,0,
+ 124,0,93,14,125,1,124,1,136,0,102,2,86,0,1,0,
+ 113,2,100,0,83,0,41,1,78,114,4,0,0,0,41,2,
+ 114,22,0,0,0,114,220,0,0,0,41,1,114,121,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,222,0,0,0,
+ 162,4,0,0,115,2,0,0,0,4,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,59,0,0,0,114,29,0,0,0,78,114,88,
+ 0,0,0,41,7,114,144,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,
+ 101,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,161,0,0,0,114,4,0,0,0,41,1,114,121,
+ 0,0,0,114,5,0,0,0,114,180,0,0,0,156,4,0,
+ 0,115,16,0,0,0,0,4,4,1,14,1,28,1,6,2,
+ 10,1,6,1,8,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,10,0,0,0,100,3,124,0,95,0,100,2,83,0,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,88,0,0,0,41,1,114,
+ 5,1,0,0,41,1,114,101,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,247,0,0,0,170,
+ 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,42,0,
+ 0,0,124,0,106,0,124,1,131,1,125,2,124,2,100,1,
+ 107,8,114,26,100,1,103,0,102,2,83,0,124,2,106,1,
+ 124,2,106,2,112,38,103,0,102,2,83,0,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,176,0,0,0,114,121,0,
+ 0,0,114,151,0,0,0,41,3,114,101,0,0,0,114,120,
+ 0,0,0,114,159,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,118,0,0,0,176,4,0,0,
+ 115,8,0,0,0,0,7,10,1,8,1,8,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,30,0,0,0,124,
+ 1,124,2,124,3,131,2,125,6,116,0,124,2,124,3,100,
+ 1,124,6,100,2,124,4,144,2,131,2,83,0,41,3,78,
+ 114,121,0,0,0,114,151,0,0,0,41,1,114,162,0,0,
+ 0,41,7,114,101,0,0,0,114,160,0,0,0,114,120,0,
+ 0,0,114,35,0,0,0,90,4,115,109,115,108,114,175,0,
+ 0,0,114,121,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,2,1,0,0,188,4,0,0,115,
+ 6,0,0,0,0,1,10,1,12,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,100,1,0,0,100,1,125,3,124,
+ 1,106,0,100,2,131,1,100,3,25,0,125,4,121,24,116,
+ 1,124,0,106,2,112,34,116,3,106,4,131,0,131,1,106,
+ 5,125,5,87,0,110,24,4,0,116,6,107,10,114,66,1,
+ 0,1,0,1,0,100,10,125,5,89,0,110,2,88,0,124,
+ 5,124,0,106,7,107,3,114,92,124,0,106,8,131,0,1,
+ 0,124,5,124,0,95,7,116,9,131,0,114,114,124,0,106,
+ 10,125,6,124,4,106,11,131,0,125,7,110,10,124,0,106,
+ 12,125,6,124,4,125,7,124,7,124,6,107,6,114,218,116,
+ 13,124,0,106,2,124,4,131,2,125,8,120,72,124,0,106,
+ 14,68,0,93,54,92,2,125,9,125,10,100,5,124,9,23,
+ 0,125,11,116,13,124,8,124,11,131,2,125,12,116,15,124,
+ 12,131,1,114,152,124,0,106,16,124,10,124,1,124,12,124,
+ 8,103,1,124,2,131,5,83,0,113,152,87,0,116,17,124,
+ 8,131,1,125,3,120,90,124,0,106,14,68,0,93,80,92,
+ 2,125,9,125,10,116,13,124,0,106,2,124,4,124,9,23,
+ 0,131,2,125,12,116,18,106,19,100,6,124,12,100,7,100,
+ 3,144,1,131,2,1,0,124,7,124,9,23,0,124,6,107,
+ 6,114,226,116,15,124,12,131,1,114,226,124,0,106,16,124,
+ 10,124,1,124,12,100,8,124,2,131,5,83,0,113,226,87,
+ 0,124,3,144,1,114,96,116,18,106,19,100,9,124,8,131,
+ 2,1,0,116,18,106,20,124,1,100,8,131,2,125,13,124,
+ 8,103,1,124,13,95,21,124,13,83,0,100,8,83,0,41,
+ 11,122,102,84,114,121,32,116,111,32,102,105,110,100,32,97,
+ 32,115,112,101,99,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,46,32,
+ 32,82,101,116,117,114,110,115,32,116,104,101,10,32,32,32,
+ 32,32,32,32,32,109,97,116,99,104,105,110,103,32,115,112,
+ 101,99,44,32,111,114,32,78,111,110,101,32,105,102,32,110,
+ 111,116,32,102,111,117,110,100,46,70,114,59,0,0,0,114,
+ 57,0,0,0,114,29,0,0,0,114,180,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,88,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,214,0,0,0,114,40,0,0,0,114,5,1,0,0,218,
+ 11,95,102,105,108,108,95,99,97,99,104,101,114,6,0,0,
+ 0,114,8,1,0,0,114,89,0,0,0,114,7,1,0,0,
+ 114,28,0,0,0,114,4,1,0,0,114,44,0,0,0,114,
+ 2,1,0,0,114,46,0,0,0,114,115,0,0,0,114,130,
+ 0,0,0,114,155,0,0,0,114,151,0,0,0,41,14,114,
+ 101,0,0,0,114,120,0,0,0,114,175,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,127,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,220,
+ 0,0,0,114,160,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,159,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,176,0,0,0,193,4,0,0,115,
+ 70,0,0,0,0,3,4,1,14,1,2,1,24,1,14,1,
+ 10,1,10,1,8,1,6,2,6,1,6,1,10,2,6,1,
+ 4,2,8,1,12,1,16,1,8,1,10,1,8,1,24,4,
+ 8,2,16,1,16,1,18,1,12,1,8,1,10,1,12,1,
+ 6,1,12,1,12,1,8,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,194,0,0,0,124,0,106,0,125,1,
+ 121,22,116,1,106,2,124,1,112,22,116,1,106,3,131,0,
+ 131,1,125,2,87,0,110,30,4,0,116,4,116,5,116,6,
+ 102,3,107,10,114,58,1,0,1,0,1,0,103,0,125,2,
+ 89,0,110,2,88,0,116,7,106,8,106,9,100,1,131,1,
+ 115,84,116,10,124,2,131,1,124,0,95,11,110,78,116,10,
+ 131,0,125,3,120,64,124,2,68,0,93,56,125,4,124,4,
+ 106,12,100,2,131,1,92,3,125,5,125,6,125,7,124,6,
+ 114,138,100,3,106,13,124,5,124,7,106,14,131,0,131,2,
+ 125,8,110,4,124,5,125,8,124,3,106,15,124,8,131,1,
+ 1,0,113,96,87,0,124,3,124,0,95,11,116,7,106,8,
+ 106,9,116,16,131,1,114,190,100,4,100,5,132,0,124,2,
+ 68,0,131,1,124,0,95,17,100,6,83,0,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,59,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,20,0,0,0,104,
+ 0,124,0,93,12,125,1,124,1,106,0,131,0,146,2,113,
+ 4,83,0,114,4,0,0,0,41,1,114,89,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,12,5,0,0,115,2,0,0,0,6,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,253,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,6,
+ 1,0,0,114,7,1,0,0,114,84,0,0,0,114,48,0,
+ 0,0,114,89,0,0,0,218,3,97,100,100,114,10,0,0,
+ 0,114,8,1,0,0,41,9,114,101,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,242,0,0,0,114,99,0,0,0,114,232,0,
+ 0,0,114,220,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,161,0,0,0,59,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,
- 95,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,70,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,138,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,114,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,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,
+ 114,10,1,0,0,239,4,0,0,115,34,0,0,0,0,2,
+ 6,1,2,1,22,1,20,3,10,3,12,1,12,7,6,1,
+ 10,1,16,1,4,1,18,2,4,1,14,1,6,1,12,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,18,0,
+ 0,0,135,0,135,1,102,2,100,1,100,2,132,8,125,2,
+ 124,2,83,0,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,32,0,0,0,116,0,124,0,131,1,115,
+ 22,116,1,100,1,100,2,124,0,144,1,131,1,130,1,136,
+ 0,124,0,136,1,140,1,83,0,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,100,0,0,0,41,1,114,35,0,
+ 0,0,41,2,114,165,0,0,0,114,9,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,24,5,0,0,115,6,0,0,0,0,2,8,1,14,
+ 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,165,0,0,0,114,9,1,0,0,114,15,1,0,0,114,
+ 4,0,0,0,41,2,114,165,0,0,0,114,9,1,0,0,
+ 114,5,0,0,0,218,9,112,97,116,104,95,104,111,111,107,
+ 14,5,0,0,115,4,0,0,0,0,10,14,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,12,0,0,0,100,1,106,
+ 0,124,0,106,1,131,1,83,0,41,2,78,122,16,70,105,
+ 108,101,70,105,110,100,101,114,40,123,33,114,125,41,41,2,
+ 114,48,0,0,0,114,35,0,0,0,41,1,114,101,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,241,0,0,0,32,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,1,78,41,15,114,106,0,0,0,114,
+ 105,0,0,0,114,107,0,0,0,114,108,0,0,0,114,180,
+ 0,0,0,114,247,0,0,0,114,124,0,0,0,114,177,0,
+ 0,0,114,118,0,0,0,114,2,1,0,0,114,176,0,0,
+ 0,114,10,1,0,0,114,178,0,0,0,114,16,1,0,0,
+ 114,241,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,3,1,0,0,147,4,
+ 0,0,115,20,0,0,0,8,7,4,2,8,14,8,4,4,
+ 2,8,12,8,5,10,46,8,31,12,18,114,3,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,148,0,0,0,124,0,106,0,100,1,
+ 131,1,125,4,124,0,106,0,100,2,131,1,125,5,124,4,
+ 115,66,124,5,114,36,124,5,106,1,125,4,110,30,124,2,
+ 124,3,107,2,114,56,116,2,124,1,124,2,131,2,125,4,
+ 110,10,116,3,124,1,124,2,131,2,125,4,124,5,115,86,
+ 116,4,124,1,124,2,100,3,124,4,144,1,131,2,125,5,
+ 121,36,124,5,124,0,100,2,60,0,124,4,124,0,100,1,
+ 60,0,124,2,124,0,100,4,60,0,124,3,124,0,100,5,
+ 60,0,87,0,110,20,4,0,116,5,107,10,114,142,1,0,
+ 1,0,1,0,89,0,110,2,88,0,100,0,83,0,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,121,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,121,0,0,0,114,218,
+ 0,0,0,114,213,0,0,0,114,162,0,0,0,218,9,69,
+ 120,99,101,112,116,105,111,110,41,6,90,2,110,115,114,99,
+ 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,121,0,0,0,114,159,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,38,5,0,0,115,34,0,0,0,0,2,10,1,10,1,
+ 4,1,4,1,8,1,8,1,12,2,10,1,4,1,16,1,
+ 2,1,8,1,8,1,8,1,12,1,14,2,114,21,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,38,0,0,0,116,0,116,1,106,
+ 2,131,0,102,2,125,0,116,3,116,4,102,2,125,1,116,
+ 5,116,6,102,2,125,2,124,0,124,1,124,2,103,3,83,
+ 0,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,219,0,0,0,114,140,0,0,0,
+ 218,18,101,120,116,101,110,115,105,111,110,95,115,117,102,102,
+ 105,120,101,115,114,213,0,0,0,114,85,0,0,0,114,218,
+ 0,0,0,114,75,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,156,0,0,0,61,5,0,0,
+ 115,8,0,0,0,0,5,12,1,8,1,8,1,114,156,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,188,1,0,0,124,0,97,0,
+ 116,0,106,1,97,1,116,0,106,2,97,2,116,1,106,3,
+ 116,4,25,0,125,1,120,56,100,26,68,0,93,48,125,2,
+ 124,2,116,1,106,3,107,7,114,58,116,0,106,5,124,2,
+ 131,1,125,3,110,10,116,1,106,3,124,2,25,0,125,3,
+ 116,6,124,1,124,2,124,3,131,3,1,0,113,32,87,0,
+ 100,5,100,6,103,1,102,2,100,7,100,8,100,6,103,2,
+ 102,2,102,2,125,4,120,118,124,4,68,0,93,102,92,2,
+ 125,5,125,6,116,7,100,9,100,10,132,0,124,6,68,0,
+ 131,1,131,1,115,142,116,8,130,1,124,6,100,11,25,0,
+ 125,7,124,5,116,1,106,3,107,6,114,174,116,1,106,3,
+ 124,5,25,0,125,8,80,0,113,112,121,16,116,0,106,5,
+ 124,5,131,1,125,8,80,0,87,0,113,112,4,0,116,9,
+ 107,10,114,212,1,0,1,0,1,0,119,112,89,0,113,112,
+ 88,0,113,112,87,0,116,9,100,12,131,1,130,1,116,6,
+ 124,1,100,13,124,8,131,3,1,0,116,6,124,1,100,14,
+ 124,7,131,3,1,0,116,6,124,1,100,15,100,16,106,10,
+ 124,6,131,1,131,3,1,0,121,14,116,0,106,5,100,17,
+ 131,1,125,9,87,0,110,26,4,0,116,9,107,10,144,1,
+ 114,52,1,0,1,0,1,0,100,18,125,9,89,0,110,2,
+ 88,0,116,6,124,1,100,17,124,9,131,3,1,0,116,0,
+ 106,5,100,19,131,1,125,10,116,6,124,1,100,19,124,10,
+ 131,3,1,0,124,5,100,7,107,2,144,1,114,120,116,0,
+ 106,5,100,20,131,1,125,11,116,6,124,1,100,21,124,11,
+ 131,3,1,0,116,6,124,1,100,22,116,11,131,0,131,3,
+ 1,0,116,12,106,13,116,2,106,14,131,0,131,1,1,0,
+ 124,5,100,7,107,2,144,1,114,184,116,15,106,16,100,23,
+ 131,1,1,0,100,24,116,12,107,6,144,1,114,184,100,25,
+ 116,17,95,18,100,18,83,0,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,50,0,0,0,114,61,
+ 0,0,0,218,8,98,117,105,108,116,105,110,115,114,137,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,26,0,0,0,124,0,93,
+ 18,125,1,116,0,124,1,131,1,100,0,107,2,86,0,1,
+ 0,113,2,100,1,83,0,41,2,114,29,0,0,0,78,41,
+ 1,114,31,0,0,0,41,2,114,22,0,0,0,114,78,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,222,0,0,0,97,5,0,0,115,2,0,0,0,4,
+ 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,60,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,164,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,115,0,0,0,114,7,0,0,0,114,140,0,0,0,
+ 114,234,0,0,0,114,106,0,0,0,90,18,95,98,117,105,
+ 108,116,105,110,95,102,114,111,109,95,110,97,109,101,114,110,
+ 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,100,0,0,0,114,26,0,
+ 0,0,114,11,0,0,0,114,224,0,0,0,114,144,0,0,
+ 0,114,22,1,0,0,114,85,0,0,0,114,158,0,0,0,
+ 114,163,0,0,0,114,168,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,72,5,0,0,
+ 115,82,0,0,0,0,8,4,1,6,1,6,3,10,1,10,
+ 1,10,1,12,2,10,1,16,3,22,1,14,2,22,1,8,
+ 1,10,1,10,1,4,2,2,1,10,1,6,1,14,1,12,
+ 2,8,1,12,1,12,1,18,3,2,1,14,1,16,2,10,
+ 1,12,3,10,1,12,3,10,1,10,1,12,3,14,1,14,
+ 1,10,1,10,1,10,1,114,30,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,84,0,0,0,116,0,124,0,131,1,1,0,116,1,
+ 131,0,125,1,116,2,106,3,106,4,116,5,106,6,124,1,
+ 140,0,103,1,131,1,1,0,116,7,106,8,100,1,107,2,
+ 114,56,116,2,106,9,106,10,116,11,131,1,1,0,116,2,
+ 106,9,106,10,116,12,131,1,1,0,116,5,124,0,95,5,
+ 116,13,124,0,95,13,100,2,83,0,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,25,1,0,0,78,41,14,114,
+ 30,1,0,0,114,156,0,0,0,114,7,0,0,0,114,251,
+ 0,0,0,114,144,0,0,0,114,3,1,0,0,114,16,1,
+ 0,0,114,3,0,0,0,114,106,0,0,0,218,9,109,101,
+ 116,97,95,112,97,116,104,114,158,0,0,0,114,163,0,0,
+ 0,114,246,0,0,0,114,213,0,0,0,41,2,114,29,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,140,5,
+ 0,0,115,16,0,0,0,0,2,8,1,6,1,20,1,10,
+ 1,12,1,12,4,6,1,114,32,1,0,0,41,3,122,3,
+ 119,105,110,114,1,0,0,0,114,2,0,0,0,41,1,114,
+ 47,0,0,0,41,1,78,41,3,78,78,78,41,3,78,78,
+ 78,41,2,114,60,0,0,0,114,60,0,0,0,41,1,78,
+ 41,1,78,41,56,114,108,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,56,0,0,
+ 0,218,4,116,121,112,101,218,8,95,95,99,111,100,101,95,
+ 95,114,139,0,0,0,114,15,0,0,0,114,129,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,74,0,
+ 0,0,114,73,0,0,0,114,85,0,0,0,114,75,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,80,0,0,0,114,86,0,0,
+ 0,114,92,0,0,0,114,96,0,0,0,114,98,0,0,0,
+ 114,117,0,0,0,114,124,0,0,0,114,136,0,0,0,114,
+ 142,0,0,0,114,145,0,0,0,114,150,0,0,0,218,6,
+ 111,98,106,101,99,116,114,157,0,0,0,114,162,0,0,0,
+ 114,163,0,0,0,114,179,0,0,0,114,189,0,0,0,114,
+ 205,0,0,0,114,213,0,0,0,114,218,0,0,0,114,224,
+ 0,0,0,114,219,0,0,0,114,225,0,0,0,114,244,0,
+ 0,0,114,246,0,0,0,114,3,1,0,0,114,21,1,0,
+ 0,114,156,0,0,0,114,30,1,0,0,114,32,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,4,17,4,3,8,12,8,5,8,
+ 5,8,6,8,12,8,10,8,9,8,5,8,7,10,22,10,
+ 116,16,1,12,2,4,1,4,2,6,2,6,2,8,2,16,
+ 44,8,33,8,19,8,12,8,12,8,28,8,17,10,55,10,
+ 12,10,10,8,14,6,3,4,1,14,65,14,64,14,29,16,
+ 110,14,41,18,45,18,16,4,3,18,53,14,60,14,42,14,
+ 127,0,7,14,127,0,20,10,23,8,11,8,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 0d09371..dac18be 100644
--- a/Python/modsupport.c
+++ b/Python/modsupport.c
@@ -318,7 +318,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;
@@ -351,7 +351,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..6182e80 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -133,7 +133,7 @@ static void *opcode_targets[256] = {
&&TARGET_CALL_FUNCTION,
&&TARGET_MAKE_FUNCTION,
&&TARGET_BUILD_SLICE,
- &&TARGET_MAKE_CLOSURE,
+ &&_unknown_opcode,
&&TARGET_LOAD_CLOSURE,
&&TARGET_LOAD_DEREF,
&&TARGET_STORE_DEREF,
@@ -154,8 +154,8 @@ static void *opcode_targets[256] = {
&&TARGET_BUILD_TUPLE_UNPACK,
&&TARGET_BUILD_SET_UNPACK,
&&TARGET_SETUP_ASYNC_WITH,
- &&_unknown_opcode,
- &&_unknown_opcode,
+ &&TARGET_FORMAT_VALUE,
+ &&TARGET_BUILD_CONST_KEY_MAP,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
diff --git a/Python/peephole.c b/Python/peephole.c
index 4e657fa..62625f7 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -8,8 +8,8 @@
#include "code.h"
#include "symtable.h"
#include "opcode.h"
+#include "wordcode_helpers.h"
-#define GETARG(arr, i) ((int)((arr[i+2]<<8) + arr[i+1]))
#define UNCONDITIONAL_JUMP(op) (op==JUMP_ABSOLUTE || op==JUMP_FORWARD)
#define CONDITIONAL_JUMP(op) (op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \
|| op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
@@ -17,22 +17,15 @@
|| op==POP_JUMP_IF_FALSE || op==POP_JUMP_IF_TRUE \
|| op==JUMP_IF_FALSE_OR_POP || op==JUMP_IF_TRUE_OR_POP)
#define JUMPS_ON_TRUE(op) (op==POP_JUMP_IF_TRUE || op==JUMP_IF_TRUE_OR_POP)
-#define GETJUMPTGT(arr, i) (GETARG(arr,i) + (ABSOLUTE_JUMP(arr[i]) ? 0 : i+3))
-#define SETARG(arr, i, val) do { \
- assert(0 <= val && val <= 0xffff); \
- arr[i+2] = (unsigned char)(((unsigned int)val)>>8); \
- arr[i+1] = (unsigned char)(((unsigned int)val) & 255); \
-} while(0)
-#define CODESIZE(op) (HAS_ARG(op) ? 3 : 1)
-#define ISBASICBLOCK(blocks, start, bytes) \
- (blocks[start]==blocks[start+bytes-1])
+#define GETJUMPTGT(arr, i) (get_arg(arr, i) + (ABSOLUTE_JUMP(arr[i]) ? 0 : i+2))
+#define ISBASICBLOCK(blocks, start, end) \
+ (blocks[start]==blocks[end])
#define CONST_STACK_CREATE() { \
const_stack_size = 256; \
const_stack = PyMem_New(PyObject *, const_stack_size); \
- load_const_stack = PyMem_New(Py_ssize_t, const_stack_size); \
- if (!const_stack || !load_const_stack) { \
+ if (!const_stack) { \
PyErr_NoMemory(); \
goto exitError; \
} \
@@ -41,27 +34,23 @@
#define CONST_STACK_DELETE() do { \
if (const_stack) \
PyMem_Free(const_stack); \
- if (load_const_stack) \
- PyMem_Free(load_const_stack); \
} while(0)
-#define CONST_STACK_LEN() (const_stack_top + 1)
+#define CONST_STACK_LEN() ((unsigned)(const_stack_top + 1))
#define CONST_STACK_PUSH_OP(i) do { \
PyObject *_x; \
assert(codestr[i] == LOAD_CONST); \
- assert(PyList_GET_SIZE(consts) > GETARG(codestr, i)); \
- _x = PyList_GET_ITEM(consts, GETARG(codestr, i)); \
+ assert(PyList_GET_SIZE(consts) > (Py_ssize_t)get_arg(codestr, i)); \
+ _x = PyList_GET_ITEM(consts, get_arg(codestr, i)); \
if (++const_stack_top >= const_stack_size) { \
const_stack_size *= 2; \
PyMem_Resize(const_stack, PyObject *, const_stack_size); \
- PyMem_Resize(load_const_stack, Py_ssize_t, const_stack_size); \
- if (!const_stack || !load_const_stack) { \
+ if (!const_stack) { \
PyErr_NoMemory(); \
goto exitError; \
} \
} \
- load_const_stack[const_stack_top] = i; \
const_stack[const_stack_top] = _x; \
in_consts = 1; \
} while(0)
@@ -70,22 +59,108 @@
const_stack_top = -1; \
} while(0)
-#define CONST_STACK_TOP() \
- const_stack[const_stack_top]
-
#define CONST_STACK_LASTN(i) \
- &const_stack[const_stack_top - i + 1]
+ &const_stack[CONST_STACK_LEN() - i]
#define CONST_STACK_POP(i) do { \
- assert(const_stack_top + 1 >= i); \
+ assert(CONST_STACK_LEN() >= i); \
const_stack_top -= i; \
} while(0)
-#define CONST_STACK_OP_LASTN(i) \
- ((const_stack_top >= i - 1) ? load_const_stack[const_stack_top - i + 1] : -1)
+/* Scans back N consecutive LOAD_CONST instructions, skipping NOPs,
+ returns index of the Nth last's LOAD_CONST's EXTENDED_ARG prefix.
+ Callers are responsible to check CONST_STACK_LEN beforehand.
+*/
+static Py_ssize_t
+lastn_const_start(unsigned char *codestr, Py_ssize_t i, Py_ssize_t n)
+{
+ assert(n > 0 && (i&1) == 0);
+ for (;;) {
+ i -= 2;
+ assert(i >= 0);
+ if (codestr[i] == LOAD_CONST) {
+ if (!--n) {
+ while (i > 0 && codestr[i-2] == EXTENDED_ARG) {
+ i -= 2;
+ }
+ return i;
+ }
+ }
+ else {
+ assert(codestr[i] == NOP || codestr[i] == EXTENDED_ARG);
+ }
+ }
+}
+
+/* Scans through EXTENDED ARGs, seeking the index of the effective opcode */
+static Py_ssize_t
+find_op(unsigned char *codestr, Py_ssize_t i)
+{
+ assert((i&1) == 0);
+ while (codestr[i] == EXTENDED_ARG) {
+ i += 2;
+ }
+ return i;
+}
+
+/* Given the index of the effective opcode,
+ scan back to construct the oparg with EXTENDED_ARG */
+static unsigned int
+get_arg(unsigned char *codestr, Py_ssize_t i)
+{
+ unsigned int oparg = codestr[i+1];
+ assert((i&1) == 0);
+ if (i >= 2 && codestr[i-2] == EXTENDED_ARG) {
+ oparg |= codestr[i-1] << 8;
+ if (i >= 4 && codestr[i-4] == EXTENDED_ARG) {
+ oparg |= codestr[i-3] << 16;
+ if (i >= 6 && codestr[i-6] == EXTENDED_ARG) {
+ oparg |= codestr[i-5] << 24;
+ }
+ }
+ }
+ return oparg;
+}
+
+/* Given the index of the effective opcode,
+ attempt to replace the argument, taking into account EXTENDED_ARG.
+ Returns -1 on failure, or the new op index on success */
+static Py_ssize_t
+set_arg(unsigned char *codestr, Py_ssize_t i, unsigned int oparg)
+{
+ unsigned int curarg = get_arg(codestr, i);
+ int curilen, newilen;
+ if (curarg == oparg)
+ return i;
+ curilen = instrsize(curarg);
+ newilen = instrsize(oparg);
+ if (curilen < newilen) {
+ return -1;
+ }
+
+ write_op_arg(codestr + i + 2 - curilen, codestr[i], oparg, newilen);
+ memset(codestr + i + 2 - curilen + newilen, NOP, curilen - newilen);
+ return i-curilen+newilen;
+}
+/* Attempt to write op/arg at end of specified region of memory.
+ Preceding memory in the region is overwritten with NOPs.
+ Returns -1 on failure, op index on success */
+static Py_ssize_t
+copy_op_arg(unsigned char *codestr, Py_ssize_t i, unsigned char op,
+ unsigned int oparg, Py_ssize_t maxi)
+{
+ int ilen = instrsize(oparg);
+ assert((i&1) == 0);
+ if (i + ilen > maxi) {
+ return -1;
+ }
+ write_op_arg(codestr + maxi - ilen, op, oparg, ilen);
+ memset(codestr + i, NOP, maxi - i - ilen);
+ return maxi - 2;
+}
-/* Replace LOAD_CONST c1. LOAD_CONST c2 ... LOAD_CONST cn BUILD_TUPLE n
+/* Replace LOAD_CONST c1, LOAD_CONST c2 ... LOAD_CONST cn, BUILD_TUPLE n
with LOAD_CONST (c1, c2, ... cn).
The consts table must still be in list form so that the
new constant (c1, c2, ... cn) can be appended.
@@ -94,9 +169,10 @@
Also works for BUILD_LIST and BUILT_SET when followed by an "in" or "not in"
test; for BUILD_SET it assembles a frozenset rather than a tuple.
*/
-static int
-tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
- PyObject *consts, PyObject **objs)
+static Py_ssize_t
+fold_tuple_on_constants(unsigned char *codestr, Py_ssize_t c_start,
+ Py_ssize_t opcode_end, unsigned char opcode,
+ PyObject *consts, PyObject **objs, int n)
{
PyObject *newconst, *constant;
Py_ssize_t i, len_consts;
@@ -106,9 +182,9 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
/* Buildup new tuple of constants */
newconst = PyTuple_New(n);
- if (newconst == NULL)
- return 0;
- len_consts = PyList_GET_SIZE(consts);
+ if (newconst == NULL) {
+ return -1;
+ }
for (i=0 ; i<n ; i++) {
constant = objs[i];
Py_INCREF(constant);
@@ -116,30 +192,26 @@ 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);
- if (newconst == NULL)
- return 0;
+ PyFrozenSet, and use that as the constant instead: */
+ if (opcode == BUILD_SET) {
+ Py_SETREF(newconst, PyFrozenSet_New(newconst));
+ if (newconst == NULL) {
+ return -1;
+ }
}
/* Append folded constant onto consts */
+ len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst);
- return 0;
+ return -1;
}
Py_DECREF(newconst);
- /* Write NOPs over old LOAD_CONSTS and
- add a new LOAD_CONST newconst on top of the BUILD_TUPLE n */
- codestr[0] = LOAD_CONST;
- SETARG(codestr, 0, len_consts);
- return 1;
+ return copy_op_arg(codestr, c_start, LOAD_CONST, len_consts, opcode_end);
}
-/* Replace LOAD_CONST c1. LOAD_CONST c2 BINOP
+/* Replace LOAD_CONST c1, LOAD_CONST c2, BINOP
with LOAD_CONST binop(c1,c2)
The consts table must still be in list form so that the
new constant can be appended.
@@ -149,20 +221,21 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
is below a threshold value. That keeps pyc files from
becoming large in the presence of code like: (None,)*1000.
*/
-static int
-fold_binops_on_constants(unsigned char *codestr, PyObject *consts, PyObject **objs)
+static Py_ssize_t
+fold_binops_on_constants(unsigned char *codestr, Py_ssize_t c_start,
+ Py_ssize_t opcode_end, unsigned char opcode,
+ PyObject *consts, PyObject **objs)
{
PyObject *newconst, *v, *w;
Py_ssize_t len_consts, size;
- int opcode;
/* Pre-conditions */
assert(PyList_CheckExact(consts));
+ len_consts = PyList_GET_SIZE(consts);
/* Create new constant */
v = objs[0];
w = objs[1];
- opcode = codestr[0];
switch (opcode) {
case BINARY_POWER:
newconst = PyNumber_Power(v, w, Py_None);
@@ -208,50 +281,48 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts, PyObject **ob
PyErr_Format(PyExc_SystemError,
"unexpected binary operation %d on a constant",
opcode);
- return 0;
+ return -1;
}
if (newconst == NULL) {
- if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt))
+ if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
PyErr_Clear();
- return 0;
+ }
+ return -1;
}
size = PyObject_Size(newconst);
if (size == -1) {
- if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt))
- return 0;
+ if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
+ return -1;
+ }
PyErr_Clear();
} else if (size > 20) {
Py_DECREF(newconst);
- return 0;
+ return -1;
}
/* Append folded constant into consts table */
- len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst);
- return 0;
+ return -1;
}
Py_DECREF(newconst);
- /* Write NOP NOP NOP NOP LOAD_CONST newconst */
- codestr[-2] = LOAD_CONST;
- SETARG(codestr, -2, len_consts);
- return 1;
+ return copy_op_arg(codestr, c_start, LOAD_CONST, len_consts, opcode_end);
}
-static int
-fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts, PyObject *v)
+static Py_ssize_t
+fold_unaryops_on_constants(unsigned char *codestr, Py_ssize_t c_start,
+ Py_ssize_t opcode_end, unsigned char opcode,
+ PyObject *consts, PyObject *v)
{
PyObject *newconst;
Py_ssize_t len_consts;
- int opcode;
/* Pre-conditions */
assert(PyList_CheckExact(consts));
- assert(codestr[0] == LOAD_CONST);
+ len_consts = PyList_GET_SIZE(consts);
/* Create new constant */
- opcode = codestr[3];
switch (opcode) {
case UNARY_NEGATIVE:
newconst = PyNumber_Negative(v);
@@ -267,35 +338,31 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts, PyObject *v
PyErr_Format(PyExc_SystemError,
"unexpected unary operation %d on a constant",
opcode);
- return 0;
+ return -1;
}
if (newconst == NULL) {
- if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt))
+ if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) {
PyErr_Clear();
- return 0;
+ }
+ return -1;
}
/* Append folded constant into consts table */
- len_consts = PyList_GET_SIZE(consts);
if (PyList_Append(consts, newconst)) {
Py_DECREF(newconst);
PyErr_Clear();
- return 0;
+ return -1;
}
Py_DECREF(newconst);
- /* Write NOP LOAD_CONST newconst */
- codestr[0] = NOP;
- codestr[1] = LOAD_CONST;
- SETARG(codestr, 1, len_consts);
- return 1;
+ return copy_op_arg(codestr, c_start, LOAD_CONST, len_consts, opcode_end);
}
static unsigned int *
markblocks(unsigned char *code, Py_ssize_t len)
{
unsigned int *blocks = PyMem_New(unsigned int, len);
- int i,j, opcode, blockcnt = 0;
+ int i, j, opcode, blockcnt = 0;
if (blocks == NULL) {
PyErr_NoMemory();
@@ -304,7 +371,7 @@ markblocks(unsigned char *code, Py_ssize_t len)
memset(blocks, 0, len*sizeof(int));
/* Mark labels in the first pass */
- for (i=0 ; i<len ; i+=CODESIZE(opcode)) {
+ for (i=0 ; i<len ; i+=2) {
opcode = code[i];
switch (opcode) {
case FOR_ITER:
@@ -326,7 +393,7 @@ markblocks(unsigned char *code, Py_ssize_t len)
}
}
/* Build block numbers in the second pass */
- for (i=0 ; i<len ; i++) {
+ for (i=0 ; i<len ; i+=2) {
blockcnt += blocks[i]; /* increment blockcnt over labels */
blocks[i] = blockcnt;
}
@@ -337,33 +404,27 @@ markblocks(unsigned char *code, Py_ssize_t len)
The consts object should still be in list form to allow new constants
to be appended.
- To keep the optimizer simple, it bails out (does nothing) for code that
- has a length over 32,700, and does not calculate extended arguments.
- That allows us to avoid overflow and sign issues. Likewise, it bails when
- the lineno table has complex encoding for gaps >= 255. EXTENDED_ARG can
- appear before MAKE_FUNCTION; in this case both opcodes are skipped.
- EXTENDED_ARG preceding any other opcode causes the optimizer to bail.
+ To keep the optimizer simple, it bails when the lineno table has complex
+ encoding for gaps >= 255.
Optimizations are restricted to simple transformations occurring within a
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. */
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;
+ Py_ssize_t h, i, nexti, op_start, codelen, tgt;
+ unsigned int j, nops;
+ unsigned char opcode, nextop;
unsigned char *codestr = NULL;
- unsigned char *lineno;
- int *addrmap = NULL;
- int new_line, cum_orig_line, last_line;
+ unsigned char *lnotab;
+ unsigned int cum_orig_offset, last_offset;
Py_ssize_t tabsiz;
PyObject **const_stack = NULL;
- Py_ssize_t *load_const_stack = NULL;
Py_ssize_t const_stack_top = -1;
Py_ssize_t const_stack_size = 0;
int in_consts = 0; /* whether we are in a LOAD_CONST sequence */
@@ -373,18 +434,21 @@ 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));
codelen = PyBytes_GET_SIZE(code);
- if (codelen > 32700)
- goto exitUnchanged;
+ assert(codelen % 2 == 0);
/* Make a modifiable copy of the code string */
codestr = (unsigned char *)PyMem_Malloc(codelen);
@@ -395,21 +459,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
codestr = (unsigned char *)memcpy(codestr,
PyBytes_AS_STRING(code), codelen);
- /* Verify that RETURN_VALUE terminates the codestring. This allows
- the various transformation patterns to look ahead several
- instructions without additional checks to make sure they are not
- looking beyond the end of the code string.
- */
- if (codestr[codelen-1] != RETURN_VALUE)
- goto exitUnchanged;
-
- /* Mapping to new jump targets after NOPs are removed */
- addrmap = PyMem_New(int, codelen);
- if (addrmap == NULL) {
- PyErr_NoMemory();
- goto exitError;
- }
-
blocks = markblocks(codestr, codelen);
if (blocks == NULL)
goto exitError;
@@ -417,9 +466,17 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
CONST_STACK_CREATE();
- for (i=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
- reoptimize_current:
+ for (i=find_op(codestr, 0) ; i<codelen ; i=nexti) {
opcode = codestr[i];
+ op_start = i;
+ while (op_start >= 2 && codestr[op_start-2] == EXTENDED_ARG) {
+ op_start -= 2;
+ }
+
+ nexti = i + 2;
+ while (nexti < codelen && codestr[nexti] == EXTENDED_ARG)
+ nexti += 2;
+ nextop = nexti < codelen ? codestr[nexti] : 0;
if (!in_consts) {
CONST_STACK_RESET();
@@ -430,14 +487,12 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
/* Replace UNARY_NOT POP_JUMP_IF_FALSE
with POP_JUMP_IF_TRUE */
case UNARY_NOT:
- if (codestr[i+1] != POP_JUMP_IF_FALSE
- || !ISBASICBLOCK(blocks,i,4))
- continue;
- j = GETARG(codestr, i+1);
- codestr[i] = POP_JUMP_IF_TRUE;
- SETARG(codestr, i, j);
- codestr[i+3] = NOP;
- goto reoptimize_current;
+ if (nextop != POP_JUMP_IF_FALSE
+ || !ISBASICBLOCK(blocks, op_start, i+2))
+ break;
+ memset(codestr + op_start, NOP, i - op_start + 2);
+ codestr[nexti] = POP_JUMP_IF_TRUE;
+ break;
/* not a is b --> a is not b
not a in b --> a not in b
@@ -445,78 +500,79 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
not a not in b --> a in b
*/
case COMPARE_OP:
- j = GETARG(codestr, i);
- if (j < 6 || j > 9 ||
- codestr[i+3] != UNARY_NOT ||
- !ISBASICBLOCK(blocks,i,4))
- continue;
- SETARG(codestr, i, (j^1));
- codestr[i+3] = NOP;
+ j = get_arg(codestr, i);
+ if (j < 6 || j > 9 ||
+ nextop != UNARY_NOT ||
+ !ISBASICBLOCK(blocks, op_start, i + 2))
+ break;
+ codestr[i+1] = (j^1);
+ memset(codestr + i + 2, NOP, nexti - i);
break;
/* Skip over LOAD_CONST trueconst
- POP_JUMP_IF_FALSE xx. This improves
- "while 1" performance. */
+ POP_JUMP_IF_FALSE xx. This improves
+ "while 1" performance. */
case LOAD_CONST:
CONST_STACK_PUSH_OP(i);
- j = GETARG(codestr, i);
- if (codestr[i+3] != POP_JUMP_IF_FALSE ||
- !ISBASICBLOCK(blocks,i,6) ||
- !PyObject_IsTrue(PyList_GET_ITEM(consts, j)))
- continue;
- memset(codestr+i, NOP, 6);
- CONST_STACK_RESET();
+ if (nextop != POP_JUMP_IF_FALSE ||
+ !ISBASICBLOCK(blocks, op_start, i + 2) ||
+ !PyObject_IsTrue(PyList_GET_ITEM(consts, get_arg(codestr, i))))
+ break;
+ memset(codestr + op_start, NOP, nexti - op_start + 2);
+ CONST_STACK_POP(1);
break;
- /* Try to fold tuples of constants (includes a case for lists and sets
- which are only used for "in" and "not in" tests).
+ /* Try to fold tuples of constants (includes a case for lists
+ and sets which are only used for "in" and "not in" tests).
Skip over BUILD_SEQN 1 UNPACK_SEQN 1.
Replace BUILD_SEQN 2 UNPACK_SEQN 2 with ROT2.
Replace BUILD_SEQN 3 UNPACK_SEQN 3 with ROT3 ROT2. */
case BUILD_TUPLE:
case BUILD_LIST:
case BUILD_SET:
- j = GETARG(codestr, i);
- if (j == 0)
- break;
- h = CONST_STACK_OP_LASTN(j);
- assert((h >= 0 || CONST_STACK_LEN() < j));
- if (h >= 0 && j > 0 && j <= CONST_STACK_LEN() &&
- ((opcode == BUILD_TUPLE &&
- ISBASICBLOCK(blocks, h, i-h+3)) ||
- ((opcode == BUILD_LIST || opcode == BUILD_SET) &&
- codestr[i+3]==COMPARE_OP &&
- ISBASICBLOCK(blocks, h, i-h+6) &&
- (GETARG(codestr,i+3)==6 ||
- GETARG(codestr,i+3)==7))) &&
- tuple_of_constants(&codestr[i], j, consts, CONST_STACK_LASTN(j))) {
- assert(codestr[i] == LOAD_CONST);
- memset(&codestr[h], NOP, i - h);
- CONST_STACK_POP(j);
- CONST_STACK_PUSH_OP(i);
- break;
+ j = get_arg(codestr, i);
+ if (j > 0 && CONST_STACK_LEN() >= j) {
+ h = lastn_const_start(codestr, op_start, j);
+ if ((opcode == BUILD_TUPLE &&
+ ISBASICBLOCK(blocks, h, op_start)) ||
+ ((opcode == BUILD_LIST || opcode == BUILD_SET) &&
+ ((nextop==COMPARE_OP &&
+ (codestr[nexti+1]==6 ||
+ codestr[nexti+1]==7)) ||
+ nextop == GET_ITER) && ISBASICBLOCK(blocks, h, i + 2))) {
+ h = fold_tuple_on_constants(codestr, h, i+2, opcode,
+ consts, CONST_STACK_LASTN(j), j);
+ if (h >= 0) {
+ CONST_STACK_POP(j);
+ CONST_STACK_PUSH_OP(h);
+ }
+ break;
+ }
}
- if (codestr[i+3] != UNPACK_SEQUENCE ||
- !ISBASICBLOCK(blocks,i,6) ||
- j != GETARG(codestr, i+3) ||
+ if (nextop != UNPACK_SEQUENCE ||
+ !ISBASICBLOCK(blocks, op_start, i + 2) ||
+ j != get_arg(codestr, nexti) ||
opcode == BUILD_SET)
- continue;
- if (j == 1) {
- memset(codestr+i, NOP, 6);
+ break;
+ if (j < 2) {
+ memset(codestr+op_start, NOP, nexti - op_start + 2);
} else if (j == 2) {
- codestr[i] = ROT_TWO;
- memset(codestr+i+1, NOP, 5);
+ codestr[op_start] = ROT_TWO;
+ codestr[op_start + 1] = 0;
+ memset(codestr + op_start + 2, NOP, nexti - op_start);
CONST_STACK_RESET();
} else if (j == 3) {
- codestr[i] = ROT_THREE;
- codestr[i+1] = ROT_TWO;
- memset(codestr+i+2, NOP, 4);
+ codestr[op_start] = ROT_THREE;
+ codestr[op_start + 1] = 0;
+ codestr[op_start + 2] = ROT_TWO;
+ codestr[op_start + 3] = 0;
+ memset(codestr + op_start + 4, NOP, nexti - op_start - 2);
CONST_STACK_RESET();
}
break;
/* Fold binary ops on constants.
- LOAD_CONST c1 LOAD_CONST c2 BINOP --> LOAD_CONST binop(c1,c2) */
+ LOAD_CONST c1 LOAD_CONST c2 BINOP --> LOAD_CONST binop(c1,c2) */
case BINARY_POWER:
case BINARY_MULTIPLY:
case BINARY_TRUE_DIVIDE:
@@ -530,35 +586,34 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case BINARY_AND:
case BINARY_XOR:
case BINARY_OR:
- /* NOTE: LOAD_CONST is saved at `i-2` since it has an arg
- while BINOP hasn't */
- h = CONST_STACK_OP_LASTN(2);
- assert((h >= 0 || CONST_STACK_LEN() < 2));
- if (h >= 0 &&
- ISBASICBLOCK(blocks, h, i-h+1) &&
- fold_binops_on_constants(&codestr[i], consts, CONST_STACK_LASTN(2))) {
- i -= 2;
- memset(&codestr[h], NOP, i - h);
- assert(codestr[i] == LOAD_CONST);
- CONST_STACK_POP(2);
- CONST_STACK_PUSH_OP(i);
+ if (CONST_STACK_LEN() < 2)
+ break;
+ h = lastn_const_start(codestr, op_start, 2);
+ if (ISBASICBLOCK(blocks, h, op_start)) {
+ h = fold_binops_on_constants(codestr, h, i+2, opcode,
+ consts, CONST_STACK_LASTN(2));
+ if (h >= 0) {
+ CONST_STACK_POP(2);
+ CONST_STACK_PUSH_OP(h);
+ }
}
break;
/* Fold unary ops on constants.
- LOAD_CONST c1 UNARY_OP --> LOAD_CONST unary_op(c) */
+ LOAD_CONST c1 UNARY_OP --> LOAD_CONST unary_op(c) */
case UNARY_NEGATIVE:
case UNARY_INVERT:
case UNARY_POSITIVE:
- h = CONST_STACK_OP_LASTN(1);
- assert((h >= 0 || CONST_STACK_LEN() < 1));
- if (h >= 0 &&
- ISBASICBLOCK(blocks, h, i-h+1) &&
- fold_unaryops_on_constants(&codestr[i-3], consts, CONST_STACK_TOP())) {
- i -= 2;
- assert(codestr[i] == LOAD_CONST);
- CONST_STACK_POP(1);
- CONST_STACK_PUSH_OP(i);
+ if (CONST_STACK_LEN() < 1)
+ break;
+ h = lastn_const_start(codestr, op_start, 1);
+ if (ISBASICBLOCK(blocks, h, op_start)) {
+ h = fold_unaryops_on_constants(codestr, h, i+2, opcode,
+ consts, *CONST_STACK_LASTN(1));
+ if (h >= 0) {
+ CONST_STACK_POP(1);
+ CONST_STACK_PUSH_OP(h);
+ }
}
break;
@@ -573,25 +628,24 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_FALSE_OR_POP z
--> x:JUMP_IF_FALSE_OR_POP z
x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_TRUE_OR_POP z
- --> x:POP_JUMP_IF_FALSE y+3
- where y+3 is the instruction following the second test.
+ --> x:POP_JUMP_IF_FALSE y+2
+ where y+2 is the instruction following the second test.
*/
case JUMP_IF_FALSE_OR_POP:
case JUMP_IF_TRUE_OR_POP:
- tgt = GETJUMPTGT(codestr, i);
+ h = get_arg(codestr, i);
+ tgt = find_op(codestr, h);
+
j = codestr[tgt];
if (CONDITIONAL_JUMP(j)) {
/* NOTE: all possible jumps here are
absolute! */
if (JUMPS_ON_TRUE(j) == JUMPS_ON_TRUE(opcode)) {
/* The second jump will be
- taken iff the first is. */
- tgttgt = GETJUMPTGT(codestr, tgt);
- /* The current opcode inherits
- its target's stack behaviour */
- codestr[i] = j;
- SETARG(codestr, i, tgttgt);
- goto reoptimize_current;
+ taken iff the first is.
+ The current opcode inherits
+ its target's stack effect */
+ h = set_arg(codestr, i, get_arg(codestr, tgt));
} else {
/* The second jump is not taken
if the first is (so jump past
@@ -600,12 +654,15 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
they're not taken (so change
the first jump to pop its
argument when it's taken). */
- if (JUMPS_ON_TRUE(opcode))
- codestr[i] = POP_JUMP_IF_TRUE;
- else
- codestr[i] = POP_JUMP_IF_FALSE;
- SETARG(codestr, i, (tgt + 3));
- goto reoptimize_current;
+ h = set_arg(codestr, i, tgt + 2);
+ j = opcode == JUMP_IF_TRUE_OR_POP ?
+ POP_JUMP_IF_TRUE : POP_JUMP_IF_FALSE;
+ }
+
+ if (h >= 0) {
+ nexti = h;
+ codestr[nexti] = j;
+ break;
}
}
/* Intentional fallthrough */
@@ -622,73 +679,73 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case SETUP_FINALLY:
case SETUP_WITH:
case SETUP_ASYNC_WITH:
- tgt = GETJUMPTGT(codestr, i);
+ h = GETJUMPTGT(codestr, i);
+ tgt = find_op(codestr, h);
/* Replace JUMP_* to a RETURN into just a RETURN */
if (UNCONDITIONAL_JUMP(opcode) &&
codestr[tgt] == RETURN_VALUE) {
- codestr[i] = RETURN_VALUE;
- memset(codestr+i+1, NOP, 2);
- continue;
+ codestr[op_start] = RETURN_VALUE;
+ codestr[op_start + 1] = 0;
+ memset(codestr + op_start + 2, NOP, i - op_start);
+ } else if (UNCONDITIONAL_JUMP(codestr[tgt])) {
+ j = GETJUMPTGT(codestr, tgt);
+ if (opcode == JUMP_FORWARD) { /* JMP_ABS can go backwards */
+ opcode = JUMP_ABSOLUTE;
+ } else if (!ABSOLUTE_JUMP(opcode)) {
+ if ((Py_ssize_t)j < i + 2) {
+ break; /* No backward relative jumps */
+ }
+ j -= i + 2; /* Calc relative jump addr */
+ }
+ copy_op_arg(codestr, op_start, opcode, j, i+2);
}
- if (!UNCONDITIONAL_JUMP(codestr[tgt]))
- continue;
- tgttgt = GETJUMPTGT(codestr, tgt);
- if (opcode == JUMP_FORWARD) /* JMP_ABS can go backwards */
- opcode = JUMP_ABSOLUTE;
- if (!ABSOLUTE_JUMP(opcode))
- tgttgt -= i + 3; /* Calc relative jump addr */
- if (tgttgt < 0) /* No backward relative jumps */
- continue;
- codestr[i] = opcode;
- SETARG(codestr, i, tgttgt);
- break;
-
- case EXTENDED_ARG:
- if (codestr[i+3] != MAKE_FUNCTION)
- goto exitUnchanged;
- /* don't visit MAKE_FUNCTION as GETARG will be wrong */
- i += 3;
break;
- /* Replace RETURN LOAD_CONST None RETURN with just RETURN */
- /* Remove unreachable JUMPs after RETURN */
+ /* Remove unreachable ops after RETURN */
case RETURN_VALUE:
- if (i+4 >= codelen)
- continue;
- if (codestr[i+4] == RETURN_VALUE &&
- ISBASICBLOCK(blocks,i,5))
- memset(codestr+i+1, NOP, 4);
- else if (UNCONDITIONAL_JUMP(codestr[i+1]) &&
- ISBASICBLOCK(blocks,i,4))
- memset(codestr+i+1, NOP, 3);
+ h = i + 2;
+ while (h + 2 < codelen && ISBASICBLOCK(blocks, i, h + 2)) {
+ h += 2;
+ }
+ if (h > i + 2) {
+ memset(codestr + i + 2, NOP, h - i);
+ nexti = find_op(codestr, h);
+ }
break;
}
}
- /* Fixup linenotab */
- for (i=0, nops=0 ; i<codelen ; i += CODESIZE(codestr[i])) {
+ /* Fixup lnotab */
+ for (i=0, nops=0 ; i<codelen ; i += 2) {
assert(i - nops <= INT_MAX);
- addrmap[i] = (int)(i - nops);
+ /* original code offset => new code offset */
+ blocks[i] = i - nops;
if (codestr[i] == NOP)
- nops++;
+ nops += 2;
}
- 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;
+ unsigned int offset_delta, new_offset;
+ cum_orig_offset += lnotab[i];
+ assert((cum_orig_offset & 1) == 0);
+ new_offset = blocks[cum_orig_offset];
+ offset_delta = new_offset - last_offset;
+ assert(offset_delta <= 255);
+ lnotab[i] = (unsigned char)offset_delta;
+ last_offset = new_offset;
}
/* Remove NOPs and fixup jump targets */
- for (i=0, h=0 ; i<codelen ; ) {
+ for (op_start=0, i=0, h=0 ; i<codelen ; i+=2, op_start=i) {
+ j = codestr[i+1];
+ while (codestr[i] == EXTENDED_ARG) {
+ i += 2;
+ j = j<<8 | codestr[i+1];
+ }
opcode = codestr[i];
switch (opcode) {
- case NOP:
- i++;
- continue;
+ case NOP:continue;
case JUMP_ABSOLUTE:
case CONTINUE_LOOP:
@@ -696,8 +753,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case POP_JUMP_IF_TRUE:
case JUMP_IF_FALSE_OR_POP:
case JUMP_IF_TRUE_OR_POP:
- j = addrmap[GETARG(codestr, i)];
- SETARG(codestr, i, j);
+ j = blocks[j];
break;
case FOR_ITER:
@@ -707,34 +763,31 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
case SETUP_FINALLY:
case SETUP_WITH:
case SETUP_ASYNC_WITH:
- j = addrmap[GETARG(codestr, i) + i + 3] - addrmap[i] - 3;
- SETARG(codestr, i, j);
+ j = blocks[j + i + 2] - blocks[i] - 2;
break;
}
- adj = CODESIZE(opcode);
- while (adj--)
- codestr[h++] = codestr[i++];
+ nexti = i - op_start + 2;
+ if (instrsize(j) > nexti)
+ goto exitUnchanged;
+ /* If instrsize(j) < nexti, we'll emit EXTENDED_ARG 0 */
+ write_op_arg(codestr + h, opcode, j, nexti);
+ h += nexti;
}
- assert(h + nops == codelen);
+ assert(h + (Py_ssize_t)nops == codelen);
- code = PyBytes_FromStringAndSize((char *)codestr, h);
CONST_STACK_DELETE();
- PyMem_Free(addrmap);
- PyMem_Free(codestr);
PyMem_Free(blocks);
+ code = PyBytes_FromStringAndSize((char *)codestr, h);
+ PyMem_Free(codestr);
return code;
exitError:
code = NULL;
exitUnchanged:
- CONST_STACK_DELETE();
- if (blocks != NULL)
- PyMem_Free(blocks);
- if (addrmap != NULL)
- PyMem_Free(addrmap);
- if (codestr != NULL)
- PyMem_Free(codestr);
Py_XINCREF(code);
+ CONST_STACK_DELETE();
+ PyMem_Free(blocks);
+ PyMem_Free(codestr);
return code;
}
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index ce52990..7187fe4 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.
@@ -223,6 +223,8 @@ get_locale_encoding(void)
return NULL;
}
return get_codec_name(codeset);
+#elif defined(__ANDROID__)
+ return get_codec_name("UTF-8");
#else
PyErr_SetNone(PyExc_NotImplementedError);
return NULL;
@@ -327,11 +329,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 +479,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 +524,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 +557,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 +588,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 +694,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 +705,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 +746,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 +806,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 +832,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 +1001,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 +1014,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 +1045,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 +1276,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 +1481,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..ba4dd4c 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -25,7 +25,7 @@ to avoid the expense of doing their own locking).
#ifdef HAVE_DLFCN_H
#include <dlfcn.h>
#endif
-#ifndef RTLD_LAZY
+#if !HAVE_DECL_RTLD_LAZY
#define RTLD_LAZY 1
#endif
#endif
@@ -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 */
@@ -89,7 +91,7 @@ PyInterpreterState_New(void)
interp->fscodec_initialized = 0;
interp->importlib = NULL;
#ifdef HAVE_DLOPEN
-#ifdef RTLD_NOW
+#if HAVE_DECL_RTLD_NOW
interp->dlopenflags = RTLD_NOW;
#else
interp->dlopenflags = RTLD_LAZY;
@@ -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 7fbf06e..678ebfe 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 b961020..cbdebbe 100644
--- a/Python/random.c
+++ b/Python/random.c
@@ -132,11 +132,14 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
* see https://bugs.python.org/issue26839. To avoid this, use the
* GRND_NONBLOCK flag. */
const int flags = GRND_NONBLOCK;
+
+ char *dest;
int n;
if (!getrandom_works)
return 0;
+ dest = buffer;
while (0 < size) {
#ifdef sun
/* Issue #26735: On Solaris, getrandom() is limited to returning up
@@ -150,11 +153,11 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
#ifdef HAVE_GETRANDOM
if (raise) {
Py_BEGIN_ALLOW_THREADS
- n = getrandom(buffer, n, flags);
+ n = getrandom(dest, n, flags);
Py_END_ALLOW_THREADS
}
else {
- n = getrandom(buffer, n, flags);
+ n = getrandom(dest, n, flags);
}
#else
/* On Linux, use the syscall() function because the GNU libc doesn't
@@ -162,11 +165,11 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
* https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
if (raise) {
Py_BEGIN_ALLOW_THREADS
- n = syscall(SYS_getrandom, buffer, n, flags);
+ n = syscall(SYS_getrandom, dest, n, flags);
Py_END_ALLOW_THREADS
}
else {
- n = syscall(SYS_getrandom, buffer, n, flags);
+ n = syscall(SYS_getrandom, dest, n, flags);
}
#endif
@@ -204,7 +207,7 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
return -1;
}
- buffer += n;
+ dest += n;
size -= n;
}
return 1;
@@ -404,7 +407,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 1591a20..3f03184 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..56175d9 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -20,6 +20,7 @@ Data members:
#include "pythread.h"
#include "osdefs.h"
+#include <locale.h>
#ifdef MS_WINDOWS
#define WIN32_LEAN_AND_MEAN
@@ -33,7 +34,6 @@ extern const char *PyWin_DLLVersionString;
#endif
#ifdef HAVE_LANGINFO_H
-#include <locale.h>
#include <langinfo.h>
#endif
@@ -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
@@ -1696,6 +1693,16 @@ make_impl_info(PyObject *version_info)
if (res < 0)
goto error;
+#ifdef MULTIARCH
+ value = PyUnicode_FromString(MULTIARCH);
+ if (value == NULL)
+ goto error;
+ res = PyDict_SetItemString(impl_info, "_multiarch", value);
+ Py_DECREF(value);
+ if (res < 0)
+ goto error;
+#endif
+
/* dict ready */
ns = _PyNamespace_New(impl_info);
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++;
diff --git a/Python/wordcode_helpers.h b/Python/wordcode_helpers.h
new file mode 100644
index 0000000..b61ba33
--- /dev/null
+++ b/Python/wordcode_helpers.h
@@ -0,0 +1,38 @@
+/* This file contains code shared by the compiler and the peephole
+ optimizer.
+ */
+
+/* Minimum number of bytes necessary to encode instruction with EXTENDED_ARGs */
+static int
+instrsize(unsigned int oparg)
+{
+ return oparg <= 0xff ? 2 :
+ oparg <= 0xffff ? 4 :
+ oparg <= 0xffffff ? 6 :
+ 8;
+}
+
+/* Spits out op/oparg pair using ilen bytes. codestr should be pointed at the
+ desired location of the first EXTENDED_ARG */
+static void
+write_op_arg(unsigned char *codestr, unsigned char opcode,
+ unsigned int oparg, int ilen)
+{
+ switch (ilen) {
+ case 8:
+ *codestr++ = EXTENDED_ARG;
+ *codestr++ = (oparg >> 24) & 0xff;
+ case 6:
+ *codestr++ = EXTENDED_ARG;
+ *codestr++ = (oparg >> 16) & 0xff;
+ case 4:
+ *codestr++ = EXTENDED_ARG;
+ *codestr++ = (oparg >> 8) & 0xff;
+ case 2:
+ *codestr++ = opcode;
+ *codestr++ = oparg & 0xff;
+ break;
+ default:
+ assert(0);
+ }
+}