summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/Python-ast.c370
-rw-r--r--Python/_warnings.c84
-rw-r--r--Python/asdl.c4
-rw-r--r--Python/ast.c237
-rw-r--r--Python/bltinmodule.c103
-rw-r--r--Python/ceval.c2254
-rw-r--r--Python/codecs.c16
-rw-r--r--Python/compile.c328
-rw-r--r--Python/condvar.h2
-rw-r--r--Python/dynload_aix.c12
-rw-r--r--Python/dynload_os2.c42
-rw-r--r--Python/dynload_shlib.c36
-rw-r--r--Python/errors.c215
-rw-r--r--Python/fileutils.c380
-rw-r--r--Python/formatter_unicode.c19
-rw-r--r--Python/frozen.c4
-rw-r--r--Python/frozenmain.c58
-rw-r--r--Python/future.c53
-rw-r--r--Python/getargs.c67
-rw-r--r--Python/getcwd.c83
-rw-r--r--Python/import.c258
-rw-r--r--Python/importdl.c2
-rw-r--r--Python/importdl.h5
-rw-r--r--Python/importlib.h7699
-rw-r--r--Python/marshal.c766
-rw-r--r--Python/mystrtoul.c32
-rw-r--r--Python/opcode_targets.h4
-rw-r--r--Python/peephole.c54
-rw-r--r--Python/pyarena.c12
-rw-r--r--Python/pystate.c127
-rw-r--r--Python/pystrtod.c6
-rw-r--r--Python/pythonrun.c284
-rw-r--r--Python/random.c90
-rw-r--r--Python/strdup.c2
-rw-r--r--Python/symtable.c187
-rw-r--r--Python/sysmodule.c117
-rw-r--r--Python/thread.c18
-rw-r--r--Python/thread_nt.h10
-rw-r--r--Python/thread_os2.h267
-rw-r--r--Python/thread_pth.h177
-rw-r--r--Python/thread_pthread.h12
-rw-r--r--Python/traceback.c22
42 files changed, 7162 insertions, 7356 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 7bf2c50..e07a93f 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -271,6 +271,10 @@ static PyTypeObject *Bytes_type;
static char *Bytes_fields[]={
"s",
};
+static PyTypeObject *NameConstant_type;
+static char *NameConstant_fields[]={
+ "value",
+};
static PyTypeObject *Ellipsis_type;
static PyTypeObject *Attribute_type;
_Py_IDENTIFIER(attr);
@@ -408,24 +412,24 @@ static char *ExceptHandler_fields[]={
static PyTypeObject *arguments_type;
static PyObject* ast2obj_arguments(void*);
_Py_IDENTIFIER(vararg);
-_Py_IDENTIFIER(varargannotation);
_Py_IDENTIFIER(kwonlyargs);
+_Py_IDENTIFIER(kw_defaults);
_Py_IDENTIFIER(kwarg);
-_Py_IDENTIFIER(kwargannotation);
_Py_IDENTIFIER(defaults);
-_Py_IDENTIFIER(kw_defaults);
static char *arguments_fields[]={
"args",
"vararg",
- "varargannotation",
"kwonlyargs",
+ "kw_defaults",
"kwarg",
- "kwargannotation",
"defaults",
- "kw_defaults",
};
static PyTypeObject *arg_type;
static PyObject* ast2obj_arg(void*);
+static char *arg_attributes[] = {
+ "lineno",
+ "col_offset",
+};
_Py_IDENTIFIER(arg);
_Py_IDENTIFIER(annotation);
static char *arg_fields[]={
@@ -673,6 +677,7 @@ static PyObject* ast2obj_object(void *o)
Py_INCREF((PyObject*)o);
return (PyObject*)o;
}
+#define ast2obj_singleton ast2obj_object
#define ast2obj_identifier ast2obj_object
#define ast2obj_string ast2obj_object
#define ast2obj_bytes ast2obj_object
@@ -684,6 +689,17 @@ static PyObject* ast2obj_int(long b)
/* Conversion Python -> AST */
+static int obj2ast_singleton(PyObject *obj, PyObject** out, PyArena* arena)
+{
+ if (obj != Py_None && obj != Py_True && obj != Py_False) {
+ PyErr_SetString(PyExc_ValueError,
+ "AST singleton must be True, False, or None");
+ return 1;
+ }
+ *out = obj;
+ return 0;
+}
+
static int obj2ast_object(PyObject* obj, PyObject** out, PyArena* arena)
{
if (obj == Py_None)
@@ -758,6 +774,19 @@ static int add_ast_fields(void)
return 0;
}
+static int exists_not_none(PyObject *obj, _Py_Identifier *id)
+{
+ int isnone;
+ PyObject *attr = _PyObject_GetAttrId(obj, id);
+ if (!attr) {
+ PyErr_Clear();
+ return 0;
+ }
+ isnone = attr == Py_None;
+ Py_DECREF(attr);
+ return !isnone;
+}
+
static int init_types(void)
{
@@ -862,6 +891,9 @@ static int init_types(void)
if (!Str_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,
+ NameConstant_fields, 1);
+ if (!NameConstant_type) return 0;
Ellipsis_type = make_type("Ellipsis", expr_type, NULL, 0);
if (!Ellipsis_type) return 0;
Attribute_type = make_type("Attribute", expr_type, Attribute_fields, 3);
@@ -1039,6 +1071,7 @@ static int init_types(void)
comprehension_type = make_type("comprehension", &AST_type,
comprehension_fields, 3);
if (!comprehension_type) return 0;
+ if (!add_attributes(comprehension_type, NULL, 0)) return 0;
excepthandler_type = make_type("excepthandler", &AST_type, NULL, 0);
if (!excepthandler_type) return 0;
if (!add_attributes(excepthandler_type, excepthandler_attributes, 2))
@@ -1046,16 +1079,21 @@ static int init_types(void)
ExceptHandler_type = make_type("ExceptHandler", excepthandler_type,
ExceptHandler_fields, 3);
if (!ExceptHandler_type) return 0;
- arguments_type = make_type("arguments", &AST_type, arguments_fields, 8);
+ arguments_type = make_type("arguments", &AST_type, arguments_fields, 6);
if (!arguments_type) return 0;
+ if (!add_attributes(arguments_type, NULL, 0)) return 0;
arg_type = make_type("arg", &AST_type, arg_fields, 2);
if (!arg_type) return 0;
+ if (!add_attributes(arg_type, arg_attributes, 2)) return 0;
keyword_type = make_type("keyword", &AST_type, keyword_fields, 2);
if (!keyword_type) return 0;
+ if (!add_attributes(keyword_type, NULL, 0)) return 0;
alias_type = make_type("alias", &AST_type, alias_fields, 2);
if (!alias_type) return 0;
+ if (!add_attributes(alias_type, NULL, 0)) return 0;
withitem_type = make_type("withitem", &AST_type, withitem_fields, 2);
if (!withitem_type) return 0;
+ if (!add_attributes(withitem_type, NULL, 0)) return 0;
initialized = 1;
return 1;
}
@@ -1923,6 +1961,25 @@ Bytes(bytes s, int lineno, int col_offset, PyArena *arena)
}
expr_ty
+NameConstant(singleton value, int lineno, int col_offset, PyArena *arena)
+{
+ expr_ty p;
+ if (!value) {
+ PyErr_SetString(PyExc_ValueError,
+ "field value is required for NameConstant");
+ return NULL;
+ }
+ p = (expr_ty)PyArena_Malloc(arena, sizeof(*p));
+ if (!p)
+ return NULL;
+ p->kind = NameConstant_kind;
+ p->v.NameConstant.value = value;
+ p->lineno = lineno;
+ p->col_offset = col_offset;
+ return p;
+}
+
+expr_ty
Ellipsis(int lineno, int col_offset, PyArena *arena)
{
expr_ty p;
@@ -2177,9 +2234,8 @@ ExceptHandler(expr_ty type, identifier name, asdl_seq * body, int lineno, int
}
arguments_ty
-arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation,
- asdl_seq * kwonlyargs, identifier kwarg, expr_ty kwargannotation,
- asdl_seq * defaults, asdl_seq * kw_defaults, PyArena *arena)
+arguments(asdl_seq * args, arg_ty vararg, asdl_seq * kwonlyargs, asdl_seq *
+ kw_defaults, arg_ty kwarg, asdl_seq * defaults, PyArena *arena)
{
arguments_ty p;
p = (arguments_ty)PyArena_Malloc(arena, sizeof(*p));
@@ -2187,12 +2243,10 @@ arguments(asdl_seq * args, identifier vararg, expr_ty varargannotation,
return NULL;
p->args = args;
p->vararg = vararg;
- p->varargannotation = varargannotation;
p->kwonlyargs = kwonlyargs;
+ p->kw_defaults = kw_defaults;
p->kwarg = kwarg;
- p->kwargannotation = kwargannotation;
p->defaults = defaults;
- p->kw_defaults = kw_defaults;
return p;
}
@@ -2943,6 +2997,15 @@ ast2obj_expr(void* _o)
goto failed;
Py_DECREF(value);
break;
+ case NameConstant_kind:
+ result = PyType_GenericNew(NameConstant_type, NULL, NULL);
+ if (!result) goto failed;
+ value = ast2obj_singleton(o->v.NameConstant.value);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_value, value) == -1)
+ goto failed;
+ Py_DECREF(value);
+ break;
case Ellipsis_kind:
result = PyType_GenericNew(Ellipsis_type, NULL, NULL);
if (!result) goto failed;
@@ -3361,29 +3424,24 @@ ast2obj_arguments(void* _o)
if (_PyObject_SetAttrId(result, &PyId_args, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_identifier(o->vararg);
+ value = ast2obj_arg(o->vararg);
if (!value) goto failed;
if (_PyObject_SetAttrId(result, &PyId_vararg, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_expr(o->varargannotation);
- if (!value) goto failed;
- if (_PyObject_SetAttrId(result, &PyId_varargannotation, value) == -1)
- goto failed;
- Py_DECREF(value);
value = ast2obj_list(o->kwonlyargs, ast2obj_arg);
if (!value) goto failed;
if (_PyObject_SetAttrId(result, &PyId_kwonlyargs, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_identifier(o->kwarg);
+ value = ast2obj_list(o->kw_defaults, ast2obj_expr);
if (!value) goto failed;
- if (_PyObject_SetAttrId(result, &PyId_kwarg, value) == -1)
+ if (_PyObject_SetAttrId(result, &PyId_kw_defaults, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_expr(o->kwargannotation);
+ value = ast2obj_arg(o->kwarg);
if (!value) goto failed;
- if (_PyObject_SetAttrId(result, &PyId_kwargannotation, value) == -1)
+ if (_PyObject_SetAttrId(result, &PyId_kwarg, value) == -1)
goto failed;
Py_DECREF(value);
value = ast2obj_list(o->defaults, ast2obj_expr);
@@ -3391,11 +3449,6 @@ ast2obj_arguments(void* _o)
if (_PyObject_SetAttrId(result, &PyId_defaults, value) == -1)
goto failed;
Py_DECREF(value);
- value = ast2obj_list(o->kw_defaults, ast2obj_expr);
- if (!value) goto failed;
- if (_PyObject_SetAttrId(result, &PyId_kw_defaults, value) == -1)
- goto failed;
- Py_DECREF(value);
return result;
failed:
Py_XDECREF(value);
@@ -3425,6 +3478,16 @@ ast2obj_arg(void* _o)
if (_PyObject_SetAttrId(result, &PyId_annotation, value) == -1)
goto failed;
Py_DECREF(value);
+ value = ast2obj_int(o->lineno);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_lineno, value) < 0)
+ goto failed;
+ Py_DECREF(value);
+ value = ast2obj_int(o->col_offset);
+ if (!value) goto failed;
+ if (_PyObject_SetAttrId(result, &PyId_col_offset, value) < 0)
+ goto failed;
+ Py_DECREF(value);
return result;
failed:
Py_XDECREF(value);
@@ -3549,7 +3612,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -3584,7 +3647,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -3641,7 +3704,7 @@ obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -3744,7 +3807,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -3768,7 +3831,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- decorator_list = asdl_seq_new(len, arena);
+ decorator_list = _Py_asdl_seq_new(len, arena);
if (decorator_list == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -3781,7 +3844,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from FunctionDef");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_returns)) {
+ if (exists_not_none(obj, &PyId_returns)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_returns);
if (tmp == NULL) goto failed;
@@ -3831,7 +3894,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- bases = asdl_seq_new(len, arena);
+ bases = _Py_asdl_seq_new(len, arena);
if (bases == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -3855,7 +3918,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- keywords = asdl_seq_new(len, arena);
+ keywords = _Py_asdl_seq_new(len, arena);
if (keywords == NULL) goto failed;
for (i = 0; i < len; i++) {
keyword_ty value;
@@ -3868,7 +3931,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from ClassDef");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_starargs)) {
+ if (exists_not_none(obj, &PyId_starargs)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_starargs);
if (tmp == NULL) goto failed;
@@ -3878,7 +3941,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
} else {
starargs = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_kwargs)) {
+ if (exists_not_none(obj, &PyId_kwargs)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_kwargs);
if (tmp == NULL) goto failed;
@@ -3899,7 +3962,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -3923,7 +3986,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- decorator_list = asdl_seq_new(len, arena);
+ decorator_list = _Py_asdl_seq_new(len, arena);
if (decorator_list == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -3948,7 +4011,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
if (isinstance) {
expr_ty value;
- if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ if (exists_not_none(obj, &PyId_value)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_value);
if (tmp == NULL) goto failed;
@@ -3980,7 +4043,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- targets = asdl_seq_new(len, arena);
+ targets = _Py_asdl_seq_new(len, arena);
if (targets == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -4016,7 +4079,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- targets = asdl_seq_new(len, arena);
+ targets = _Py_asdl_seq_new(len, arena);
if (targets == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -4133,7 +4196,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4157,7 +4220,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- orelse = asdl_seq_new(len, arena);
+ orelse = _Py_asdl_seq_new(len, arena);
if (orelse == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4205,7 +4268,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4229,7 +4292,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- orelse = asdl_seq_new(len, arena);
+ orelse = _Py_asdl_seq_new(len, arena);
if (orelse == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4277,7 +4340,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4301,7 +4364,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- orelse = asdl_seq_new(len, arena);
+ orelse = _Py_asdl_seq_new(len, arena);
if (orelse == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4337,7 +4400,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- items = asdl_seq_new(len, arena);
+ items = _Py_asdl_seq_new(len, arena);
if (items == NULL) goto failed;
for (i = 0; i < len; i++) {
withitem_ty value;
@@ -4361,7 +4424,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4386,7 +4449,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
expr_ty exc;
expr_ty cause;
- if (_PyObject_HasAttrId(obj, &PyId_exc)) {
+ if (exists_not_none(obj, &PyId_exc)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_exc);
if (tmp == NULL) goto failed;
@@ -4396,7 +4459,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
} else {
exc = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_cause)) {
+ if (exists_not_none(obj, &PyId_cause)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_cause);
if (tmp == NULL) goto failed;
@@ -4431,7 +4494,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4455,7 +4518,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- handlers = asdl_seq_new(len, arena);
+ handlers = _Py_asdl_seq_new(len, arena);
if (handlers == NULL) goto failed;
for (i = 0; i < len; i++) {
excepthandler_ty value;
@@ -4479,7 +4542,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- orelse = asdl_seq_new(len, arena);
+ orelse = _Py_asdl_seq_new(len, arena);
if (orelse == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4503,7 +4566,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- finalbody = asdl_seq_new(len, arena);
+ finalbody = _Py_asdl_seq_new(len, arena);
if (finalbody == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -4540,7 +4603,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"test\" missing from Assert");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_msg)) {
+ if (exists_not_none(obj, &PyId_msg)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_msg);
if (tmp == NULL) goto failed;
@@ -4572,7 +4635,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- names = asdl_seq_new(len, arena);
+ names = _Py_asdl_seq_new(len, arena);
if (names == NULL) goto failed;
for (i = 0; i < len; i++) {
alias_ty value;
@@ -4598,7 +4661,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
asdl_seq* names;
int level;
- if (_PyObject_HasAttrId(obj, &PyId_module)) {
+ if (exists_not_none(obj, &PyId_module)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_module);
if (tmp == NULL) goto failed;
@@ -4619,7 +4682,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- names = asdl_seq_new(len, arena);
+ names = _Py_asdl_seq_new(len, arena);
if (names == NULL) goto failed;
for (i = 0; i < len; i++) {
alias_ty value;
@@ -4632,7 +4695,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"names\" missing from ImportFrom");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_level)) {
+ if (exists_not_none(obj, &PyId_level)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_level);
if (tmp == NULL) goto failed;
@@ -4664,7 +4727,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- names = asdl_seq_new(len, arena);
+ names = _Py_asdl_seq_new(len, arena);
if (names == NULL) goto failed;
for (i = 0; i < len; i++) {
identifier value;
@@ -4699,7 +4762,7 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- names = asdl_seq_new(len, arena);
+ names = _Py_asdl_seq_new(len, arena);
if (names == NULL) goto failed;
for (i = 0; i < len; i++) {
identifier value;
@@ -4840,7 +4903,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- values = asdl_seq_new(len, arena);
+ values = _Py_asdl_seq_new(len, arena);
if (values == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5036,7 +5099,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- keys = asdl_seq_new(len, arena);
+ keys = _Py_asdl_seq_new(len, arena);
if (keys == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5060,7 +5123,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- values = asdl_seq_new(len, arena);
+ values = _Py_asdl_seq_new(len, arena);
if (values == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5095,7 +5158,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- elts = asdl_seq_new(len, arena);
+ elts = _Py_asdl_seq_new(len, arena);
if (elts == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5142,7 +5205,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- generators = asdl_seq_new(len, arena);
+ generators = _Py_asdl_seq_new(len, arena);
if (generators == NULL) goto failed;
for (i = 0; i < len; i++) {
comprehension_ty value;
@@ -5189,7 +5252,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- generators = asdl_seq_new(len, arena);
+ generators = _Py_asdl_seq_new(len, arena);
if (generators == NULL) goto failed;
for (i = 0; i < len; i++) {
comprehension_ty value;
@@ -5248,7 +5311,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- generators = asdl_seq_new(len, arena);
+ generators = _Py_asdl_seq_new(len, arena);
if (generators == NULL) goto failed;
for (i = 0; i < len; i++) {
comprehension_ty value;
@@ -5295,7 +5358,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- generators = asdl_seq_new(len, arena);
+ generators = _Py_asdl_seq_new(len, arena);
if (generators == NULL) goto failed;
for (i = 0; i < len; i++) {
comprehension_ty value;
@@ -5319,7 +5382,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
if (isinstance) {
expr_ty value;
- if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ if (exists_not_none(obj, &PyId_value)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_value);
if (tmp == NULL) goto failed;
@@ -5386,7 +5449,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- ops = asdl_int_seq_new(len, arena);
+ ops = _Py_asdl_int_seq_new(len, arena);
if (ops == NULL) goto failed;
for (i = 0; i < len; i++) {
cmpop_ty value;
@@ -5410,7 +5473,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- comparators = asdl_seq_new(len, arena);
+ comparators = _Py_asdl_seq_new(len, arena);
if (comparators == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5460,7 +5523,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- args = asdl_seq_new(len, arena);
+ args = _Py_asdl_seq_new(len, arena);
if (args == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5484,7 +5547,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- keywords = asdl_seq_new(len, arena);
+ keywords = _Py_asdl_seq_new(len, arena);
if (keywords == NULL) goto failed;
for (i = 0; i < len; i++) {
keyword_ty value;
@@ -5497,7 +5560,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"keywords\" missing from Call");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_starargs)) {
+ if (exists_not_none(obj, &PyId_starargs)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_starargs);
if (tmp == NULL) goto failed;
@@ -5507,7 +5570,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
} else {
starargs = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_kwargs)) {
+ if (exists_not_none(obj, &PyId_kwargs)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_kwargs);
if (tmp == NULL) goto failed;
@@ -5588,6 +5651,28 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
if (*out == NULL) goto failed;
return 0;
}
+ isinstance = PyObject_IsInstance(obj, (PyObject*)NameConstant_type);
+ if (isinstance == -1) {
+ return 1;
+ }
+ if (isinstance) {
+ singleton value;
+
+ if (_PyObject_HasAttrId(obj, &PyId_value)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_value);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_singleton(tmp, &value, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from NameConstant");
+ return 1;
+ }
+ *out = NameConstant(value, lineno, col_offset, arena);
+ if (*out == NULL) goto failed;
+ return 0;
+ }
isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
if (isinstance == -1) {
return 1;
@@ -5777,7 +5862,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- elts = asdl_seq_new(len, arena);
+ elts = _Py_asdl_seq_new(len, arena);
if (elts == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5824,7 +5909,7 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- elts = asdl_seq_new(len, arena);
+ elts = _Py_asdl_seq_new(len, arena);
if (elts == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -5937,7 +6022,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
expr_ty upper;
expr_ty step;
- if (_PyObject_HasAttrId(obj, &PyId_lower)) {
+ if (exists_not_none(obj, &PyId_lower)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_lower);
if (tmp == NULL) goto failed;
@@ -5947,7 +6032,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
} else {
lower = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_upper)) {
+ if (exists_not_none(obj, &PyId_upper)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_upper);
if (tmp == NULL) goto failed;
@@ -5957,7 +6042,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
} else {
upper = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_step)) {
+ if (exists_not_none(obj, &PyId_step)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_step);
if (tmp == NULL) goto failed;
@@ -5989,7 +6074,7 @@ obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- dims = asdl_seq_new(len, arena);
+ dims = _Py_asdl_seq_new(len, arena);
if (dims == NULL) goto failed;
for (i = 0; i < len; i++) {
slice_ty value;
@@ -6340,7 +6425,7 @@ obj2ast_comprehension(PyObject* obj, comprehension_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- ifs = asdl_seq_new(len, arena);
+ ifs = _Py_asdl_seq_new(len, arena);
if (ifs == NULL) goto failed;
for (i = 0; i < len; i++) {
expr_ty value;
@@ -6404,7 +6489,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
identifier name;
asdl_seq* body;
- if (_PyObject_HasAttrId(obj, &PyId_type)) {
+ if (exists_not_none(obj, &PyId_type)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_type);
if (tmp == NULL) goto failed;
@@ -6414,7 +6499,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
} else {
type = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_name)) {
+ if (exists_not_none(obj, &PyId_name)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_name);
if (tmp == NULL) goto failed;
@@ -6435,7 +6520,7 @@ obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- body = asdl_seq_new(len, arena);
+ body = _Py_asdl_seq_new(len, arena);
if (body == NULL) goto failed;
for (i = 0; i < len; i++) {
stmt_ty value;
@@ -6464,13 +6549,11 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
{
PyObject* tmp = NULL;
asdl_seq* args;
- identifier vararg;
- expr_ty varargannotation;
+ arg_ty vararg;
asdl_seq* kwonlyargs;
- identifier kwarg;
- expr_ty kwargannotation;
- asdl_seq* defaults;
asdl_seq* kw_defaults;
+ arg_ty kwarg;
+ asdl_seq* defaults;
if (_PyObject_HasAttrId(obj, &PyId_args)) {
int res;
@@ -6483,7 +6566,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- args = asdl_seq_new(len, arena);
+ args = _Py_asdl_seq_new(len, arena);
if (args == NULL) goto failed;
for (i = 0; i < len; i++) {
arg_ty value;
@@ -6496,26 +6579,16 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from arguments");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_vararg)) {
+ if (exists_not_none(obj, &PyId_vararg)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_vararg);
if (tmp == NULL) goto failed;
- res = obj2ast_identifier(tmp, &vararg, arena);
+ res = obj2ast_arg(tmp, &vararg, arena);
if (res != 0) goto failed;
Py_CLEAR(tmp);
} else {
vararg = NULL;
}
- if (_PyObject_HasAttrId(obj, &PyId_varargannotation)) {
- int res;
- tmp = _PyObject_GetAttrId(obj, &PyId_varargannotation);
- if (tmp == NULL) goto failed;
- res = obj2ast_expr(tmp, &varargannotation, arena);
- if (res != 0) goto failed;
- Py_CLEAR(tmp);
- } else {
- varargannotation = NULL;
- }
if (_PyObject_HasAttrId(obj, &PyId_kwonlyargs)) {
int res;
Py_ssize_t len;
@@ -6527,7 +6600,7 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
goto failed;
}
len = PyList_GET_SIZE(tmp);
- kwonlyargs = asdl_seq_new(len, arena);
+ kwonlyargs = _Py_asdl_seq_new(len, arena);
if (kwonlyargs == NULL) goto failed;
for (i = 0; i < len; i++) {
arg_ty value;
@@ -6540,76 +6613,66 @@ obj2ast_arguments(PyObject* obj, arguments_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"kwonlyargs\" missing from arguments");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_kwarg)) {
- int res;
- tmp = _PyObject_GetAttrId(obj, &PyId_kwarg);
- if (tmp == NULL) goto failed;
- res = obj2ast_identifier(tmp, &kwarg, arena);
- if (res != 0) goto failed;
- Py_CLEAR(tmp);
- } else {
- kwarg = NULL;
- }
- if (_PyObject_HasAttrId(obj, &PyId_kwargannotation)) {
- int res;
- tmp = _PyObject_GetAttrId(obj, &PyId_kwargannotation);
- if (tmp == NULL) goto failed;
- res = obj2ast_expr(tmp, &kwargannotation, arena);
- if (res != 0) goto failed;
- Py_CLEAR(tmp);
- } else {
- kwargannotation = NULL;
- }
- if (_PyObject_HasAttrId(obj, &PyId_defaults)) {
+ if (_PyObject_HasAttrId(obj, &PyId_kw_defaults)) {
int res;
Py_ssize_t len;
Py_ssize_t i;
- tmp = _PyObject_GetAttrId(obj, &PyId_defaults);
+ tmp = _PyObject_GetAttrId(obj, &PyId_kw_defaults);
if (tmp == NULL) goto failed;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
+ PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
goto failed;
}
len = PyList_GET_SIZE(tmp);
- defaults = asdl_seq_new(len, arena);
- if (defaults == NULL) goto failed;
+ kw_defaults = _Py_asdl_seq_new(len, arena);
+ if (kw_defaults == 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(defaults, i, value);
+ asdl_seq_SET(kw_defaults, i, value);
}
Py_CLEAR(tmp);
} else {
- PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments");
+ PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_kw_defaults)) {
+ if (exists_not_none(obj, &PyId_kwarg)) {
+ int res;
+ tmp = _PyObject_GetAttrId(obj, &PyId_kwarg);
+ if (tmp == NULL) goto failed;
+ res = obj2ast_arg(tmp, &kwarg, arena);
+ if (res != 0) goto failed;
+ Py_CLEAR(tmp);
+ } else {
+ kwarg = NULL;
+ }
+ if (_PyObject_HasAttrId(obj, &PyId_defaults)) {
int res;
Py_ssize_t len;
Py_ssize_t i;
- tmp = _PyObject_GetAttrId(obj, &PyId_kw_defaults);
+ tmp = _PyObject_GetAttrId(obj, &PyId_defaults);
if (tmp == NULL) goto failed;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
+ PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must be a list, not a %.200s", tmp->ob_type->tp_name);
goto failed;
}
len = PyList_GET_SIZE(tmp);
- kw_defaults = asdl_seq_new(len, arena);
- if (kw_defaults == NULL) goto failed;
+ defaults = _Py_asdl_seq_new(len, arena);
+ if (defaults == 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(kw_defaults, i, value);
+ asdl_seq_SET(defaults, i, value);
}
Py_CLEAR(tmp);
} else {
- PyErr_SetString(PyExc_TypeError, "required field \"kw_defaults\" missing from arguments");
+ PyErr_SetString(PyExc_TypeError, "required field \"defaults\" missing from arguments");
return 1;
}
- *out = arguments(args, vararg, varargannotation, kwonlyargs, kwarg,
- kwargannotation, defaults, kw_defaults, arena);
+ *out = arguments(args, vararg, kwonlyargs, kw_defaults, kwarg, defaults,
+ arena);
return 0;
failed:
Py_XDECREF(tmp);
@@ -6634,7 +6697,7 @@ obj2ast_arg(PyObject* obj, arg_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"arg\" missing from arg");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_annotation)) {
+ if (exists_not_none(obj, &PyId_annotation)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_annotation);
if (tmp == NULL) goto failed;
@@ -6705,7 +6768,7 @@ obj2ast_alias(PyObject* obj, alias_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from alias");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_asname)) {
+ if (exists_not_none(obj, &PyId_asname)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_asname);
if (tmp == NULL) goto failed;
@@ -6740,7 +6803,7 @@ obj2ast_withitem(PyObject* obj, withitem_ty* out, PyArena* arena)
PyErr_SetString(PyExc_TypeError, "required field \"context_expr\" missing from withitem");
return 1;
}
- if (_PyObject_HasAttrId(obj, &PyId_optional_vars)) {
+ if (exists_not_none(obj, &PyId_optional_vars)) {
int res;
tmp = _PyObject_GetAttrId(obj, &PyId_optional_vars);
if (tmp == NULL) goto failed;
@@ -6770,7 +6833,7 @@ PyInit__ast(void)
if (!m) return NULL;
d = PyModule_GetDict(m);
if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return NULL;
- if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)
+ if (PyModule_AddIntMacro(m, PyCF_ONLY_AST) < 0)
return NULL;
if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return NULL;
if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0) return
@@ -6850,6 +6913,8 @@ PyInit__ast(void)
if (PyDict_SetItemString(d, "Str", (PyObject*)Str_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, "Attribute", (PyObject*)Attribute_type) < 0)
@@ -6949,7 +7014,8 @@ PyInit__ast(void)
PyObject* PyAST_mod2obj(mod_ty t)
{
- init_types();
+ if (!init_types())
+ return NULL;
return ast2obj_mod(t);
}
@@ -6963,7 +7029,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
int isinstance;
assert(0 <= mode && mode <= 2);
- init_types();
+ if (!init_types())
+ return NULL;
isinstance = PyObject_IsInstance(ast, req_type[mode]);
if (isinstance == -1)
@@ -6981,7 +7048,8 @@ mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode)
int PyAST_Check(PyObject* obj)
{
- init_types();
+ if (!init_types())
+ return -1;
return PyObject_IsInstance(obj, (PyObject*)&AST_type);
}
diff --git a/Python/_warnings.c b/Python/_warnings.c
index f33e477..b8d4bb6 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -283,9 +283,9 @@ show_warning(PyObject *filename, int lineno, PyObject *text, PyObject
PyFile_WriteString(source_line_str, f_stderr);
PyFile_WriteString("\n", f_stderr);
}
- else
- if (_Py_DisplaySourceLine(f_stderr, filename, lineno, 2) < 0)
- return;
+ else {
+ _Py_DisplaySourceLine(f_stderr, filename, lineno, 2);
+ }
PyErr_Clear();
}
@@ -707,14 +707,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);
Py_DECREF(source_list);
return returned;
}
standard_call:
return warn_explicit(category, message, filename, lineno, module,
- registry, NULL);
+ registry, NULL);
}
@@ -786,11 +786,26 @@ PyErr_Warn(PyObject *category, char *text)
/* Warning with explicit origin */
int
+PyErr_WarnExplicitObject(PyObject *category, PyObject *message,
+ PyObject *filename, int lineno,
+ PyObject *module, PyObject *registry)
+{
+ PyObject *res;
+ if (category == NULL)
+ category = PyExc_RuntimeWarning;
+ res = warn_explicit(category, message, filename, lineno,
+ module, registry, NULL);
+ if (res == NULL)
+ return -1;
+ Py_DECREF(res);
+ return 0;
+}
+
+int
PyErr_WarnExplicit(PyObject *category, const char *text,
const char *filename_str, int lineno,
const char *module_str, PyObject *registry)
{
- PyObject *res;
PyObject *message = PyUnicode_FromString(text);
PyObject *filename = PyUnicode_DecodeFSDefault(filename_str);
PyObject *module = NULL;
@@ -800,18 +815,12 @@ PyErr_WarnExplicit(PyObject *category, const char *text,
goto exit;
if (module_str != NULL) {
module = PyUnicode_FromString(module_str);
- if (module == NULL)
- goto exit;
+ if (module == NULL)
+ goto exit;
}
- if (category == NULL)
- category = PyExc_RuntimeWarning;
- res = warn_explicit(category, message, filename, lineno, module, registry,
- NULL);
- if (res == NULL)
- goto exit;
- Py_DECREF(res);
- ret = 0;
+ ret = PyErr_WarnExplicitObject(category, message, filename, lineno,
+ module, registry);
exit:
Py_XDECREF(message);
@@ -820,6 +829,49 @@ PyErr_WarnExplicit(PyObject *category, const char *text,
return ret;
}
+int
+PyErr_WarnExplicitFormat(PyObject *category,
+ const char *filename_str, int lineno,
+ const char *module_str, PyObject *registry,
+ const char *format, ...)
+{
+ PyObject *message;
+ PyObject *module = NULL;
+ PyObject *filename = PyUnicode_DecodeFSDefault(filename_str);
+ int ret = -1;
+ va_list vargs;
+
+ if (filename == NULL)
+ goto exit;
+ if (module_str != NULL) {
+ module = PyUnicode_FromString(module_str);
+ if (module == NULL)
+ goto exit;
+ }
+
+#ifdef HAVE_STDARG_PROTOTYPES
+ va_start(vargs, format);
+#else
+ va_start(vargs);
+#endif
+ message = PyUnicode_FromFormatV(format, vargs);
+ if (message != NULL) {
+ PyObject *res;
+ res = warn_explicit(category, message, filename, lineno,
+ module, registry, NULL);
+ Py_DECREF(message);
+ if (res != NULL) {
+ Py_DECREF(res);
+ ret = 0;
+ }
+ }
+ va_end(vargs);
+exit:
+ Py_XDECREF(module);
+ Py_XDECREF(filename);
+ return ret;
+}
+
PyDoc_STRVAR(warn_doc,
"Issue a warning, or maybe ignore it or raise an exception.");
diff --git a/Python/asdl.c b/Python/asdl.c
index e7e3280..74fa941 100644
--- a/Python/asdl.c
+++ b/Python/asdl.c
@@ -2,7 +2,7 @@
#include "asdl.h"
asdl_seq *
-asdl_seq_new(Py_ssize_t size, PyArena *arena)
+_Py_asdl_seq_new(Py_ssize_t size, PyArena *arena)
{
asdl_seq *seq = NULL;
size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
@@ -33,7 +33,7 @@ asdl_seq_new(Py_ssize_t size, PyArena *arena)
}
asdl_int_seq *
-asdl_int_seq_new(Py_ssize_t size, PyArena *arena)
+_Py_asdl_int_seq_new(Py_ssize_t size, PyArena *arena)
{
asdl_int_seq *seq = NULL;
size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
diff --git a/Python/ast.c b/Python/ast.c
index 9a0b064..3bd24fd 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -109,22 +109,14 @@ validate_arguments(arguments_ty args)
{
if (!validate_args(args->args))
return 0;
- if (args->varargannotation) {
- if (!args->vararg) {
- PyErr_SetString(PyExc_ValueError, "varargannotation but no vararg on arguments");
- return 0;
- }
- if (!validate_expr(args->varargannotation, Load))
+ if (args->vararg && args->vararg->annotation
+ && !validate_expr(args->vararg->annotation, Load)) {
return 0;
}
if (!validate_args(args->kwonlyargs))
return 0;
- if (args->kwargannotation) {
- if (!args->kwarg) {
- PyErr_SetString(PyExc_ValueError, "kwargannotation but no kwarg on arguments");
- return 0;
- }
- if (!validate_expr(args->kwargannotation, Load))
+ if (args->kwarg && args->kwarg->annotation
+ && !validate_expr(args->kwarg->annotation, Load)) {
return 0;
}
if (asdl_seq_LEN(args->defaults) > asdl_seq_LEN(args->args)) {
@@ -282,6 +274,7 @@ validate_expr(expr_ty exp, expr_context_ty ctx)
return validate_exprs(exp->v.Tuple.elts, ctx, 0);
/* These last cases don't have any checking. */
case Name_kind:
+ case NameConstant_kind:
case Ellipsis_kind:
return 1;
default:
@@ -498,7 +491,7 @@ PyAST_Validate(mod_ty mod)
struct compiling {
char *c_encoding; /* source encoding */
PyArena *c_arena; /* arena for allocating memeory */
- const char *c_filename; /* filename */
+ PyObject *c_filename; /* filename */
PyObject *c_normalize; /* Normalization function from unicodedata. */
PyObject *c_normalize_args; /* Normalization argument tuple. */
};
@@ -567,7 +560,10 @@ new_identifier(const char *n, struct compiling *c)
id = id2;
}
PyUnicode_InternInPlace(&id);
- PyArena_AddPyObject(c->c_arena, id);
+ if (PyArena_AddPyObject(c->c_arena, id) < 0) {
+ Py_DECREF(id);
+ return NULL;
+ }
return id;
}
@@ -577,24 +573,13 @@ static int
ast_error(struct compiling *c, const node *n, const char *errmsg)
{
PyObject *value, *errstr, *loc, *tmp;
- PyObject *filename_obj;
- loc = PyErr_ProgramText(c->c_filename, LINENO(n));
+ loc = PyErr_ProgramTextObject(c->c_filename, LINENO(n));
if (!loc) {
Py_INCREF(Py_None);
loc = Py_None;
}
- if (c->c_filename) {
- filename_obj = PyUnicode_DecodeFSDefault(c->c_filename);
- if (!filename_obj) {
- Py_DECREF(loc);
- return 0;
- }
- } else {
- Py_INCREF(Py_None);
- filename_obj = Py_None;
- }
- tmp = Py_BuildValue("(NiiN)", filename_obj, LINENO(n), n->n_col_offset, loc);
+ tmp = Py_BuildValue("(OiiN)", c->c_filename, LINENO(n), n->n_col_offset, loc);
if (!tmp)
return 0;
errstr = PyUnicode_FromString(errmsg);
@@ -677,8 +662,8 @@ num_stmts(const node *n)
*/
mod_ty
-PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
- PyArena *arena)
+PyAST_FromNodeObject(const node *n, PyCompilerFlags *flags,
+ PyObject *filename, PyArena *arena)
{
int i, j, k, num;
asdl_seq *stmts = NULL;
@@ -688,6 +673,7 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
mod_ty res = NULL;
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) {
@@ -710,7 +696,7 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
k = 0;
switch (TYPE(n)) {
case file_input:
- stmts = asdl_seq_new(num_stmts(n), arena);
+ stmts = _Py_asdl_seq_new(num_stmts(n), arena);
if (!stmts)
goto out;
for (i = 0; i < NCH(n) - 1; i++) {
@@ -750,7 +736,7 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
}
case single_input:
if (TYPE(CHILD(n, 0)) == NEWLINE) {
- stmts = asdl_seq_new(1, arena);
+ stmts = _Py_asdl_seq_new(1, arena);
if (!stmts)
goto out;
asdl_seq_SET(stmts, 0, Pass(n->n_lineno, n->n_col_offset,
@@ -762,7 +748,7 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
else {
n = CHILD(n, 0);
num = num_stmts(n);
- stmts = asdl_seq_new(num, arena);
+ stmts = _Py_asdl_seq_new(num, arena);
if (!stmts)
goto out;
if (num == 1) {
@@ -801,6 +787,21 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
return res;
}
+mod_ty
+PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename_str,
+ PyArena *arena)
+{
+ mod_ty mod;
+ PyObject *filename;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ mod = PyAST_FromNodeObject(n, flags, filename, arena);
+ Py_DECREF(filename);
+ return mod;
+
+}
+
/* Return the AST repr. of the operator represented as syntax (|, ^, etc.)
*/
@@ -903,7 +904,7 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
break;
case Name_kind:
if (ctx == Store) {
- if (forbidden_name(c, e->v.Name.id, n, 1))
+ if (forbidden_name(c, e->v.Name.id, n, 0))
return 0; /* forbidden_name() calls ast_error() */
}
e->v.Name.ctx = ctx;
@@ -955,6 +956,9 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n)
case Bytes_kind:
expr_name = "literal";
break;
+ case NameConstant_kind:
+ expr_name = "keyword";
+ break;
case Ellipsis_kind:
expr_name = "Ellipsis";
break;
@@ -1095,7 +1099,7 @@ seq_for_testlist(struct compiling *c, const node *n)
int i;
assert(TYPE(n) == testlist || TYPE(n) == testlist_star_expr || TYPE(n) == testlist_comp);
- seq = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
+ seq = _Py_asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
if (!seq)
return NULL;
@@ -1119,6 +1123,7 @@ ast_for_arg(struct compiling *c, const node *n)
identifier name;
expr_ty annotation = NULL;
node *ch;
+ arg_ty tmp;
assert(TYPE(n) == tfpdef || TYPE(n) == vfpdef);
ch = CHILD(n, 0);
@@ -1134,7 +1139,13 @@ ast_for_arg(struct compiling *c, const node *n)
return NULL;
}
- return arg(name, annotation, c->c_arena);
+ tmp = arg(name, annotation, c->c_arena);
+ if (!tmp)
+ return NULL;
+
+ tmp->lineno = LINENO(n);
+ tmp->col_offset = n->n_col_offset;
+ return tmp;
}
/* returns -1 if failed to handle keyword only arguments
@@ -1230,15 +1241,13 @@ ast_for_arguments(struct compiling *c, const node *n)
int i, j, k, nposargs = 0, nkwonlyargs = 0;
int nposdefaults = 0, found_default = 0;
asdl_seq *posargs, *posdefaults, *kwonlyargs, *kwdefaults;
- identifier vararg = NULL, kwarg = NULL;
+ arg_ty vararg = NULL, kwarg = NULL;
arg_ty arg;
- expr_ty varargannotation = NULL, kwargannotation = NULL;
node *ch;
if (TYPE(n) == parameters) {
if (NCH(n) == 2) /* () as argument list */
- return arguments(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, c->c_arena);
+ return arguments(NULL, NULL, NULL, NULL, NULL, NULL, c->c_arena);
n = CHILD(n, 1);
}
assert(TYPE(n) == typedargslist || TYPE(n) == varargslist);
@@ -1270,22 +1279,22 @@ ast_for_arguments(struct compiling *c, const node *n)
if (TYPE(ch) == DOUBLESTAR) break;
if (TYPE(ch) == tfpdef || TYPE(ch) == vfpdef) nkwonlyargs++;
}
- posargs = (nposargs ? asdl_seq_new(nposargs, c->c_arena) : NULL);
+ posargs = (nposargs ? _Py_asdl_seq_new(nposargs, c->c_arena) : NULL);
if (!posargs && nposargs)
return NULL;
kwonlyargs = (nkwonlyargs ?
- asdl_seq_new(nkwonlyargs, c->c_arena) : NULL);
+ _Py_asdl_seq_new(nkwonlyargs, c->c_arena) : NULL);
if (!kwonlyargs && nkwonlyargs)
return NULL;
posdefaults = (nposdefaults ?
- asdl_seq_new(nposdefaults, c->c_arena) : NULL);
+ _Py_asdl_seq_new(nposdefaults, c->c_arena) : NULL);
if (!posdefaults && nposdefaults)
return NULL;
/* The length of kwonlyargs and kwdefaults are same
since we set NULL as default for keyword only argument w/o default
- we have sequence data structure, but no dictionary */
kwdefaults = (nkwonlyargs ?
- asdl_seq_new(nkwonlyargs, c->c_arena) : NULL);
+ _Py_asdl_seq_new(nkwonlyargs, c->c_arena) : NULL);
if (!kwdefaults && nkwonlyargs)
return NULL;
@@ -1344,17 +1353,10 @@ ast_for_arguments(struct compiling *c, const node *n)
i = res; /* res has new position to process */
}
else {
- vararg = NEW_IDENTIFIER(CHILD(ch, 0));
+ vararg = ast_for_arg(c, ch);
if (!vararg)
return NULL;
- if (forbidden_name(c, vararg, CHILD(ch, 0), 0))
- return NULL;
- if (NCH(ch) > 1) {
- /* there is an annotation on the vararg */
- varargannotation = ast_for_expr(c, CHILD(ch, 2));
- if (!varargannotation)
- return NULL;
- }
+
i += 3;
if (i < NCH(n) && (TYPE(CHILD(n, i)) == tfpdef
|| TYPE(CHILD(n, i)) == vfpdef)) {
@@ -1369,17 +1371,9 @@ ast_for_arguments(struct compiling *c, const node *n)
case DOUBLESTAR:
ch = CHILD(n, i+1); /* tfpdef */
assert(TYPE(ch) == tfpdef || TYPE(ch) == vfpdef);
- kwarg = NEW_IDENTIFIER(CHILD(ch, 0));
+ kwarg = ast_for_arg(c, ch);
if (!kwarg)
return NULL;
- if (NCH(ch) > 1) {
- /* there is an annotation on the kwarg */
- kwargannotation = ast_for_expr(c, CHILD(ch, 2));
- if (!kwargannotation)
- return NULL;
- }
- if (forbidden_name(c, kwarg, CHILD(ch, 0), 0))
- return NULL;
i += 3;
break;
default:
@@ -1389,8 +1383,7 @@ ast_for_arguments(struct compiling *c, const node *n)
return NULL;
}
}
- return arguments(posargs, vararg, varargannotation, kwonlyargs, kwarg,
- kwargannotation, posdefaults, kwdefaults, c->c_arena);
+ return arguments(posargs, vararg, kwonlyargs, kwdefaults, kwarg, posdefaults, c->c_arena);
}
static expr_ty
@@ -1469,7 +1462,7 @@ ast_for_decorators(struct compiling *c, const node *n)
int i;
REQ(n, decorators);
- decorator_seq = asdl_seq_new(NCH(n), c->c_arena);
+ decorator_seq = _Py_asdl_seq_new(NCH(n), c->c_arena);
if (!decorator_seq)
return NULL;
@@ -1555,8 +1548,7 @@ ast_for_lambdef(struct compiling *c, const node *n)
expr_ty expression;
if (NCH(n) == 3) {
- args = arguments(NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, c->c_arena);
+ args = arguments(NULL, NULL, NULL, NULL, NULL, NULL, c->c_arena);
if (!args)
return NULL;
expression = ast_for_expr(c, CHILD(n, 2));
@@ -1666,7 +1658,7 @@ ast_for_comprehension(struct compiling *c, const node *n)
if (n_fors == -1)
return NULL;
- comps = asdl_seq_new(n_fors, c->c_arena);
+ comps = _Py_asdl_seq_new(n_fors, c->c_arena);
if (!comps)
return NULL;
@@ -1707,7 +1699,7 @@ ast_for_comprehension(struct compiling *c, const node *n)
if (n_ifs == -1)
return NULL;
- ifs = asdl_seq_new(n_ifs, c->c_arena);
+ ifs = _Py_asdl_seq_new(n_ifs, c->c_arena);
if (!ifs)
return NULL;
@@ -1819,11 +1811,21 @@ ast_for_atom(struct compiling *c, const node *n)
switch (TYPE(ch)) {
case NAME: {
- /* All names start in Load context, but may later be
- changed. */
- PyObject *name = NEW_IDENTIFIER(ch);
+ PyObject *name;
+ const char *s = STR(ch);
+ size_t len = strlen(s);
+ if (len >= 4 && len <= 5) {
+ if (!strcmp(s, "None"))
+ return NameConstant(Py_None, LINENO(n), n->n_col_offset, c->c_arena);
+ if (!strcmp(s, "True"))
+ return NameConstant(Py_True, LINENO(n), n->n_col_offset, c->c_arena);
+ if (!strcmp(s, "False"))
+ return NameConstant(Py_False, LINENO(n), n->n_col_offset, c->c_arena);
+ }
+ name = new_identifier(s, c);
if (!name)
return NULL;
+ /* All names start in Load context, but may later be changed. */
return Name(name, Load, LINENO(n), n->n_col_offset, c->c_arena);
}
case STRING: {
@@ -1848,12 +1850,15 @@ ast_for_atom(struct compiling *c, const node *n)
}
ast_error(c, n, buf);
Py_DECREF(type);
- Py_DECREF(value);
+ Py_XDECREF(value);
Py_XDECREF(tback);
}
return NULL;
}
- PyArena_AddPyObject(c->c_arena, str);
+ 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
@@ -1864,7 +1869,10 @@ ast_for_atom(struct compiling *c, const node *n)
if (!pynum)
return NULL;
- PyArena_AddPyObject(c->c_arena, pynum);
+ if (PyArena_AddPyObject(c->c_arena, pynum) < 0) {
+ Py_DECREF(pynum);
+ return NULL;
+ }
return Num(pynum, LINENO(n), n->n_col_offset, c->c_arena);
}
case ELLIPSIS: /* Ellipsis */
@@ -1913,7 +1921,7 @@ ast_for_atom(struct compiling *c, const node *n)
/* it's a simple set */
asdl_seq *elts;
size = (NCH(ch) + 1) / 2; /* +1 in case no trailing comma */
- elts = asdl_seq_new(size, c->c_arena);
+ elts = _Py_asdl_seq_new(size, c->c_arena);
if (!elts)
return NULL;
for (i = 0; i < NCH(ch); i += 2) {
@@ -1932,11 +1940,11 @@ ast_for_atom(struct compiling *c, const node *n)
} else {
/* it's a dict */
size = (NCH(ch) + 1) / 4; /* +1 in case no trailing comma */
- keys = asdl_seq_new(size, c->c_arena);
+ keys = _Py_asdl_seq_new(size, c->c_arena);
if (!keys)
return NULL;
- values = asdl_seq_new(size, c->c_arena);
+ values = _Py_asdl_seq_new(size, c->c_arena);
if (!values)
return NULL;
@@ -2093,15 +2101,22 @@ ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr)
if (NCH(n) == 2)
return Call(left_expr, NULL, NULL, NULL, NULL, LINENO(n),
n->n_col_offset, c->c_arena);
- else
- return ast_for_call(c, CHILD(n, 1), left_expr);
+ else {
+ expr_ty tmp = ast_for_call(c, CHILD(n, 1), left_expr);
+ if (!tmp)
+ return NULL;
+
+ tmp->lineno = LINENO(n);
+ tmp->col_offset = n->n_col_offset;
+ return tmp;
+ }
}
else if (TYPE(CHILD(n, 0)) == DOT ) {
PyObject *attr_id = NEW_IDENTIFIER(CHILD(n, 1));
if (!attr_id)
return NULL;
return Attribute(left_expr, attr_id, Load,
- LINENO(n), n->n_col_offset, c->c_arena);
+ LINENO(CHILD(n, 1)), CHILD(n, 1)->n_col_offset, c->c_arena);
}
else {
REQ(CHILD(n, 0), LSQB);
@@ -2124,7 +2139,7 @@ ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr)
expr_ty e;
int simple = 1;
asdl_seq *slices, *elts;
- slices = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
+ slices = _Py_asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
if (!slices)
return NULL;
for (j = 0; j < NCH(n); j += 2) {
@@ -2140,7 +2155,7 @@ ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr)
Load, LINENO(n), n->n_col_offset, c->c_arena);
}
/* extract Index values and put them in a Tuple */
- elts = asdl_seq_new(asdl_seq_LEN(slices), c->c_arena);
+ elts = _Py_asdl_seq_new(asdl_seq_LEN(slices), c->c_arena);
if (!elts)
return NULL;
for (j = 0; j < asdl_seq_LEN(slices); ++j) {
@@ -2202,8 +2217,6 @@ ast_for_power(struct compiling *c, const node *n)
tmp = ast_for_trailer(c, ch, e);
if (!tmp)
return NULL;
- tmp->lineno = e->lineno;
- tmp->col_offset = e->col_offset;
e = tmp;
}
if (TYPE(CHILD(n, NCH(n) - 1)) == factor) {
@@ -2275,7 +2288,7 @@ ast_for_expr(struct compiling *c, const node *n)
n = CHILD(n, 0);
goto loop;
}
- seq = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
+ seq = _Py_asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
if (!seq)
return NULL;
for (i = 0; i < NCH(n); i += 2) {
@@ -2311,10 +2324,10 @@ ast_for_expr(struct compiling *c, const node *n)
expr_ty expression;
asdl_int_seq *ops;
asdl_seq *cmps;
- ops = asdl_int_seq_new(NCH(n) / 2, c->c_arena);
+ ops = _Py_asdl_int_seq_new(NCH(n) / 2, c->c_arena);
if (!ops)
return NULL;
- cmps = asdl_seq_new(NCH(n) / 2, c->c_arena);
+ cmps = _Py_asdl_seq_new(NCH(n) / 2, c->c_arena);
if (!cmps) {
return NULL;
}
@@ -2440,10 +2453,10 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func)
return NULL;
}
- args = asdl_seq_new(nargs + ngens, c->c_arena);
+ args = _Py_asdl_seq_new(nargs + ngens, c->c_arena);
if (!args)
return NULL;
- keywords = asdl_seq_new(nkeywords, c->c_arena);
+ keywords = _Py_asdl_seq_new(nkeywords, c->c_arena);
if (!keywords)
return NULL;
nargs = 0;
@@ -2620,7 +2633,7 @@ ast_for_expr_stmt(struct compiling *c, const node *n)
/* a normal assignment */
REQ(CHILD(n, 1), EQUAL);
- targets = asdl_seq_new(NCH(n) / 2, c->c_arena);
+ targets = _Py_asdl_seq_new(NCH(n) / 2, c->c_arena);
if (!targets)
return NULL;
for (i = 0; i < NCH(n) - 2; i += 2) {
@@ -2661,7 +2674,7 @@ ast_for_exprlist(struct compiling *c, const node *n, expr_context_ty context)
REQ(n, exprlist);
- seq = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
+ seq = _Py_asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
if (!seq)
return NULL;
for (i = 0; i < NCH(n); i += 2) {
@@ -2846,13 +2859,19 @@ alias_for_import_name(struct compiling *c, const node *n, int store)
return NULL;
str = uni;
PyUnicode_InternInPlace(&str);
- PyArena_AddPyObject(c->c_arena, str);
+ if (PyArena_AddPyObject(c->c_arena, str) < 0) {
+ Py_DECREF(str);
+ return NULL;
+ }
return alias(str, NULL, c->c_arena);
}
break;
case STAR:
str = PyUnicode_InternFromString("*");
- PyArena_AddPyObject(c->c_arena, str);
+ if (PyArena_AddPyObject(c->c_arena, str) < 0) {
+ Py_DECREF(str);
+ return NULL;
+ }
return alias(str, NULL, c->c_arena);
default:
PyErr_Format(PyExc_SystemError,
@@ -2885,7 +2904,7 @@ ast_for_import_stmt(struct compiling *c, const node *n)
if (TYPE(n) == import_name) {
n = CHILD(n, 1);
REQ(n, dotted_as_names);
- aliases = asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
+ aliases = _Py_asdl_seq_new((NCH(n) + 1) / 2, c->c_arena);
if (!aliases)
return NULL;
for (i = 0; i < NCH(n); i += 2) {
@@ -2947,7 +2966,7 @@ ast_for_import_stmt(struct compiling *c, const node *n)
return NULL;
}
- aliases = asdl_seq_new((n_children + 1) / 2, c->c_arena);
+ aliases = _Py_asdl_seq_new((n_children + 1) / 2, c->c_arena);
if (!aliases)
return NULL;
@@ -2986,7 +3005,7 @@ ast_for_global_stmt(struct compiling *c, const node *n)
int i;
REQ(n, global_stmt);
- s = asdl_seq_new(NCH(n) / 2, c->c_arena);
+ s = _Py_asdl_seq_new(NCH(n) / 2, c->c_arena);
if (!s)
return NULL;
for (i = 1; i < NCH(n); i += 2) {
@@ -3007,7 +3026,7 @@ ast_for_nonlocal_stmt(struct compiling *c, const node *n)
int i;
REQ(n, nonlocal_stmt);
- s = asdl_seq_new(NCH(n) / 2, c->c_arena);
+ s = _Py_asdl_seq_new(NCH(n) / 2, c->c_arena);
if (!s)
return NULL;
for (i = 1; i < NCH(n); i += 2) {
@@ -3060,7 +3079,7 @@ ast_for_suite(struct compiling *c, const node *n)
REQ(n, suite);
total = num_stmts(n);
- seq = asdl_seq_new(total, c->c_arena);
+ seq = _Py_asdl_seq_new(total, c->c_arena);
if (!seq)
return NULL;
if (TYPE(CHILD(n, 0)) == simple_stmt) {
@@ -3179,7 +3198,7 @@ ast_for_if_stmt(struct compiling *c, const node *n)
if (has_else) {
asdl_seq *suite_seq2;
- orelse = asdl_seq_new(1, c->c_arena);
+ orelse = _Py_asdl_seq_new(1, c->c_arena);
if (!orelse)
return NULL;
expression = ast_for_expr(c, CHILD(n, NCH(n) - 6));
@@ -3203,7 +3222,7 @@ ast_for_if_stmt(struct compiling *c, const node *n)
for (i = 0; i < n_elif; i++) {
int off = 5 + (n_elif - i - 1) * 4;
- asdl_seq *newobj = asdl_seq_new(1, c->c_arena);
+ asdl_seq *newobj = _Py_asdl_seq_new(1, c->c_arena);
if (!newobj)
return NULL;
expression = ast_for_expr(c, CHILD(n, off));
@@ -3415,7 +3434,7 @@ ast_for_try_stmt(struct compiling *c, const node *n)
if (n_except > 0) {
int i;
/* process except statements to create a try ... except */
- handlers = asdl_seq_new(n_except, c->c_arena);
+ handlers = _Py_asdl_seq_new(n_except, c->c_arena);
if (handlers == NULL)
return NULL;
@@ -3466,7 +3485,7 @@ ast_for_with_stmt(struct compiling *c, const node *n)
REQ(n, with_stmt);
n_items = (NCH(n) - 2) / 2;
- items = asdl_seq_new(n_items, c->c_arena);
+ items = _Py_asdl_seq_new(n_items, c->c_arena);
if (!items)
return NULL;
for (i = 1; i < NCH(n) - 2; i += 2) {
@@ -3632,18 +3651,16 @@ parsenumber(struct compiling *c, const char *s)
end = s + strlen(s) - 1;
imflag = *end == 'j' || *end == 'J';
if (s[0] == '0') {
- x = (long) PyOS_strtoul((char *)s, (char **)&end, 0);
+ x = (long) PyOS_strtoul(s, (char **)&end, 0);
if (x < 0 && errno == 0) {
- return PyLong_FromString((char *)s,
- (char **)0,
- 0);
+ return PyLong_FromString(s, (char **)0, 0);
}
}
else
- x = PyOS_strtol((char *)s, (char **)&end, 0);
+ x = PyOS_strtol(s, (char **)&end, 0);
if (*end == '\0') {
if (errno != 0)
- return PyLong_FromString((char *)s, (char **)0, 0);
+ return PyLong_FromString(s, (char **)0, 0);
return PyLong_FromLong(x);
}
/* XXX Huge floats may silently fail */
@@ -3666,8 +3683,8 @@ parsenumber(struct compiling *c, const char *s)
static PyObject *
decode_utf8(struct compiling *c, const char **sPtr, const char *end)
{
- char *s, *t;
- t = s = (char *)*sPtr;
+ const char *s, *t;
+ t = s = *sPtr;
/* while (s < end && *s != '\\') s++; */ /* inefficient for u".." */
while (s < end && (*s & 0x80)) s++;
*sPtr = s;
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index dffdf46..4713874 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -57,6 +57,11 @@ builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds)
return NULL;
}
func = PyTuple_GET_ITEM(args, 0); /* Better be callable */
+ if (!PyFunction_Check(func)) {
+ PyErr_SetString(PyExc_TypeError,
+ "__build__class__: func must be a function");
+ return NULL;
+ }
name = PyTuple_GET_ITEM(args, 1);
if (!PyUnicode_Check(name)) {
PyErr_SetString(PyExc_TypeError,
@@ -155,7 +160,9 @@ builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds)
Py_DECREF(bases);
return NULL;
}
- cell = PyObject_CallFunctionObjArgs(func, ns, NULL);
+ cell = PyEval_EvalCodeEx(PyFunction_GET_CODE(func), PyFunction_GET_GLOBALS(func), ns,
+ NULL, 0, NULL, 0, NULL, 0, NULL,
+ PyFunction_GET_CLOSURE(func));
if (cell != NULL) {
PyObject *margs;
margs = PyTuple_Pack(3, name, bases, ns);
@@ -572,8 +579,7 @@ static PyObject *
builtin_compile(PyObject *self, PyObject *args, PyObject *kwds)
{
char *str;
- PyObject *filename_obj;
- char *filename;
+ PyObject *filename;
char *startstr;
int mode = -1;
int dont_inherit = 0;
@@ -589,12 +595,11 @@ builtin_compile(PyObject *self, PyObject *args, PyObject *kwds)
if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&s|iii:compile", kwlist,
&cmd,
- PyUnicode_FSConverter, &filename_obj,
+ PyUnicode_FSDecoder, &filename,
&startstr, &supplied_flags,
&dont_inherit, &optimize))
return NULL;
- filename = PyBytes_AS_STRING(filename_obj);
cf.cf_flags = supplied_flags | PyCF_SOURCE_IS_UTF8;
if (supplied_flags &
@@ -652,24 +657,24 @@ builtin_compile(PyObject *self, PyObject *args, PyObject *kwds)
PyArena_Free(arena);
goto error;
}
- result = (PyObject*)PyAST_CompileEx(mod, filename,
- &cf, optimize, arena);
+ result = (PyObject*)PyAST_CompileObject(mod, filename,
+ &cf, optimize, arena);
PyArena_Free(arena);
}
goto finally;
}
- str = source_as_string(cmd, "compile", "string, bytes, AST or code", &cf);
+ str = source_as_string(cmd, "compile", "string, bytes or AST", &cf);
if (str == NULL)
goto error;
- result = Py_CompileStringExFlags(str, filename, start[mode], &cf, optimize);
+ result = Py_CompileStringObject(str, filename, start[mode], &cf, optimize);
goto finally;
error:
result = NULL;
finally:
- Py_DECREF(filename_obj);
+ Py_DECREF(filename);
return result;
}
@@ -1322,26 +1327,35 @@ static PyObject *
min_max(PyObject *args, PyObject *kwds, int op)
{
PyObject *v, *it, *item, *val, *maxitem, *maxval, *keyfunc=NULL;
+ PyObject *emptytuple, *defaultval = NULL;
+ static char *kwlist[] = {"key", "default", NULL};
const char *name = op == Py_LT ? "min" : "max";
+ const int positional = PyTuple_Size(args) > 1;
+ int ret;
- if (PyTuple_Size(args) > 1)
+ if (positional)
v = args;
- else if (!PyArg_UnpackTuple(args, (char *)name, 1, 1, &v))
+ else if (!PyArg_UnpackTuple(args, name, 1, 1, &v))
return NULL;
- if (kwds != NULL && PyDict_Check(kwds) && PyDict_Size(kwds)) {
- keyfunc = PyDict_GetItemString(kwds, "key");
- if (PyDict_Size(kwds)!=1 || keyfunc == NULL) {
- PyErr_Format(PyExc_TypeError,
- "%s() got an unexpected keyword argument", name);
- return NULL;
- }
- Py_INCREF(keyfunc);
+ emptytuple = PyTuple_New(0);
+ if (emptytuple == NULL)
+ return NULL;
+ ret = PyArg_ParseTupleAndKeywords(emptytuple, kwds, "|$OO", kwlist,
+ &keyfunc, &defaultval);
+ Py_DECREF(emptytuple);
+ if (!ret)
+ return NULL;
+
+ if (positional && defaultval != NULL) {
+ PyErr_Format(PyExc_TypeError,
+ "Cannot specify a default for %s() with multiple "
+ "positional arguments", name);
+ return NULL;
}
it = PyObject_GetIter(v);
if (it == NULL) {
- Py_XDECREF(keyfunc);
return NULL;
}
@@ -1385,14 +1399,18 @@ min_max(PyObject *args, PyObject *kwds, int op)
if (PyErr_Occurred())
goto Fail_it;
if (maxval == NULL) {
- PyErr_Format(PyExc_ValueError,
- "%s() arg is an empty sequence", name);
assert(maxitem == NULL);
+ if (defaultval != NULL) {
+ Py_INCREF(defaultval);
+ maxitem = defaultval;
+ } else {
+ PyErr_Format(PyExc_ValueError,
+ "%s() arg is an empty sequence", name);
+ }
}
else
Py_DECREF(maxval);
Py_DECREF(it);
- Py_XDECREF(keyfunc);
return maxitem;
Fail_it_item_and_val:
@@ -1403,7 +1421,6 @@ Fail_it:
Py_XDECREF(maxval);
Py_XDECREF(maxitem);
Py_DECREF(it);
- Py_XDECREF(keyfunc);
return NULL;
}
@@ -1531,6 +1548,11 @@ builtin_print(PyObject *self, PyObject *args, PyObject *kwds)
return NULL;
if (file == NULL || file == Py_None) {
file = PySys_GetObject("stdout");
+ if (file == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
+ return NULL;
+ }
+
/* sys.stdout may be None when FILE* stdout isn't connected */
if (file == Py_None)
Py_RETURN_NONE;
@@ -1810,10 +1832,10 @@ For most object types, eval(repr(object)) == object.");
static PyObject *
builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
{
- static PyObject *round_str = NULL;
PyObject *ndigits = NULL;
static char *kwlist[] = {"number", "ndigits", 0};
- PyObject *number, *round;
+ PyObject *number, *round, *result;
+ _Py_IDENTIFIER(__round__);
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:round",
kwlist, &number, &ndigits))
@@ -1824,24 +1846,21 @@ builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
return NULL;
}
- if (round_str == NULL) {
- round_str = PyUnicode_InternFromString("__round__");
- if (round_str == NULL)
- return NULL;
- }
-
- round = _PyType_Lookup(Py_TYPE(number), round_str);
+ round = _PyObject_LookupSpecial(number, &PyId___round__);
if (round == NULL) {
- PyErr_Format(PyExc_TypeError,
- "type %.100s doesn't define __round__ method",
- Py_TYPE(number)->tp_name);
+ if (!PyErr_Occurred())
+ PyErr_Format(PyExc_TypeError,
+ "type %.100s doesn't define __round__ method",
+ Py_TYPE(number)->tp_name);
return NULL;
}
if (ndigits == NULL)
- return PyObject_CallFunction(round, "O", number);
+ result = PyObject_CallFunctionObjArgs(round, NULL);
else
- return PyObject_CallFunction(round, "OO", number, ndigits);
+ result = PyObject_CallFunctionObjArgs(round, ndigits, NULL);
+ Py_DECREF(round);
+ return result;
}
PyDoc_STRVAR(round_doc,
@@ -2413,6 +2432,12 @@ PyObject *
_PyBuiltin_Init(void)
{
PyObject *mod, *dict, *debug;
+
+ if (PyType_Ready(&PyFilter_Type) < 0 ||
+ PyType_Ready(&PyMap_Type) < 0 ||
+ PyType_Ready(&PyZip_Type) < 0)
+ return NULL;
+
mod = PyModule_Create(&builtinsmodule);
if (mod == NULL)
return NULL;
diff --git a/Python/ceval.c b/Python/ceval.c
index faee5cd..2d52862 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -37,7 +37,7 @@ typedef unsigned long long uint64;
static void
ppc_getcounter(uint64 *v)
{
- register unsigned long tbu, tb, tbu2;
+ unsigned long tbu, tb, tbu2;
loop:
asm volatile ("mftbu %0" : "=r" (tbu) );
@@ -142,8 +142,6 @@ static PyObject * special_lookup(PyObject *, _Py_Identifier *);
#define NAME_ERROR_MSG \
"name '%.200s' is not defined"
-#define GLOBAL_NAME_ERROR_MSG \
- "global name '%.200s' is not defined"
#define UNBOUNDLOCAL_ERROR_MSG \
"local variable '%.200s' referenced before assignment"
#define UNBOUNDFREE_ERROR_MSG \
@@ -364,29 +362,28 @@ PyEval_ReleaseThread(PyThreadState *tstate)
drop_gil(tstate);
}
-/* This function is called from PyOS_AfterFork to ensure that newly
- created child processes don't hold locks referring to threads which
- are not running in the child process. (This could also be done using
- pthread_atfork mechanism, at least for the pthreads implementation.) */
+/* This function is called from PyOS_AfterFork to destroy all threads which are
+ * not running in the child process, and clear internal locks which might be
+ * held by those threads. (This could also be done using pthread_atfork
+ * mechanism, at least for the pthreads implementation.) */
void
PyEval_ReInitThreads(void)
{
_Py_IDENTIFIER(_after_fork);
PyObject *threading, *result;
- PyThreadState *tstate = PyThreadState_GET();
+ PyThreadState *current_tstate = PyThreadState_GET();
if (!gil_created())
return;
recreate_gil();
pending_lock = PyThread_allocate_lock();
- take_gil(tstate);
+ take_gil(current_tstate);
main_thread = PyThread_get_thread_ident();
/* Update the threading module with the new state.
*/
- tstate = PyThreadState_GET();
- threading = PyMapping_GetItemString(tstate->interp->modules,
+ threading = PyMapping_GetItemString(current_tstate->interp->modules,
"threading");
if (threading == NULL) {
/* threading not imported */
@@ -399,6 +396,9 @@ PyEval_ReInitThreads(void)
else
Py_DECREF(result);
Py_DECREF(threading);
+
+ /* Destroy all threads except the current one */
+ _PyThreadState_DeleteExcept(current_tstate);
}
#else
@@ -742,7 +742,6 @@ _Py_CheckRecursiveCall(char *where)
enum why_code {
WHY_NOT = 0x0001, /* No error */
WHY_EXCEPTION = 0x0002, /* Exception occurred */
- WHY_RERAISE = 0x0004, /* Exception re-raised by 'finally' */
WHY_RETURN = 0x0008, /* 'return' statement */
WHY_BREAK = 0x0010, /* 'break' statement */
WHY_CONTINUE = 0x0020, /* 'continue' statement */
@@ -753,7 +752,7 @@ enum why_code {
static void save_exc_state(PyThreadState *, PyFrameObject *);
static void swap_exc_state(PyThreadState *, PyFrameObject *);
static void restore_and_clear_exc_state(PyThreadState *, PyFrameObject *);
-static enum why_code do_raise(PyObject *, PyObject *);
+static int do_raise(PyObject *, PyObject *);
static int unpack_iterable(PyObject *, int, int, PyObject **);
/* Records whether tracing is on for any thread. Counts the number of
@@ -793,18 +792,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#ifdef DXPAIRS
int lastopcode = 0;
#endif
- register PyObject **stack_pointer; /* Next free slot in value stack */
- register unsigned char *next_instr;
- register int opcode; /* Current opcode */
- register int oparg; /* Current opcode argument, if any */
- register enum why_code why; /* Reason for block stack unwind */
- register int err; /* Error status -- nonzero if error */
- register PyObject *x; /* Result object -- NULL if error */
- register PyObject *v; /* Temporary objects popped off stack */
- register PyObject *w;
- register PyObject *u;
- register PyObject *t;
- register PyObject **fastlocals, **freevars;
+ PyObject **stack_pointer; /* Next free slot in value stack */
+ unsigned char *next_instr;
+ int opcode; /* Current opcode */
+ int oparg; /* Current opcode argument, if any */
+ enum why_code why; /* Reason for block stack unwind */
+ PyObject **fastlocals, **freevars;
PyObject *retval = NULL; /* Return value */
PyThreadState *tstate = PyThreadState_GET();
PyCodeObject *co;
@@ -1189,6 +1182,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
stack_pointer = f->f_stacktop;
assert(stack_pointer != NULL);
f->f_stacktop = NULL; /* remains NULL unless yield suspends frame */
+ f->f_executing = 1;
if (co->co_flags & CO_GENERATOR && !throwflag) {
if (f->f_exc_type != NULL && f->f_exc_type != Py_None) {
@@ -1206,14 +1200,16 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#endif
why = WHY_NOT;
- err = 0;
- x = Py_None; /* Not a reference, just anything non-NULL */
- w = NULL;
- if (throwflag) { /* support for generator.throw() */
- why = WHY_EXCEPTION;
- goto on_error;
- }
+ if (throwflag) /* support for generator.throw() */
+ goto error;
+
+#ifdef Py_DEBUG
+ /* PyEval_EvalFrameEx() must not be called with an exception set,
+ because it may clear it (directly or indirectly) and so the
+ caller looses its exception */
+ assert(!PyErr_Occurred());
+#endif
for (;;) {
#ifdef WITH_TSC
@@ -1235,6 +1231,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#endif
assert(stack_pointer >= f->f_valuestack); /* else underflow */
assert(STACK_LEVEL() <= co->co_stacksize); /* else overflow */
+ assert(!PyErr_Occurred());
/* Do periodic things. Doing this every time through
the loop would add too much overhead, so we do it
@@ -1250,15 +1247,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
a try: finally: block uninterruptible. */
goto fast_next_opcode;
}
- tstate->tick_counter++;
#ifdef WITH_TSC
ticked = 1;
#endif
if (_Py_atomic_load_relaxed(&pendingcalls_to_do)) {
- if (Py_MakePendingCalls() < 0) {
- why = WHY_EXCEPTION;
- goto on_error;
- }
+ if (Py_MakePendingCalls() < 0)
+ goto error;
}
#ifdef WITH_THREAD
if (_Py_atomic_load_relaxed(&gil_drop_request)) {
@@ -1276,13 +1270,12 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#endif
/* Check for asynchronous exceptions. */
if (tstate->async_exc != NULL) {
- x = tstate->async_exc;
+ PyObject *exc = tstate->async_exc;
tstate->async_exc = NULL;
UNSIGNAL_ASYNC_EXC();
- PyErr_SetNone(x);
- Py_DECREF(x);
- why = WHY_EXCEPTION;
- goto on_error;
+ PyErr_SetNone(exc);
+ Py_DECREF(exc);
+ goto error;
}
}
@@ -1293,6 +1286,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
if (_Py_TracingPossible &&
tstate->c_tracefunc != NULL && !tstate->tracing) {
+ int err;
/* see maybe_call_line_trace
for expository comments */
f->f_stacktop = stack_pointer;
@@ -1307,10 +1301,9 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
stack_pointer = f->f_stacktop;
f->f_stacktop = NULL;
}
- if (err) {
+ if (err)
/* trace function raised an exception */
- goto on_error;
- }
+ goto error;
}
/* Extract opcode and argument */
@@ -1357,87 +1350,99 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
TARGET(NOP)
FAST_DISPATCH();
- TARGET(LOAD_FAST)
- x = GETLOCAL(oparg);
- if (x != NULL) {
- Py_INCREF(x);
- PUSH(x);
- FAST_DISPATCH();
+ TARGET(LOAD_FAST) {
+ PyObject *value = GETLOCAL(oparg);
+ if (value == NULL) {
+ format_exc_check_arg(PyExc_UnboundLocalError,
+ UNBOUNDLOCAL_ERROR_MSG,
+ PyTuple_GetItem(co->co_varnames, oparg));
+ goto error;
}
- format_exc_check_arg(PyExc_UnboundLocalError,
- UNBOUNDLOCAL_ERROR_MSG,
- PyTuple_GetItem(co->co_varnames, oparg));
- break;
+ Py_INCREF(value);
+ PUSH(value);
+ FAST_DISPATCH();
+ }
- TARGET(LOAD_CONST)
- x = GETITEM(consts, oparg);
- Py_INCREF(x);
- PUSH(x);
+ TARGET(LOAD_CONST) {
+ PyObject *value = GETITEM(consts, oparg);
+ Py_INCREF(value);
+ PUSH(value);
FAST_DISPATCH();
+ }
PREDICTED_WITH_ARG(STORE_FAST);
- TARGET(STORE_FAST)
- v = POP();
- SETLOCAL(oparg, v);
+ TARGET(STORE_FAST) {
+ PyObject *value = POP();
+ SETLOCAL(oparg, value);
FAST_DISPATCH();
+ }
- TARGET(POP_TOP)
- v = POP();
- Py_DECREF(v);
+ TARGET(POP_TOP) {
+ PyObject *value = POP();
+ Py_DECREF(value);
FAST_DISPATCH();
+ }
- TARGET(ROT_TWO)
- v = TOP();
- w = SECOND();
- SET_TOP(w);
- SET_SECOND(v);
+ TARGET(ROT_TWO) {
+ PyObject *top = TOP();
+ PyObject *second = SECOND();
+ SET_TOP(second);
+ SET_SECOND(top);
FAST_DISPATCH();
+ }
- TARGET(ROT_THREE)
- v = TOP();
- w = SECOND();
- x = THIRD();
- SET_TOP(w);
- SET_SECOND(x);
- SET_THIRD(v);
+ TARGET(ROT_THREE) {
+ PyObject *top = TOP();
+ PyObject *second = SECOND();
+ PyObject *third = THIRD();
+ SET_TOP(second);
+ SET_SECOND(third);
+ SET_THIRD(top);
FAST_DISPATCH();
+ }
- TARGET(DUP_TOP)
- v = TOP();
- Py_INCREF(v);
- PUSH(v);
+ TARGET(DUP_TOP) {
+ PyObject *top = TOP();
+ Py_INCREF(top);
+ PUSH(top);
FAST_DISPATCH();
+ }
- TARGET(DUP_TOP_TWO)
- x = TOP();
- Py_INCREF(x);
- w = SECOND();
- Py_INCREF(w);
+ TARGET(DUP_TOP_TWO) {
+ PyObject *top = TOP();
+ PyObject *second = SECOND();
+ Py_INCREF(top);
+ Py_INCREF(second);
STACKADJ(2);
- SET_TOP(x);
- SET_SECOND(w);
+ SET_TOP(top);
+ SET_SECOND(second);
FAST_DISPATCH();
+ }
- TARGET(UNARY_POSITIVE)
- v = TOP();
- x = PyNumber_Positive(v);
- Py_DECREF(v);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(UNARY_POSITIVE) {
+ PyObject *value = TOP();
+ PyObject *res = PyNumber_Positive(value);
+ Py_DECREF(value);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(UNARY_NEGATIVE)
- v = TOP();
- x = PyNumber_Negative(v);
- Py_DECREF(v);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(UNARY_NEGATIVE) {
+ PyObject *value = TOP();
+ PyObject *res = PyNumber_Negative(value);
+ Py_DECREF(value);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(UNARY_NOT)
- v = TOP();
- err = PyObject_IsTrue(v);
- Py_DECREF(v);
+ TARGET(UNARY_NOT) {
+ PyObject *value = TOP();
+ int err = PyObject_IsTrue(value);
+ Py_DECREF(value);
if (err == 0) {
Py_INCREF(Py_True);
SET_TOP(Py_True);
@@ -1450,416 +1455,460 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
DISPATCH();
}
STACKADJ(-1);
- break;
+ goto error;
+ }
- TARGET(UNARY_INVERT)
- v = TOP();
- x = PyNumber_Invert(v);
- Py_DECREF(v);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(UNARY_INVERT) {
+ PyObject *value = TOP();
+ PyObject *res = PyNumber_Invert(value);
+ Py_DECREF(value);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_POWER)
- w = POP();
- v = TOP();
- x = PyNumber_Power(v, w, Py_None);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_POWER) {
+ PyObject *exp = POP();
+ PyObject *base = TOP();
+ PyObject *res = PyNumber_Power(base, exp, Py_None);
+ Py_DECREF(base);
+ Py_DECREF(exp);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_MULTIPLY)
- w = POP();
- v = TOP();
- x = PyNumber_Multiply(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_MULTIPLY) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_Multiply(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_TRUE_DIVIDE)
- w = POP();
- v = TOP();
- x = PyNumber_TrueDivide(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_TRUE_DIVIDE) {
+ PyObject *divisor = POP();
+ PyObject *dividend = TOP();
+ PyObject *quotient = PyNumber_TrueDivide(dividend, divisor);
+ Py_DECREF(dividend);
+ Py_DECREF(divisor);
+ SET_TOP(quotient);
+ if (quotient == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_FLOOR_DIVIDE)
- w = POP();
- v = TOP();
- x = PyNumber_FloorDivide(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_FLOOR_DIVIDE) {
+ PyObject *divisor = POP();
+ PyObject *dividend = TOP();
+ PyObject *quotient = PyNumber_FloorDivide(dividend, divisor);
+ Py_DECREF(dividend);
+ Py_DECREF(divisor);
+ SET_TOP(quotient);
+ if (quotient == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_MODULO)
- w = POP();
- v = TOP();
- if (PyUnicode_CheckExact(v))
- x = PyUnicode_Format(v, w);
- else
- x = PyNumber_Remainder(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_MODULO) {
+ PyObject *divisor = POP();
+ PyObject *dividend = TOP();
+ PyObject *res = PyUnicode_CheckExact(dividend) ?
+ PyUnicode_Format(dividend, divisor) :
+ PyNumber_Remainder(dividend, divisor);
+ Py_DECREF(divisor);
+ Py_DECREF(dividend);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_ADD)
- w = POP();
- v = TOP();
- if (PyUnicode_CheckExact(v) &&
- PyUnicode_CheckExact(w)) {
- x = unicode_concatenate(v, w, f, next_instr);
+ TARGET(BINARY_ADD) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *sum;
+ if (PyUnicode_CheckExact(left) &&
+ PyUnicode_CheckExact(right)) {
+ sum = unicode_concatenate(left, right, f, next_instr);
/* unicode_concatenate consumed the ref to v */
- goto skip_decref_vx;
}
else {
- x = PyNumber_Add(v, w);
+ sum = PyNumber_Add(left, right);
+ Py_DECREF(left);
}
- Py_DECREF(v);
- skip_decref_vx:
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
-
- TARGET(BINARY_SUBTRACT)
- w = POP();
- v = TOP();
- x = PyNumber_Subtract(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
-
- TARGET(BINARY_SUBSCR)
- w = POP();
- v = TOP();
- x = PyObject_GetItem(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ Py_DECREF(right);
+ SET_TOP(sum);
+ if (sum == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_LSHIFT)
- w = POP();
- v = TOP();
- x = PyNumber_Lshift(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_SUBTRACT) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *diff = PyNumber_Subtract(left, right);
+ Py_DECREF(right);
+ Py_DECREF(left);
+ SET_TOP(diff);
+ if (diff == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_RSHIFT)
- w = POP();
- v = TOP();
- x = PyNumber_Rshift(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_SUBSCR) {
+ PyObject *sub = POP();
+ PyObject *container = TOP();
+ PyObject *res = PyObject_GetItem(container, sub);
+ Py_DECREF(container);
+ Py_DECREF(sub);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_AND)
- w = POP();
- v = TOP();
- x = PyNumber_And(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_LSHIFT) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_Lshift(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_XOR)
- w = POP();
- v = TOP();
- x = PyNumber_Xor(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_RSHIFT) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_Rshift(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(BINARY_OR)
- w = POP();
- v = TOP();
- x = PyNumber_Or(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BINARY_AND) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_And(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(LIST_APPEND)
- w = POP();
- v = PEEK(oparg);
- err = PyList_Append(v, w);
- Py_DECREF(w);
- if (err == 0) {
- PREDICT(JUMP_ABSOLUTE);
- DISPATCH();
- }
- break;
+ TARGET(BINARY_XOR) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_Xor(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(SET_ADD)
- w = POP();
- v = stack_pointer[-oparg];
- err = PySet_Add(v, w);
- Py_DECREF(w);
- if (err == 0) {
- PREDICT(JUMP_ABSOLUTE);
- DISPATCH();
- }
- break;
+ TARGET(BINARY_OR) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_Or(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_POWER)
- w = POP();
- v = TOP();
- x = PyNumber_InPlacePower(v, w, Py_None);
+ TARGET(LIST_APPEND) {
+ PyObject *v = POP();
+ PyObject *list = PEEK(oparg);
+ int err;
+ err = PyList_Append(list, v);
Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ if (err != 0)
+ goto error;
+ PREDICT(JUMP_ABSOLUTE);
+ DISPATCH();
+ }
- TARGET(INPLACE_MULTIPLY)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceMultiply(v, w);
+ TARGET(SET_ADD) {
+ PyObject *v = POP();
+ PyObject *set = stack_pointer[-oparg];
+ int err;
+ err = PySet_Add(set, v);
Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ if (err != 0)
+ goto error;
+ PREDICT(JUMP_ABSOLUTE);
+ DISPATCH();
+ }
- TARGET(INPLACE_TRUE_DIVIDE)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceTrueDivide(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_POWER) {
+ PyObject *exp = POP();
+ PyObject *base = TOP();
+ PyObject *res = PyNumber_InPlacePower(base, exp, Py_None);
+ Py_DECREF(base);
+ Py_DECREF(exp);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_FLOOR_DIVIDE)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceFloorDivide(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_MULTIPLY) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_InPlaceMultiply(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_MODULO)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceRemainder(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_TRUE_DIVIDE) {
+ PyObject *divisor = POP();
+ PyObject *dividend = TOP();
+ PyObject *quotient = PyNumber_InPlaceTrueDivide(dividend, divisor);
+ Py_DECREF(dividend);
+ Py_DECREF(divisor);
+ SET_TOP(quotient);
+ if (quotient == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_ADD)
- w = POP();
- v = TOP();
- if (PyUnicode_CheckExact(v) &&
- PyUnicode_CheckExact(w)) {
- x = unicode_concatenate(v, w, f, next_instr);
+ TARGET(INPLACE_FLOOR_DIVIDE) {
+ PyObject *divisor = POP();
+ PyObject *dividend = TOP();
+ PyObject *quotient = PyNumber_InPlaceFloorDivide(dividend, divisor);
+ Py_DECREF(dividend);
+ Py_DECREF(divisor);
+ SET_TOP(quotient);
+ if (quotient == NULL)
+ goto error;
+ DISPATCH();
+ }
+
+ TARGET(INPLACE_MODULO) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *mod = PyNumber_InPlaceRemainder(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(mod);
+ if (mod == NULL)
+ goto error;
+ DISPATCH();
+ }
+
+ TARGET(INPLACE_ADD) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *sum;
+ if (PyUnicode_CheckExact(left) && PyUnicode_CheckExact(right)) {
+ sum = unicode_concatenate(left, right, f, next_instr);
/* unicode_concatenate consumed the ref to v */
- goto skip_decref_v;
}
else {
- x = PyNumber_InPlaceAdd(v, w);
+ sum = PyNumber_InPlaceAdd(left, right);
+ Py_DECREF(left);
}
- Py_DECREF(v);
- skip_decref_v:
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ Py_DECREF(right);
+ SET_TOP(sum);
+ if (sum == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_SUBTRACT)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceSubtract(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_SUBTRACT) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *diff = PyNumber_InPlaceSubtract(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(diff);
+ if (diff == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_LSHIFT)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceLshift(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_LSHIFT) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_InPlaceLshift(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_RSHIFT)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceRshift(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_RSHIFT) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_InPlaceRshift(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_AND)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceAnd(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_AND) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_InPlaceAnd(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_XOR)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceXor(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_XOR) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_InPlaceXor(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(INPLACE_OR)
- w = POP();
- v = TOP();
- x = PyNumber_InPlaceOr(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(INPLACE_OR) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = PyNumber_InPlaceOr(left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(STORE_SUBSCR)
- w = TOP();
- v = SECOND();
- u = THIRD();
+ TARGET(STORE_SUBSCR) {
+ PyObject *sub = TOP();
+ PyObject *container = SECOND();
+ PyObject *v = THIRD();
+ int err;
STACKADJ(-3);
/* v[w] = u */
- err = PyObject_SetItem(v, w, u);
- Py_DECREF(u);
+ err = PyObject_SetItem(container, sub, v);
Py_DECREF(v);
- Py_DECREF(w);
- if (err == 0) DISPATCH();
- break;
+ Py_DECREF(container);
+ Py_DECREF(sub);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(DELETE_SUBSCR)
- w = TOP();
- v = SECOND();
+ TARGET(DELETE_SUBSCR) {
+ PyObject *sub = TOP();
+ PyObject *container = SECOND();
+ int err;
STACKADJ(-2);
/* del v[w] */
- err = PyObject_DelItem(v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- if (err == 0) DISPATCH();
- break;
+ err = PyObject_DelItem(container, sub);
+ Py_DECREF(container);
+ Py_DECREF(sub);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(PRINT_EXPR)
- v = POP();
- w = PySys_GetObject("displayhook");
- if (w == NULL) {
+ TARGET(PRINT_EXPR) {
+ PyObject *value = POP();
+ PyObject *hook = PySys_GetObject("displayhook");
+ PyObject *res;
+ if (hook == NULL) {
PyErr_SetString(PyExc_RuntimeError,
"lost sys.displayhook");
- err = -1;
- x = NULL;
- }
- if (err == 0) {
- x = PyTuple_Pack(1, v);
- if (x == NULL)
- err = -1;
+ Py_DECREF(value);
+ goto error;
}
- if (err == 0) {
- w = PyEval_CallObject(w, x);
- Py_XDECREF(w);
- if (w == NULL)
- err = -1;
- }
- Py_DECREF(v);
- Py_XDECREF(x);
- break;
+ res = PyObject_CallFunctionObjArgs(hook, value, NULL);
+ Py_DECREF(value);
+ if (res == NULL)
+ goto error;
+ Py_DECREF(res);
+ DISPATCH();
+ }
#ifdef CASE_TOO_BIG
default: switch (opcode) {
#endif
- TARGET(RAISE_VARARGS)
- v = w = NULL;
+ TARGET(RAISE_VARARGS) {
+ PyObject *cause = NULL, *exc = NULL;
switch (oparg) {
case 2:
- v = POP(); /* cause */
+ cause = POP(); /* cause */
case 1:
- w = POP(); /* exc */
+ exc = POP(); /* exc */
case 0: /* Fallthrough */
- why = do_raise(w, v);
+ if (do_raise(exc, cause)) {
+ why = WHY_EXCEPTION;
+ goto fast_block_end;
+ }
break;
default:
PyErr_SetString(PyExc_SystemError,
"bad RAISE_VARARGS oparg");
- why = WHY_EXCEPTION;
break;
}
- break;
-
- TARGET(STORE_LOCALS)
- x = POP();
- v = f->f_locals;
- Py_XDECREF(v);
- f->f_locals = x;
- DISPATCH();
+ goto error;
+ }
- TARGET(RETURN_VALUE)
+ TARGET(RETURN_VALUE) {
retval = POP();
why = WHY_RETURN;
goto fast_block_end;
+ }
- TARGET(YIELD_FROM)
- u = POP();
- x = TOP();
- /* send u to x */
- if (PyGen_CheckExact(x)) {
- retval = _PyGen_Send((PyGenObject *)x, u);
+ TARGET(YIELD_FROM) {
+ PyObject *v = POP();
+ PyObject *reciever = TOP();
+ int err;
+ if (PyGen_CheckExact(reciever)) {
+ retval = _PyGen_Send((PyGenObject *)reciever, v);
} else {
_Py_IDENTIFIER(send);
- if (u == Py_None)
- retval = Py_TYPE(x)->tp_iternext(x);
+ if (v == Py_None)
+ retval = Py_TYPE(reciever)->tp_iternext(reciever);
else
- retval = _PyObject_CallMethodId(x, &PyId_send, "O", u);
+ retval = _PyObject_CallMethodId(reciever, &PyId_send, "O", v);
}
- Py_DECREF(u);
- if (!retval) {
+ Py_DECREF(v);
+ if (retval == NULL) {
PyObject *val;
- x = POP(); /* Remove iter from stack */
- Py_DECREF(x);
err = _PyGen_FetchStopIterationValue(&val);
- if (err < 0) {
- x = NULL;
- break;
- }
- x = val;
- PUSH(x);
- continue;
+ if (err < 0)
+ goto error;
+ Py_DECREF(reciever);
+ SET_TOP(val);
+ DISPATCH();
}
/* x remains on stack, retval is value to be yielded */
f->f_stacktop = stack_pointer;
@@ -1867,39 +1916,38 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* and repeat... */
f->f_lasti--;
goto fast_yield;
+ }
- TARGET(YIELD_VALUE)
+ TARGET(YIELD_VALUE) {
retval = POP();
f->f_stacktop = stack_pointer;
why = WHY_YIELD;
goto fast_yield;
+ }
- TARGET(POP_EXCEPT)
- {
- PyTryBlock *b = PyFrame_BlockPop(f);
- if (b->b_type != EXCEPT_HANDLER) {
- PyErr_SetString(PyExc_SystemError,
- "popped block is not an except handler");
- why = WHY_EXCEPTION;
- break;
- }
- UNWIND_EXCEPT_HANDLER(b);
+ TARGET(POP_EXCEPT) {
+ PyTryBlock *b = PyFrame_BlockPop(f);
+ if (b->b_type != EXCEPT_HANDLER) {
+ PyErr_SetString(PyExc_SystemError,
+ "popped block is not an except handler");
+ goto error;
}
+ UNWIND_EXCEPT_HANDLER(b);
DISPATCH();
+ }
- TARGET(POP_BLOCK)
- {
- PyTryBlock *b = PyFrame_BlockPop(f);
- UNWIND_BLOCK(b);
- }
+ TARGET(POP_BLOCK) {
+ PyTryBlock *b = PyFrame_BlockPop(f);
+ UNWIND_BLOCK(b);
DISPATCH();
+ }
PREDICTED(END_FINALLY);
- TARGET(END_FINALLY)
- v = POP();
- if (PyLong_Check(v)) {
- why = (enum why_code) PyLong_AS_LONG(v);
- assert(why != WHY_YIELD);
+ TARGET(END_FINALLY) {
+ PyObject *status = POP();
+ if (PyLong_Check(status)) {
+ why = (enum why_code) PyLong_AS_LONG(status);
+ assert(why != WHY_YIELD && why != WHY_EXCEPTION);
if (why == WHY_RETURN ||
why == WHY_CONTINUE)
retval = POP();
@@ -1912,248 +1960,280 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
assert(b->b_type == EXCEPT_HANDLER);
UNWIND_EXCEPT_HANDLER(b);
why = WHY_NOT;
+ Py_DECREF(status);
+ DISPATCH();
}
+ Py_DECREF(status);
+ goto fast_block_end;
}
- else if (PyExceptionClass_Check(v)) {
- w = POP();
- u = POP();
- PyErr_Restore(v, w, u);
- why = WHY_RERAISE;
- break;
+ else if (PyExceptionClass_Check(status)) {
+ PyObject *exc = POP();
+ PyObject *tb = POP();
+ PyErr_Restore(status, exc, tb);
+ why = WHY_EXCEPTION;
+ goto fast_block_end;
}
- else if (v != Py_None) {
+ else if (status != Py_None) {
PyErr_SetString(PyExc_SystemError,
"'finally' pops bad exception");
- why = WHY_EXCEPTION;
+ Py_DECREF(status);
+ goto error;
}
- Py_DECREF(v);
- break;
+ Py_DECREF(status);
+ DISPATCH();
+ }
- TARGET(LOAD_BUILD_CLASS)
- {
+ TARGET(LOAD_BUILD_CLASS) {
_Py_IDENTIFIER(__build_class__);
+ PyObject *bc;
if (PyDict_CheckExact(f->f_builtins)) {
- x = _PyDict_GetItemId(f->f_builtins, &PyId___build_class__);
- if (x == NULL) {
+ bc = _PyDict_GetItemId(f->f_builtins, &PyId___build_class__);
+ if (bc == NULL) {
PyErr_SetString(PyExc_NameError,
"__build_class__ not found");
- break;
+ goto error;
}
- Py_INCREF(x);
+ Py_INCREF(bc);
}
else {
PyObject *build_class_str = _PyUnicode_FromId(&PyId___build_class__);
if (build_class_str == NULL)
break;
- x = PyObject_GetItem(f->f_builtins, build_class_str);
- if (x == NULL) {
+ bc = PyObject_GetItem(f->f_builtins, build_class_str);
+ if (bc == NULL) {
if (PyErr_ExceptionMatches(PyExc_KeyError))
PyErr_SetString(PyExc_NameError,
"__build_class__ not found");
- break;
+ goto error;
}
}
- PUSH(x);
- break;
+ PUSH(bc);
+ DISPATCH();
}
- TARGET(STORE_NAME)
- w = GETITEM(names, oparg);
- v = POP();
- if ((x = f->f_locals) != NULL) {
- if (PyDict_CheckExact(x))
- err = PyDict_SetItem(x, w, v);
- else
- err = PyObject_SetItem(x, w, v);
+ TARGET(STORE_NAME) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *v = POP();
+ PyObject *ns = f->f_locals;
+ int err;
+ if (ns == NULL) {
+ PyErr_Format(PyExc_SystemError,
+ "no locals found when storing %R", name);
Py_DECREF(v);
- if (err == 0) DISPATCH();
- break;
+ goto error;
}
- PyErr_Format(PyExc_SystemError,
- "no locals found when storing %R", w);
- break;
+ if (PyDict_CheckExact(ns))
+ err = PyDict_SetItem(ns, name, v);
+ else
+ err = PyObject_SetItem(ns, name, v);
+ Py_DECREF(v);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(DELETE_NAME)
- w = GETITEM(names, oparg);
- if ((x = f->f_locals) != NULL) {
- if ((err = PyObject_DelItem(x, w)) != 0)
- format_exc_check_arg(PyExc_NameError,
- NAME_ERROR_MSG,
- w);
- break;
+ TARGET(DELETE_NAME) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *ns = f->f_locals;
+ int err;
+ if (ns == NULL) {
+ PyErr_Format(PyExc_SystemError,
+ "no locals when deleting %R", name);
+ goto error;
}
- PyErr_Format(PyExc_SystemError,
- "no locals when deleting %R", w);
- break;
+ err = PyObject_DelItem(ns, name);
+ if (err != 0) {
+ format_exc_check_arg(PyExc_NameError,
+ NAME_ERROR_MSG,
+ name);
+ goto error;
+ }
+ DISPATCH();
+ }
PREDICTED_WITH_ARG(UNPACK_SEQUENCE);
- TARGET(UNPACK_SEQUENCE)
- v = POP();
- if (PyTuple_CheckExact(v) &&
- PyTuple_GET_SIZE(v) == oparg) {
- PyObject **items = \
- ((PyTupleObject *)v)->ob_item;
+ TARGET(UNPACK_SEQUENCE) {
+ PyObject *seq = POP(), *item, **items;
+ if (PyTuple_CheckExact(seq) &&
+ PyTuple_GET_SIZE(seq) == oparg) {
+ items = ((PyTupleObject *)seq)->ob_item;
while (oparg--) {
- w = items[oparg];
- Py_INCREF(w);
- PUSH(w);
+ item = items[oparg];
+ Py_INCREF(item);
+ PUSH(item);
}
- Py_DECREF(v);
- DISPATCH();
- } else if (PyList_CheckExact(v) &&
- PyList_GET_SIZE(v) == oparg) {
- PyObject **items = \
- ((PyListObject *)v)->ob_item;
+ } else if (PyList_CheckExact(seq) &&
+ PyList_GET_SIZE(seq) == oparg) {
+ items = ((PyListObject *)seq)->ob_item;
while (oparg--) {
- w = items[oparg];
- Py_INCREF(w);
- PUSH(w);
+ item = items[oparg];
+ Py_INCREF(item);
+ PUSH(item);
}
- } else if (unpack_iterable(v, oparg, -1,
+ } else if (unpack_iterable(seq, oparg, -1,
stack_pointer + oparg)) {
STACKADJ(oparg);
} else {
/* unpack_iterable() raised an exception */
- why = WHY_EXCEPTION;
+ Py_DECREF(seq);
+ goto error;
}
- Py_DECREF(v);
- break;
+ Py_DECREF(seq);
+ DISPATCH();
+ }
- TARGET(UNPACK_EX)
- {
+ TARGET(UNPACK_EX) {
int totalargs = 1 + (oparg & 0xFF) + (oparg >> 8);
- v = POP();
+ PyObject *seq = POP();
- if (unpack_iterable(v, oparg & 0xFF, oparg >> 8,
+ if (unpack_iterable(seq, oparg & 0xFF, oparg >> 8,
stack_pointer + totalargs)) {
stack_pointer += totalargs;
} else {
- why = WHY_EXCEPTION;
+ Py_DECREF(seq);
+ goto error;
}
- Py_DECREF(v);
- break;
+ Py_DECREF(seq);
+ DISPATCH();
}
- TARGET(STORE_ATTR)
- w = GETITEM(names, oparg);
- v = TOP();
- u = SECOND();
+ TARGET(STORE_ATTR) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *owner = TOP();
+ PyObject *v = SECOND();
+ int err;
STACKADJ(-2);
- err = PyObject_SetAttr(v, w, u); /* v.w = u */
+ err = PyObject_SetAttr(owner, name, v);
Py_DECREF(v);
- Py_DECREF(u);
- if (err == 0) DISPATCH();
- break;
+ Py_DECREF(owner);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(DELETE_ATTR)
- w = GETITEM(names, oparg);
- v = POP();
- err = PyObject_SetAttr(v, w, (PyObject *)NULL);
- /* del v.w */
- Py_DECREF(v);
- break;
+ TARGET(DELETE_ATTR) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *owner = POP();
+ int err;
+ err = PyObject_SetAttr(owner, name, (PyObject *)NULL);
+ Py_DECREF(owner);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(STORE_GLOBAL)
- w = GETITEM(names, oparg);
- v = POP();
- err = PyDict_SetItem(f->f_globals, w, v);
+ TARGET(STORE_GLOBAL) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *v = POP();
+ int err;
+ err = PyDict_SetItem(f->f_globals, name, v);
Py_DECREF(v);
- if (err == 0) DISPATCH();
- break;
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(DELETE_GLOBAL)
- w = GETITEM(names, oparg);
- if ((err = PyDict_DelItem(f->f_globals, w)) != 0)
+ TARGET(DELETE_GLOBAL) {
+ PyObject *name = GETITEM(names, oparg);
+ int err;
+ err = PyDict_DelItem(f->f_globals, name);
+ if (err != 0) {
format_exc_check_arg(
- PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w);
- break;
+ PyExc_NameError, NAME_ERROR_MSG, name);
+ goto error;
+ }
+ DISPATCH();
+ }
- TARGET(LOAD_NAME)
- w = GETITEM(names, oparg);
- if ((v = f->f_locals) == NULL) {
+ TARGET(LOAD_NAME) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *locals = f->f_locals;
+ PyObject *v;
+ if (locals == NULL) {
PyErr_Format(PyExc_SystemError,
- "no locals when loading %R", w);
- why = WHY_EXCEPTION;
- break;
+ "no locals when loading %R", name);
+ goto error;
}
- if (PyDict_CheckExact(v)) {
- x = PyDict_GetItem(v, w);
- Py_XINCREF(x);
+ if (PyDict_CheckExact(locals)) {
+ v = PyDict_GetItem(locals, name);
+ Py_XINCREF(v);
}
else {
- x = PyObject_GetItem(v, w);
- if (x == NULL && _PyErr_OCCURRED()) {
- if (!PyErr_ExceptionMatches(
- PyExc_KeyError))
- break;
+ v = PyObject_GetItem(locals, name);
+ if (v == NULL && _PyErr_OCCURRED()) {
+ if (!PyErr_ExceptionMatches(PyExc_KeyError))
+ goto error;
PyErr_Clear();
}
}
- if (x == NULL) {
- x = PyDict_GetItem(f->f_globals, w);
- Py_XINCREF(x);
- if (x == NULL) {
+ if (v == NULL) {
+ v = PyDict_GetItem(f->f_globals, name);
+ Py_XINCREF(v);
+ if (v == NULL) {
if (PyDict_CheckExact(f->f_builtins)) {
- x = PyDict_GetItem(f->f_builtins, w);
- if (x == NULL) {
+ v = PyDict_GetItem(f->f_builtins, name);
+ if (v == NULL) {
format_exc_check_arg(
PyExc_NameError,
- NAME_ERROR_MSG, w);
- break;
+ NAME_ERROR_MSG, name);
+ goto error;
}
- Py_INCREF(x);
+ Py_INCREF(v);
}
else {
- x = PyObject_GetItem(f->f_builtins, w);
- if (x == NULL) {
+ v = PyObject_GetItem(f->f_builtins, name);
+ if (v == NULL) {
if (PyErr_ExceptionMatches(PyExc_KeyError))
format_exc_check_arg(
PyExc_NameError,
- NAME_ERROR_MSG, w);
- break;
+ NAME_ERROR_MSG, name);
+ goto error;
}
}
}
}
- PUSH(x);
+ PUSH(v);
DISPATCH();
+ }
- TARGET(LOAD_GLOBAL)
- w = GETITEM(names, oparg);
+ TARGET(LOAD_GLOBAL) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *v;
if (PyDict_CheckExact(f->f_globals)
&& PyDict_CheckExact(f->f_builtins)) {
- x = _PyDict_LoadGlobal((PyDictObject *)f->f_globals,
+ v = _PyDict_LoadGlobal((PyDictObject *)f->f_globals,
(PyDictObject *)f->f_builtins,
- w);
- if (x == NULL) {
+ name);
+ if (v == NULL) {
if (!_PyErr_OCCURRED())
format_exc_check_arg(PyExc_NameError,
- GLOBAL_NAME_ERROR_MSG, w);
- break;
+ NAME_ERROR_MSG, name);
+ goto error;
}
- Py_INCREF(x);
+ Py_INCREF(v);
}
else {
/* Slow-path if globals or builtins is not a dict */
- x = PyObject_GetItem(f->f_globals, w);
- if (x == NULL) {
- x = PyObject_GetItem(f->f_builtins, w);
- if (x == NULL) {
+ v = PyObject_GetItem(f->f_globals, name);
+ if (v == NULL) {
+ v = PyObject_GetItem(f->f_builtins, name);
+ if (v == NULL) {
if (PyErr_ExceptionMatches(PyExc_KeyError))
format_exc_check_arg(
PyExc_NameError,
- GLOBAL_NAME_ERROR_MSG, w);
- break;
+ NAME_ERROR_MSG, name);
+ goto error;
}
}
}
- PUSH(x);
+ PUSH(v);
DISPATCH();
+ }
- TARGET(DELETE_FAST)
- x = GETLOCAL(oparg);
- if (x != NULL) {
+ TARGET(DELETE_FAST) {
+ PyObject *v = GETLOCAL(oparg);
+ if (v != NULL) {
SETLOCAL(oparg, NULL);
DISPATCH();
}
@@ -2162,252 +2242,310 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
UNBOUNDLOCAL_ERROR_MSG,
PyTuple_GetItem(co->co_varnames, oparg)
);
- break;
+ goto error;
+ }
- TARGET(DELETE_DEREF)
- x = freevars[oparg];
- if (PyCell_GET(x) != NULL) {
- PyCell_Set(x, NULL);
+ TARGET(DELETE_DEREF) {
+ PyObject *cell = freevars[oparg];
+ if (PyCell_GET(cell) != NULL) {
+ PyCell_Set(cell, NULL);
DISPATCH();
}
- err = -1;
format_exc_unbound(co, oparg);
- break;
+ goto error;
+ }
- TARGET(LOAD_CLOSURE)
- x = freevars[oparg];
- Py_INCREF(x);
- PUSH(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(LOAD_CLOSURE) {
+ PyObject *cell = freevars[oparg];
+ Py_INCREF(cell);
+ PUSH(cell);
+ DISPATCH();
+ }
- TARGET(LOAD_DEREF)
- x = freevars[oparg];
- w = PyCell_Get(x);
- if (w != NULL) {
- PUSH(w);
- DISPATCH();
+ TARGET(LOAD_CLASSDEREF) {
+ PyObject *name, *value, *locals = f->f_locals;
+ Py_ssize_t idx;
+ assert(locals);
+ assert(oparg >= PyTuple_GET_SIZE(co->co_cellvars));
+ idx = oparg - PyTuple_GET_SIZE(co->co_cellvars);
+ assert(idx >= 0 && idx < PyTuple_GET_SIZE(co->co_freevars));
+ name = PyTuple_GET_ITEM(co->co_freevars, idx);
+ if (PyDict_CheckExact(locals)) {
+ value = PyDict_GetItem(locals, name);
+ Py_XINCREF(value);
}
- err = -1;
- format_exc_unbound(co, oparg);
- break;
+ else {
+ value = PyObject_GetItem(locals, name);
+ if (value == NULL && PyErr_Occurred()) {
+ if (!PyErr_ExceptionMatches(PyExc_KeyError))
+ goto error;
+ PyErr_Clear();
+ }
+ }
+ if (!value) {
+ PyObject *cell = freevars[oparg];
+ value = PyCell_GET(cell);
+ if (value == NULL) {
+ format_exc_unbound(co, oparg);
+ goto error;
+ }
+ Py_INCREF(value);
+ }
+ PUSH(value);
+ DISPATCH();
+ }
- TARGET(STORE_DEREF)
- w = POP();
- x = freevars[oparg];
- PyCell_Set(x, w);
- Py_DECREF(w);
+ TARGET(LOAD_DEREF) {
+ PyObject *cell = freevars[oparg];
+ PyObject *value = PyCell_GET(cell);
+ if (value == NULL) {
+ format_exc_unbound(co, oparg);
+ goto error;
+ }
+ Py_INCREF(value);
+ PUSH(value);
DISPATCH();
+ }
- TARGET(BUILD_TUPLE)
- x = PyTuple_New(oparg);
- if (x != NULL) {
- for (; --oparg >= 0;) {
- w = POP();
- PyTuple_SET_ITEM(x, oparg, w);
- }
- PUSH(x);
- DISPATCH();
+ TARGET(STORE_DEREF) {
+ PyObject *v = POP();
+ PyObject *cell = freevars[oparg];
+ PyCell_Set(cell, v);
+ Py_DECREF(v);
+ DISPATCH();
+ }
+
+ TARGET(BUILD_TUPLE) {
+ PyObject *tup = PyTuple_New(oparg);
+ if (tup == NULL)
+ goto error;
+ while (--oparg >= 0) {
+ PyObject *item = POP();
+ PyTuple_SET_ITEM(tup, oparg, item);
}
- break;
+ PUSH(tup);
+ DISPATCH();
+ }
- TARGET(BUILD_LIST)
- x = PyList_New(oparg);
- if (x != NULL) {
- for (; --oparg >= 0;) {
- w = POP();
- PyList_SET_ITEM(x, oparg, w);
- }
- PUSH(x);
- DISPATCH();
+ TARGET(BUILD_LIST) {
+ PyObject *list = PyList_New(oparg);
+ if (list == NULL)
+ goto error;
+ while (--oparg >= 0) {
+ PyObject *item = POP();
+ PyList_SET_ITEM(list, oparg, item);
}
- break;
+ PUSH(list);
+ DISPATCH();
+ }
- TARGET(BUILD_SET)
- x = PySet_New(NULL);
- if (x != NULL) {
- for (; --oparg >= 0;) {
- w = POP();
- if (err == 0)
- err = PySet_Add(x, w);
- Py_DECREF(w);
- }
- if (err != 0) {
- Py_DECREF(x);
- break;
- }
- PUSH(x);
- DISPATCH();
+ TARGET(BUILD_SET) {
+ PyObject *set = PySet_New(NULL);
+ int err = 0;
+ if (set == NULL)
+ goto error;
+ while (--oparg >= 0) {
+ PyObject *item = POP();
+ if (err == 0)
+ err = PySet_Add(set, item);
+ Py_DECREF(item);
}
- break;
+ if (err != 0) {
+ Py_DECREF(set);
+ goto error;
+ }
+ PUSH(set);
+ DISPATCH();
+ }
- TARGET(BUILD_MAP)
- x = _PyDict_NewPresized((Py_ssize_t)oparg);
- PUSH(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(BUILD_MAP) {
+ PyObject *map = _PyDict_NewPresized((Py_ssize_t)oparg);
+ if (map == NULL)
+ goto error;
+ PUSH(map);
+ DISPATCH();
+ }
- TARGET(STORE_MAP)
- w = TOP(); /* key */
- u = SECOND(); /* value */
- v = THIRD(); /* dict */
+ TARGET(STORE_MAP) {
+ PyObject *key = TOP();
+ PyObject *value = SECOND();
+ PyObject *map = THIRD();
+ int err;
STACKADJ(-2);
- assert (PyDict_CheckExact(v));
- err = PyDict_SetItem(v, w, u); /* v[w] = u */
- Py_DECREF(u);
- Py_DECREF(w);
- if (err == 0) DISPATCH();
- break;
+ assert(PyDict_CheckExact(map));
+ err = PyDict_SetItem(map, key, value);
+ Py_DECREF(value);
+ Py_DECREF(key);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(MAP_ADD)
- w = TOP(); /* key */
- u = SECOND(); /* value */
+ TARGET(MAP_ADD) {
+ PyObject *key = TOP();
+ PyObject *value = SECOND();
+ PyObject *map;
+ int err;
STACKADJ(-2);
- v = stack_pointer[-oparg]; /* dict */
- assert (PyDict_CheckExact(v));
- err = PyDict_SetItem(v, w, u); /* v[w] = u */
- Py_DECREF(u);
- Py_DECREF(w);
- if (err == 0) {
- PREDICT(JUMP_ABSOLUTE);
- DISPATCH();
- }
- break;
+ map = stack_pointer[-oparg]; /* dict */
+ assert(PyDict_CheckExact(map));
+ err = PyDict_SetItem(map, key, value); /* v[w] = u */
+ Py_DECREF(value);
+ Py_DECREF(key);
+ if (err != 0)
+ goto error;
+ PREDICT(JUMP_ABSOLUTE);
+ DISPATCH();
+ }
- TARGET(LOAD_ATTR)
- w = GETITEM(names, oparg);
- v = TOP();
- x = PyObject_GetAttr(v, w);
- Py_DECREF(v);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ TARGET(LOAD_ATTR) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *owner = TOP();
+ PyObject *res = PyObject_GetAttr(owner, name);
+ Py_DECREF(owner);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(COMPARE_OP)
- w = POP();
- v = TOP();
- x = cmp_outcome(oparg, v, w);
- Py_DECREF(v);
- Py_DECREF(w);
- SET_TOP(x);
- if (x == NULL) break;
+ TARGET(COMPARE_OP) {
+ PyObject *right = POP();
+ PyObject *left = TOP();
+ PyObject *res = cmp_outcome(oparg, left, right);
+ Py_DECREF(left);
+ Py_DECREF(right);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
PREDICT(POP_JUMP_IF_FALSE);
PREDICT(POP_JUMP_IF_TRUE);
DISPATCH();
+ }
- TARGET(IMPORT_NAME)
- {
+ TARGET(IMPORT_NAME) {
_Py_IDENTIFIER(__import__);
- w = GETITEM(names, oparg);
- x = _PyDict_GetItemId(f->f_builtins, &PyId___import__);
- if (x == NULL) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *func = _PyDict_GetItemId(f->f_builtins, &PyId___import__);
+ PyObject *from, *level, *args, *res;
+ if (func == NULL) {
PyErr_SetString(PyExc_ImportError,
"__import__ not found");
- break;
+ goto error;
}
- Py_INCREF(x);
- v = POP();
- u = TOP();
- if (PyLong_AsLong(u) != -1 || PyErr_Occurred())
- w = PyTuple_Pack(5,
- w,
+ Py_INCREF(func);
+ from = POP();
+ level = TOP();
+ if (PyLong_AsLong(level) != -1 || PyErr_Occurred())
+ args = PyTuple_Pack(5,
+ name,
f->f_globals,
f->f_locals == NULL ?
Py_None : f->f_locals,
- v,
- u);
+ from,
+ level);
else
- w = PyTuple_Pack(4,
- w,
+ args = PyTuple_Pack(4,
+ name,
f->f_globals,
f->f_locals == NULL ?
Py_None : f->f_locals,
- v);
- Py_DECREF(v);
- Py_DECREF(u);
- if (w == NULL) {
- u = POP();
- Py_DECREF(x);
- x = NULL;
- break;
+ from);
+ Py_DECREF(level);
+ Py_DECREF(from);
+ if (args == NULL) {
+ Py_DECREF(func);
+ STACKADJ(-1);
+ goto error;
}
READ_TIMESTAMP(intr0);
- v = x;
- x = PyEval_CallObject(v, w);
- Py_DECREF(v);
+ res = PyEval_CallObject(func, args);
READ_TIMESTAMP(intr1);
- Py_DECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ Py_DECREF(args);
+ Py_DECREF(func);
+ SET_TOP(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
}
- TARGET(IMPORT_STAR)
- v = POP();
+ TARGET(IMPORT_STAR) {
+ PyObject *from = POP(), *locals;
+ int err;
PyFrame_FastToLocals(f);
- if ((x = f->f_locals) == NULL) {
+ locals = f->f_locals;
+ if (locals == NULL) {
PyErr_SetString(PyExc_SystemError,
"no locals found during 'import *'");
- break;
+ goto error;
}
READ_TIMESTAMP(intr0);
- err = import_all_from(x, v);
+ err = import_all_from(locals, from);
READ_TIMESTAMP(intr1);
PyFrame_LocalsToFast(f, 0);
- Py_DECREF(v);
- if (err == 0) DISPATCH();
- break;
+ Py_DECREF(from);
+ if (err != 0)
+ goto error;
+ DISPATCH();
+ }
- TARGET(IMPORT_FROM)
- w = GETITEM(names, oparg);
- v = TOP();
+ TARGET(IMPORT_FROM) {
+ PyObject *name = GETITEM(names, oparg);
+ PyObject *from = TOP();
+ PyObject *res;
READ_TIMESTAMP(intr0);
- x = import_from(v, w);
+ res = import_from(from, name);
READ_TIMESTAMP(intr1);
- PUSH(x);
- if (x != NULL) DISPATCH();
- break;
+ PUSH(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(JUMP_FORWARD)
+ TARGET(JUMP_FORWARD) {
JUMPBY(oparg);
FAST_DISPATCH();
+ }
PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE);
- TARGET(POP_JUMP_IF_FALSE)
- w = POP();
- if (w == Py_True) {
- Py_DECREF(w);
+ TARGET(POP_JUMP_IF_FALSE) {
+ PyObject *cond = POP();
+ int err;
+ if (cond == Py_True) {
+ Py_DECREF(cond);
FAST_DISPATCH();
}
- if (w == Py_False) {
- Py_DECREF(w);
+ if (cond == Py_False) {
+ Py_DECREF(cond);
JUMPTO(oparg);
FAST_DISPATCH();
}
- err = PyObject_IsTrue(w);
- Py_DECREF(w);
+ err = PyObject_IsTrue(cond);
+ Py_DECREF(cond);
if (err > 0)
err = 0;
else if (err == 0)
JUMPTO(oparg);
else
- break;
+ goto error;
DISPATCH();
+ }
PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE);
- TARGET(POP_JUMP_IF_TRUE)
- w = POP();
- if (w == Py_False) {
- Py_DECREF(w);
+ TARGET(POP_JUMP_IF_TRUE) {
+ PyObject *cond = POP();
+ int err;
+ if (cond == Py_False) {
+ Py_DECREF(cond);
FAST_DISPATCH();
}
- if (w == Py_True) {
- Py_DECREF(w);
+ if (cond == Py_True) {
+ Py_DECREF(cond);
JUMPTO(oparg);
FAST_DISPATCH();
}
- err = PyObject_IsTrue(w);
- Py_DECREF(w);
+ err = PyObject_IsTrue(cond);
+ Py_DECREF(cond);
if (err > 0) {
err = 0;
JUMPTO(oparg);
@@ -2415,58 +2553,63 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
else if (err == 0)
;
else
- break;
+ goto error;
DISPATCH();
+ }
- TARGET(JUMP_IF_FALSE_OR_POP)
- w = TOP();
- if (w == Py_True) {
+ TARGET(JUMP_IF_FALSE_OR_POP) {
+ PyObject *cond = TOP();
+ int err;
+ if (cond == Py_True) {
STACKADJ(-1);
- Py_DECREF(w);
+ Py_DECREF(cond);
FAST_DISPATCH();
}
- if (w == Py_False) {
+ if (cond == Py_False) {
JUMPTO(oparg);
FAST_DISPATCH();
}
- err = PyObject_IsTrue(w);
+ err = PyObject_IsTrue(cond);
if (err > 0) {
STACKADJ(-1);
- Py_DECREF(w);
+ Py_DECREF(cond);
err = 0;
}
else if (err == 0)
JUMPTO(oparg);
else
- break;
+ goto error;
DISPATCH();
+ }
- TARGET(JUMP_IF_TRUE_OR_POP)
- w = TOP();
- if (w == Py_False) {
+ TARGET(JUMP_IF_TRUE_OR_POP) {
+ PyObject *cond = TOP();
+ int err;
+ if (cond == Py_False) {
STACKADJ(-1);
- Py_DECREF(w);
+ Py_DECREF(cond);
FAST_DISPATCH();
}
- if (w == Py_True) {
+ if (cond == Py_True) {
JUMPTO(oparg);
FAST_DISPATCH();
}
- err = PyObject_IsTrue(w);
+ err = PyObject_IsTrue(cond);
if (err > 0) {
err = 0;
JUMPTO(oparg);
}
else if (err == 0) {
STACKADJ(-1);
- Py_DECREF(w);
+ Py_DECREF(cond);
}
else
- break;
+ goto error;
DISPATCH();
+ }
PREDICTED_WITH_ARG(JUMP_ABSOLUTE);
- TARGET(JUMP_ABSOLUTE)
+ TARGET(JUMP_ABSOLUTE) {
JUMPTO(oparg);
#if FAST_LOOPS
/* Enabling this path speeds-up all while and for-loops by bypassing
@@ -2480,60 +2623,60 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
#else
DISPATCH();
#endif
+ }
- TARGET(GET_ITER)
+ TARGET(GET_ITER) {
/* before: [obj]; after [getiter(obj)] */
- v = TOP();
- x = PyObject_GetIter(v);
- Py_DECREF(v);
- if (x != NULL) {
- SET_TOP(x);
- PREDICT(FOR_ITER);
- DISPATCH();
- }
- STACKADJ(-1);
- break;
+ PyObject *iterable = TOP();
+ PyObject *iter = PyObject_GetIter(iterable);
+ Py_DECREF(iterable);
+ SET_TOP(iter);
+ if (iter == NULL)
+ goto error;
+ PREDICT(FOR_ITER);
+ DISPATCH();
+ }
PREDICTED_WITH_ARG(FOR_ITER);
- TARGET(FOR_ITER)
+ TARGET(FOR_ITER) {
/* before: [iter]; after: [iter, iter()] *or* [] */
- v = TOP();
- x = (*v->ob_type->tp_iternext)(v);
- if (x != NULL) {
- PUSH(x);
+ PyObject *iter = TOP();
+ PyObject *next = (*iter->ob_type->tp_iternext)(iter);
+ if (next != NULL) {
+ PUSH(next);
PREDICT(STORE_FAST);
PREDICT(UNPACK_SEQUENCE);
DISPATCH();
}
if (PyErr_Occurred()) {
- if (!PyErr_ExceptionMatches(
- PyExc_StopIteration))
- break;
+ if (!PyErr_ExceptionMatches(PyExc_StopIteration))
+ goto error;
PyErr_Clear();
}
/* iterator ended normally */
- x = v = POP();
- Py_DECREF(v);
+ STACKADJ(-1);
+ Py_DECREF(iter);
JUMPBY(oparg);
DISPATCH();
+ }
- TARGET(BREAK_LOOP)
+ TARGET(BREAK_LOOP) {
why = WHY_BREAK;
goto fast_block_end;
+ }
- TARGET(CONTINUE_LOOP)
+ TARGET(CONTINUE_LOOP) {
retval = PyLong_FromLong(oparg);
- if (!retval) {
- x = NULL;
- break;
- }
+ if (retval == NULL)
+ goto error;
why = WHY_CONTINUE;
goto fast_block_end;
+ }
TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally)
TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally)
TARGET(SETUP_FINALLY)
- _setup_finally:
+ _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.
@@ -2542,37 +2685,35 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg,
STACK_LEVEL());
DISPATCH();
+ }
- TARGET(SETUP_WITH)
- {
+ TARGET(SETUP_WITH) {
_Py_IDENTIFIER(__exit__);
_Py_IDENTIFIER(__enter__);
- w = TOP();
- x = special_lookup(w, &PyId___exit__);
- if (!x)
- break;
- SET_TOP(x);
- u = special_lookup(w, &PyId___enter__);
- Py_DECREF(w);
- if (!u) {
- x = NULL;
- break;
- }
- x = PyObject_CallFunctionObjArgs(u, NULL);
- Py_DECREF(u);
- if (!x)
- break;
+ PyObject *mgr = TOP();
+ PyObject *exit = special_lookup(mgr, &PyId___exit__), *enter;
+ PyObject *res;
+ if (exit == NULL)
+ goto error;
+ SET_TOP(exit);
+ enter = special_lookup(mgr, &PyId___enter__);
+ Py_DECREF(mgr);
+ if (enter == NULL)
+ goto error;
+ res = PyObject_CallFunctionObjArgs(enter, NULL);
+ Py_DECREF(enter);
+ if (res == NULL)
+ goto error;
/* Setup the finally block before pushing the result
of __enter__ on the stack. */
PyFrame_BlockSetup(f, SETUP_FINALLY, INSTR_OFFSET() + oparg,
STACK_LEVEL());
- PUSH(x);
+ PUSH(res);
DISPATCH();
}
- TARGET(WITH_CLEANUP)
- {
+ TARGET(WITH_CLEANUP) {
/* At the top of the stack are 1-3 values indicating
how/why we entered the finally clause:
- TOP = None
@@ -2599,42 +2740,42 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
*/
PyObject *exit_func;
- u = TOP();
- if (u == Py_None) {
+ PyObject *exc = TOP(), *val = Py_None, *tb = Py_None, *res;
+ int err;
+ if (exc == Py_None) {
(void)POP();
exit_func = TOP();
- SET_TOP(u);
- v = w = Py_None;
+ SET_TOP(exc);
}
- else if (PyLong_Check(u)) {
- (void)POP();
- switch(PyLong_AsLong(u)) {
+ else if (PyLong_Check(exc)) {
+ STACKADJ(-1);
+ switch (PyLong_AsLong(exc)) {
case WHY_RETURN:
case WHY_CONTINUE:
/* Retval in TOP. */
exit_func = SECOND();
SET_SECOND(TOP());
- SET_TOP(u);
+ SET_TOP(exc);
break;
default:
exit_func = TOP();
- SET_TOP(u);
+ SET_TOP(exc);
break;
}
- u = v = w = Py_None;
+ exc = Py_None;
}
else {
- PyObject *tp, *exc, *tb;
+ PyObject *tp2, *exc2, *tb2;
PyTryBlock *block;
- v = SECOND();
- w = THIRD();
- tp = FOURTH();
- exc = PEEK(5);
- tb = PEEK(6);
+ val = SECOND();
+ tb = THIRD();
+ tp2 = FOURTH();
+ exc2 = PEEK(5);
+ tb2 = PEEK(6);
exit_func = PEEK(7);
- SET_VALUE(7, tb);
- SET_VALUE(6, exc);
- SET_VALUE(5, tp);
+ SET_VALUE(7, tb2);
+ SET_VALUE(6, exc2);
+ SET_VALUE(5, tp2);
/* UNWIND_EXCEPT_HANDLER will pop this off. */
SET_FOURTH(NULL);
/* We just shifted the stack down, so we have
@@ -2645,56 +2786,53 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
block->b_level--;
}
/* XXX Not the fastest way to call it... */
- x = PyObject_CallFunctionObjArgs(exit_func, u, v, w,
- NULL);
+ res = PyObject_CallFunctionObjArgs(exit_func, exc, val, tb, NULL);
Py_DECREF(exit_func);
- if (x == NULL)
- break; /* Go to error exit */
+ if (res == NULL)
+ goto error;
- if (u != Py_None)
- err = PyObject_IsTrue(x);
+ if (exc != Py_None)
+ err = PyObject_IsTrue(res);
else
err = 0;
- Py_DECREF(x);
+ Py_DECREF(res);
if (err < 0)
- break; /* Go to error exit */
+ goto error;
else if (err > 0) {
err = 0;
/* There was an exception and a True return */
PUSH(PyLong_FromLong((long) WHY_SILENCED));
}
PREDICT(END_FINALLY);
- break;
+ DISPATCH();
}
- TARGET(CALL_FUNCTION)
- {
- PyObject **sp;
+ TARGET(CALL_FUNCTION) {
+ PyObject **sp, *res;
PCALL(PCALL_ALL);
sp = stack_pointer;
#ifdef WITH_TSC
- x = call_function(&sp, oparg, &intr0, &intr1);
+ res = call_function(&sp, oparg, &intr0, &intr1);
#else
- x = call_function(&sp, oparg);
+ res = call_function(&sp, oparg);
#endif
stack_pointer = sp;
- PUSH(x);
- if (x != NULL)
- DISPATCH();
- break;
+ PUSH(res);
+ if (res == NULL)
+ goto error;
+ 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:
- {
+ _call_function_var_kw: {
int na = oparg & 0xff;
int nk = (oparg>>8) & 0xff;
int flags = (opcode - CALL_FUNCTION) & 3;
int n = na + 2 * nk;
- PyObject **pfunc, *func, **sp;
+ PyObject **pfunc, *func, **sp, *res;
PCALL(PCALL_ALL);
if (flags & CALL_FLAG_VAR)
n++;
@@ -2717,137 +2855,156 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_INCREF(func);
sp = stack_pointer;
READ_TIMESTAMP(intr0);
- x = ext_do_call(func, &sp, flags, na, nk);
+ res = ext_do_call(func, &sp, flags, na, nk);
READ_TIMESTAMP(intr1);
stack_pointer = sp;
Py_DECREF(func);
while (stack_pointer > pfunc) {
- w = POP();
- Py_DECREF(w);
+ PyObject *o = POP();
+ Py_DECREF(o);
}
- PUSH(x);
- if (x != NULL)
- DISPATCH();
- break;
+ PUSH(res);
+ if (res == NULL)
+ goto error;
+ DISPATCH();
}
TARGET_WITH_IMPL(MAKE_CLOSURE, _make_function)
TARGET(MAKE_FUNCTION)
- _make_function:
- {
+ _make_function: {
int posdefaults = oparg & 0xff;
int kwdefaults = (oparg>>8) & 0xff;
int num_annotations = (oparg >> 16) & 0x7fff;
- w = POP(); /* qualname */
- v = POP(); /* code object */
- x = PyFunction_NewWithQualName(v, f->f_globals, w);
- Py_DECREF(v);
- Py_DECREF(w);
+ PyObject *qualname = POP(); /* qualname */
+ PyObject *code = POP(); /* code object */
+ PyObject *func = PyFunction_NewWithQualName(code, f->f_globals, qualname);
+ Py_DECREF(code);
+ Py_DECREF(qualname);
+
+ if (func == NULL)
+ goto error;
- if (x != NULL && opcode == MAKE_CLOSURE) {
- v = POP();
- if (PyFunction_SetClosure(x, v) != 0) {
+ if (opcode == MAKE_CLOSURE) {
+ PyObject *closure = POP();
+ if (PyFunction_SetClosure(func, closure) != 0) {
/* Can't happen unless bytecode is corrupt. */
- why = WHY_EXCEPTION;
+ Py_DECREF(func);
+ Py_DECREF(closure);
+ goto error;
}
- Py_DECREF(v);
+ Py_DECREF(closure);
}
- if (x != NULL && num_annotations > 0) {
+ if (num_annotations > 0) {
Py_ssize_t name_ix;
- u = POP(); /* names of args with annotations */
- v = PyDict_New();
- if (v == NULL) {
- Py_DECREF(x);
- x = NULL;
- break;
+ PyObject *names = POP(); /* names of args with annotations */
+ PyObject *anns = PyDict_New();
+ if (anns == NULL) {
+ Py_DECREF(func);
+ goto error;
}
- name_ix = PyTuple_Size(u);
+ name_ix = PyTuple_Size(names);
assert(num_annotations == name_ix+1);
while (name_ix > 0) {
+ PyObject *name, *value;
+ int err;
--name_ix;
- t = PyTuple_GET_ITEM(u, name_ix);
- w = POP();
- /* XXX(nnorwitz): check for errors */
- PyDict_SetItem(v, t, w);
- Py_DECREF(w);
+ 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);
+ goto error;
+ }
}
- if (PyFunction_SetAnnotations(x, v) != 0) {
+ if (PyFunction_SetAnnotations(func, anns) != 0) {
/* Can't happen unless
PyFunction_SetAnnotations changes. */
- why = WHY_EXCEPTION;
+ Py_DECREF(anns);
+ Py_DECREF(func);
+ goto error;
}
- Py_DECREF(v);
- Py_DECREF(u);
+ Py_DECREF(anns);
+ Py_DECREF(names);
}
/* XXX Maybe this should be a separate opcode? */
- if (x != NULL && posdefaults > 0) {
- v = PyTuple_New(posdefaults);
- if (v == NULL) {
- Py_DECREF(x);
- x = NULL;
- break;
+ if (kwdefaults > 0) {
+ PyObject *defs = PyDict_New();
+ if (defs == NULL) {
+ Py_DECREF(func);
+ goto error;
}
- while (--posdefaults >= 0) {
- w = POP();
- PyTuple_SET_ITEM(v, posdefaults, w);
+ 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_SetDefaults(x, v) != 0) {
+ if (PyFunction_SetKwDefaults(func, defs) != 0) {
/* Can't happen unless
- PyFunction_SetDefaults changes. */
- why = WHY_EXCEPTION;
+ PyFunction_SetKwDefaults changes. */
+ Py_DECREF(func);
+ Py_DECREF(defs);
+ goto error;
}
- Py_DECREF(v);
+ Py_DECREF(defs);
}
- if (x != NULL && kwdefaults > 0) {
- v = PyDict_New();
- if (v == NULL) {
- Py_DECREF(x);
- x = NULL;
- break;
- }
- while (--kwdefaults >= 0) {
- w = POP(); /* default value */
- u = POP(); /* kw only arg name */
- /* XXX(nnorwitz): check for errors */
- PyDict_SetItem(v, u, w);
- Py_DECREF(w);
- Py_DECREF(u);
+ if (posdefaults > 0) {
+ PyObject *defs = PyTuple_New(posdefaults);
+ if (defs == NULL) {
+ Py_DECREF(func);
+ goto error;
}
- if (PyFunction_SetKwDefaults(x, v) != 0) {
+ while (--posdefaults >= 0)
+ PyTuple_SET_ITEM(defs, posdefaults, POP());
+ if (PyFunction_SetDefaults(func, defs) != 0) {
/* Can't happen unless
- PyFunction_SetKwDefaults changes. */
- why = WHY_EXCEPTION;
+ PyFunction_SetDefaults changes. */
+ Py_DECREF(defs);
+ Py_DECREF(func);
+ goto error;
}
- Py_DECREF(v);
+ Py_DECREF(defs);
}
- PUSH(x);
- break;
+ PUSH(func);
+ DISPATCH();
}
- TARGET(BUILD_SLICE)
+ TARGET(BUILD_SLICE) {
+ PyObject *start, *stop, *step, *slice;
if (oparg == 3)
- w = POP();
+ step = POP();
else
- w = NULL;
- v = POP();
- u = TOP();
- x = PySlice_New(u, v, w);
- Py_DECREF(u);
- Py_DECREF(v);
- Py_XDECREF(w);
- SET_TOP(x);
- if (x != NULL) DISPATCH();
- break;
+ step = NULL;
+ stop = POP();
+ start = TOP();
+ slice = PySlice_New(start, stop, step);
+ Py_DECREF(start);
+ Py_DECREF(stop);
+ Py_XDECREF(step);
+ SET_TOP(slice);
+ if (slice == NULL)
+ goto error;
+ DISPATCH();
+ }
- TARGET(EXTENDED_ARG)
+ TARGET(EXTENDED_ARG) {
opcode = NEXTOP();
oparg = oparg<<16 | NEXTARG();
goto dispatch_opcode;
+ }
#if USE_COMPUTED_GOTOS
_unknown_opcode:
@@ -2858,8 +3015,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
PyFrame_GetLineNumber(f),
opcode);
PyErr_SetString(PyExc_SystemError, "unknown opcode");
- why = WHY_EXCEPTION;
- break;
+ goto error;
#ifdef CASE_TOO_BIG
}
@@ -2867,71 +3023,35 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
} /* switch */
- on_error:
+ /* This should never be reached. Every opcode should end with DISPATCH()
+ or goto error. */
+ assert(0);
+error:
READ_TIMESTAMP(inst1);
- /* Quickly continue if no error occurred */
-
- if (why == WHY_NOT) {
- if (err == 0 && x != NULL) {
-#ifdef CHECKEXC
- /* This check is expensive! */
- if (PyErr_Occurred())
- fprintf(stderr,
- "XXX undetected error\n");
- else {
-#endif
- READ_TIMESTAMP(loop1);
- continue; /* Normal, fast path */
-#ifdef CHECKEXC
- }
-#endif
- }
- why = WHY_EXCEPTION;
- x = Py_None;
- err = 0;
- }
-
- /* Double-check exception status */
+ assert(why == WHY_NOT);
+ why = WHY_EXCEPTION;
- if (why == WHY_EXCEPTION || why == WHY_RERAISE) {
- if (!PyErr_Occurred()) {
- PyErr_SetString(PyExc_SystemError,
- "error return without exception set");
- why = WHY_EXCEPTION;
- }
- }
-#ifdef CHECKEXC
- else {
- /* This check is expensive! */
- if (PyErr_Occurred()) {
- char buf[128];
- sprintf(buf, "Stack unwind with exception "
- "set and why=%d", why);
- Py_FatalError(buf);
- }
- }
+ /* Double-check exception status. */
+#ifdef NDEBUG
+ if (!PyErr_Occurred())
+ PyErr_SetString(PyExc_SystemError,
+ "error return without exception set");
+#else
+ assert(PyErr_Occurred());
#endif
- /* Log traceback info if this is a real exception */
-
- if (why == WHY_EXCEPTION) {
- PyTraceBack_Here(f);
-
- if (tstate->c_tracefunc != NULL)
- call_exc_trace(tstate->c_tracefunc,
- tstate->c_traceobj, f);
- }
+ /* Log traceback info. */
+ PyTraceBack_Here(f);
- /* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */
+ if (tstate->c_tracefunc != NULL)
+ call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, f);
- if (why == WHY_RERAISE)
- why = WHY_EXCEPTION;
+fast_block_end:
+ assert(why != WHY_NOT);
/* Unwind stacks if a (pseudo) exception occurred */
-
-fast_block_end:
while (why != WHY_NOT && f->f_iblock > 0) {
/* Peek at the current block. */
PyTryBlock *b = &f->f_blockstack[f->f_iblock - 1];
@@ -2978,7 +3098,10 @@ fast_block_end:
Python main loop. */
PyErr_NormalizeException(
&exc, &val, &tb);
- PyException_SetTraceback(val, tb);
+ if (tb != NULL)
+ PyException_SetTraceback(val, tb);
+ else
+ PyException_SetTraceback(val, Py_None);
Py_INCREF(exc);
tstate->exc_type = exc;
Py_INCREF(val);
@@ -3010,18 +3133,23 @@ fast_block_end:
break;
READ_TIMESTAMP(loop1);
+ assert(!PyErr_Occurred());
+
} /* main loop */
assert(why != WHY_YIELD);
/* Pop remaining stack entries. */
while (!EMPTY()) {
- v = POP();
- Py_XDECREF(v);
+ PyObject *o = POP();
+ Py_XDECREF(o);
}
if (why != WHY_RETURN)
retval = NULL;
+ assert((retval != NULL && !PyErr_Occurred())
+ || (retval == NULL && PyErr_Occurred()));
+
fast_yield:
if (co->co_flags & CO_GENERATOR && (why == WHY_YIELD || why == WHY_RETURN)) {
/* The purpose of this block is to put aside the generator's exception
@@ -3078,6 +3206,7 @@ fast_yield:
/* pop frame */
exit_eval_frame:
Py_LeaveRecursiveCall();
+ f->f_executing = 0;
tstate->frame = f->f_back;
return retval;
@@ -3243,9 +3372,9 @@ PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals,
PyObject **defs, int defcount, PyObject *kwdefs, PyObject *closure)
{
PyCodeObject* co = (PyCodeObject*)_co;
- register PyFrameObject *f;
- register PyObject *retval = NULL;
- register PyObject **fastlocals, **freevars;
+ PyFrameObject *f;
+ PyObject *retval = NULL;
+ PyObject **fastlocals, **freevars;
PyThreadState *tstate = PyThreadState_GET();
PyObject *x, *u;
int total_args = co->co_argcount + co->co_kwonlyargcount;
@@ -3522,7 +3651,7 @@ restore_and_clear_exc_state(PyThreadState *tstate, PyFrameObject *f)
/* Logic for the raise statement (too complicated for inlining).
This *consumes* a reference count to each of its arguments. */
-static enum why_code
+static int
do_raise(PyObject *exc, PyObject *cause)
{
PyObject *type = NULL, *value = NULL;
@@ -3537,13 +3666,13 @@ do_raise(PyObject *exc, PyObject *cause)
if (type == Py_None) {
PyErr_SetString(PyExc_RuntimeError,
"No active exception to reraise");
- return WHY_EXCEPTION;
- }
+ return 0;
+ }
Py_XINCREF(type);
Py_XINCREF(value);
Py_XINCREF(tb);
PyErr_Restore(type, value, tb);
- return WHY_RERAISE;
+ return 1;
}
/* We support the following forms of raise:
@@ -3606,13 +3735,13 @@ do_raise(PyObject *exc, PyObject *cause)
/* PyErr_SetObject incref's its arguments */
Py_XDECREF(value);
Py_XDECREF(type);
- return WHY_EXCEPTION;
+ return 0;
raise_error:
Py_XDECREF(value);
Py_XDECREF(type);
Py_XDECREF(cause);
- return WHY_EXCEPTION;
+ return 0;
}
/* Iterate v argcnt times and store the results on the stack (via decreasing
@@ -3711,7 +3840,7 @@ prtrace(PyObject *v, char *str)
static void
call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f)
{
- PyObject *type, *value, *traceback, *arg;
+ PyObject *type, *value, *traceback, *orig_traceback, *arg;
int err;
PyErr_Fetch(&type, &value, &traceback);
if (value == NULL) {
@@ -3719,6 +3848,11 @@ call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f)
Py_INCREF(value);
}
PyErr_NormalizeException(&type, &value, &traceback);
+ orig_traceback = traceback;
+ if (traceback == NULL) {
+ Py_INCREF(Py_None);
+ traceback = Py_None;
+ }
arg = PyTuple_Pack(3, type, value, traceback);
if (arg == NULL) {
PyErr_Restore(type, value, traceback);
@@ -3727,11 +3861,11 @@ call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f)
err = call_trace(func, self, f, PyTrace_EXCEPTION, arg);
Py_DECREF(arg);
if (err == 0)
- PyErr_Restore(type, value, traceback);
+ PyErr_Restore(type, value, orig_traceback);
else {
Py_XDECREF(type);
Py_XDECREF(value);
- Py_XDECREF(traceback);
+ Py_XDECREF(orig_traceback);
}
}
@@ -3760,7 +3894,7 @@ static int
call_trace(Py_tracefunc func, PyObject *obj, PyFrameObject *frame,
int what, PyObject *arg)
{
- register PyThreadState *tstate = frame->f_tstate;
+ PyThreadState *tstate = frame->f_tstate;
int result;
if (tstate->tracing)
return 0;
@@ -3926,6 +4060,13 @@ PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw)
{
PyObject *result;
+#ifdef Py_DEBUG
+ /* PyEval_CallObjectWithKeywords() must not be called with an exception
+ set, because it may clear it (directly or indirectly)
+ and so the caller looses its exception */
+ assert(!PyErr_Occurred());
+#endif
+
if (arg == NULL) {
arg = PyTuple_New(0);
if (arg == NULL)
@@ -3948,6 +4089,9 @@ PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw)
result = PyObject_Call(func, arg, kw);
Py_DECREF(arg);
+
+ assert((result != NULL && !PyErr_Occurred())
+ || (result == NULL && PyErr_Occurred()));
return result;
}
@@ -4065,10 +4209,15 @@ call_function(PyObject ***pp_stack, int oparg
else {
PyObject *callargs;
callargs = load_args(pp_stack, na);
- READ_TIMESTAMP(*pintr0);
- C_TRACE(x, PyCFunction_Call(func,callargs,NULL));
- READ_TIMESTAMP(*pintr1);
- Py_XDECREF(callargs);
+ if (callargs != NULL) {
+ READ_TIMESTAMP(*pintr0);
+ C_TRACE(x, PyCFunction_Call(func,callargs,NULL));
+ READ_TIMESTAMP(*pintr1);
+ Py_XDECREF(callargs);
+ }
+ else {
+ x = NULL;
+ }
}
} else {
if (PyMethod_Check(func) && PyMethod_GET_SELF(func) != NULL) {
@@ -4093,6 +4242,8 @@ call_function(PyObject ***pp_stack, int oparg
READ_TIMESTAMP(*pintr1);
Py_DECREF(func);
}
+ assert((x != NULL && !PyErr_Occurred())
+ || (x == NULL && PyErr_Occurred()));
/* Clear the stack of the function object. Also removes
the arguments in case they weren't consumed already
@@ -4103,6 +4254,9 @@ call_function(PyObject ***pp_stack, int oparg
Py_DECREF(w);
PCALL(PCALL_POP);
}
+
+ assert((x != NULL && !PyErr_Occurred())
+ || (x == NULL && PyErr_Occurred()));
return x;
}
@@ -4386,6 +4540,8 @@ ext_call_fail:
Py_XDECREF(callargs);
Py_XDECREF(kwdict);
Py_XDECREF(stararg);
+ assert((result != NULL && !PyErr_Occurred())
+ || (result == NULL && PyErr_Occurred()));
return result;
}
@@ -4424,7 +4580,7 @@ _PyEval_SliceIndex(PyObject *v, Py_ssize_t *pi)
"BaseException is not allowed"
static PyObject *
-cmp_outcome(int op, register PyObject *v, register PyObject *w)
+cmp_outcome(int op, PyObject *v, PyObject *w)
{
int res = 0;
switch (op) {
@@ -4482,7 +4638,7 @@ import_from(PyObject *v, PyObject *name)
x = PyObject_GetAttr(v, name);
if (x == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) {
- PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
+ PyErr_Format(PyExc_ImportError, "cannot import name %R", name);
}
return x;
}
diff --git a/Python/codecs.c b/Python/codecs.c
index fd67d1b..c541ba0 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -53,7 +53,7 @@ int PyCodec_Register(PyObject *search_function)
static
PyObject *normalizestring(const char *string)
{
- register size_t i;
+ size_t i;
size_t len = strlen(string);
char *p;
PyObject *v;
@@ -65,9 +65,9 @@ PyObject *normalizestring(const char *string)
p = PyMem_Malloc(len + 1);
if (p == NULL)
- return NULL;
+ return PyErr_NoMemory();
for (i = 0; i < len; i++) {
- register char ch = string[i];
+ char ch = string[i];
if (ch == ' ')
ch = '-';
else
@@ -441,7 +441,7 @@ int PyCodec_RegisterError(const char *name, PyObject *error)
return -1;
}
return PyDict_SetItemString(interp->codec_error_registry,
- (char *)name, error);
+ name, error);
}
/* Lookup the error handling callback function registered under the
@@ -457,7 +457,7 @@ PyObject *PyCodec_LookupError(const char *name)
if (name==NULL)
name = "strict";
- handler = PyDict_GetItemString(interp->codec_error_registry, (char *)name);
+ handler = PyDict_GetItemString(interp->codec_error_registry, name);
if (!handler)
PyErr_Format(PyExc_LookupError, "unknown error handler name '%.400s'", name);
else
@@ -761,7 +761,7 @@ PyCodec_SurrogatePassErrors(PyObject *exc)
for (i = start; i < end; i++) {
/* object is guaranteed to be "ready" */
Py_UCS4 ch = PyUnicode_READ_CHAR(object, i);
- if (ch < 0xd800 || ch > 0xdfff) {
+ if (!Py_UNICODE_IS_SURROGATE(ch)) {
/* Not a surrogate, fail with original exception */
PyErr_SetObject(PyExceptionInstance_Class(exc), exc);
Py_DECREF(res);
@@ -797,7 +797,7 @@ PyCodec_SurrogatePassErrors(PyObject *exc)
(p[2] & 0xc0) == 0x80) {
/* it's a three-byte code */
ch = ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) + (p[2] & 0x3f);
- if (ch < 0xd800 || ch > 0xdfff)
+ if (!Py_UNICODE_IS_SURROGATE(ch))
/* it's not a surrogate - fail */
ch = 0;
}
@@ -1026,7 +1026,7 @@ static int _PyCodecRegistry_Init(void)
if (interp->codec_error_registry) {
for (i = 0; i < Py_ARRAY_LENGTH(methods); ++i) {
- PyObject *func = PyCFunction_New(&methods[i].def, NULL);
+ PyObject *func = PyCFunction_NewEx(&methods[i].def, NULL, NULL);
int res;
if (!func)
Py_FatalError("can't initialize codec error registry");
diff --git a/Python/compile.c b/Python/compile.c
index 6d66255..32465f7 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -94,6 +94,7 @@ enum {
COMPILER_SCOPE_MODULE,
COMPILER_SCOPE_CLASS,
COMPILER_SCOPE_FUNCTION,
+ COMPILER_SCOPE_LAMBDA,
COMPILER_SCOPE_COMPREHENSION,
};
@@ -149,8 +150,7 @@ handled by the symbol analysis pass.
*/
struct compiler {
- const char *c_filename;
- PyObject *c_filename_obj;
+ PyObject *c_filename;
struct symtable *c_st;
PyFutureFeatures *c_future; /* pointer to module's __future__ */
PyCompilerFlags *c_flags;
@@ -201,6 +201,7 @@ static int compiler_call_helper(struct compiler *c, int n,
expr_ty starargs,
expr_ty kwargs);
static int compiler_try_except(struct compiler *, stmt_ty);
+static int compiler_set_qualname(struct compiler *);
static PyCodeObject *assemble(struct compiler *, int addNone);
static PyObject *__doc__;
@@ -288,8 +289,8 @@ compiler_init(struct compiler *c)
}
PyCodeObject *
-PyAST_CompileEx(mod_ty mod, const char *filename, PyCompilerFlags *flags,
- int optimize, PyArena *arena)
+PyAST_CompileObject(mod_ty mod, PyObject *filename, PyCompilerFlags *flags,
+ int optimize, PyArena *arena)
{
struct compiler c;
PyCodeObject *co = NULL;
@@ -304,12 +305,10 @@ PyAST_CompileEx(mod_ty mod, const char *filename, PyCompilerFlags *flags,
if (!compiler_init(&c))
return NULL;
+ Py_INCREF(filename);
c.c_filename = filename;
- c.c_filename_obj = PyUnicode_DecodeFSDefault(filename);
- if (!c.c_filename_obj)
- goto finally;
c.c_arena = arena;
- c.c_future = PyFuture_FromAST(mod, filename);
+ c.c_future = PyFuture_FromASTObject(mod, filename);
if (c.c_future == NULL)
goto finally;
if (!flags) {
@@ -323,7 +322,7 @@ PyAST_CompileEx(mod_ty mod, const char *filename, PyCompilerFlags *flags,
c.c_optimize = (optimize == -1) ? Py_OptimizeFlag : optimize;
c.c_nestlevel = 0;
- c.c_st = PySymtable_Build(mod, filename, c.c_future);
+ c.c_st = PySymtable_BuildObject(mod, filename, c.c_future);
if (c.c_st == NULL) {
if (!PyErr_Occurred())
PyErr_SetString(PyExc_SystemError, "no symtable");
@@ -339,6 +338,21 @@ PyAST_CompileEx(mod_ty mod, const char *filename, PyCompilerFlags *flags,
}
PyCodeObject *
+PyAST_CompileEx(mod_ty mod, const char *filename_str, PyCompilerFlags *flags,
+ int optimize, PyArena *arena)
+{
+ PyObject *filename;
+ PyCodeObject *co;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ co = PyAST_CompileObject(mod, filename, flags, optimize, arena);
+ Py_DECREF(filename);
+ return co;
+
+}
+
+PyCodeObject *
PyNode_Compile(struct _node *n, const char *filename)
{
PyCodeObject *co = NULL;
@@ -360,8 +374,7 @@ compiler_free(struct compiler *c)
PySymtable_Free(c->c_st);
if (c->c_future)
PyObject_Free(c->c_future);
- if (c->c_filename_obj)
- Py_DECREF(c->c_filename_obj);
+ Py_XDECREF(c->c_filename);
Py_DECREF(c->c_stack);
}
@@ -535,6 +548,37 @@ compiler_enter_scope(struct compiler *c, identifier name,
compiler_unit_free(u);
return 0;
}
+ if (u->u_ste->ste_needs_class_closure) {
+ /* Cook up a implicit __class__ cell. */
+ _Py_IDENTIFIER(__class__);
+ PyObject *tuple, *name, *zero;
+ int res;
+ assert(u->u_scope_type == COMPILER_SCOPE_CLASS);
+ assert(PyDict_Size(u->u_cellvars) == 0);
+ name = _PyUnicode_FromId(&PyId___class__);
+ if (!name) {
+ compiler_unit_free(u);
+ return 0;
+ }
+ tuple = PyTuple_Pack(2, name, Py_TYPE(name));
+ if (!tuple) {
+ compiler_unit_free(u);
+ return 0;
+ }
+ zero = PyLong_FromLong(0);
+ if (!zero) {
+ Py_DECREF(tuple);
+ compiler_unit_free(u);
+ return 0;
+ }
+ res = PyDict_SetItem(u->u_cellvars, tuple, zero);
+ Py_DECREF(tuple);
+ Py_DECREF(zero);
+ if (res < 0) {
+ compiler_unit_free(u);
+ return 0;
+ }
+ }
u->u_freevars = dictbytype(u->u_ste->ste_symbols, FREE, DEF_FREE_CLASS,
PyDict_Size(u->u_cellvars));
@@ -580,6 +624,11 @@ compiler_enter_scope(struct compiler *c, identifier name,
if (compiler_use_new_block(c) == NULL)
return 0;
+ if (u->u_scope_type != COMPILER_SCOPE_MODULE) {
+ if (!compiler_set_qualname(c))
+ return 0;
+ }
+
return 1;
}
@@ -607,57 +656,77 @@ compiler_exit_scope(struct compiler *c)
}
-static PyObject *
-compiler_scope_qualname(struct compiler *c)
+static int
+compiler_set_qualname(struct compiler *c)
{
- Py_ssize_t stack_size, i;
_Py_static_string(dot, ".");
- _Py_static_string(locals, "<locals>");
- struct compiler_unit *u;
- PyObject *capsule, *name, *seq, *dot_str, *locals_str;
+ _Py_static_string(dot_locals, ".<locals>");
+ Py_ssize_t stack_size;
+ struct compiler_unit *u = c->u;
+ PyObject *name, *base, *dot_str, *dot_locals_str;
- u = c->u;
- if (u->u_qualname != NULL) {
- Py_INCREF(u->u_qualname);
- return u->u_qualname;
- }
+ base = NULL;
+ stack_size = PyList_GET_SIZE(c->c_stack);
+ assert(stack_size >= 1);
+ if (stack_size > 1) {
+ int scope, force_global = 0;
+ struct compiler_unit *parent;
+ PyObject *mangled, *capsule;
+
+ capsule = PyList_GET_ITEM(c->c_stack, stack_size - 1);
+ parent = (struct compiler_unit *)PyCapsule_GetPointer(capsule, COMPILER_CAPSULE_NAME_COMPILER_UNIT);
+ assert(parent);
+
+ if (u->u_scope_type == COMPILER_SCOPE_FUNCTION || u->u_scope_type == COMPILER_SCOPE_CLASS) {
+ assert(u->u_name);
+ mangled = _Py_Mangle(parent->u_private, u->u_name);
+ if (!mangled)
+ return 0;
+ scope = PyST_GetScope(parent->u_ste, mangled);
+ Py_DECREF(mangled);
+ assert(scope != GLOBAL_IMPLICIT);
+ if (scope == GLOBAL_EXPLICIT)
+ force_global = 1;
+ }
- seq = PyList_New(0);
- if (seq == NULL)
- return NULL;
+ if (!force_global) {
+ if (parent->u_scope_type == COMPILER_SCOPE_FUNCTION
+ || parent->u_scope_type == COMPILER_SCOPE_LAMBDA) {
+ dot_locals_str = _PyUnicode_FromId(&dot_locals);
+ if (dot_locals_str == NULL)
+ return 0;
+ base = PyUnicode_Concat(parent->u_qualname, dot_locals_str);
+ if (base == NULL)
+ return 0;
+ }
+ else {
+ Py_INCREF(parent->u_qualname);
+ base = parent->u_qualname;
+ }
+ }
+ }
- stack_size = PyList_GET_SIZE(c->c_stack);
- for (i = 0; i < stack_size; i++) {
- capsule = PyList_GET_ITEM(c->c_stack, i);
- u = (struct compiler_unit *)PyCapsule_GetPointer(capsule, COMPILER_CAPSULE_NAME_COMPILER_UNIT);
- assert(u);
- if (u->u_scope_type == COMPILER_SCOPE_MODULE)
- continue;
- if (PyList_Append(seq, u->u_name))
- goto _error;
- if (u->u_scope_type == COMPILER_SCOPE_FUNCTION) {
- locals_str = _PyUnicode_FromId(&locals);
- if (locals_str == NULL)
- goto _error;
- if (PyList_Append(seq, locals_str))
- goto _error;
+ if (base != NULL) {
+ dot_str = _PyUnicode_FromId(&dot);
+ if (dot_str == NULL) {
+ Py_DECREF(base);
+ return 0;
}
+ name = PyUnicode_Concat(base, dot_str);
+ Py_DECREF(base);
+ if (name == NULL)
+ return 0;
+ PyUnicode_Append(&name, u->u_name);
+ if (name == NULL)
+ return 0;
+ }
+ else {
+ Py_INCREF(u->u_name);
+ name = u->u_name;
}
- u = c->u;
- if (PyList_Append(seq, u->u_name))
- goto _error;
- dot_str = _PyUnicode_FromId(&dot);
- if (dot_str == NULL)
- goto _error;
- name = PyUnicode_Join(dot_str, seq);
- Py_DECREF(seq);
u->u_qualname = name;
- Py_XINCREF(name);
- return name;
-_error:
- Py_XDECREF(seq);
- return NULL;
+ return 1;
}
/* Allocate a new block and return a pointer to it.
@@ -862,8 +931,6 @@ opcode_stack_effect(int opcode, int oparg)
return 7;
case WITH_CLEANUP:
return -1; /* XXX Sometimes more */
- case STORE_LOCALS:
- return -1;
case RETURN_VALUE:
return -1;
case IMPORT_STAR:
@@ -970,6 +1037,7 @@ opcode_stack_effect(int opcode, int oparg)
case LOAD_CLOSURE:
return 1;
case LOAD_DEREF:
+ case LOAD_CLASSDEREF:
return 1;
case STORE_DEREF:
return -1;
@@ -1330,16 +1398,19 @@ compiler_mod(struct compiler *c, mod_ty mod)
static int
get_ref_type(struct compiler *c, PyObject *name)
{
- int scope = PyST_GetScope(c->u->u_ste, name);
+ int scope;
+ if (c->u->u_scope_type == COMPILER_SCOPE_CLASS &&
+ !PyUnicode_CompareWithASCIIString(name, "__class__"))
+ return CELL;
+ scope = PyST_GetScope(c->u->u_ste, name);
if (scope == 0) {
char buf[350];
PyOS_snprintf(buf, sizeof(buf),
- "unknown scope for %.100s in %.100s(%s) in %s\n"
+ "unknown scope for %.100s in %.100s(%s)\n"
"symbols: %s\nlocals: %s\nglobals: %s",
PyBytes_AS_STRING(name),
PyBytes_AS_STRING(c->u->u_name),
PyObject_REPR(c->u->u_ste->ste_id),
- c->c_filename,
PyObject_REPR(c->u->u_ste->ste_symbols),
PyObject_REPR(c->u->u_varnames),
PyObject_REPR(c->u->u_names)
@@ -1501,15 +1572,15 @@ compiler_visit_annotations(struct compiler *c, arguments_ty args,
if (compiler_visit_argannotations(c, args->args, names))
goto error;
- if (args->varargannotation &&
- compiler_visit_argannotation(c, args->vararg,
- args->varargannotation, names))
+ if (args->vararg && args->vararg->annotation &&
+ compiler_visit_argannotation(c, args->vararg->arg,
+ args->vararg->annotation, names))
goto error;
if (compiler_visit_argannotations(c, args->kwonlyargs, names))
goto error;
- if (args->kwargannotation &&
- compiler_visit_argannotation(c, args->kwarg,
- args->kwargannotation, names))
+ if (args->kwarg && args->kwarg->annotation &&
+ compiler_visit_argannotation(c, args->kwarg->arg,
+ args->kwarg->annotation, names))
goto error;
if (!return_str) {
@@ -1568,6 +1639,8 @@ compiler_function(struct compiler *c, stmt_ty s)
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);
@@ -1575,8 +1648,6 @@ compiler_function(struct compiler *c, stmt_ty s)
return 0;
kw_default_count = res;
}
- if (args->defaults)
- VISIT_SEQ(c, expr, args->defaults);
num_annotations = compiler_visit_annotations(c, args, returns);
if (num_annotations < 0)
return 0;
@@ -1605,9 +1676,10 @@ compiler_function(struct compiler *c, stmt_ty s)
VISIT_IN_SCOPE(c, stmt, st);
}
co = assemble(c, 1);
- qualname = compiler_scope_qualname(c);
+ qualname = c->u->u_qualname;
+ Py_INCREF(qualname);
compiler_exit_scope(c);
- if (qualname == NULL || co == NULL) {
+ if (co == NULL) {
Py_XDECREF(qualname);
Py_XDECREF(co);
return 0;
@@ -1661,12 +1733,6 @@ compiler_class(struct compiler *c, stmt_ty s)
Py_INCREF(s->v.ClassDef.name);
Py_XDECREF(c->u->u_private);
c->u->u_private = s->v.ClassDef.name;
- /* force it to have one mandatory argument */
- c->u->u_argcount = 1;
- /* load the first argument (__locals__) ... */
- ADDOP_I(c, LOAD_FAST, 0);
- /* ... and store it into f_locals */
- ADDOP_IN_SCOPE(c, STORE_LOCALS);
/* load (global) __name__ ... */
str = PyUnicode_InternFromString("__name__");
if (!str || !compiler_nameop(c, str, Load)) {
@@ -1683,14 +1749,8 @@ compiler_class(struct compiler *c, stmt_ty s)
return 0;
}
Py_DECREF(str);
- /* store the __qualname__ */
- str = compiler_scope_qualname(c);
- if (!str) {
- compiler_exit_scope(c);
- return 0;
- }
- ADDOP_O(c, LOAD_CONST, str, consts);
- Py_DECREF(str);
+ assert(c->u->u_qualname);
+ ADDOP_O(c, LOAD_CONST, c->u->u_qualname, consts);
str = PyUnicode_InternFromString("__qualname__");
if (!str || !compiler_nameop(c, str, Store)) {
Py_XDECREF(str);
@@ -1703,24 +1763,24 @@ compiler_class(struct compiler *c, stmt_ty s)
compiler_exit_scope(c);
return 0;
}
- /* return the (empty) __class__ cell */
- str = PyUnicode_InternFromString("__class__");
- if (str == NULL) {
- compiler_exit_scope(c);
- return 0;
- }
- i = compiler_lookup_arg(c->u->u_cellvars, str);
- Py_DECREF(str);
- if (i == -1) {
- /* This happens when nobody references the cell */
- PyErr_Clear();
- /* Return None */
- ADDOP_O(c, LOAD_CONST, Py_None, consts);
- }
- else {
+ if (c->u->u_ste->ste_needs_class_closure) {
+ /* return the (empty) __class__ cell */
+ str = PyUnicode_InternFromString("__class__");
+ if (str == NULL) {
+ compiler_exit_scope(c);
+ return 0;
+ }
+ i = compiler_lookup_arg(c->u->u_cellvars, str);
+ Py_DECREF(str);
+ assert(i == 0);
/* Return the cell where to store __class__ */
ADDOP_I(c, LOAD_CLOSURE, i);
}
+ else {
+ assert(PyDict_Size(c->u->u_cellvars) == 0);
+ /* This happens when nobody references the cell. Return None. */
+ ADDOP_O(c, LOAD_CONST, Py_None, consts);
+ }
ADDOP_IN_SCOPE(c, RETURN_VALUE);
/* create the code object */
co = assemble(c, 1);
@@ -1797,15 +1857,15 @@ 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;
}
- if (args->defaults)
- VISIT_SEQ(c, expr, args->defaults);
- if (!compiler_enter_scope(c, name, COMPILER_SCOPE_FUNCTION,
+ if (!compiler_enter_scope(c, name, COMPILER_SCOPE_LAMBDA,
(void *)e, e->lineno))
return 0;
@@ -1824,9 +1884,10 @@ compiler_lambda(struct compiler *c, expr_ty e)
ADDOP_IN_SCOPE(c, RETURN_VALUE);
}
co = assemble(c, 1);
- qualname = compiler_scope_qualname(c);
+ qualname = c->u->u_qualname;
+ Py_INCREF(qualname);
compiler_exit_scope(c);
- if (qualname == NULL || co == NULL)
+ if (co == NULL)
return 0;
arglength = asdl_seq_LEN(args->defaults);
@@ -2288,8 +2349,11 @@ compiler_import(struct compiler *c, stmt_ty s)
identifier tmp = alias->name;
Py_ssize_t dot = PyUnicode_FindChar(
alias->name, '.', 0, PyUnicode_GET_LENGTH(alias->name), 1);
- if (dot != -1)
+ if (dot != -1) {
tmp = PyUnicode_Substring(alias->name, 0, dot);
+ if (tmp == NULL)
+ return 0;
+ }
r = compiler_nameop(c, tmp, Store);
if (dot != -1) {
Py_DECREF(tmp);
@@ -2380,6 +2444,7 @@ compiler_assert(struct compiler *c, stmt_ty s)
{
static PyObject *assertion_error = NULL;
basicblock *end;
+ PyObject* msg;
if (c->c_optimize)
return 1;
@@ -2390,11 +2455,17 @@ compiler_assert(struct compiler *c, stmt_ty s)
}
if (s->v.Assert.test->kind == Tuple_kind &&
asdl_seq_LEN(s->v.Assert.test->v.Tuple.elts) > 0) {
- const char* msg =
- "assertion is always true, perhaps remove parentheses?";
- if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, c->c_filename,
- c->u->u_lineno, NULL, NULL) == -1)
+ msg = PyUnicode_FromString("assertion is always true, "
+ "perhaps remove parentheses?");
+ if (msg == NULL)
+ return 0;
+ if (PyErr_WarnExplicitObject(PyExc_SyntaxWarning, msg,
+ c->c_filename, c->u->u_lineno,
+ NULL, NULL) == -1) {
+ Py_DECREF(msg);
return 0;
+ }
+ Py_DECREF(msg);
}
VISIT(c, expr, s->v.Assert.test);
end = compiler_new_block(c);
@@ -2638,6 +2709,10 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
if (!mangled)
return 0;
+ assert(PyUnicode_CompareWithASCIIString(name, "None") &&
+ PyUnicode_CompareWithASCIIString(name, "True") &&
+ PyUnicode_CompareWithASCIIString(name, "False"));
+
op = 0;
optype = OP_NAME;
scope = PyST_GetScope(c->u->u_ste, mangled);
@@ -2673,7 +2748,9 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
switch (optype) {
case OP_DEREF:
switch (ctx) {
- case Load: op = LOAD_DEREF; break;
+ case Load:
+ op = (c->u->u_ste->ste_type == ClassBlock) ? LOAD_CLASSDEREF : LOAD_DEREF;
+ break;
case Store: op = STORE_DEREF; break;
case AugLoad:
case AugStore:
@@ -3085,9 +3162,10 @@ compiler_comprehension(struct compiler *c, expr_ty e, int type, identifier name,
}
co = assemble(c, 1);
- qualname = compiler_scope_qualname(c);
+ qualname = c->u->u_qualname;
+ Py_INCREF(qualname);
compiler_exit_scope(c);
- if (qualname == NULL || co == NULL)
+ if (co == NULL)
goto error;
if (!compiler_make_closure(c, co, 0, qualname))
@@ -3197,12 +3275,18 @@ expr_constant(struct compiler *c, expr_ty e)
case Name_kind:
/* optimize away names that can't be reassigned */
id = PyUnicode_AsUTF8(e->v.Name.id);
- if (strcmp(id, "True") == 0) return 1;
- if (strcmp(id, "False") == 0) return 0;
- if (strcmp(id, "None") == 0) return 0;
- if (strcmp(id, "__debug__") == 0)
- return ! c->c_optimize;
- /* fall through */
+ if (id && strcmp(id, "__debug__") == 0)
+ return !c->c_optimize;
+ return -1;
+ case NameConstant_kind: {
+ PyObject *o = e->v.NameConstant.value;
+ if (o == Py_None)
+ return 0;
+ else if (o == Py_True)
+ return 1;
+ else if (o == Py_False)
+ return 0;
+ }
default:
return -1;
}
@@ -3378,6 +3462,9 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
case Ellipsis_kind:
ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts);
break;
+ case NameConstant_kind:
+ ADDOP_O(c, LOAD_CONST, e->v.NameConstant.value, consts);
+ break;
/* The following exprs can be assignment targets. */
case Attribute_kind:
if (e->v.Attribute.ctx != AugStore)
@@ -3547,12 +3634,12 @@ compiler_error(struct compiler *c, const char *errstr)
PyObject *loc;
PyObject *u = NULL, *v = NULL;
- loc = PyErr_ProgramText(c->c_filename, c->u->u_lineno);
+ loc = PyErr_ProgramTextObject(c->c_filename, c->u->u_lineno);
if (!loc) {
Py_INCREF(Py_None);
loc = Py_None;
}
- u = Py_BuildValue("(OiiO)", c->c_filename_obj, c->u->u_lineno,
+ u = Py_BuildValue("(OiiO)", c->c_filename, c->u->u_lineno,
c->u->u_col_offset, loc);
if (!u)
goto exit;
@@ -4060,9 +4147,8 @@ compute_code_flags(struct compiler *c)
{
PySTEntryObject *ste = c->u->u_ste;
int flags = 0, n;
- if (ste->ste_type != ModuleBlock)
- flags |= CO_NEWLOCALS;
if (ste->ste_type == FunctionBlock) {
+ flags |= CO_NEWLOCALS;
if (!ste->ste_unoptimized)
flags |= CO_OPTIMIZED;
if (ste->ste_nested)
@@ -4143,7 +4229,7 @@ makecode(struct compiler *c, struct assembler *a)
nlocals, stackdepth(c), flags,
bytecode, consts, names, varnames,
freevars, cellvars,
- c->c_filename_obj, c->u->u_name,
+ c->c_filename, c->u->u_name,
c->u->u_firstlineno,
a->a_lnotab);
error:
diff --git a/Python/condvar.h b/Python/condvar.h
index bbb40ba..e022dc7 100644
--- a/Python/condvar.h
+++ b/Python/condvar.h
@@ -241,7 +241,7 @@ _PyCOND_WAIT_MS(PyCOND_T *cv, PyMUTEX_T *cs, DWORD ms)
* but we are safe because we are using a semaphore wich has an internal
* count.
*/
- wait = WaitForSingleObject(cv->sem, ms);
+ wait = WaitForSingleObjectEx(cv->sem, ms, FALSE);
PyMUTEX_LOCK(cs);
if (wait != WAIT_OBJECT_0)
--cv->waiting;
diff --git a/Python/dynload_aix.c b/Python/dynload_aix.c
index f40a0be..5ac30ed 100644
--- a/Python/dynload_aix.c
+++ b/Python/dynload_aix.c
@@ -30,11 +30,11 @@ const char *_PyImport_DynLoadFiletab[] = {".so", NULL};
static int
aix_getoldmodules(void **modlistptr)
{
- register ModulePtr modptr, prevmodptr;
- register struct ld_info *ldiptr;
- register char *ldibuf;
- register int errflag, bufsize = 1024;
- register unsigned int offset;
+ ModulePtr modptr, prevmodptr;
+ struct ld_info *ldiptr;
+ char *ldibuf;
+ int errflag, bufsize = 1024;
+ unsigned int offset;
char *progname = Py_GetProgramName();
/*
@@ -106,7 +106,7 @@ aix_loaderror(const char *pathname)
char *message[1024], errbuf[1024];
PyObject *pathname_ob = NULL;
PyObject *errbuf_ob = NULL;
- register int i,j;
+ int i,j;
struct errtab {
int errNo;
diff --git a/Python/dynload_os2.c b/Python/dynload_os2.c
deleted file mode 100644
index 0e1b907..0000000
--- a/Python/dynload_os2.c
+++ /dev/null
@@ -1,42 +0,0 @@
-
-/* Support for dynamic loading of extension modules */
-
-#define INCL_DOSERRORS
-#define INCL_DOSMODULEMGR
-#include <os2.h>
-
-#include "Python.h"
-#include "importdl.h"
-
-
-const char *_PyImport_DynLoadFiletab[] = {".pyd", ".dll", NULL};
-
-dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
- const char *pathname, FILE *fp)
-{
- dl_funcptr p;
- APIRET rc;
- HMODULE hDLL;
- char failreason[256];
- char funcname[258];
-
- rc = DosLoadModule(failreason,
- sizeof(failreason),
- pathname,
- &hDLL);
-
- if (rc != NO_ERROR) {
- char errBuf[256];
- PyOS_snprintf(errBuf, sizeof(errBuf),
- "DLL load failed, rc = %d: %.200s",
- rc, failreason);
- PyErr_SetString(PyExc_ImportError, errBuf);
- return NULL;
- }
-
- PyOS_snprintf(funcname, sizeof(funcname), "PyInit_%.200s", shortname);
- rc = DosQueryProcAddr(hDLL, 0L, funcname, &p);
- if (rc != NO_ERROR)
- p = NULL; /* Signify Failure to Acquire Entrypoint */
- return p;
-}
diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c
index 75544ed..888fbfc 100644
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -18,10 +18,6 @@
#ifdef HAVE_DLFCN_H
#include <dlfcn.h>
-#else
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
-#include "dlfcn.h"
-#endif
#endif
#if (defined(__OpenBSD__) || defined(__NetBSD__)) && !defined(__ELF__)
@@ -40,10 +36,6 @@ const char *_PyImport_DynLoadFiletab[] = {
#ifdef __CYGWIN__
".dll",
#else /* !__CYGWIN__ */
-#if defined(PYOS_OS2) && defined(PYCC_GCC)
- ".pyd",
- ".dll",
-#else /* !(defined(PYOS_OS2) && defined(PYCC_GCC)) */
#ifdef __VMS
".exe",
".EXE",
@@ -52,7 +44,6 @@ const char *_PyImport_DynLoadFiletab[] = {
".abi" PYTHON_ABI_STRING ".so",
".so",
#endif /* __VMS */
-#endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */
#endif /* __CYGWIN__ */
NULL,
};
@@ -114,9 +105,7 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
}
}
-#if !(defined(PYOS_OS2) && defined(PYCC_GCC))
dlopenflags = PyThreadState_GET()->interp->dlopenflags;
-#endif
#ifdef __VMS
/* VMS currently don't allow a pathname, use a logical name instead */
@@ -132,19 +121,30 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *shortname,
handle = dlopen(pathname, dlopenflags);
if (handle == NULL) {
- PyObject *mod_name = NULL;
- PyObject *path = NULL;
- PyObject *error_ob = NULL;
+ PyObject *mod_name;
+ PyObject *path;
+ PyObject *error_ob;
const char *error = dlerror();
if (error == NULL)
error = "unknown dlopen() error";
error_ob = PyUnicode_FromString(error);
- path = PyUnicode_FromString(pathname);
+ if (error_ob == NULL)
+ return NULL;
mod_name = PyUnicode_FromString(shortname);
+ if (mod_name == NULL) {
+ Py_DECREF(error_ob);
+ return NULL;
+ }
+ path = PyUnicode_FromString(pathname);
+ if (path == NULL) {
+ Py_DECREF(error_ob);
+ Py_DECREF(mod_name);
+ return NULL;
+ }
PyErr_SetImportError(error_ob, mod_name, path);
- Py_XDECREF(error_ob);
- Py_XDECREF(path);
- Py_XDECREF(mod_name);
+ Py_DECREF(error_ob);
+ Py_DECREF(mod_name);
+ Py_DECREF(path);
return NULL;
}
if (fp != NULL && nhandles < 128)
diff --git a/Python/errors.c b/Python/errors.c
index 626b16e..1832b5b 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -71,6 +71,11 @@ PyErr_SetObject(PyObject *exception, PyObject *value)
if (value == NULL || !PyExceptionInstance_Check(value)) {
/* We must normalize the value right now */
PyObject *args, *fixed_value;
+#ifdef Py_DEBUG
+ /* in debug mode, PyEval_EvalFrameEx() fails with an assertion
+ error if an exception is set when it is called */
+ PyErr_Clear();
+#endif
if (value == NULL || value == Py_None)
args = PyTuple_New(0);
else if (PyTuple_Check(value)) {
@@ -112,6 +117,20 @@ PyErr_SetObject(PyObject *exception, PyObject *value)
PyErr_Restore(exception, value, tb);
}
+/* Set a key error with the specified argument, wrapping it in a
+ * tuple automatically so that tuple keys are not unpacked as the
+ * exception arguments. */
+void
+_PyErr_SetKeyError(PyObject *arg)
+{
+ PyObject *tup;
+ tup = PyTuple_Pack(1, arg);
+ if (!tup)
+ return; /* caller will expect error to be set anyway */
+ PyErr_SetObject(PyExc_KeyError, tup);
+ Py_DECREF(tup);
+}
+
void
PyErr_SetNone(PyObject *exception)
{
@@ -227,12 +246,21 @@ PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
value will be an instance.
*/
if (PyExceptionClass_Check(type)) {
+ int is_subclass;
+ if (inclass) {
+ is_subclass = PyObject_IsSubclass(inclass, type);
+ if (is_subclass < 0)
+ goto finally;
+ }
+ else
+ is_subclass = 0;
+
/* if the value was not an instance, or is not an instance
whose class is (or is derived from) type, then use the
value as an argument to instantiation of the type
class.
*/
- if (!inclass || !PyObject_IsSubclass(inclass, type)) {
+ if (!inclass || !is_subclass) {
PyObject *args, *res;
if (value == Py_None)
@@ -366,6 +394,12 @@ PyErr_BadArgument(void)
PyObject *
PyErr_NoMemory(void)
{
+ if (Py_TYPE(PyExc_MemoryError) == NULL) {
+ /* PyErr_NoMemory() has been called before PyExc_MemoryError has been
+ initialized by _PyExc_Init() */
+ Py_FatalError("Out of memory and PyExc_MemoryError is not "
+ "initialized yet");
+ }
PyErr_SetNone(PyExc_MemoryError);
return NULL;
}
@@ -588,7 +622,7 @@ PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr)
PyObject *PyErr_SetFromWindowsErr(int ierr)
{
- return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError,
+ return PyErr_SetExcFromWindowsErrWithFilename(PyExc_OSError,
ierr, NULL);
}
PyObject *PyErr_SetFromWindowsErrWithFilename(
@@ -597,7 +631,7 @@ PyObject *PyErr_SetFromWindowsErrWithFilename(
{
PyObject *name = filename ? PyUnicode_DecodeFSDefault(filename) : NULL;
PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
- PyExc_WindowsError,
+ PyExc_OSError,
ierr, name);
Py_XDECREF(name);
return result;
@@ -611,7 +645,7 @@ PyObject *PyErr_SetFromWindowsErrWithUnicodeFilename(
PyUnicode_FromUnicode(filename, wcslen(filename)) :
NULL;
PyObject *result = PyErr_SetExcFromWindowsErrWithFilenameObject(
- PyExc_WindowsError,
+ PyExc_OSError,
ierr, name);
Py_XDECREF(name);
return result;
@@ -646,8 +680,11 @@ PyErr_SetImportError(PyObject *msg, PyObject *name, PyObject *path)
Py_INCREF(msg);
PyTuple_SET_ITEM(args, 0, msg);
- PyDict_SetItemString(kwargs, "name", name);
- PyDict_SetItemString(kwargs, "path", path);
+
+ if (PyDict_SetItemString(kwargs, "name", name) < 0)
+ return NULL;
+ if (PyDict_SetItemString(kwargs, "path", path) < 0)
+ return NULL;
error = PyObject_Call(PyExc_ImportError, args, kwargs);
if (error != NULL) {
@@ -675,6 +712,7 @@ _PyErr_BadInternalCall(const char *filename, int lineno)
void
PyErr_BadInternalCall(void)
{
+ assert(0 && "bad argument to internal function");
PyErr_Format(PyExc_SystemError,
"bad argument to internal function");
}
@@ -694,6 +732,12 @@ PyErr_Format(PyObject *exception, const char *format, ...)
va_start(vargs);
#endif
+#ifdef Py_DEBUG
+ /* in debug mode, PyEval_EvalFrameEx() fails with an assertion error
+ if an exception is set when it is called */
+ PyErr_Clear();
+#endif
+
string = PyUnicode_FromFormatV(format, vargs);
PyErr_SetObject(exception, string);
Py_XDECREF(string);
@@ -795,60 +839,84 @@ PyErr_WriteUnraisable(PyObject *obj)
{
_Py_IDENTIFIER(__module__);
PyObject *f, *t, *v, *tb;
+ PyObject *moduleName = NULL;
+ char* className;
+
PyErr_Fetch(&t, &v, &tb);
+
f = PySys_GetObject("stderr");
- if (f != NULL && f != Py_None) {
- PyFile_WriteString("Exception ", f);
- if (t) {
- PyObject* moduleName;
- char* className;
- assert(PyExceptionClass_Check(t));
- className = PyExceptionClass_Name(t);
- if (className != NULL) {
- char *dot = strrchr(className, '.');
- if (dot != NULL)
- className = dot+1;
- }
+ if (f == NULL || f == Py_None)
+ goto done;
+
+ if (obj) {
+ if (PyFile_WriteString("Exception ignored in: ", f) < 0)
+ goto done;
+ if (PyFile_WriteObject(obj, f, 0) < 0)
+ goto done;
+ if (PyFile_WriteString("\n", f) < 0)
+ goto done;
+ }
- moduleName = _PyObject_GetAttrId(t, &PyId___module__);
- if (moduleName == NULL)
- PyFile_WriteString("<unknown>", f);
- else {
- char* modstr = _PyUnicode_AsString(moduleName);
- if (modstr &&
- strcmp(modstr, "builtins") != 0)
- {
- PyFile_WriteString(modstr, f);
- PyFile_WriteString(".", f);
- }
- }
- if (className == NULL)
- PyFile_WriteString("<unknown>", f);
- else
- PyFile_WriteString(className, f);
- if (v && v != Py_None) {
- PyFile_WriteString(": ", f);
- PyFile_WriteObject(v, f, 0);
- }
- Py_XDECREF(moduleName);
- }
- if (obj) {
- PyFile_WriteString(" in ", f);
- PyFile_WriteObject(obj, f, 0);
+ if (PyTraceBack_Print(tb, f) < 0)
+ goto done;
+
+ if (!t)
+ goto done;
+
+ assert(PyExceptionClass_Check(t));
+ className = PyExceptionClass_Name(t);
+ if (className != NULL) {
+ char *dot = strrchr(className, '.');
+ if (dot != NULL)
+ className = dot+1;
+ }
+
+ moduleName = _PyObject_GetAttrId(t, &PyId___module__);
+ if (moduleName == NULL) {
+ PyErr_Clear();
+ if (PyFile_WriteString("<unknown>", f) < 0)
+ goto done;
+ }
+ else {
+ if (PyUnicode_CompareWithASCIIString(moduleName, "builtins") != 0) {
+ if (PyFile_WriteObject(moduleName, f, Py_PRINT_RAW) < 0)
+ goto done;
+ if (PyFile_WriteString(".", f) < 0)
+ goto done;
}
- PyFile_WriteString(" ignored\n", f);
- PyErr_Clear(); /* Just in case */
}
+ if (className == NULL) {
+ if (PyFile_WriteString("<unknown>", f) < 0)
+ goto done;
+ }
+ else {
+ if (PyFile_WriteString(className, f) < 0)
+ goto done;
+ }
+
+ if (v && v != Py_None) {
+ if (PyFile_WriteString(": ", f) < 0)
+ goto done;
+ if (PyFile_WriteObject(v, f, Py_PRINT_RAW) < 0)
+ goto done;
+ }
+ if (PyFile_WriteString("\n", f) < 0)
+ goto done;
+
+done:
+ Py_XDECREF(moduleName);
Py_XDECREF(t);
Py_XDECREF(v);
Py_XDECREF(tb);
+ PyErr_Clear(); /* Just in case */
}
extern PyObject *PyModule_GetWarningsModule(void);
void
-PyErr_SyntaxLocation(const char *filename, int lineno) {
+PyErr_SyntaxLocation(const char *filename, int lineno)
+{
PyErr_SyntaxLocationEx(filename, lineno, -1);
}
@@ -858,7 +926,7 @@ PyErr_SyntaxLocation(const char *filename, int lineno) {
to make printing of exceptions believe it is a syntax error. */
void
-PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
+PyErr_SyntaxLocationObject(PyObject *filename, int lineno, int col_offset)
{
PyObject *exc, *v, *tb, *tmp;
_Py_IDENTIFIER(filename);
@@ -892,16 +960,10 @@ PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
}
}
if (filename != NULL) {
- tmp = PyUnicode_DecodeFSDefault(filename);
- if (tmp == NULL)
+ if (_PyObject_SetAttrId(v, &PyId_filename, filename))
PyErr_Clear();
- else {
- if (_PyObject_SetAttrId(v, &PyId_filename, tmp))
- PyErr_Clear();
- Py_DECREF(tmp);
- }
- tmp = PyErr_ProgramText(filename, lineno);
+ tmp = PyErr_ProgramTextObject(filename, lineno);
if (tmp) {
if (_PyObject_SetAttrId(v, &PyId_text, tmp))
PyErr_Clear();
@@ -931,22 +993,33 @@ PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
PyErr_Restore(exc, v, tb);
}
+void
+PyErr_SyntaxLocationEx(const char *filename, int lineno, int col_offset)
+{
+ PyObject *fileobj;
+ if (filename != NULL) {
+ fileobj = PyUnicode_DecodeFSDefault(filename);
+ if (fileobj == NULL)
+ PyErr_Clear();
+ }
+ else
+ fileobj = NULL;
+ PyErr_SyntaxLocationObject(fileobj, lineno, col_offset);
+ Py_XDECREF(fileobj);
+}
+
/* Attempt to load the line of text that the exception refers to. If it
fails, it will return NULL but will not set an exception.
XXX The functionality of this function is quite similar to the
functionality in tb_displayline() in traceback.c. */
-PyObject *
-PyErr_ProgramText(const char *filename, int lineno)
+static PyObject *
+err_programtext(FILE *fp, int lineno)
{
- FILE *fp;
int i;
char linebuf[1000];
- if (filename == NULL || *filename == '\0' || lineno <= 0)
- return NULL;
- fp = fopen(filename, "r" PY_STDIOTEXTMODE);
if (fp == NULL)
return NULL;
for (i = 0; i < lineno; i++) {
@@ -977,6 +1050,26 @@ PyErr_ProgramText(const char *filename, int lineno)
return NULL;
}
+PyObject *
+PyErr_ProgramText(const char *filename, int lineno)
+{
+ FILE *fp;
+ if (filename == NULL || *filename == '\0' || lineno <= 0)
+ return NULL;
+ fp = _Py_fopen(filename, "r" PY_STDIOTEXTMODE);
+ return err_programtext(fp, lineno);
+}
+
+PyObject *
+PyErr_ProgramTextObject(PyObject *filename, int lineno)
+{
+ FILE *fp;
+ if (filename == NULL || lineno <= 0)
+ return NULL;
+ fp = _Py_fopen_obj(filename, "r" PY_STDIOTEXTMODE);
+ return err_programtext(fp, lineno);
+}
+
#ifdef __cplusplus
}
#endif
diff --git a/Python/fileutils.c b/Python/fileutils.c
index b7c42e8..eecbb3b 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -9,20 +9,39 @@
#include <langinfo.h>
#endif
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif /* HAVE_FCNTL_H */
+
#ifdef __APPLE__
extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size);
#endif
+#ifdef O_CLOEXEC
+/* Does open() support the O_CLOEXEC flag? Possible values:
+
+ -1: unknown
+ 0: open() ignores O_CLOEXEC flag, ex: Linux kernel older than 2.6.23
+ 1: open() supports O_CLOEXEC flag, close-on-exec is set
+
+ The flag is used by _Py_open(), io.FileIO and os.open() */
+int _Py_open_cloexec_works = -1;
+#endif
+
PyObject *
_Py_device_encoding(int fd)
{
-#if defined(MS_WINDOWS) || defined(MS_WIN64)
+#if defined(MS_WINDOWS)
UINT cp;
#endif
if (!_PyVerify_fd(fd) || !isatty(fd)) {
Py_RETURN_NONE;
}
-#if defined(MS_WINDOWS) || defined(MS_WIN64)
+#if defined(MS_WINDOWS)
if (fd == 0)
cp = GetConsoleCP();
else if (fd == 1 || fd == 2)
@@ -60,7 +79,7 @@ extern int _Py_normalize_encoding(const char *, char *, size_t);
workaround is also enabled on error, for example if getting the locale
failed.
- Values of locale_is_ascii:
+ Values of force_ascii:
1: the workaround is used: _Py_wchar2char() uses
encode_ascii_surrogateescape() and _Py_char2wchar() uses
@@ -201,7 +220,7 @@ decode_ascii_surrogateescape(const char *arg, size_t *size)
unsigned char *in;
wchar_t *out;
- res = PyMem_Malloc((strlen(arg)+1)*sizeof(wchar_t));
+ res = PyMem_RawMalloc((strlen(arg)+1)*sizeof(wchar_t));
if (!res)
return NULL;
@@ -229,7 +248,7 @@ decode_ascii_surrogateescape(const char *arg, size_t *size)
Use _Py_wchar2char() to encode the character string back to a byte string.
Return a pointer to a newly allocated wide character string (use
- PyMem_Free() to free the memory) and write the number of written wide
+ PyMem_RawFree() to free the memory) and write the number of written wide
characters excluding the null character into *size if size is not NULL, or
NULL on error (decoding or memory allocation error). If size is not NULL,
*size is set to (size_t)-1 on memory error and (size_t)-2 on decoding
@@ -254,9 +273,9 @@ _Py_char2wchar(const char* arg, size_t *size)
wchar_t *res;
size_t argsize;
size_t count;
+#ifdef HAVE_MBRTOWC
unsigned char *in;
wchar_t *out;
-#ifdef HAVE_MBRTOWC
mbstate_t mbs;
#endif
@@ -283,7 +302,7 @@ _Py_char2wchar(const char* arg, size_t *size)
argsize = mbstowcs(NULL, arg, 0);
#endif
if (argsize != (size_t)-1) {
- res = (wchar_t *)PyMem_Malloc((argsize+1)*sizeof(wchar_t));
+ res = (wchar_t *)PyMem_RawMalloc((argsize+1)*sizeof(wchar_t));
if (!res)
goto oom;
count = mbstowcs(res, arg, argsize+1);
@@ -292,7 +311,7 @@ _Py_char2wchar(const char* arg, size_t *size)
/* Only use the result if it contains no
surrogate characters. */
for (tmp = res; *tmp != 0 &&
- (*tmp < 0xd800 || *tmp > 0xdfff); tmp++)
+ !Py_UNICODE_IS_SURROGATE(*tmp); tmp++)
;
if (*tmp == 0) {
if (size != NULL)
@@ -300,7 +319,7 @@ _Py_char2wchar(const char* arg, size_t *size)
return res;
}
}
- PyMem_Free(res);
+ PyMem_RawFree(res);
}
/* Conversion failed. Fall back to escaping with surrogateescape. */
#ifdef HAVE_MBRTOWC
@@ -309,7 +328,7 @@ _Py_char2wchar(const char* arg, size_t *size)
/* Overallocate; as multi-byte characters are in the argument, the
actual output could use less memory. */
argsize = strlen(arg) + 1;
- res = (wchar_t*)PyMem_Malloc(argsize*sizeof(wchar_t));
+ res = (wchar_t*)PyMem_RawMalloc(argsize*sizeof(wchar_t));
if (!res)
goto oom;
in = (unsigned char*)arg;
@@ -325,7 +344,7 @@ _Py_char2wchar(const char* arg, size_t *size)
since we provide everything that we have -
unless there is a bug in the C library, or I
misunderstood how mbrtowc works. */
- PyMem_Free(res);
+ PyMem_RawFree(res);
if (size != NULL)
*size = (size_t)-2;
return NULL;
@@ -338,7 +357,7 @@ _Py_char2wchar(const char* arg, size_t *size)
memset(&mbs, 0, sizeof mbs);
continue;
}
- if (*out >= 0xd800 && *out <= 0xdfff) {
+ if (Py_UNICODE_IS_SURROGATE(*out)) {
/* Surrogate character. Escape the original
byte sequence with surrogateescape. */
argsize -= converted;
@@ -547,14 +566,215 @@ _Py_stat(PyObject *path, struct stat *statbuf)
#endif
-/* Open a file. Use _wfopen() on Windows, encode the path to the locale
- encoding and use fopen() otherwise. */
+static int
+get_inheritable(int fd, int raise)
+{
+#ifdef MS_WINDOWS
+ HANDLE handle;
+ DWORD flags;
+
+ if (!_PyVerify_fd(fd)) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ handle = (HANDLE)_get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ if (raise)
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+
+ if (!GetHandleInformation(handle, &flags)) {
+ if (raise)
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+
+ return (flags & HANDLE_FLAG_INHERIT);
+#else
+ int flags;
+
+ flags = fcntl(fd, F_GETFD, 0);
+ if (flags == -1) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return !(flags & FD_CLOEXEC);
+#endif
+}
+
+/* Get the inheritable flag of the specified file descriptor.
+ Return 1 if the file descriptor can be inherited, 0 if it cannot,
+ raise an exception and return -1 on error. */
+int
+_Py_get_inheritable(int fd)
+{
+ return get_inheritable(fd, 1);
+}
+
+static int
+set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
+{
+#ifdef MS_WINDOWS
+ HANDLE handle;
+ DWORD flags;
+#elif defined(HAVE_SYS_IOCTL_H) && defined(FIOCLEX) && defined(FIONCLEX)
+ int request;
+ int err;
+#elif defined(HAVE_FCNTL_H)
+ int flags;
+ int res;
+#endif
+
+ /* atomic_flag_works can only be used to make the file descriptor
+ non-inheritable */
+ assert(!(atomic_flag_works != NULL && inheritable));
+
+ if (atomic_flag_works != NULL && !inheritable) {
+ if (*atomic_flag_works == -1) {
+ int inheritable = get_inheritable(fd, raise);
+ if (inheritable == -1)
+ return -1;
+ *atomic_flag_works = !inheritable;
+ }
+
+ if (*atomic_flag_works)
+ return 0;
+ }
+
+#ifdef MS_WINDOWS
+ if (!_PyVerify_fd(fd)) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ handle = (HANDLE)_get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ if (raise)
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+
+ if (inheritable)
+ flags = HANDLE_FLAG_INHERIT;
+ else
+ flags = 0;
+ if (!SetHandleInformation(handle, HANDLE_FLAG_INHERIT, flags)) {
+ if (raise)
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+ return 0;
+
+#elif defined(HAVE_SYS_IOCTL_H) && defined(FIOCLEX) && defined(FIONCLEX)
+ if (inheritable)
+ request = FIONCLEX;
+ else
+ request = FIOCLEX;
+ err = ioctl(fd, request);
+ if (err) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+
+#else
+ flags = fcntl(fd, F_GETFD);
+ if (flags < 0) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (inheritable)
+ flags &= ~FD_CLOEXEC;
+ else
+ flags |= FD_CLOEXEC;
+ res = fcntl(fd, F_SETFD, flags);
+ if (res < 0) {
+ if (raise)
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ return 0;
+#endif
+}
+
+/* Make the file descriptor non-inheritable.
+ Return 0 on success, set errno and return -1 on error. */
+static int
+make_non_inheritable(int fd)
+{
+ return set_inheritable(fd, 0, 0, NULL);
+}
+
+/* Set the inheritable flag of the specified file descriptor.
+ On success: return 0, on error: raise an exception if raise is nonzero
+ and return -1.
+
+ If atomic_flag_works is not NULL:
+
+ * if *atomic_flag_works==-1, check if the inheritable is set on the file
+ descriptor: if yes, set *atomic_flag_works to 1, otherwise set to 0 and
+ set the inheritable flag
+ * if *atomic_flag_works==1: do nothing
+ * if *atomic_flag_works==0: set inheritable flag to False
+
+ Set atomic_flag_works to NULL if no atomic flag was used to create the
+ file descriptor.
+
+ atomic_flag_works can only be used to make a file descriptor
+ non-inheritable: atomic_flag_works must be NULL if inheritable=1. */
+int
+_Py_set_inheritable(int fd, int inheritable, int *atomic_flag_works)
+{
+ return set_inheritable(fd, inheritable, 1, atomic_flag_works);
+}
+
+/* Open a file with the specified flags (wrapper to open() function).
+ The file descriptor is created non-inheritable. */
+int
+_Py_open(const char *pathname, int flags)
+{
+ int fd;
+#ifdef MS_WINDOWS
+ fd = open(pathname, flags | O_NOINHERIT);
+ if (fd < 0)
+ return fd;
+#else
+
+ int *atomic_flag_works;
+#ifdef O_CLOEXEC
+ atomic_flag_works = &_Py_open_cloexec_works;
+ flags |= O_CLOEXEC;
+#else
+ atomic_flag_works = NULL;
+#endif
+ fd = open(pathname, flags);
+ if (fd < 0)
+ return fd;
+
+ if (set_inheritable(fd, 0, 0, atomic_flag_works) < 0) {
+ close(fd);
+ return -1;
+ }
+#endif /* !MS_WINDOWS */
+ return fd;
+}
+/* Open a file. Use _wfopen() on Windows, encode the path to the locale
+ encoding and use fopen() otherwise. The file descriptor is created
+ non-inheritable. */
FILE *
_Py_wfopen(const wchar_t *path, const wchar_t *mode)
{
-#ifndef MS_WINDOWS
FILE *f;
+#ifndef MS_WINDOWS
char *cpath;
char cmode[10];
size_t r;
@@ -568,21 +788,42 @@ _Py_wfopen(const wchar_t *path, const wchar_t *mode)
return NULL;
f = fopen(cpath, cmode);
PyMem_Free(cpath);
- return f;
#else
- return _wfopen(path, mode);
+ f = _wfopen(path, mode);
#endif
+ if (f == NULL)
+ return NULL;
+ if (make_non_inheritable(fileno(f)) < 0) {
+ fclose(f);
+ return NULL;
+ }
+ return f;
}
-/* Call _wfopen() on Windows, or encode the path to the filesystem encoding and
- call fopen() otherwise.
+/* Wrapper to fopen(). The file descriptor is created non-inheritable. */
+FILE*
+_Py_fopen(const char *pathname, const char *mode)
+{
+ FILE *f = fopen(pathname, mode);
+ if (f == NULL)
+ return NULL;
+ if (make_non_inheritable(fileno(f)) < 0) {
+ fclose(f);
+ return NULL;
+ }
+ return f;
+}
- Return the new file object on success, or NULL if the file cannot be open or
- (if PyErr_Occurred()) on unicode error */
+/* Open a file. Call _wfopen() on Windows, or encode the path to the filesystem
+ encoding and call fopen() otherwise. The file descriptor is created
+ non-inheritable.
+ Return the new file object on success, or NULL if the file cannot be open or
+ (if PyErr_Occurred()) on unicode error. */
FILE*
-_Py_fopen(PyObject *path, const char *mode)
+_Py_fopen_obj(PyObject *path, const char *mode)
{
+ FILE *f;
#ifdef MS_WINDOWS
wchar_t *wpath;
wchar_t wmode[10];
@@ -602,16 +843,21 @@ _Py_fopen(PyObject *path, const char *mode)
if (usize == 0)
return NULL;
- return _wfopen(wpath, wmode);
+ f = _wfopen(wpath, wmode);
#else
- FILE *f;
PyObject *bytes;
if (!PyUnicode_FSConverter(path, &bytes))
return NULL;
f = fopen(PyBytes_AS_STRING(bytes), mode);
Py_DECREF(bytes);
- return f;
#endif
+ if (f == NULL)
+ return NULL;
+ if (make_non_inheritable(fileno(f)) < 0) {
+ fclose(f);
+ return NULL;
+ }
+ return f;
}
#ifdef HAVE_READLINK
@@ -648,12 +894,12 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz)
return -1;
}
if (bufsiz <= r1) {
- PyMem_Free(wbuf);
+ PyMem_RawFree(wbuf);
errno = EINVAL;
return -1;
}
wcsncpy(buf, wbuf, bufsiz);
- PyMem_Free(wbuf);
+ PyMem_RawFree(wbuf);
return (int)r1;
}
#endif
@@ -689,12 +935,12 @@ _Py_wrealpath(const wchar_t *path,
return NULL;
}
if (resolved_path_size <= r) {
- PyMem_Free(wresolved_path);
+ PyMem_RawFree(wresolved_path);
errno = EINVAL;
return NULL;
}
wcsncpy(resolved_path, wresolved_path, resolved_path_size);
- PyMem_Free(wresolved_path);
+ PyMem_RawFree(wresolved_path);
return resolved_path;
}
#endif
@@ -707,7 +953,8 @@ wchar_t*
_Py_wgetcwd(wchar_t *buf, size_t size)
{
#ifdef MS_WINDOWS
- return _wgetcwd(buf, size);
+ int isize = (int)Py_MIN(size, INT_MAX);
+ return _wgetcwd(buf, isize);
#else
char fname[PATH_MAX];
wchar_t *wname;
@@ -719,12 +966,81 @@ _Py_wgetcwd(wchar_t *buf, size_t size)
if (wname == NULL)
return NULL;
if (size <= len) {
- PyMem_Free(wname);
+ PyMem_RawFree(wname);
return NULL;
}
wcsncpy(buf, wname, size);
- PyMem_Free(wname);
+ PyMem_RawFree(wname);
return buf;
#endif
}
+/* Duplicate a file descriptor. The new file descriptor is created as
+ non-inheritable. Return a new file descriptor on success, raise an OSError
+ exception and return -1 on error.
+
+ The GIL is released to call dup(). The caller must hold the GIL. */
+int
+_Py_dup(int fd)
+{
+#ifdef MS_WINDOWS
+ HANDLE handle;
+ DWORD ftype;
+#endif
+
+ if (!_PyVerify_fd(fd)) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+#ifdef MS_WINDOWS
+ handle = (HANDLE)_get_osfhandle(fd);
+ if (handle == INVALID_HANDLE_VALUE) {
+ PyErr_SetFromWindowsErr(0);
+ return -1;
+ }
+
+ /* get the file type, ignore the error if it failed */
+ ftype = GetFileType(handle);
+
+ Py_BEGIN_ALLOW_THREADS
+ fd = dup(fd);
+ Py_END_ALLOW_THREADS
+ if (fd < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ /* Character files like console cannot be make non-inheritable */
+ if (ftype != FILE_TYPE_CHAR) {
+ if (_Py_set_inheritable(fd, 0, NULL) < 0) {
+ close(fd);
+ return -1;
+ }
+ }
+#elif defined(HAVE_FCNTL_H) && defined(F_DUPFD_CLOEXEC)
+ Py_BEGIN_ALLOW_THREADS
+ fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
+ Py_END_ALLOW_THREADS
+ if (fd < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+#else
+ Py_BEGIN_ALLOW_THREADS
+ fd = dup(fd);
+ Py_END_ALLOW_THREADS
+ if (fd < 0) {
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+
+ if (_Py_set_inheritable(fd, 0, NULL) < 0) {
+ close(fd);
+ return -1;
+ }
+#endif
+ return fd;
+}
+
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
index a6516dc..e68087f 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -315,7 +315,7 @@ calc_padding(Py_ssize_t nchars, Py_ssize_t width, Py_UCS4 align,
/* Do the padding, and return a pointer to where the caller-supplied
content goes. */
-static Py_ssize_t
+static int
fill_padding(_PyUnicodeWriter *writer,
Py_ssize_t nchars,
Py_UCS4 fill_char, Py_ssize_t n_lpadding,
@@ -556,7 +556,7 @@ fill_number(_PyUnicodeWriter *writer, const NumberFieldWidths *spec,
{
/* Used to keep track of digits, decimal, and remainder. */
Py_ssize_t d_pos = d_start;
- const enum PyUnicode_Kind kind = writer->kind;
+ const unsigned int kind = writer->kind;
const void *data = writer->data;
Py_ssize_t r;
@@ -757,7 +757,8 @@ format_string_internal(PyObject *value, const InternalFormatSpec *format,
goto done;
}
- if (format->width == -1 && format->precision == -1) {
+ if ((format->width == -1 || format->width <= len)
+ && (format->precision == -1 || format->precision >= len)) {
/* Fast path */
return _PyUnicodeWriter_WriteStr(writer, value);
}
@@ -770,9 +771,13 @@ format_string_internal(PyObject *value, const InternalFormatSpec *format,
calc_padding(len, format->width, format->align, &lpad, &rpad, &total);
- maxchar = _PyUnicode_FindMaxChar(value, 0, len);
+ maxchar = writer->maxchar;
if (lpad != 0 || rpad != 0)
maxchar = Py_MAX(maxchar, format->fill_char);
+ if (PyUnicode_MAX_CHAR_VALUE(value) > maxchar) {
+ Py_UCS4 valmaxchar = _PyUnicode_FindMaxChar(value, 0, len);
+ maxchar = Py_MAX(maxchar, valmaxchar);
+ }
/* allocate the resulting string */
if (_PyUnicodeWriter_Prepare(writer, total, maxchar) == -1)
@@ -977,8 +982,7 @@ format_float_internal(PyObject *value,
Py_ssize_t n_total;
int has_decimal;
double val;
- Py_ssize_t precision;
- Py_ssize_t default_precision = 6;
+ int precision, default_precision = 6;
Py_UCS4 type = format->type;
int add_pct = 0;
Py_ssize_t index;
@@ -1133,8 +1137,7 @@ format_complex_internal(PyObject *value,
Py_ssize_t n_im_total;
int re_has_decimal;
int im_has_decimal;
- int precision;
- Py_ssize_t default_precision = 6;
+ int precision, default_precision = 6;
Py_UCS4 type = format->type;
Py_ssize_t i_re;
Py_ssize_t i_im;
diff --git a/Python/frozen.c b/Python/frozen.c
index 25fdc17..9bc662b 100644
--- a/Python/frozen.c
+++ b/Python/frozen.c
@@ -28,7 +28,7 @@ static unsigned char M___hello__[] = {
#define SIZE (int)sizeof(M___hello__)
-static struct _frozen _PyImport_FrozenModules[] = {
+static const struct _frozen _PyImport_FrozenModules[] = {
/* importlib */
{"_frozen_importlib", _Py_M__importlib, (int)sizeof(_Py_M__importlib)},
/* Test module */
@@ -42,4 +42,4 @@ static struct _frozen _PyImport_FrozenModules[] = {
/* Embedding apps may change this pointer to point to their favorite
collection of frozen modules: */
-struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;
+const struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;
diff --git a/Python/frozenmain.c b/Python/frozenmain.c
index 8b1f2d4..55d05fc 100644
--- a/Python/frozenmain.c
+++ b/Python/frozenmain.c
@@ -16,19 +16,19 @@ int
Py_FrozenMain(int argc, char **argv)
{
char *p;
- int i, n, sts;
+ int i, n, sts = 1;
int inspect = 0;
int unbuffered = 0;
- char *oldloc;
- wchar_t **argv_copy;
+ char *oldloc = NULL;
+ wchar_t **argv_copy = NULL;
/* We need a second copies, as Python might modify the first one. */
- wchar_t **argv_copy2;
+ wchar_t **argv_copy2 = NULL;
- argv_copy = PyMem_Malloc(sizeof(wchar_t*)*argc);
- argv_copy2 = PyMem_Malloc(sizeof(wchar_t*)*argc);
+ argv_copy = PyMem_RawMalloc(sizeof(wchar_t*) * argc);
+ argv_copy2 = PyMem_RawMalloc(sizeof(wchar_t*) * argc);
if (!argv_copy || !argv_copy2) {
fprintf(stderr, "out of memory\n");
- return 1;
+ goto error;
}
Py_FrozenFlag = 1; /* Suppress errors from getpath.c */
@@ -44,32 +44,26 @@ Py_FrozenMain(int argc, char **argv)
setbuf(stderr, (char *)NULL);
}
- oldloc = setlocale(LC_ALL, NULL);
+ oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL));
+ if (!oldloc) {
+ fprintf(stderr, "out of memory\n");
+ goto error;
+ }
+
setlocale(LC_ALL, "");
for (i = 0; i < argc; i++) {
-#ifdef HAVE_BROKEN_MBSTOWCS
- size_t argsize = strlen(argv[i]);
-#else
- size_t argsize = mbstowcs(NULL, argv[i], 0);
-#endif
- size_t count;
- if (argsize == (size_t)-1) {
- fprintf(stderr, "Could not convert argument %d to string\n", i);
- return 1;
- }
- argv_copy[i] = PyMem_Malloc((argsize+1)*sizeof(wchar_t));
+ argv_copy[i] = _Py_char2wchar(argv[i], NULL);
argv_copy2[i] = argv_copy[i];
if (!argv_copy[i]) {
- fprintf(stderr, "out of memory\n");
- return 1;
- }
- count = mbstowcs(argv_copy[i], argv[i], argsize+1);
- if (count == (size_t)-1) {
- fprintf(stderr, "Could not convert argument %d to string\n", i);
- return 1;
+ fprintf(stderr, "Unable to decode the command line argument #%i\n",
+ i + 1);
+ argc = i;
+ goto error;
}
}
setlocale(LC_ALL, oldloc);
+ PyMem_RawFree(oldloc);
+ oldloc = NULL;
#ifdef MS_WINDOWS
PyInitFrozenExtensions();
@@ -103,10 +97,14 @@ Py_FrozenMain(int argc, char **argv)
PyWinFreeze_ExeTerm();
#endif
Py_Finalize();
- for (i = 0; i < argc; i++) {
- PyMem_Free(argv_copy2[i]);
+
+error:
+ PyMem_RawFree(argv_copy);
+ if (argv_copy2) {
+ for (i = 0; i < argc; i++)
+ PyMem_RawFree(argv_copy2[i]);
+ PyMem_RawFree(argv_copy2);
}
- PyMem_Free(argv_copy);
- PyMem_Free(argv_copy2);
+ PyMem_RawFree(oldloc);
return sts;
}
diff --git a/Python/future.c b/Python/future.c
index d24ae41..81eab54 100644
--- a/Python/future.c
+++ b/Python/future.c
@@ -11,7 +11,7 @@
"from __future__ imports must occur at the beginning of the file"
static int
-future_check_features(PyFutureFeatures *ff, stmt_ty s, const char *filename)
+future_check_features(PyFutureFeatures *ff, stmt_ty s, PyObject *filename)
{
int i;
asdl_seq *names;
@@ -43,12 +43,12 @@ future_check_features(PyFutureFeatures *ff, stmt_ty s, const char *filename)
} else if (strcmp(feature, "braces") == 0) {
PyErr_SetString(PyExc_SyntaxError,
"not a chance");
- PyErr_SyntaxLocationEx(filename, s->lineno, s->col_offset);
+ PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset);
return 0;
} else {
PyErr_Format(PyExc_SyntaxError,
UNDEFINED_FUTURE_FEATURE, feature);
- PyErr_SyntaxLocationEx(filename, s->lineno, s->col_offset);
+ PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset);
return 0;
}
}
@@ -56,13 +56,17 @@ future_check_features(PyFutureFeatures *ff, stmt_ty s, const char *filename)
}
static int
-future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
+future_parse(PyFutureFeatures *ff, mod_ty mod, PyObject *filename)
{
- int i, found_docstring = 0, done = 0, prev_line = 0;
+ int i, done = 0, prev_line = 0;
+ stmt_ty first;
if (!(mod->kind == Module_kind || mod->kind == Interactive_kind))
return 1;
+ if (asdl_seq_LEN(mod->v.Module.body) == 0)
+ return 1;
+
/* A subsequent pass will detect future imports that don't
appear at the beginning of the file. There's one case,
however, that is easier to handle here: A series of imports
@@ -71,8 +75,13 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
but is preceded by a regular import.
*/
+ 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)
+ i++;
- for (i = 0; i < asdl_seq_LEN(mod->v.Module.body); i++) {
+
+ for (; i < asdl_seq_LEN(mod->v.Module.body); i++) {
stmt_ty s = (stmt_ty)asdl_seq_GET(mod->v.Module.body, i);
if (done && s->lineno > prev_line)
@@ -92,32 +101,27 @@ future_parse(PyFutureFeatures *ff, mod_ty mod, const char *filename)
if (done) {
PyErr_SetString(PyExc_SyntaxError,
ERR_LATE_FUTURE);
- PyErr_SyntaxLocationEx(filename, s->lineno, s->col_offset);
+ PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset);
return 0;
}
if (!future_check_features(ff, s, filename))
return 0;
ff->ff_lineno = s->lineno;
}
- else
- done = 1;
- }
- else if (s->kind == Expr_kind && !found_docstring) {
- expr_ty e = s->v.Expr.value;
- if (e->kind != Str_kind)
+ else {
done = 1;
- else
- found_docstring = 1;
+ }
}
- else
+ else {
done = 1;
+ }
}
return 1;
}
PyFutureFeatures *
-PyFuture_FromAST(mod_ty mod, const char *filename)
+PyFuture_FromASTObject(mod_ty mod, PyObject *filename)
{
PyFutureFeatures *ff;
@@ -135,3 +139,18 @@ PyFuture_FromAST(mod_ty mod, const char *filename)
}
return ff;
}
+
+
+PyFutureFeatures *
+PyFuture_FromAST(mod_ty mod, const char *filename_str)
+{
+ PyFutureFeatures *ff;
+ PyObject *filename;
+
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ ff = PyFuture_FromASTObject(mod, filename);
+ Py_DECREF(filename);
+ return ff;
+}
diff --git a/Python/getargs.c b/Python/getargs.c
index ae931b9..9d72752 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -46,14 +46,16 @@ typedef struct {
} freelistentry_t;
typedef struct {
- int first_available;
freelistentry_t *entries;
+ int first_available;
+ int entries_malloced;
} freelist_t;
+#define STATIC_FREELIST_ENTRIES 8
/* Forward */
static int vgetargs1(PyObject *, const char *, va_list *, int);
-static void seterror(int, const char *, int *, const char *, const char *);
+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,
@@ -187,7 +189,8 @@ cleanreturn(int retval, freelist_t *freelist)
freelist->entries[index].item);
}
}
- PyMem_FREE(freelist->entries);
+ if (freelist->entries_malloced)
+ PyMem_FREE(freelist->entries);
return retval;
}
@@ -197,6 +200,8 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
{
char msgbuf[256];
int levels[32];
+ freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
+ freelist_t freelist = {static_entries, 0, 0};
const char *fname = NULL;
const char *message = NULL;
int min = -1;
@@ -206,7 +211,6 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
const char *formatsave = format;
Py_ssize_t i, len;
char *msg;
- freelist_t freelist = {0, NULL};
int compat = flags & FLAG_COMPAT;
assert(compat || (args != (PyObject*)NULL));
@@ -240,15 +244,15 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
message = format;
endfmt = 1;
break;
+ case '|':
+ if (level == 0)
+ min = max;
+ break;
default:
if (level == 0) {
- if (c == 'O')
- max++;
- else if (Py_ISALPHA(Py_CHARMASK(c))) {
+ if (Py_ISALPHA(Py_CHARMASK(c)))
if (c != 'e') /* skip encoded */
max++;
- } else if (c == '|')
- min = max;
}
break;
}
@@ -262,10 +266,13 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
format = formatsave;
- freelist.entries = PyMem_NEW(freelistentry_t, max);
- if (freelist.entries == NULL) {
- PyErr_NoMemory();
- return 0;
+ if (max > STATIC_FREELIST_ENTRIES) {
+ freelist.entries = PyMem_NEW(freelistentry_t, max);
+ if (freelist.entries == NULL) {
+ PyErr_NoMemory();
+ return 0;
+ }
+ freelist.entries_malloced = 1;
}
if (compat) {
@@ -350,7 +357,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
static void
-seterror(int iarg, const char *msg, int *levels, const char *fname,
+seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
const char *message)
{
char buf[512];
@@ -366,10 +373,10 @@ seterror(int iarg, const char *msg, int *levels, const char *fname,
}
if (iarg != 0) {
PyOS_snprintf(p, sizeof(buf) - (p - buf),
- "argument %d", iarg);
+ "argument %" PY_FORMAT_SIZE_T "d", iarg);
i = 0;
p += strlen(p);
- while (levels[i] > 0 && i < 32 && (int)(p-buf) < 220) {
+ while (i < 32 && levels[i] > 0 && (int)(p-buf) < 220) {
PyOS_snprintf(p, sizeof(buf) - (p - buf),
", item %d", levels[i]-1);
p += strlen(p);
@@ -563,7 +570,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
"size does not fit in an int"); \
return converterr("", arg, msgbuf, bufsize); \
} \
- *q=s; \
+ *q = (int)s; \
}
#define BUFFER_LEN ((flags & FLAG_SIZE_T) ? *q2:*q)
#define RETURN_ERR_OCCURRED return msgbuf
@@ -1421,7 +1428,8 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
int max = INT_MAX;
int i, len, nargs, nkeywords;
PyObject *current_arg;
- freelist_t freelist = {0, NULL};
+ freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
+ freelist_t freelist = {static_entries, 0, 0};
assert(args != NULL && PyTuple_Check(args));
assert(keywords == NULL || PyDict_Check(keywords));
@@ -1445,10 +1453,13 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
for (len=0; kwlist[len]; len++)
continue;
- freelist.entries = PyMem_NEW(freelistentry_t, len);
- if (freelist.entries == NULL) {
- PyErr_NoMemory();
- return 0;
+ if (len > STATIC_FREELIST_ENTRIES) {
+ freelist.entries = PyMem_NEW(freelistentry_t, len);
+ if (freelist.entries == NULL) {
+ PyErr_NoMemory();
+ return 0;
+ }
+ freelist.entries_malloced = 1;
}
nargs = PyTuple_GET_SIZE(args);
@@ -1574,20 +1585,16 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
Py_ssize_t pos = 0;
while (PyDict_Next(keywords, &pos, &key, &value)) {
int match = 0;
- char *ks;
if (!PyUnicode_Check(key)) {
PyErr_SetString(PyExc_TypeError,
"keywords must be strings");
return cleanreturn(0, &freelist);
}
/* check that _PyUnicode_AsString() result is not NULL */
- ks = _PyUnicode_AsString(key);
- if (ks != NULL) {
- for (i = 0; i < len; i++) {
- if (!strcmp(ks, kwlist[i])) {
- match = 1;
- break;
- }
+ for (i = 0; i < len; i++) {
+ if (!PyUnicode_CompareWithASCIIString(key, kwlist[i])) {
+ match = 1;
+ break;
}
}
if (!match) {
diff --git a/Python/getcwd.c b/Python/getcwd.c
deleted file mode 100644
index 4bedbd1..0000000
--- a/Python/getcwd.c
+++ /dev/null
@@ -1,83 +0,0 @@
-
-/* Two PD getcwd() implementations.
- Author: Guido van Rossum, CWI Amsterdam, Jan 1991, <guido@cwi.nl>. */
-
-#include <stdio.h>
-#include <errno.h>
-
-#ifdef HAVE_GETWD
-
-/* Version for BSD systems -- use getwd() */
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-#ifndef MAXPATHLEN
-#if defined(PATH_MAX) && PATH_MAX > 1024
-#define MAXPATHLEN PATH_MAX
-#else
-#define MAXPATHLEN 1024
-#endif
-#endif
-
-extern char *getwd(char *);
-
-char *
-getcwd(char *buf, int size)
-{
- char localbuf[MAXPATHLEN+1];
- char *ret;
-
- if (size <= 0) {
- errno = EINVAL;
- return NULL;
- }
- ret = getwd(localbuf);
- if (ret != NULL && strlen(localbuf) >= (size_t)size) {
- errno = ERANGE;
- return NULL;
- }
- if (ret == NULL) {
- errno = EACCES; /* Most likely error */
- return NULL;
- }
- strncpy(buf, localbuf, size);
- return buf;
-}
-
-#else /* !HAVE_GETWD */
-
-/* Version for really old UNIX systems -- use pipe from pwd */
-
-#ifndef PWD_CMD
-#define PWD_CMD "/bin/pwd"
-#endif
-
-char *
-getcwd(char *buf, int size)
-{
- FILE *fp;
- char *p;
- int sts;
- if (size <= 0) {
- errno = EINVAL;
- return NULL;
- }
- if ((fp = popen(PWD_CMD, "r")) == NULL)
- return NULL;
- if (fgets(buf, size, fp) == NULL || (sts = pclose(fp)) != 0) {
- errno = EACCES; /* Most likely error */
- return NULL;
- }
- for (p = buf; *p != '\n'; p++) {
- if (*p == '\0') {
- errno = ERANGE;
- return NULL;
- }
- }
- *p = '\0';
- return buf;
-}
-
-#endif /* !HAVE_GETWD */
diff --git a/Python/import.c b/Python/import.c
index e91cef8..c96106f 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -19,22 +19,11 @@
extern "C" {
#endif
-#ifdef MS_WINDOWS
-/* for stat.st_mode */
-typedef unsigned short mode_t;
-/* for _mkdir */
-#include <direct.h>
-#endif
-
-
#define CACHEDIR "__pycache__"
/* See _PyImport_FixupExtensionObject() below */
static PyObject *extensions = NULL;
-/* Function from Parser/tokenizer.c */
-extern char * PyTokenizer_FindEncodingFilename(int, PyObject *);
-
/* This table is defined in config.c: */
extern struct _inittab _PyImport_Inittab[];
@@ -93,8 +82,10 @@ _PyImportZip_Init(void)
int err = 0;
path_hooks = PySys_GetObject("path_hooks");
- if (path_hooks == NULL)
+ if (path_hooks == NULL) {
+ PyErr_SetString(PyExc_RuntimeError, "unable to get sys.path_hooks");
goto error;
+ }
if (Py_VerboseFlag)
PySys_WriteStderr("# installing zipimport hook\n");
@@ -204,8 +195,11 @@ _PyImport_ReInitLock(void)
if (import_lock_level > 1) {
/* Forked as a side effect of import */
long me = PyThread_get_thread_ident();
- PyThread_acquire_lock(import_lock, 0);
- /* XXX: can the previous line fail? */
+ /* The following could fail if the lock is already held, but forking as
+ a side-effect of an import is a) rare, b) nuts, and c) difficult to
+ do thanks to the lock only being held when doing individual module
+ locks per import. */
+ PyThread_acquire_lock(import_lock, NOWAIT_LOCK);
import_lock_thread = me;
import_lock_level--;
} else {
@@ -280,6 +274,7 @@ static char* sys_deletes[] = {
"path", "argv", "ps1", "ps2",
"last_type", "last_value", "last_traceback",
"path_hooks", "path_importer_cache", "meta_path",
+ "__interactivehook__",
/* misc stuff */
"flags", "float_info",
NULL
@@ -292,16 +287,17 @@ static char* sys_files[] = {
NULL
};
-
/* Un-initialize things, as good as we can */
void
PyImport_Cleanup(void)
{
- Py_ssize_t pos, ndone;
+ Py_ssize_t pos;
PyObject *key, *value, *dict;
PyInterpreterState *interp = PyThreadState_GET()->interp;
PyObject *modules = interp->modules;
+ PyObject *builtins = interp->builtins;
+ PyObject *weaklist = NULL;
if (modules == NULL)
return; /* Already done */
@@ -312,6 +308,8 @@ PyImport_Cleanup(void)
deleted *last* of all, they would come too late in the normal
destruction order. Sigh. */
+ /* XXX Perhaps these precautions are obsolete. Who knows? */
+
value = PyDict_GetItemString(modules, "builtins");
if (value != NULL && PyModule_Check(value)) {
dict = PyModule_GetDict(value);
@@ -339,87 +337,87 @@ PyImport_Cleanup(void)
}
}
- /* First, delete __main__ */
- value = PyDict_GetItemString(modules, "__main__");
- if (value != NULL && PyModule_Check(value)) {
- if (Py_VerboseFlag)
- PySys_WriteStderr("# cleanup __main__\n");
- _PyModule_Clear(value);
- PyDict_SetItemString(modules, "__main__", Py_None);
- }
-
- /* The special treatment of "builtins" here is because even
- when it's not referenced as a module, its dictionary is
- referenced by almost every module's __builtins__. Since
- deleting a module clears its dictionary (even if there are
- references left to it), we need to delete the "builtins"
- module last. Likewise, we don't delete sys until the very
- end because it is implicitly referenced (e.g. by print).
-
- Also note that we 'delete' modules by replacing their entry
- in the modules dict with None, rather than really deleting
- them; this avoids a rehash of the modules dictionary and
- also marks them as "non existent" so they won't be
- re-imported. */
-
- /* Next, repeatedly delete modules with a reference count of
- one (skipping builtins and sys) and delete them */
- do {
- ndone = 0;
- pos = 0;
- while (PyDict_Next(modules, &pos, &key, &value)) {
- if (value->ob_refcnt != 1)
- continue;
- if (PyUnicode_Check(key) && PyModule_Check(value)) {
- if (PyUnicode_CompareWithASCIIString(key, "builtins") == 0)
- continue;
- if (PyUnicode_CompareWithASCIIString(key, "sys") == 0)
- continue;
- if (Py_VerboseFlag)
- PySys_FormatStderr(
- "# cleanup[1] %U\n", key);
- _PyModule_Clear(value);
- PyDict_SetItem(modules, key, Py_None);
- ndone++;
- }
- }
- } while (ndone > 0);
+ /* We prepare a list which will receive (name, weakref) tuples of
+ modules when they are removed from sys.modules. The name is used
+ for diagnosis messages (in verbose mode), while the weakref helps
+ detect those modules which have been held alive. */
+ weaklist = PyList_New(0);
+ if (weaklist == NULL)
+ PyErr_Clear();
- /* Next, delete all modules (still skipping builtins and sys) */
+#define STORE_MODULE_WEAKREF(name, mod) \
+ if (weaklist != NULL) { \
+ PyObject *wr = PyWeakref_NewRef(mod, NULL); \
+ if (name && wr) { \
+ PyObject *tup = PyTuple_Pack(2, name, wr); \
+ PyList_Append(weaklist, tup); \
+ Py_XDECREF(tup); \
+ } \
+ Py_XDECREF(wr); \
+ if (PyErr_Occurred()) \
+ PyErr_Clear(); \
+ }
+
+ /* Remove all modules from sys.modules, hoping that garbage collection
+ can reclaim most of them. */
pos = 0;
while (PyDict_Next(modules, &pos, &key, &value)) {
- if (PyUnicode_Check(key) && PyModule_Check(value)) {
- if (PyUnicode_CompareWithASCIIString(key, "builtins") == 0)
- continue;
- if (PyUnicode_CompareWithASCIIString(key, "sys") == 0)
- continue;
- if (Py_VerboseFlag)
- PySys_FormatStderr("# cleanup[2] %U\n", key);
- _PyModule_Clear(value);
+ if (PyModule_Check(value)) {
+ if (Py_VerboseFlag && PyUnicode_Check(key))
+ PySys_FormatStderr("# cleanup[2] removing %U\n", key, value);
+ STORE_MODULE_WEAKREF(key, value);
PyDict_SetItem(modules, key, Py_None);
}
}
- /* Next, delete sys and builtins (in that order) */
- value = PyDict_GetItemString(modules, "sys");
- if (value != NULL && PyModule_Check(value)) {
- if (Py_VerboseFlag)
- PySys_WriteStderr("# cleanup sys\n");
- _PyModule_Clear(value);
- PyDict_SetItemString(modules, "sys", Py_None);
- }
- value = PyDict_GetItemString(modules, "builtins");
- if (value != NULL && PyModule_Check(value)) {
- if (Py_VerboseFlag)
- PySys_WriteStderr("# cleanup builtins\n");
- _PyModule_Clear(value);
- PyDict_SetItemString(modules, "builtins", Py_None);
+ /* Clear the modules dict. */
+ PyDict_Clear(modules);
+ /* Replace the interpreter's reference to builtins with an empty dict
+ (module globals still have a reference to the original builtins). */
+ builtins = interp->builtins;
+ interp->builtins = PyDict_New();
+ Py_DECREF(builtins);
+ /* Clear module dict copies stored in the interpreter state */
+ _PyState_ClearModules();
+ /* Collect references */
+ _PyGC_CollectNoFail();
+ /* Dump GC stats before it's too late, since it uses the warnings
+ machinery. */
+ _PyGC_DumpShutdownStats();
+
+ /* Now, if there are any modules left alive, clear their globals to
+ minimize potential leaks. All C extension modules actually end
+ up here, since they are kept alive in the interpreter state. */
+ if (weaklist != NULL) {
+ Py_ssize_t i, n;
+ n = PyList_GET_SIZE(weaklist);
+ for (i = 0; i < n; i++) {
+ PyObject *tup = PyList_GET_ITEM(weaklist, i);
+ PyObject *name = PyTuple_GET_ITEM(tup, 0);
+ PyObject *mod = PyWeakref_GET_OBJECT(PyTuple_GET_ITEM(tup, 1));
+ if (mod == Py_None)
+ continue;
+ Py_INCREF(mod);
+ assert(PyModule_Check(mod));
+ if (Py_VerboseFlag && PyUnicode_Check(name))
+ PySys_FormatStderr("# cleanup[3] wiping %U\n",
+ name, mod);
+ _PyModule_Clear(mod);
+ Py_DECREF(mod);
+ }
+ Py_DECREF(weaklist);
}
- /* Finally, clear and delete the modules directory */
- PyDict_Clear(modules);
+ /* Clear and delete the modules directory. Actual modules will
+ still be there only if imported during the execution of some
+ destructor. */
interp->modules = NULL;
Py_DECREF(modules);
+
+ /* Once more */
+ _PyGC_CollectNoFail();
+
+#undef STORE_MODULE_WEAKREF
}
@@ -451,12 +449,12 @@ PyImport_GetMagicTag(void)
/* Magic for extension modules (built-in as well as dynamically
loaded). To prevent initializing an extension module more than
- once, we keep a static dictionary 'extensions' keyed by module name
- (for built-in modules) or by filename (for dynamically loaded
- modules), containing these modules. A copy of the module's
- dictionary is stored by calling _PyImport_FixupExtensionObject()
- immediately after the module initialization function succeeds. A
- copy can be retrieved from there by calling
+ once, we keep a static dictionary 'extensions' keyed by the tuple
+ (module name, module name) (for built-in modules) or by
+ (filename, module name) (for dynamically loaded modules), containing these
+ modules. A copy of the module's dictionary is stored by calling
+ _PyImport_FixupExtensionObject() immediately after the module initialization
+ function succeeds. A copy can be retrieved from there by calling
_PyImport_FindExtensionObject().
Modules which do support multiple initialization set their m_size
@@ -469,8 +467,9 @@ int
_PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
PyObject *filename)
{
- PyObject *modules, *dict;
+ PyObject *modules, *dict, *key;
struct PyModuleDef *def;
+ int res;
if (extensions == NULL) {
extensions = PyDict_New();
if (extensions == NULL)
@@ -507,12 +506,18 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
if (def->m_base.m_copy == NULL)
return -1;
}
- PyDict_SetItem(extensions, filename, (PyObject*)def);
+ key = PyTuple_Pack(2, filename, name);
+ if (key == NULL)
+ return -1;
+ res = PyDict_SetItem(extensions, key, (PyObject *)def);
+ Py_DECREF(key);
+ if (res < 0)
+ return -1;
return 0;
}
int
-_PyImport_FixupBuiltin(PyObject *mod, char *name)
+_PyImport_FixupBuiltin(PyObject *mod, const char *name)
{
int res;
PyObject *nameobj;
@@ -527,11 +532,15 @@ _PyImport_FixupBuiltin(PyObject *mod, char *name)
PyObject *
_PyImport_FindExtensionObject(PyObject *name, PyObject *filename)
{
- PyObject *mod, *mdict;
+ PyObject *mod, *mdict, *key;
PyModuleDef* def;
if (extensions == NULL)
return NULL;
- def = (PyModuleDef*)PyDict_GetItem(extensions, filename);
+ key = PyTuple_Pack(2, filename, name);
+ if (key == NULL)
+ return NULL;
+ def = (PyModuleDef *)PyDict_GetItem(extensions, key);
+ Py_DECREF(key);
if (def == NULL)
return NULL;
if (def->m_size == -1) {
@@ -647,22 +656,23 @@ remove_module(PyObject *name)
* interface. The other two exist primarily for backward compatibility.
*/
PyObject *
-PyImport_ExecCodeModule(char *name, PyObject *co)
+PyImport_ExecCodeModule(const char *name, PyObject *co)
{
return PyImport_ExecCodeModuleWithPathnames(
name, co, (char *)NULL, (char *)NULL);
}
PyObject *
-PyImport_ExecCodeModuleEx(char *name, PyObject *co, char *pathname)
+PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)
{
return PyImport_ExecCodeModuleWithPathnames(
name, co, pathname, (char *)NULL);
}
PyObject *
-PyImport_ExecCodeModuleWithPathnames(char *name, PyObject *co, char *pathname,
- char *cpathname)
+PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co,
+ const char *pathname,
+ const char *cpathname)
{
PyObject *m = NULL;
PyObject *nameobj, *pathobj = NULL, *cpathobj = NULL;
@@ -693,7 +703,7 @@ PyImport_ExecCodeModuleWithPathnames(char *name, PyObject *co, char *pathname,
"no interpreter!");
}
- pathobj = _PyObject_CallMethodObjIdArgs(interp->importlib,
+ pathobj = _PyObject_CallMethodIdObjArgs(interp->importlib,
&PyId__get_sourcefile, cpathobj,
NULL);
if (pathobj == NULL)
@@ -835,7 +845,7 @@ imp_fix_co_filename(PyObject *self, PyObject *args)
/* Forward */
-static struct _frozen * find_frozen(PyObject *);
+static const struct _frozen * find_frozen(PyObject *);
/* Helper to test for built-in module */
@@ -917,11 +927,11 @@ PyAPI_FUNC(PyObject *)
PyImport_GetImporter(PyObject *path) {
PyObject *importer=NULL, *path_importer_cache=NULL, *path_hooks=NULL;
- if ((path_importer_cache = PySys_GetObject("path_importer_cache"))) {
- if ((path_hooks = PySys_GetObject("path_hooks"))) {
- importer = get_path_importer(path_importer_cache,
- path_hooks, path);
- }
+ path_importer_cache = PySys_GetObject("path_importer_cache");
+ path_hooks = PySys_GetObject("path_hooks");
+ if (path_importer_cache != NULL && path_hooks != NULL) {
+ importer = get_path_importer(path_importer_cache,
+ path_hooks, path);
}
Py_XINCREF(importer); /* get_path_importer returns a borrowed reference */
return importer;
@@ -972,10 +982,10 @@ init_builtin(PyObject *name)
/* Frozen modules */
-static struct _frozen *
+static const struct _frozen *
find_frozen(PyObject *name)
{
- struct _frozen *p;
+ const struct _frozen *p;
if (name == NULL)
return NULL;
@@ -992,7 +1002,7 @@ find_frozen(PyObject *name)
static PyObject *
get_frozen_object(PyObject *name)
{
- struct _frozen *p = find_frozen(name);
+ const struct _frozen *p = find_frozen(name);
int size;
if (p == NULL) {
@@ -1010,13 +1020,13 @@ get_frozen_object(PyObject *name)
size = p->size;
if (size < 0)
size = -size;
- return PyMarshal_ReadObjectFromString((char *)p->code, size);
+ return PyMarshal_ReadObjectFromString((const char *)p->code, size);
}
static PyObject *
is_frozen_package(PyObject *name)
{
- struct _frozen *p = find_frozen(name);
+ const struct _frozen *p = find_frozen(name);
int size;
if (p == NULL) {
@@ -1043,7 +1053,7 @@ is_frozen_package(PyObject *name)
int
PyImport_ImportFrozenModuleObject(PyObject *name)
{
- struct _frozen *p;
+ const struct _frozen *p;
PyObject *co, *m, *path;
int ispackage;
int size;
@@ -1062,7 +1072,7 @@ PyImport_ImportFrozenModuleObject(PyObject *name)
ispackage = (size < 0);
if (ispackage)
size = -size;
- co = PyMarshal_ReadObjectFromString((char *)p->code, size);
+ co = PyMarshal_ReadObjectFromString((const char *)p->code, size);
if (co == NULL)
return -1;
if (!PyCode_Check(co)) {
@@ -1072,19 +1082,17 @@ PyImport_ImportFrozenModuleObject(PyObject *name)
goto err_return;
}
if (ispackage) {
- /* Set __path__ to the package name */
+ /* Set __path__ to the empty list */
PyObject *d, *l;
int err;
m = PyImport_AddModuleObject(name);
if (m == NULL)
goto err_return;
d = PyModule_GetDict(m);
- l = PyList_New(1);
+ l = PyList_New(0);
if (l == NULL) {
goto err_return;
}
- Py_INCREF(name);
- PyList_SET_ITEM(l, 0, name);
err = PyDict_SetItemString(d, "__path__", l);
Py_DECREF(l);
if (err != 0)
@@ -1106,7 +1114,7 @@ err_return:
}
int
-PyImport_ImportFrozenModule(char *name)
+PyImport_ImportFrozenModule(const char *name)
{
PyObject *nameobj;
int ret;
@@ -1430,7 +1438,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
}
if (initializing > 0) {
/* _bootstrap._lock_unlock_module() releases the import lock */
- value = _PyObject_CallMethodObjIdArgs(interp->importlib,
+ value = _PyObject_CallMethodIdObjArgs(interp->importlib,
&PyId__lock_unlock_module, abs_name,
NULL);
if (value == NULL)
@@ -1448,7 +1456,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
}
else {
/* _bootstrap._find_and_load() releases the import lock */
- mod = _PyObject_CallMethodObjIdArgs(interp->importlib,
+ mod = _PyObject_CallMethodIdObjArgs(interp->importlib,
&PyId__find_and_load, abs_name,
builtins_import, NULL);
if (mod == NULL) {
@@ -1517,7 +1525,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
}
}
else {
- final_mod = _PyObject_CallMethodObjIdArgs(interp->importlib,
+ final_mod = _PyObject_CallMethodIdObjArgs(interp->importlib,
&PyId__handle_fromlist, mod,
fromlist, builtins_import,
NULL);
@@ -1771,7 +1779,7 @@ static PyObject *
imp_is_frozen(PyObject *self, PyObject *args)
{
PyObject *name;
- struct _frozen *p;
+ const struct _frozen *p;
if (!PyArg_ParseTuple(args, "U:is_frozen", &name))
return NULL;
p = find_frozen(name);
@@ -1790,7 +1798,7 @@ imp_load_dynamic(PyObject *self, PyObject *args)
&name, PyUnicode_FSDecoder, &pathname, &fob))
return NULL;
if (fob != NULL) {
- fp = _Py_fopen(pathname, "r");
+ fp = _Py_fopen_obj(pathname, "r");
if (fp == NULL) {
Py_DECREF(pathname);
if (!PyErr_Occurred())
diff --git a/Python/importdl.c b/Python/importdl.c
index 0ea954c..b60f1c7 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -77,6 +77,8 @@ _PyImport_LoadDynamicModule(PyObject *name, PyObject *path, FILE *fp)
PyObject *msg = PyUnicode_FromFormat("dynamic module does not define "
"init function (PyInit_%s)",
shortname);
+ if (msg == NULL)
+ goto error;
PyErr_SetImportError(msg, name, path);
Py_DECREF(msg);
goto error;
diff --git a/Python/importdl.h b/Python/importdl.h
index 6b9cf75..6a51a91 100644
--- a/Python/importdl.h
+++ b/Python/importdl.h
@@ -18,13 +18,8 @@ extern PyObject *_PyImport_LoadDynamicModule(PyObject *name, PyObject *pathname,
#include <windows.h>
typedef FARPROC dl_funcptr;
#else
-#if defined(PYOS_OS2) && !defined(PYCC_GCC)
-#include <os2def.h>
-typedef int (* APIENTRY dl_funcptr)();
-#else
typedef void (*dl_funcptr)(void);
#endif
-#endif
#ifdef __cplusplus
diff --git a/Python/importlib.h b/Python/importlib.h
index cb6afc5..40e204c 100644
--- a/Python/importlib.h
+++ b/Python/importlib.h
@@ -1,8 +1,8 @@
/* Auto-generated by Modules/_freeze_importlib.c */
-unsigned char _Py_M__importlib[] = {
+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,206,3,0,0,100,0,0,90,0,0,
- 100,131,0,90,1,0,100,4,0,100,5,0,132,0,0,90,
+ 0,64,0,0,0,115,72,4,0,0,100,0,0,90,0,0,
+ 100,145,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,
@@ -11,457 +11,356 @@ unsigned char _Py_M__importlib[] = {
132,0,0,90,9,0,100,20,0,100,21,0,100,22,0,132,
1,0,90,10,0,100,23,0,100,24,0,132,0,0,90,11,
0,101,12,0,101,11,0,106,13,0,131,1,0,90,14,0,
- 100,25,0,100,26,0,132,0,0,90,15,0,105,0,0,90,
- 16,0,105,0,0,90,17,0,71,100,27,0,100,28,0,132,
- 0,0,100,28,0,101,18,0,131,3,0,90,19,0,71,100,
- 29,0,100,30,0,132,0,0,100,30,0,131,2,0,90,20,
- 0,71,100,31,0,100,32,0,132,0,0,100,32,0,131,2,
+ 105,0,0,90,15,0,105,0,0,90,16,0,71,100,25,0,
+ 100,26,0,132,0,0,100,26,0,101,17,0,131,3,0,90,
+ 18,0,71,100,27,0,100,28,0,132,0,0,100,28,0,131,
+ 2,0,90,19,0,71,100,29,0,100,30,0,132,0,0,100,
+ 30,0,131,2,0,90,20,0,100,31,0,100,32,0,132,0,
0,90,21,0,100,33,0,100,34,0,132,0,0,90,22,0,
- 100,35,0,100,36,0,132,0,0,90,23,0,100,37,0,100,
- 38,0,132,0,0,90,24,0,100,39,0,101,25,0,100,40,
- 0,131,1,0,100,41,0,62,66,101,25,0,100,42,0,131,
- 1,0,100,43,0,62,66,90,26,0,101,27,0,100,44,0,
- 100,45,0,132,0,0,101,28,0,100,46,0,100,47,0,100,
- 48,0,131,3,0,68,131,1,0,131,1,0,90,29,0,100,
- 49,0,90,30,0,100,50,0,103,1,0,90,31,0,100,51,
- 0,103,1,0,90,32,0,100,52,0,103,1,0,90,33,0,
- 100,130,0,100,53,0,100,54,0,132,1,0,90,35,0,100,
- 55,0,100,56,0,132,0,0,90,36,0,100,57,0,100,58,
- 0,132,0,0,90,37,0,100,59,0,100,60,0,100,61,0,
- 100,62,0,132,0,1,90,38,0,100,63,0,100,64,0,132,
- 0,0,90,39,0,100,65,0,100,66,0,132,0,0,90,40,
- 0,100,67,0,100,68,0,132,0,0,90,41,0,100,69,0,
- 100,70,0,132,0,0,90,42,0,100,71,0,100,72,0,132,
- 0,0,90,43,0,100,73,0,100,74,0,132,0,0,90,44,
- 0,100,75,0,100,76,0,132,0,0,90,45,0,71,100,77,
- 0,100,78,0,132,0,0,100,78,0,131,2,0,90,46,0,
- 71,100,79,0,100,80,0,132,0,0,100,80,0,131,2,0,
- 90,47,0,71,100,81,0,100,82,0,132,0,0,100,82,0,
- 131,2,0,90,48,0,71,100,83,0,100,84,0,132,0,0,
- 100,84,0,131,2,0,90,49,0,71,100,85,0,100,86,0,
- 132,0,0,100,86,0,101,49,0,131,3,0,90,50,0,71,
- 100,87,0,100,88,0,132,0,0,100,88,0,131,2,0,90,
- 51,0,71,100,89,0,100,90,0,132,0,0,100,90,0,101,
- 51,0,101,50,0,131,4,0,90,52,0,71,100,91,0,100,
- 92,0,132,0,0,100,92,0,101,51,0,101,49,0,131,4,
- 0,90,53,0,103,0,0,90,54,0,71,100,93,0,100,94,
- 0,132,0,0,100,94,0,131,2,0,90,55,0,71,100,95,
- 0,100,96,0,132,0,0,100,96,0,131,2,0,90,56,0,
- 71,100,97,0,100,98,0,132,0,0,100,98,0,131,2,0,
- 90,57,0,71,100,99,0,100,100,0,132,0,0,100,100,0,
- 131,2,0,90,58,0,71,100,101,0,100,102,0,132,0,0,
- 100,102,0,131,2,0,90,59,0,71,100,103,0,100,104,0,
- 132,0,0,100,104,0,131,2,0,90,60,0,100,105,0,100,
- 106,0,132,0,0,90,61,0,100,107,0,100,108,0,132,0,
- 0,90,62,0,100,109,0,100,110,0,132,0,0,90,63,0,
- 100,111,0,90,64,0,100,112,0,100,113,0,132,0,0,90,
- 65,0,100,114,0,100,115,0,132,0,0,90,66,0,100,130,
- 0,100,46,0,100,116,0,100,117,0,132,2,0,90,67,0,
- 100,118,0,100,119,0,132,0,0,90,68,0,100,120,0,100,
- 121,0,132,0,0,90,69,0,100,122,0,100,123,0,132,0,
- 0,90,70,0,100,130,0,100,130,0,102,0,0,100,46,0,
- 100,124,0,100,125,0,132,4,0,90,71,0,100,126,0,100,
- 127,0,132,0,0,90,72,0,100,128,0,100,129,0,132,0,
- 0,90,73,0,100,130,0,83,40,132,0,0,0,117,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,117,3,0,0,0,119,105,110,117,6,0,
- 0,0,99,121,103,119,105,110,117,6,0,0,0,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,40,4,
- 0,0,0,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,40,2,0,0,0,
- 117,53,0,0,0,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,40,2,0,0,0,
- 117,3,0,0,0,95,111,115,117,7,0,0,0,101,110,118,
- 105,114,111,110,40,0,0,0,0,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,11,0,0,0,95,114,101,108,97,120,
- 95,99,97,115,101,34,0,0,0,115,2,0,0,0,0,2,
- 117,37,0,0,0,95,109,97,107,101,95,114,101,108,97,120,
+ 100,35,0,100,36,0,132,0,0,90,23,0,100,37,0,106,
+ 24,0,100,38,0,100,39,0,131,2,0,100,40,0,23,90,
+ 25,0,101,26,0,106,27,0,101,25,0,100,39,0,131,2,
+ 0,90,28,0,100,41,0,90,29,0,100,42,0,103,1,0,
+ 90,30,0,100,43,0,103,1,0,90,31,0,100,44,0,103,
+ 1,0,90,32,0,100,45,0,100,46,0,100,47,0,132,1,
+ 0,90,33,0,100,48,0,100,49,0,132,0,0,90,34,0,
+ 100,50,0,100,51,0,132,0,0,90,35,0,100,52,0,100,
+ 53,0,132,0,0,90,36,0,100,54,0,100,55,0,100,56,
+ 0,100,57,0,132,0,1,90,37,0,71,100,58,0,100,59,
+ 0,132,0,0,100,59,0,131,2,0,90,38,0,71,100,60,
+ 0,100,61,0,132,0,0,100,61,0,101,38,0,131,3,0,
+ 90,39,0,100,62,0,100,63,0,100,64,0,100,65,0,132,
+ 0,1,90,40,0,100,66,0,100,67,0,132,0,0,90,41,
+ 0,100,68,0,100,69,0,132,0,0,90,42,0,100,70,0,
+ 100,71,0,132,0,0,90,43,0,100,72,0,100,73,0,132,
+ 0,0,90,44,0,100,74,0,100,75,0,132,0,0,90,45,
+ 0,100,76,0,100,77,0,132,0,0,90,46,0,100,78,0,
+ 100,79,0,132,0,0,90,47,0,100,80,0,100,81,0,132,
+ 0,0,90,48,0,100,45,0,100,45,0,100,45,0,100,82,
+ 0,100,83,0,132,3,0,90,49,0,100,45,0,100,45,0,
+ 100,45,0,100,84,0,100,85,0,132,3,0,90,50,0,100,
+ 86,0,100,86,0,100,87,0,100,88,0,132,2,0,90,51,
+ 0,100,89,0,100,90,0,132,0,0,90,52,0,71,100,91,
+ 0,100,92,0,132,0,0,100,92,0,131,2,0,90,53,0,
+ 71,100,93,0,100,94,0,132,0,0,100,94,0,131,2,0,
+ 90,54,0,71,100,95,0,100,96,0,132,0,0,100,96,0,
+ 131,2,0,90,55,0,71,100,97,0,100,98,0,132,0,0,
+ 100,98,0,131,2,0,90,56,0,71,100,99,0,100,100,0,
+ 132,0,0,100,100,0,101,56,0,131,3,0,90,57,0,71,
+ 100,101,0,100,102,0,132,0,0,100,102,0,131,2,0,90,
+ 58,0,71,100,103,0,100,104,0,132,0,0,100,104,0,101,
+ 58,0,101,57,0,131,4,0,90,59,0,71,100,105,0,100,
+ 106,0,132,0,0,100,106,0,101,58,0,101,56,0,131,4,
+ 0,90,60,0,103,0,0,90,61,0,71,100,107,0,100,108,
+ 0,132,0,0,100,108,0,131,2,0,90,62,0,71,100,109,
+ 0,100,110,0,132,0,0,100,110,0,131,2,0,90,63,0,
+ 71,100,111,0,100,112,0,132,0,0,100,112,0,131,2,0,
+ 90,64,0,71,100,113,0,100,114,0,132,0,0,100,114,0,
+ 131,2,0,90,65,0,71,100,115,0,100,116,0,132,0,0,
+ 100,116,0,131,2,0,90,66,0,71,100,117,0,100,118,0,
+ 132,0,0,100,118,0,131,2,0,90,67,0,100,119,0,100,
+ 120,0,132,0,0,90,68,0,100,121,0,100,122,0,132,0,
+ 0,90,69,0,100,123,0,100,124,0,132,0,0,90,70,0,
+ 100,125,0,90,71,0,101,71,0,100,126,0,23,90,72,0,
+ 100,127,0,100,128,0,132,0,0,90,73,0,100,129,0,100,
+ 130,0,132,0,0,90,74,0,100,45,0,100,86,0,100,131,
+ 0,100,132,0,132,2,0,90,75,0,100,133,0,100,134,0,
+ 132,0,0,90,76,0,100,135,0,100,136,0,132,0,0,90,
+ 77,0,100,137,0,100,138,0,132,0,0,90,78,0,100,45,
+ 0,100,45,0,102,0,0,100,86,0,100,139,0,100,140,0,
+ 132,4,0,90,79,0,100,141,0,100,142,0,132,0,0,90,
+ 80,0,100,143,0,100,144,0,132,0,0,90,81,0,100,45,
+ 0,83,41,146,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,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,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,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,40,2,0,0,0,117,53,0,
- 0,0,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,40,1,0,0,0,117,5,0,
- 0,0,70,97,108,115,101,40,0,0,0,0,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,95,114,101,
- 108,97,120,95,99,97,115,101,38,0,0,0,115,2,0,0,
- 0,0,2,40,4,0,0,0,117,3,0,0,0,115,121,115,
- 117,8,0,0,0,112,108,97,116,102,111,114,109,117,10,0,
- 0,0,115,116,97,114,116,115,119,105,116,104,117,27,0,0,
- 0,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,40,1,0,0,
- 0,117,11,0,0,0,95,114,101,108,97,120,95,99,97,115,
- 101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,16,0,
- 0,0,95,109,97,107,101,95,114,101,108,97,120,95,99,97,
- 115,101,32,0,0,0,115,8,0,0,0,0,1,18,1,15,
- 4,12,3,117,16,0,0,0,95,109,97,107,101,95,114,101,
- 108,97,120,95,99,97,115,101,99,1,0,0,0,0,0,0,
- 0,2,0,0,0,3,0,0,0,67,0,0,0,115,108,0,
- 0,0,116,0,0,124,0,0,131,1,0,125,0,0,103,0,
- 0,125,1,0,124,1,0,106,1,0,124,0,0,100,1,0,
- 64,131,1,0,1,124,1,0,106,1,0,124,0,0,100,2,
- 0,63,100,1,0,64,131,1,0,1,124,1,0,106,1,0,
- 124,0,0,100,3,0,63,100,1,0,64,131,1,0,1,124,
- 1,0,106,1,0,124,0,0,100,4,0,63,100,1,0,64,
- 131,1,0,1,116,2,0,124,1,0,131,1,0,83,40,5,
- 0,0,0,117,111,0,0,0,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,10,10,32,32,32,32,88,88,88,32,84,101,109,112,
- 111,114,97,114,121,32,117,110,116,105,108,32,109,97,114,115,
- 104,97,108,39,115,32,108,111,110,103,32,102,117,110,99,116,
- 105,111,110,115,32,97,114,101,32,101,120,112,111,115,101,100,
- 46,10,10,32,32,32,32,105,255,0,0,0,105,8,0,0,
- 0,105,16,0,0,0,105,24,0,0,0,40,3,0,0,0,
- 117,3,0,0,0,105,110,116,117,6,0,0,0,97,112,112,
- 101,110,100,117,9,0,0,0,98,121,116,101,97,114,114,97,
- 121,40,2,0,0,0,117,1,0,0,0,120,117,9,0,0,
- 0,105,110,116,95,98,121,116,101,115,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,7,0,0,0,95,119,95,108,111,
- 110,103,45,0,0,0,115,14,0,0,0,0,6,12,1,6,
- 1,17,1,21,1,21,1,21,1,117,7,0,0,0,95,119,
- 95,108,111,110,103,99,1,0,0,0,0,0,0,0,2,0,
- 0,0,3,0,0,0,67,0,0,0,115,68,0,0,0,124,
- 0,0,100,1,0,25,125,1,0,124,1,0,124,0,0,100,
- 2,0,25,100,3,0,62,79,125,1,0,124,1,0,124,0,
- 0,100,4,0,25,100,5,0,62,79,125,1,0,124,1,0,
- 124,0,0,100,6,0,25,100,7,0,62,79,125,1,0,124,
- 1,0,83,40,8,0,0,0,117,115,0,0,0,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,10,10,32,32,
- 32,32,88,88,88,32,84,101,109,112,111,114,97,114,121,32,
- 117,110,116,105,108,32,109,97,114,115,104,97,108,39,115,32,
- 108,111,110,103,32,102,117,110,99,116,105,111,110,32,97,114,
- 101,32,101,120,112,111,115,101,100,46,10,10,32,32,32,32,
- 105,0,0,0,0,105,1,0,0,0,105,8,0,0,0,105,
- 2,0,0,0,105,16,0,0,0,105,3,0,0,0,105,24,
- 0,0,0,40,0,0,0,0,40,2,0,0,0,117,9,0,
- 0,0,105,110,116,95,98,121,116,101,115,117,1,0,0,0,
- 120,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,7,0,
- 0,0,95,114,95,108,111,110,103,61,0,0,0,115,10,0,
- 0,0,0,6,10,1,18,1,18,1,18,1,117,7,0,0,
- 0,95,114,95,108,111,110,103,99,0,0,0,0,0,0,0,
- 0,3,0,0,0,4,0,0,0,71,0,0,0,115,103,0,
- 0,0,103,0,0,125,1,0,120,71,0,124,0,0,68,93,
- 63,0,125,2,0,124,2,0,115,31,0,113,13,0,110,0,
- 0,124,1,0,106,0,0,124,2,0,131,1,0,1,124,2,
- 0,100,4,0,25,116,1,0,107,7,0,114,13,0,124,1,
- 0,106,0,0,116,2,0,131,1,0,1,113,13,0,113,13,
- 0,87,100,2,0,106,3,0,124,1,0,100,3,0,100,5,
- 0,133,2,0,25,131,1,0,83,40,6,0,0,0,117,31,
- 0,0,0,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,105,1,0,0,0,117,0,0,0,0,78,105,255,255,
- 255,255,105,255,255,255,255,40,4,0,0,0,117,6,0,0,
- 0,97,112,112,101,110,100,117,15,0,0,0,112,97,116,104,
- 95,115,101,112,97,114,97,116,111,114,115,117,8,0,0,0,
- 112,97,116,104,95,115,101,112,117,4,0,0,0,106,111,105,
- 110,40,3,0,0,0,117,10,0,0,0,112,97,116,104,95,
- 112,97,114,116,115,117,9,0,0,0,110,101,119,95,112,97,
- 114,116,115,117,4,0,0,0,112,97,114,116,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,95,112,97,
- 116,104,95,106,111,105,110,74,0,0,0,115,16,0,0,0,
- 0,2,6,1,13,1,6,1,6,1,13,1,16,1,20,1,
- 117,10,0,0,0,95,112,97,116,104,95,106,111,105,110,99,
- 1,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,
- 67,0,0,0,115,85,0,0,0,120,48,0,116,0,0,124,
- 0,0,131,1,0,68,93,28,0,125,1,0,124,1,0,116,
- 1,0,107,6,0,114,13,0,124,1,0,125,2,0,80,113,
- 13,0,113,13,0,87,116,2,0,125,2,0,124,0,0,106,
- 3,0,124,2,0,131,1,0,92,3,0,125,3,0,125,4,
- 0,125,5,0,124,3,0,124,5,0,102,2,0,83,40,1,
- 0,0,0,117,32,0,0,0,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,40,4,0,0,0,117,8,0,
- 0,0,114,101,118,101,114,115,101,100,117,15,0,0,0,112,
- 97,116,104,95,115,101,112,97,114,97,116,111,114,115,117,8,
- 0,0,0,112,97,116,104,95,115,101,112,117,10,0,0,0,
- 114,112,97,114,116,105,116,105,111,110,40,6,0,0,0,117,
- 4,0,0,0,112,97,116,104,117,1,0,0,0,120,117,3,
- 0,0,0,115,101,112,117,5,0,0,0,102,114,111,110,116,
- 117,1,0,0,0,95,117,4,0,0,0,116,97,105,108,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,
- 95,112,97,116,104,95,115,112,108,105,116,86,0,0,0,115,
- 14,0,0,0,0,2,19,1,12,1,6,1,8,2,6,1,
- 24,1,117,11,0,0,0,95,112,97,116,104,95,115,112,108,
- 105,116,99,2,0,0,0,0,0,0,0,3,0,0,0,11,
- 0,0,0,67,0,0,0,115,61,0,0,0,121,19,0,116,
- 0,0,106,1,0,124,0,0,131,1,0,125,2,0,87,110,
- 22,0,4,116,2,0,107,10,0,114,43,0,1,1,1,100,
- 2,0,83,89,110,1,0,88,124,2,0,106,4,0,100,1,
- 0,64,124,1,0,107,2,0,83,40,3,0,0,0,117,49,
- 0,0,0,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,105,0,240,0,0,70,40,5,0,0,0,117,
- 3,0,0,0,95,111,115,117,4,0,0,0,115,116,97,116,
- 117,7,0,0,0,79,83,69,114,114,111,114,117,5,0,0,
- 0,70,97,108,115,101,117,7,0,0,0,115,116,95,109,111,
- 100,101,40,3,0,0,0,117,4,0,0,0,112,97,116,104,
- 117,4,0,0,0,109,111,100,101,117,9,0,0,0,115,116,
- 97,116,95,105,110,102,111,40,0,0,0,0,40,0,0,0,
- 0,117,29,0,0,0,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,117,18,0,0,0,95,112,97,116,104,95,105,115,
- 95,109,111,100,101,95,116,121,112,101,98,0,0,0,115,10,
- 0,0,0,0,2,3,1,19,1,13,1,9,1,117,18,0,
- 0,0,95,112,97,116,104,95,105,115,95,109,111,100,101,95,
- 116,121,112,101,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,40,2,0,0,0,
- 117,31,0,0,0,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,40,1,0,0,0,117,18,
- 0,0,0,95,112,97,116,104,95,105,115,95,109,111,100,101,
- 95,116,121,112,101,40,1,0,0,0,117,4,0,0,0,112,
- 97,116,104,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 12,0,0,0,95,112,97,116,104,95,105,115,102,105,108,101,
- 108,0,0,0,115,2,0,0,0,0,2,117,12,0,0,0,
- 95,112,97,116,104,95,105,115,102,105,108,101,99,1,0,0,
- 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,
- 0,115,34,0,0,0,124,0,0,115,21,0,116,0,0,106,
- 1,0,131,0,0,125,0,0,110,0,0,116,2,0,124,0,
- 0,100,1,0,131,2,0,83,40,2,0,0,0,117,30,0,
- 0,0,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,40,3,0,0,0,117,3,0,0,0,95,
- 111,115,117,6,0,0,0,103,101,116,99,119,100,117,18,0,
- 0,0,95,112,97,116,104,95,105,115,95,109,111,100,101,95,
- 116,121,112,101,40,1,0,0,0,117,4,0,0,0,112,97,
- 116,104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,11,
- 0,0,0,95,112,97,116,104,95,105,115,100,105,114,114,0,
- 0,0,115,6,0,0,0,0,2,6,1,15,1,117,11,0,
- 0,0,95,112,97,116,104,95,105,115,100,105,114,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,192,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,60,
- 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,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,187,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,179,0,1,1,1,89,110,1,0,88,
- 130,0,0,89,110,1,0,88,100,4,0,83,40,5,0,0,
- 0,117,162,0,0,0,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,117,5,0,0,0,123,125,46,
- 123,125,105,182,1,0,0,117,2,0,0,0,119,98,78,40,
- 13,0,0,0,117,6,0,0,0,102,111,114,109,97,116,117,
- 2,0,0,0,105,100,117,3,0,0,0,95,111,115,117,4,
- 0,0,0,111,112,101,110,117,6,0,0,0,79,95,69,88,
- 67,76,117,7,0,0,0,79,95,67,82,69,65,84,117,8,
- 0,0,0,79,95,87,82,79,78,76,89,117,3,0,0,0,
- 95,105,111,117,6,0,0,0,70,105,108,101,73,79,117,5,
- 0,0,0,119,114,105,116,101,117,7,0,0,0,114,101,112,
- 108,97,99,101,117,7,0,0,0,79,83,69,114,114,111,114,
- 117,6,0,0,0,117,110,108,105,110,107,40,6,0,0,0,
- 117,4,0,0,0,112,97,116,104,117,4,0,0,0,100,97,
- 116,97,117,4,0,0,0,109,111,100,101,117,8,0,0,0,
- 112,97,116,104,95,116,109,112,117,2,0,0,0,102,100,117,
- 4,0,0,0,102,105,108,101,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,13,0,0,0,95,119,114,105,116,101,95,
- 97,116,111,109,105,99,121,0,0,0,115,26,0,0,0,0,
- 5,24,1,9,1,33,1,3,3,21,1,19,1,20,1,13,
- 1,3,1,17,1,13,1,5,1,117,13,0,0,0,95,119,
- 114,105,116,101,95,97,116,111,109,105,99,99,2,0,0,0,
- 0,0,0,0,3,0,0,0,7,0,0,0,67,0,0,0,
- 115,95,0,0,0,120,69,0,100,1,0,100,2,0,100,3,
- 0,100,4,0,103,4,0,68,93,49,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,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,40,6,0,0,0,117,47,0,0,0,83,105,
+ 4,0,0,0,100,1,0,83,41,2,122,53,84,114,117,101,
+ 32,105,102,32,102,105,108,101,110,97,109,101,115,32,109,117,
+ 115,116,32,98,101,32,99,104,101,99,107,101,100,32,99,97,
+ 115,101,45,105,110,115,101,110,115,105,116,105,118,101,108,121,
+ 46,70,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,6,0,0,0,
+ 34,0,0,0,115,2,0,0,0,0,2,41,4,218,3,115,
+ 121,115,218,8,112,108,97,116,102,111,114,109,218,10,115,116,
+ 97,114,116,115,119,105,116,104,218,27,95,67,65,83,69,95,
+ 73,78,83,69,78,83,73,84,73,86,69,95,80,76,65,84,
+ 70,79,82,77,83,41,1,114,6,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,218,16,95,109,97,
+ 107,101,95,114,101,108,97,120,95,99,97,115,101,28,0,0,
+ 0,115,8,0,0,0,0,1,18,1,15,4,12,3,114,11,
+ 0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,
+ 3,0,0,0,67,0,0,0,115,26,0,0,0,116,0,0,
+ 124,0,0,131,1,0,100,1,0,64,106,1,0,100,2,0,
+ 100,3,0,131,2,0,83,41,4,122,42,67,111,110,118,101,
+ 114,116,32,97,32,51,50,45,98,105,116,32,105,110,116,101,
+ 103,101,114,32,116,111,32,108,105,116,116,108,101,45,101,110,
+ 100,105,97,110,46,108,3,0,0,0,255,127,255,127,3,0,
+ 233,4,0,0,0,218,6,108,105,116,116,108,101,41,2,218,
+ 3,105,110,116,218,8,116,111,95,98,121,116,101,115,41,1,
+ 218,1,120,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,218,7,95,119,95,108,111,110,103,40,0,0,0,115,
+ 2,0,0,0,0,2,114,17,0,0,0,99,1,0,0,0,
+ 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,
+ 115,16,0,0,0,116,0,0,106,1,0,124,0,0,100,1,
+ 0,131,2,0,83,41,2,122,47,67,111,110,118,101,114,116,
+ 32,52,32,98,121,116,101,115,32,105,110,32,108,105,116,116,
+ 108,101,45,101,110,100,105,97,110,32,116,111,32,97,110,32,
+ 105,110,116,101,103,101,114,46,114,13,0,0,0,41,2,114,
+ 14,0,0,0,218,10,102,114,111,109,95,98,121,116,101,115,
+ 41,1,90,9,105,110,116,95,98,121,116,101,115,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,7,95,114,
+ 95,108,111,110,103,45,0,0,0,115,2,0,0,0,0,2,
+ 114,19,0,0,0,99,0,0,0,0,0,0,0,0,1,0,
+ 0,0,3,0,0,0,71,0,0,0,115,26,0,0,0,116,
+ 0,0,106,1,0,100,1,0,100,2,0,132,0,0,124,0,
+ 0,68,131,1,0,131,1,0,83,41,3,122,31,82,101,112,
+ 108,97,99,101,109,101,110,116,32,102,111,114,32,111,115,46,
+ 112,97,116,104,46,106,111,105,110,40,41,46,99,1,0,0,
+ 0,0,0,0,0,2,0,0,0,4,0,0,0,83,0,0,
+ 0,115,37,0,0,0,103,0,0,124,0,0,93,27,0,125,
+ 1,0,124,1,0,114,6,0,124,1,0,106,0,0,116,1,
+ 0,131,1,0,145,2,0,113,6,0,83,114,4,0,0,0,
+ 41,2,218,6,114,115,116,114,105,112,218,15,112,97,116,104,
+ 95,115,101,112,97,114,97,116,111,114,115,41,2,218,2,46,
+ 48,218,4,112,97,114,116,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,250,10,60,108,105,115,116,99,111,109,
+ 112,62,52,0,0,0,115,2,0,0,0,9,1,122,30,95,
+ 112,97,116,104,95,106,111,105,110,46,60,108,111,99,97,108,
+ 115,62,46,60,108,105,115,116,99,111,109,112,62,41,2,218,
+ 8,112,97,116,104,95,115,101,112,218,4,106,111,105,110,41,
+ 1,218,10,112,97,116,104,95,112,97,114,116,115,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,10,95,112,
+ 97,116,104,95,106,111,105,110,50,0,0,0,115,4,0,0,
+ 0,0,2,15,1,114,28,0,0,0,99,1,0,0,0,0,
+ 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,
+ 134,0,0,0,116,0,0,116,1,0,131,1,0,100,1,0,
+ 107,2,0,114,52,0,124,0,0,106,2,0,116,3,0,131,
+ 1,0,92,3,0,125,1,0,125,2,0,125,3,0,124,1,
+ 0,124,3,0,102,2,0,83,120,69,0,116,4,0,124,0,
+ 0,131,1,0,68,93,55,0,125,4,0,124,4,0,116,1,
+ 0,107,6,0,114,65,0,124,0,0,106,5,0,124,4,0,
+ 100,2,0,100,1,0,131,1,1,92,2,0,125,1,0,125,
+ 3,0,124,1,0,124,3,0,102,2,0,83,113,65,0,87,
+ 100,3,0,124,0,0,102,2,0,83,41,4,122,32,82,101,
+ 112,108,97,99,101,109,101,110,116,32,102,111,114,32,111,115,
+ 46,112,97,116,104,46,115,112,108,105,116,40,41,46,233,1,
+ 0,0,0,90,8,109,97,120,115,112,108,105,116,218,0,41,
+ 6,218,3,108,101,110,114,21,0,0,0,218,10,114,112,97,
+ 114,116,105,116,105,111,110,114,25,0,0,0,218,8,114,101,
+ 118,101,114,115,101,100,218,6,114,115,112,108,105,116,41,5,
+ 218,4,112,97,116,104,90,5,102,114,111,110,116,218,1,95,
+ 218,4,116,97,105,108,114,16,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,11,95,112,97,116,
+ 104,95,115,112,108,105,116,56,0,0,0,115,16,0,0,0,
+ 0,2,18,1,24,1,10,1,19,1,12,1,27,1,14,1,
+ 114,38,0,0,0,99,2,0,0,0,0,0,0,0,3,0,
+ 0,0,11,0,0,0,67,0,0,0,115,61,0,0,0,121,
+ 19,0,116,0,0,106,1,0,124,0,0,131,1,0,125,2,
+ 0,87,110,22,0,4,116,2,0,107,10,0,114,43,0,1,
+ 1,1,100,1,0,83,89,110,1,0,88,124,2,0,106,3,
+ 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,4,114,3,0,0,0,218,4,
+ 115,116,97,116,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,68,0,0,0,115,10,0,0,0,0,2,3,1,19,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,78,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,34,0,0,0,124,0,0,
+ 115,21,0,116,0,0,106,1,0,131,0,0,125,0,0,110,
+ 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,84,0,0,
+ 0,115,6,0,0,0,0,2,6,1,15,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,192,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,60,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,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,187,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,179,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,91,0,0,0,115,26,0,
+ 0,0,0,5,24,1,9,1,33,1,3,3,21,1,19,1,
+ 20,1,13,1,3,1,17,1,13,1,5,1,114,55,0,0,
+ 0,99,2,0,0,0,0,0,0,0,3,0,0,0,7,0,
+ 0,0,67,0,0,0,115,95,0,0,0,120,69,0,100,1,
+ 0,100,2,0,100,3,0,100,4,0,103,4,0,68,93,49,
+ 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,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,117,10,0,
- 0,0,95,95,109,111,100,117,108,101,95,95,117,8,0,0,
- 0,95,95,110,97,109,101,95,95,117,12,0,0,0,95,95,
- 113,117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,
- 95,100,111,99,95,95,78,40,5,0,0,0,117,7,0,0,
- 0,104,97,115,97,116,116,114,117,7,0,0,0,115,101,116,
- 97,116,116,114,117,7,0,0,0,103,101,116,97,116,116,114,
- 117,8,0,0,0,95,95,100,105,99,116,95,95,117,6,0,
- 0,0,117,112,100,97,116,101,40,3,0,0,0,117,3,0,
- 0,0,110,101,119,117,3,0,0,0,111,108,100,117,7,0,
- 0,0,114,101,112,108,97,99,101,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,5,0,0,0,95,119,114,97,112,143,
- 0,0,0,115,8,0,0,0,0,2,25,1,15,1,32,1,
- 117,5,0,0,0,95,119,114,97,112,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,40,1,0,0,0,117,75,0,0,0,67,114,
- 101,97,116,101,32,97,32,110,101,119,32,109,111,100,117,108,
- 101,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,101,110,116,101,114,101,
- 100,32,105,110,116,111,32,115,121,115,46,109,111,100,117,108,
- 101,115,46,10,10,32,32,32,32,40,2,0,0,0,117,4,
- 0,0,0,116,121,112,101,117,3,0,0,0,95,105,111,40,
- 1,0,0,0,117,4,0,0,0,110,97,109,101,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,110,101,
- 119,95,109,111,100,117,108,101,154,0,0,0,115,2,0,0,
- 0,0,6,117,10,0,0,0,110,101,119,95,109,111,100,117,
- 108,101,99,1,0,0,0,0,0,0,0,1,0,0,0,1,
- 0,0,0,66,0,0,0,115,20,0,0,0,124,0,0,69,
- 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,83,
- 40,2,0,0,0,117,14,0,0,0,95,68,101,97,100,108,
- 111,99,107,69,114,114,111,114,78,40,3,0,0,0,117,8,
- 0,0,0,95,95,110,97,109,101,95,95,117,10,0,0,0,
- 95,95,109,111,100,117,108,101,95,95,117,12,0,0,0,95,
- 95,113,117,97,108,110,97,109,101,95,95,40,1,0,0,0,
- 117,10,0,0,0,95,95,108,111,99,97,108,115,95,95,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,14,0,0,0,
- 95,68,101,97,100,108,111,99,107,69,114,114,111,114,171,0,
- 0,0,115,2,0,0,0,16,1,117,14,0,0,0,95,68,
- 101,97,100,108,111,99,107,69,114,114,111,114,99,1,0,0,
- 0,0,0,0,0,1,0,0,0,2,0,0,0,66,0,0,
- 0,115,86,0,0,0,124,0,0,69,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,40,13,0,0,
- 0,117,11,0,0,0,95,77,111,100,117,108,101,76,111,99,
- 107,117,169,0,0,0,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,115,32,97,
- 98,108,101,32,116,111,32,100,101,116,101,99,116,32,100,101,
- 97,100,108,111,99,107,115,10,32,32,32,32,40,101,46,103,
- 46,32,116,104,114,101,97,100,32,49,32,116,114,121,105,110,
- 103,32,116,111,32,116,97,107,101,32,108,111,99,107,115,32,
- 65,32,116,104,101,110,32,66,44,32,97,110,100,32,116,104,
- 114,101,97,100,32,50,32,116,114,121,105,110,103,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,6,0,100,1,0,124,0,0,95,
- 7,0,100,1,0,124,0,0,95,8,0,100,0,0,83,40,
- 2,0,0,0,78,105,0,0,0,0,40,9,0,0,0,117,
- 7,0,0,0,95,116,104,114,101,97,100,117,13,0,0,0,
- 97,108,108,111,99,97,116,101,95,108,111,99,107,117,4,0,
- 0,0,108,111,99,107,117,6,0,0,0,119,97,107,101,117,
- 112,117,4,0,0,0,110,97,109,101,117,4,0,0,0,78,
- 111,110,101,117,5,0,0,0,111,119,110,101,114,117,5,0,
- 0,0,99,111,117,110,116,117,7,0,0,0,119,97,105,116,
- 101,114,115,40,2,0,0,0,117,4,0,0,0,115,101,108,
- 102,117,4,0,0,0,110,97,109,101,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,95,95,105,110,105,
- 116,95,95,181,0,0,0,115,12,0,0,0,0,1,15,1,
- 15,1,9,1,9,1,9,1,117,20,0,0,0,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,87,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,59,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,100,0,
- 0,83,40,3,0,0,0,78,70,84,40,8,0,0,0,117,
- 7,0,0,0,95,116,104,114,101,97,100,117,9,0,0,0,
- 103,101,116,95,105,100,101,110,116,117,5,0,0,0,111,119,
- 110,101,114,117,12,0,0,0,95,98,108,111,99,107,105,110,
- 103,95,111,110,117,3,0,0,0,103,101,116,117,4,0,0,
- 0,78,111,110,101,117,5,0,0,0,70,97,108,115,101,117,
- 4,0,0,0,84,114,117,101,40,4,0,0,0,117,4,0,
- 0,0,115,101,108,102,117,2,0,0,0,109,101,117,3,0,
- 0,0,116,105,100,117,4,0,0,0,108,111,99,107,40,0,
- 0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,12,0,0,0,104,
- 97,115,95,100,101,97,100,108,111,99,107,189,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,117,24,0,0,0,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,
- 17,0,0,0,67,0,0,0,115,214,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,177,0,120,170,0,124,0,0,106,3,0,143,
- 130,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,5,0,83,124,0,0,
- 106,7,0,131,0,0,114,127,0,116,8,0,100,3,0,124,
- 0,0,22,131,1,0,130,1,0,110,0,0,124,0,0,106,
- 9,0,106,10,0,100,6,0,131,1,0,114,163,0,124,0,
- 0,4,106,12,0,100,2,0,55,2,95,12,0,110,0,0,
- 87,100,4,0,81,88,124,0,0,106,9,0,106,10,0,131,
- 0,0,1,124,0,0,106,9,0,106,13,0,131,0,0,1,
- 113,28,0,87,100,4,0,116,2,0,124,1,0,61,88,100,
- 4,0,83,40,7,0,0,0,117,185,0,0,0,10,32,32,
+ 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,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,113,0,0,0,115,8,0,0,0,0,2,25,1,15,1,
+ 32,1,114,65,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,57,0,0,0,114,56,0,0,0,
+ 114,58,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,66,0,0,0,132,0,
+ 0,0,115,2,0,0,0,12,1,114,66,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,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,115,32,97,98,108,101,32,116,111,32,100,101,116,101,
+ 99,116,32,100,101,97,100,108,111,99,107,115,10,32,32,32,
+ 32,40,101,46,103,46,32,116,104,114,101,97,100,32,49,32,
+ 116,114,121,105,110,103,32,116,111,32,116,97,107,101,32,108,
+ 111,99,107,115,32,65,32,116,104,101,110,32,66,44,32,97,
+ 110,100,32,116,104,114,101,97,100,32,50,32,116,114,121,105,
+ 110,103,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,218,4,110,97,109,101,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,218,4,115,101,108,102,114,72,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,95,
+ 95,105,110,105,116,95,95,142,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,87,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,59,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,100,
+ 0,0,83,41,3,78,70,84,41,5,114,69,0,0,0,218,
+ 9,103,101,116,95,105,100,101,110,116,114,73,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,76,0,0,0,218,2,109,101,218,3,116,
+ 105,100,114,70,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,12,104,97,115,95,100,101,97,100,
+ 108,111,99,107,150,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,17,0,0,0,67,0,0,0,115,214,
+ 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,177,0,120,170,0,124,
+ 0,0,106,3,0,143,130,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,127,0,116,
+ 7,0,100,4,0,124,0,0,22,131,1,0,130,1,0,110,
+ 0,0,124,0,0,106,8,0,106,9,0,100,5,0,131,1,
+ 0,114,163,0,124,0,0,4,106,10,0,100,2,0,55,2,
+ 95,10,0,110,0,0,87,100,6,0,81,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,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,
@@ -473,3958 +372,3070 @@ unsigned char _Py_M__importlib[] = {
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,105,0,0,0,0,105,1,0,0,0,
- 117,23,0,0,0,100,101,97,100,108,111,99,107,32,100,101,
- 116,101,99,116,101,100,32,98,121,32,37,114,78,84,70,40,
- 14,0,0,0,117,7,0,0,0,95,116,104,114,101,97,100,
- 117,9,0,0,0,103,101,116,95,105,100,101,110,116,117,12,
- 0,0,0,95,98,108,111,99,107,105,110,103,95,111,110,117,
- 4,0,0,0,108,111,99,107,117,5,0,0,0,99,111,117,
- 110,116,117,5,0,0,0,111,119,110,101,114,117,4,0,0,
- 0,84,114,117,101,117,12,0,0,0,104,97,115,95,100,101,
- 97,100,108,111,99,107,117,14,0,0,0,95,68,101,97,100,
- 108,111,99,107,69,114,114,111,114,117,6,0,0,0,119,97,
- 107,101,117,112,117,7,0,0,0,97,99,113,117,105,114,101,
- 117,5,0,0,0,70,97,108,115,101,117,7,0,0,0,119,
- 97,105,116,101,114,115,117,7,0,0,0,114,101,108,101,97,
- 115,101,40,2,0,0,0,117,4,0,0,0,115,101,108,102,
- 117,3,0,0,0,116,105,100,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,7,0,0,0,97,99,113,117,105,114,101,
- 201,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,19,
- 1,18,1,24,2,13,1,20,2,117,19,0,0,0,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,165,0,0,0,116,0,0,106,1,
- 0,131,0,0,125,1,0,124,0,0,106,2,0,143,138,0,
- 1,124,0,0,106,3,0,124,1,0,107,3,0,114,52,0,
- 116,4,0,100,1,0,131,1,0,130,1,0,110,0,0,124,
- 0,0,106,5,0,100,2,0,107,4,0,115,73,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,
- 155,0,100,0,0,124,0,0,95,3,0,124,0,0,106,8,
- 0,114,155,0,124,0,0,4,106,8,0,100,3,0,56,2,
- 95,8,0,124,0,0,106,9,0,106,10,0,131,0,0,1,
- 113,155,0,110,0,0,87,100,0,0,81,88,100,0,0,83,
- 40,4,0,0,0,78,117,31,0,0,0,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,105,0,0,0,0,105,
- 1,0,0,0,40,11,0,0,0,117,7,0,0,0,95,116,
- 104,114,101,97,100,117,9,0,0,0,103,101,116,95,105,100,
- 101,110,116,117,4,0,0,0,108,111,99,107,117,5,0,0,
- 0,111,119,110,101,114,117,12,0,0,0,82,117,110,116,105,
- 109,101,69,114,114,111,114,117,5,0,0,0,99,111,117,110,
- 116,117,14,0,0,0,65,115,115,101,114,116,105,111,110,69,
- 114,114,111,114,117,4,0,0,0,78,111,110,101,117,7,0,
- 0,0,119,97,105,116,101,114,115,117,6,0,0,0,119,97,
- 107,101,117,112,117,7,0,0,0,114,101,108,101,97,115,101,
- 40,2,0,0,0,117,4,0,0,0,115,101,108,102,117,3,
- 0,0,0,116,105,100,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,7,0,0,0,114,101,108,101,97,115,101,226,0,
- 0,0,115,22,0,0,0,0,1,12,1,10,1,15,1,15,
- 1,21,1,15,1,15,1,9,1,9,1,15,1,117,19,0,
- 0,0,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,23,0,0,0,100,
- 1,0,124,0,0,106,0,0,116,1,0,124,0,0,131,1,
- 0,102,2,0,22,83,40,2,0,0,0,78,117,21,0,0,
- 0,95,77,111,100,117,108,101,76,111,99,107,40,37,114,41,
- 32,97,116,32,37,100,40,2,0,0,0,117,4,0,0,0,
- 110,97,109,101,117,2,0,0,0,105,100,40,1,0,0,0,
- 117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,8,0,0,0,95,95,114,101,112,114,
- 95,95,239,0,0,0,115,2,0,0,0,0,1,117,20,0,
- 0,0,95,77,111,100,117,108,101,76,111,99,107,46,95,95,
- 114,101,112,114,95,95,78,40,9,0,0,0,117,8,0,0,
- 0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,95,
- 109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,113,
- 117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,95,
- 100,111,99,95,95,117,8,0,0,0,95,95,105,110,105,116,
- 95,95,117,12,0,0,0,104,97,115,95,100,101,97,100,108,
- 111,99,107,117,7,0,0,0,97,99,113,117,105,114,101,117,
- 7,0,0,0,114,101,108,101,97,115,101,117,8,0,0,0,
- 95,95,114,101,112,114,95,95,40,1,0,0,0,117,10,0,
- 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,95,77,111,
- 100,117,108,101,76,111,99,107,175,0,0,0,115,12,0,0,
- 0,16,4,6,2,12,8,12,12,12,25,12,13,117,11,0,
- 0,0,95,77,111,100,117,108,101,76,111,99,107,99,1,0,
- 0,0,0,0,0,0,1,0,0,0,2,0,0,0,66,0,
- 0,0,115,74,0,0,0,124,0,0,69,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,40,11,0,0,0,117,16,0,0,0,95,68,117,109,109,
- 121,77,111,100,117,108,101,76,111,99,107,117,86,0,0,0,
- 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,40,2,0,0,0,78,105,0,0,0,
- 0,40,2,0,0,0,117,4,0,0,0,110,97,109,101,117,
- 5,0,0,0,99,111,117,110,116,40,2,0,0,0,117,4,
- 0,0,0,115,101,108,102,117,4,0,0,0,110,97,109,101,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,
- 0,95,95,105,110,105,116,95,95,247,0,0,0,115,4,0,
- 0,0,0,1,9,1,117,25,0,0,0,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,19,0,0,0,124,0,
- 0,4,106,0,0,100,1,0,55,2,95,0,0,100,2,0,
- 83,40,3,0,0,0,78,105,1,0,0,0,84,40,2,0,
- 0,0,117,5,0,0,0,99,111,117,110,116,117,4,0,0,
- 0,84,114,117,101,40,1,0,0,0,117,4,0,0,0,115,
- 101,108,102,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 7,0,0,0,97,99,113,117,105,114,101,251,0,0,0,115,
- 4,0,0,0,0,1,15,1,117,24,0,0,0,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,49,0,0,0,124,
- 0,0,106,0,0,100,1,0,107,2,0,114,30,0,116,1,
- 0,100,2,0,131,1,0,130,1,0,110,0,0,124,0,0,
- 4,106,0,0,100,3,0,56,2,95,0,0,100,0,0,83,
- 40,4,0,0,0,78,105,0,0,0,0,117,31,0,0,0,
- 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,105,
- 1,0,0,0,40,2,0,0,0,117,5,0,0,0,99,111,
- 117,110,116,117,12,0,0,0,82,117,110,116,105,109,101,69,
- 114,114,111,114,40,1,0,0,0,117,4,0,0,0,115,101,
- 108,102,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,7,
- 0,0,0,114,101,108,101,97,115,101,255,0,0,0,115,6,
- 0,0,0,0,1,15,1,15,1,117,24,0,0,0,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,23,0,0,0,
- 100,1,0,124,0,0,106,0,0,116,1,0,124,0,0,131,
- 1,0,102,2,0,22,83,40,2,0,0,0,78,117,26,0,
- 0,0,95,68,117,109,109,121,77,111,100,117,108,101,76,111,
- 99,107,40,37,114,41,32,97,116,32,37,100,40,2,0,0,
- 0,117,4,0,0,0,110,97,109,101,117,2,0,0,0,105,
- 100,40,1,0,0,0,117,4,0,0,0,115,101,108,102,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,
- 95,95,114,101,112,114,95,95,4,1,0,0,115,2,0,0,
- 0,0,1,117,25,0,0,0,95,68,117,109,109,121,77,111,
- 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95,
- 95,78,40,8,0,0,0,117,8,0,0,0,95,95,110,97,
- 109,101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,
- 101,95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,
- 109,101,95,95,117,7,0,0,0,95,95,100,111,99,95,95,
- 117,8,0,0,0,95,95,105,110,105,116,95,95,117,7,0,
- 0,0,97,99,113,117,105,114,101,117,7,0,0,0,114,101,
- 108,101,97,115,101,117,8,0,0,0,95,95,114,101,112,114,
- 95,95,40,1,0,0,0,117,10,0,0,0,95,95,108,111,
- 99,97,108,115,95,95,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,16,0,0,0,95,68,117,109,109,121,77,111,100,
- 117,108,101,76,111,99,107,243,0,0,0,115,10,0,0,0,
- 16,2,6,2,12,4,12,4,12,5,117,16,0,0,0,95,
- 68,117,109,109,121,77,111,100,117,108,101,76,111,99,107,99,
+ 32,32,32,32,32,32,114,68,0,0,0,114,29,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,69,
+ 0,0,0,114,78,0,0,0,114,79,0,0,0,114,70,0,
+ 0,0,114,74,0,0,0,114,73,0,0,0,114,83,0,0,
+ 0,114,66,0,0,0,114,71,0,0,0,218,7,97,99,113,
+ 117,105,114,101,114,75,0,0,0,218,7,114,101,108,101,97,
+ 115,101,41,2,114,76,0,0,0,114,82,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,84,0,
+ 0,0,162,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,19,1,18,1,24,2,13,1,20,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,165,0,0,0,116,0,0,106,1,0,
+ 131,0,0,125,1,0,124,0,0,106,2,0,143,138,0,1,
+ 124,0,0,106,3,0,124,1,0,107,3,0,114,52,0,116,
+ 4,0,100,1,0,131,1,0,130,1,0,110,0,0,124,0,
+ 0,106,5,0,100,2,0,107,4,0,115,73,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,155,
+ 0,100,0,0,124,0,0,95,3,0,124,0,0,106,7,0,
+ 114,155,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,113,
+ 155,0,110,0,0,87,100,0,0,81,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,68,0,0,0,114,29,0,0,0,41,10,114,
+ 69,0,0,0,114,78,0,0,0,114,70,0,0,0,114,73,
+ 0,0,0,218,12,82,117,110,116,105,109,101,69,114,114,111,
+ 114,114,74,0,0,0,218,14,65,115,115,101,114,116,105,111,
+ 110,69,114,114,111,114,114,75,0,0,0,114,71,0,0,0,
+ 114,85,0,0,0,41,2,114,76,0,0,0,114,82,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,85,0,0,0,187,0,0,0,115,22,0,0,0,0,1,
+ 12,1,10,1,15,1,15,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,114,47,0,0,0,114,
+ 72,0,0,0,114,48,0,0,0,41,1,114,76,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,200,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,57,0,
+ 0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,0,
+ 0,114,77,0,0,0,114,83,0,0,0,114,84,0,0,0,
+ 114,85,0,0,0,114,88,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,67,
+ 0,0,0,136,0,0,0,115,12,0,0,0,12,4,6,2,
+ 12,8,12,12,12,25,12,13,114,67,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,68,0,0,
+ 0,41,2,114,72,0,0,0,114,74,0,0,0,41,2,114,
+ 76,0,0,0,114,72,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,77,0,0,0,208,0,0,
+ 0,115,4,0,0,0,0,1,9,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,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,29,0,0,0,84,41,1,114,74,0,
+ 0,0,41,1,114,76,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,84,0,0,0,212,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,49,0,0,0,124,0,
+ 0,106,0,0,100,1,0,107,2,0,114,30,0,116,1,0,
+ 100,2,0,131,1,0,130,1,0,110,0,0,124,0,0,4,
+ 106,0,0,100,3,0,56,2,95,0,0,100,0,0,83,41,
+ 4,78,114,68,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,29,0,0,0,41,2,114,
+ 74,0,0,0,114,86,0,0,0,41,1,114,76,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 85,0,0,0,216,0,0,0,115,6,0,0,0,0,1,15,
+ 1,15,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,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,47,0,0,0,114,72,0,0,0,114,48,0,
+ 0,0,41,1,114,76,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,88,0,0,0,221,0,0,
+ 0,115,2,0,0,0,0,1,122,25,95,68,117,109,109,121,
+ 77,111,100,117,108,101,76,111,99,107,46,95,95,114,101,112,
+ 114,95,95,78,41,8,114,57,0,0,0,114,56,0,0,0,
+ 114,58,0,0,0,114,59,0,0,0,114,77,0,0,0,114,
+ 84,0,0,0,114,85,0,0,0,114,88,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,89,0,0,0,204,0,0,0,115,10,0,0,0,
+ 12,2,6,2,12,4,12,4,12,5,114,89,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,142,0,0,0,100,3,0,125,1,0,121,
- 17,0,116,1,0,136,0,0,25,131,0,0,125,1,0,87,
- 110,18,0,4,116,2,0,107,10,0,114,43,0,1,1,1,
- 89,110,1,0,88,124,1,0,100,3,0,107,8,0,114,138,
- 0,116,3,0,100,3,0,107,8,0,114,83,0,116,4,0,
- 136,0,0,131,1,0,125,1,0,110,12,0,116,5,0,136,
- 0,0,131,1,0,125,1,0,135,0,0,102,1,0,100,1,
- 0,100,2,0,134,0,0,125,2,0,116,6,0,106,7,0,
- 124,1,0,124,2,0,131,2,0,116,1,0,136,0,0,60,
- 110,0,0,124,1,0,83,40,4,0,0,0,117,109,0,0,
- 0,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,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,40,1,0,0,0,78,40,1,0,0,0,117,13,
- 0,0,0,95,109,111,100,117,108,101,95,108,111,99,107,115,
- 40,1,0,0,0,117,1,0,0,0,95,40,1,0,0,0,
- 117,4,0,0,0,110,97,109,101,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,2,0,0,0,99,98,24,1,0,0,115,2,0,0,0,
- 0,1,117,28,0,0,0,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,78,40,8,0,0,0,117,4,0,0,0,78,111,
- 110,101,117,13,0,0,0,95,109,111,100,117,108,101,95,108,
- 111,99,107,115,117,8,0,0,0,75,101,121,69,114,114,111,
- 114,117,7,0,0,0,95,116,104,114,101,97,100,117,16,0,
- 0,0,95,68,117,109,109,121,77,111,100,117,108,101,76,111,
- 99,107,117,11,0,0,0,95,77,111,100,117,108,101,76,111,
- 99,107,117,8,0,0,0,95,119,101,97,107,114,101,102,117,
- 3,0,0,0,114,101,102,40,3,0,0,0,117,4,0,0,
- 0,110,97,109,101,117,4,0,0,0,108,111,99,107,117,2,
- 0,0,0,99,98,40,0,0,0,0,40,1,0,0,0,117,
- 4,0,0,0,110,97,109,101,117,29,0,0,0,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,117,16,0,0,0,95,
- 103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,10,
- 1,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,25,1,
- 117,16,0,0,0,95,103,101,116,95,109,111,100,117,108,101,
- 95,108,111,99,107,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,40,2,0,0,0,117,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,40,6,0,0,0,117,16,0,0,0,
- 95,103,101,116,95,109,111,100,117,108,101,95,108,111,99,107,
- 117,4,0,0,0,95,105,109,112,117,12,0,0,0,114,101,
- 108,101,97,115,101,95,108,111,99,107,117,7,0,0,0,97,
- 99,113,117,105,114,101,117,14,0,0,0,95,68,101,97,100,
- 108,111,99,107,69,114,114,111,114,117,7,0,0,0,114,101,
- 108,101,97,115,101,40,2,0,0,0,117,4,0,0,0,110,
- 97,109,101,117,4,0,0,0,108,111,99,107,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,19,0,0,0,95,108,111,
- 99,107,95,117,110,108,111,99,107,95,109,111,100,117,108,101,
- 29,1,0,0,115,14,0,0,0,0,7,12,1,10,1,3,
- 1,14,1,13,3,5,2,117,19,0,0,0,95,108,111,99,
- 107,95,117,110,108,111,99,107,95,109,111,100,117,108,101,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,40,1,0,0,0,117,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,40,0,
- 0,0,0,40,3,0,0,0,117,1,0,0,0,102,117,4,
- 0,0,0,97,114,103,115,117,4,0,0,0,107,119,100,115,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,25,0,0,
- 0,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,49,1,0,0,115,2,
- 0,0,0,0,8,117,25,0,0,0,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,105,158,12,0,0,117,1,0,0,0,13,105,16,
- 0,0,0,117,1,0,0,0,10,105,24,0,0,0,99,1,
- 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,99,
- 0,0,0,115,29,0,0,0,124,0,0,93,19,0,125,1,
- 0,116,0,0,124,1,0,63,100,0,0,64,86,1,113,3,
- 0,100,1,0,83,40,2,0,0,0,105,255,0,0,0,78,
- 40,1,0,0,0,117,17,0,0,0,95,82,65,87,95,77,
- 65,71,73,67,95,78,85,77,66,69,82,40,2,0,0,0,
- 117,2,0,0,0,46,48,117,1,0,0,0,110,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,9,0,0,0,60,103,
- 101,110,101,120,112,114,62,150,1,0,0,115,2,0,0,0,
- 6,0,117,9,0,0,0,60,103,101,110,101,120,112,114,62,
- 105,0,0,0,0,105,25,0,0,0,105,8,0,0,0,117,
- 11,0,0,0,95,95,112,121,99,97,99,104,101,95,95,117,
- 3,0,0,0,46,112,121,117,4,0,0,0,46,112,121,99,
- 117,4,0,0,0,46,112,121,111,99,2,0,0,0,0,0,
- 0,0,11,0,0,0,6,0,0,0,67,0,0,0,115,180,
- 0,0,0,124,1,0,100,5,0,107,8,0,114,25,0,116,
- 1,0,106,2,0,106,3,0,12,110,3,0,124,1,0,125,
- 2,0,124,2,0,114,46,0,116,4,0,125,3,0,110,6,
- 0,116,5,0,125,3,0,116,6,0,124,0,0,131,1,0,
- 92,2,0,125,4,0,125,5,0,124,5,0,106,7,0,100,
- 1,0,131,1,0,92,3,0,125,6,0,125,7,0,125,8,
- 0,116,1,0,106,8,0,106,9,0,125,9,0,124,9,0,
- 100,5,0,107,8,0,114,133,0,116,10,0,100,2,0,131,
- 1,0,130,1,0,110,0,0,100,3,0,106,11,0,124,6,
- 0,124,7,0,124,9,0,124,3,0,100,4,0,25,103,4,
- 0,131,1,0,125,10,0,116,12,0,124,4,0,116,13,0,
- 124,10,0,131,3,0,83,40,6,0,0,0,117,244,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,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,47,46,112,121,111,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,47,46,112,121,
- 111,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,32,32,84,104,101,32,101,120,116,101,110,115,105,
- 111,110,10,32,32,32,32,119,105,108,108,32,98,101,32,46,
- 112,121,99,32,117,110,108,101,115,115,32,115,121,115,46,102,
- 108,97,103,115,46,111,112,116,105,109,105,122,101,32,105,115,
- 32,110,111,110,45,122,101,114,111,44,32,116,104,101,110,32,
- 105,116,32,119,105,108,108,32,98,101,32,46,112,121,111,46,
- 10,10,32,32,32,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,32,116,104,101,110,32,105,116,32,109,117,115,
- 116,32,98,101,32,97,32,98,111,111,108,101,97,110,32,97,
- 110,100,32,105,115,32,117,115,101,100,32,105,110,10,32,32,
- 32,32,112,108,97,99,101,32,111,102,32,115,121,115,46,102,
- 108,97,103,115,46,111,112,116,105,109,105,122,101,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,117,1,0,0,0,46,117,36,0,0,0,
+ 3,0,0,0,115,142,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,138,
+ 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,
+ 110,0,0,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,114,36,0,0,0,41,1,114,72,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,2,99,98,241,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,90,0,0,0,218,8,
+ 75,101,121,69,114,114,111,114,114,69,0,0,0,114,89,0,
+ 0,0,114,67,0,0,0,218,8,95,119,101,97,107,114,101,
+ 102,90,3,114,101,102,41,3,114,72,0,0,0,114,70,0,
+ 0,0,114,91,0,0,0,114,4,0,0,0,41,1,114,72,
+ 0,0,0,114,5,0,0,0,218,16,95,103,101,116,95,109,
+ 111,100,117,108,101,95,108,111,99,107,227,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,25,1,114,94,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,94,0,0,0,218,4,95,105,109,112,218,12,114,101,108,
+ 101,97,115,101,95,108,111,99,107,114,84,0,0,0,114,66,
+ 0,0,0,114,85,0,0,0,41,2,114,72,0,0,0,114,
+ 70,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,218,19,95,108,111,99,107,95,117,110,108,111,99,
+ 107,95,109,111,100,117,108,101,246,0,0,0,115,14,0,0,
+ 0,0,7,12,1,10,1,3,1,14,1,13,3,5,2,114,
+ 97,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,4,0,0,0,41,3,218,1,102,218,4,97,114,103,115,
+ 90,4,107,119,100,115,114,4,0,0,0,114,4,0,0,0,
+ 114,5,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,
+ 10,1,0,0,115,2,0,0,0,0,8,114,100,0,0,0,
+ 105,228,12,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,3,46,112,121,122,4,46,112,121,99,122,4,
+ 46,112,121,111,78,99,2,0,0,0,0,0,0,0,11,0,
+ 0,0,6,0,0,0,67,0,0,0,115,180,0,0,0,124,
+ 1,0,100,1,0,107,8,0,114,25,0,116,0,0,106,1,
+ 0,106,2,0,12,110,3,0,124,1,0,125,2,0,124,2,
+ 0,114,46,0,116,3,0,125,3,0,110,6,0,116,4,0,
+ 125,3,0,116,5,0,124,0,0,131,1,0,92,2,0,125,
+ 4,0,125,5,0,124,5,0,106,6,0,100,2,0,131,1,
+ 0,92,3,0,125,6,0,125,7,0,125,8,0,116,0,0,
+ 106,7,0,106,8,0,125,9,0,124,9,0,100,1,0,107,
+ 8,0,114,133,0,116,9,0,100,3,0,131,1,0,130,1,
+ 0,110,0,0,100,4,0,106,10,0,124,6,0,124,7,0,
+ 124,9,0,124,3,0,100,5,0,25,103,4,0,131,1,0,
+ 125,10,0,116,11,0,124,4,0,116,12,0,124,10,0,131,
+ 3,0,83,41,6,97,244,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,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,47,46,112,121,111,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,47,46,112,121,111,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,32,32,84,104,
+ 101,32,101,120,116,101,110,115,105,111,110,10,32,32,32,32,
+ 119,105,108,108,32,98,101,32,46,112,121,99,32,117,110,108,
+ 101,115,115,32,115,121,115,46,102,108,97,103,115,46,111,112,
+ 116,105,109,105,122,101,32,105,115,32,110,111,110,45,122,101,
+ 114,111,44,32,116,104,101,110,32,105,116,32,119,105,108,108,
+ 32,98,101,32,46,112,121,111,46,10,10,32,32,32,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,32,116,104,
+ 101,110,32,105,116,32,109,117,115,116,32,98,101,32,97,32,
+ 98,111,111,108,101,97,110,32,97,110,100,32,105,115,32,117,
+ 115,101,100,32,105,110,10,32,32,32,32,112,108,97,99,101,
+ 32,111,102,32,115,121,115,46,102,108,97,103,115,46,111,112,
+ 116,105,109,105,122,101,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,117,0,0,0,0,105,0,0,0,0,78,40,
- 14,0,0,0,117,4,0,0,0,78,111,110,101,117,3,0,
- 0,0,115,121,115,117,5,0,0,0,102,108,97,103,115,117,
- 8,0,0,0,111,112,116,105,109,105,122,101,117,23,0,0,
- 0,68,69,66,85,71,95,66,89,84,69,67,79,68,69,95,
- 83,85,70,70,73,88,69,83,117,27,0,0,0,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,117,11,0,0,0,95,112,97,
- 116,104,95,115,112,108,105,116,117,9,0,0,0,112,97,114,
- 116,105,116,105,111,110,117,14,0,0,0,105,109,112,108,101,
- 109,101,110,116,97,116,105,111,110,117,9,0,0,0,99,97,
- 99,104,101,95,116,97,103,117,19,0,0,0,78,111,116,73,
- 109,112,108,101,109,101,110,116,101,100,69,114,114,111,114,117,
- 4,0,0,0,106,111,105,110,117,10,0,0,0,95,112,97,
- 116,104,95,106,111,105,110,117,8,0,0,0,95,80,89,67,
- 65,67,72,69,40,11,0,0,0,117,4,0,0,0,112,97,
- 116,104,117,14,0,0,0,100,101,98,117,103,95,111,118,101,
- 114,114,105,100,101,117,5,0,0,0,100,101,98,117,103,117,
- 8,0,0,0,115,117,102,102,105,120,101,115,117,4,0,0,
- 0,104,101,97,100,117,4,0,0,0,116,97,105,108,117,13,
- 0,0,0,98,97,115,101,95,102,105,108,101,110,97,109,101,
- 117,3,0,0,0,115,101,112,117,1,0,0,0,95,117,3,
- 0,0,0,116,97,103,117,8,0,0,0,102,105,108,101,110,
- 97,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 17,0,0,0,99,97,99,104,101,95,102,114,111,109,95,115,
- 111,117,114,99,101,159,1,0,0,115,22,0,0,0,0,13,
- 31,1,6,1,9,2,6,1,18,1,24,1,12,1,12,1,
- 15,1,31,1,117,17,0,0,0,99,97,99,104,101,95,102,
- 114,111,109,95,115,111,117,114,99,101,99,1,0,0,0,0,
- 0,0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,
- 193,0,0,0,116,0,0,106,1,0,106,2,0,100,7,0,
- 107,8,0,114,33,0,116,4,0,100,1,0,131,1,0,130,
- 1,0,110,0,0,116,5,0,124,0,0,131,1,0,92,2,
- 0,125,1,0,125,2,0,116,5,0,124,1,0,131,1,0,
- 92,2,0,125,1,0,125,3,0,124,3,0,116,6,0,107,
- 3,0,114,108,0,116,7,0,100,2,0,106,8,0,116,6,
- 0,124,0,0,131,2,0,131,1,0,130,1,0,110,0,0,
- 124,2,0,106,9,0,100,3,0,131,1,0,100,4,0,107,
- 3,0,114,153,0,116,7,0,100,5,0,106,8,0,124,2,
- 0,131,1,0,131,1,0,130,1,0,110,0,0,124,2,0,
- 106,10,0,100,3,0,131,1,0,100,6,0,25,125,4,0,
- 116,11,0,124,1,0,124,4,0,116,12,0,100,6,0,25,
- 23,131,2,0,83,40,8,0,0,0,117,121,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,47,46,112,121,111,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,47,46,112,121,111,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,47,46,112,121,111,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,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,117,36,0,0,0,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,117,37,0,0,0,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,117,1,0,0,0,
- 46,105,2,0,0,0,117,28,0,0,0,101,120,112,101,99,
- 116,101,100,32,111,110,108,121,32,50,32,100,111,116,115,32,
- 105,110,32,123,33,114,125,105,0,0,0,0,78,40,13,0,
- 0,0,117,3,0,0,0,115,121,115,117,14,0,0,0,105,
- 109,112,108,101,109,101,110,116,97,116,105,111,110,117,9,0,
- 0,0,99,97,99,104,101,95,116,97,103,117,4,0,0,0,
- 78,111,110,101,117,19,0,0,0,78,111,116,73,109,112,108,
- 101,109,101,110,116,101,100,69,114,114,111,114,117,11,0,0,
- 0,95,112,97,116,104,95,115,112,108,105,116,117,8,0,0,
- 0,95,80,89,67,65,67,72,69,117,10,0,0,0,86,97,
- 108,117,101,69,114,114,111,114,117,6,0,0,0,102,111,114,
- 109,97,116,117,5,0,0,0,99,111,117,110,116,117,9,0,
- 0,0,112,97,114,116,105,116,105,111,110,117,10,0,0,0,
- 95,112,97,116,104,95,106,111,105,110,117,15,0,0,0,83,
- 79,85,82,67,69,95,83,85,70,70,73,88,69,83,40,5,
- 0,0,0,117,4,0,0,0,112,97,116,104,117,4,0,0,
- 0,104,101,97,100,117,16,0,0,0,112,121,99,97,99,104,
- 101,95,102,105,108,101,110,97,109,101,117,7,0,0,0,112,
- 121,99,97,99,104,101,117,13,0,0,0,98,97,115,101,95,
- 102,105,108,101,110,97,109,101,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,17,0,0,0,115,111,117,114,99,101,95,
- 102,114,111,109,95,99,97,99,104,101,186,1,0,0,115,24,
- 0,0,0,0,9,18,1,15,1,18,1,18,1,12,1,9,
- 1,18,1,21,1,9,1,15,1,19,1,117,17,0,0,0,
- 115,111,117,114,99,101,95,102,114,111,109,95,99,97,99,104,
- 101,99,1,0,0,0,0,0,0,0,5,0,0,0,13,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,6,0,
- 83,124,0,0,106,2,0,100,2,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,3,0,131,0,0,100,7,0,100,8,0,133,
- 2,0,25,100,5,0,107,3,0,114,85,0,124,0,0,83,
- 121,16,0,116,4,0,124,0,0,131,1,0,125,4,0,87,
- 110,40,0,4,116,5,0,116,6,0,102,2,0,107,10,0,
- 114,143,0,1,1,1,124,0,0,100,6,0,100,9,0,133,
- 2,0,25,125,4,0,89,110,1,0,88,116,7,0,124,4,
- 0,131,1,0,114,160,0,124,4,0,83,124,0,0,83,40,
- 10,0,0,0,117,188,0,0,0,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,105,0,0,0,0,117,1,0,0,0,46,
- 105,3,0,0,0,105,1,0,0,0,117,2,0,0,0,112,
- 121,78,105,253,255,255,255,105,255,255,255,255,105,255,255,255,
- 255,40,8,0,0,0,117,3,0,0,0,108,101,110,117,4,
- 0,0,0,78,111,110,101,117,10,0,0,0,114,112,97,114,
- 116,105,116,105,111,110,117,5,0,0,0,108,111,119,101,114,
- 117,17,0,0,0,115,111,117,114,99,101,95,102,114,111,109,
- 95,99,97,99,104,101,117,19,0,0,0,78,111,116,73,109,
- 112,108,101,109,101,110,116,101,100,69,114,114,111,114,117,10,
- 0,0,0,86,97,108,117,101,69,114,114,111,114,117,12,0,
- 0,0,95,112,97,116,104,95,105,115,102,105,108,101,40,5,
- 0,0,0,117,13,0,0,0,98,121,116,101,99,111,100,101,
- 95,112,97,116,104,117,4,0,0,0,114,101,115,116,117,1,
- 0,0,0,95,117,9,0,0,0,101,120,116,101,110,115,105,
- 111,110,117,11,0,0,0,115,111,117,114,99,101,95,112,97,
- 116,104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,15,
- 0,0,0,95,103,101,116,95,115,111,117,114,99,101,102,105,
- 108,101,209,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,117,
- 15,0,0,0,95,103,101,116,95,115,111,117,114,99,101,102,
- 105,108,101,117,9,0,0,0,118,101,114,98,111,115,105,116,
- 121,105,1,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,81,0,0,0,
- 116,0,0,106,1,0,106,2,0,124,1,0,107,5,0,114,
- 77,0,124,0,0,106,3,0,100,6,0,131,1,0,115,46,
- 0,100,3,0,124,0,0,23,125,0,0,110,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,110,0,0,100,5,0,
- 83,40,7,0,0,0,117,61,0,0,0,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,117,1,0,0,0,35,117,7,
- 0,0,0,105,109,112,111,114,116,32,117,2,0,0,0,35,
- 32,117,4,0,0,0,102,105,108,101,78,40,2,0,0,0,
- 117,1,0,0,0,35,117,7,0,0,0,105,109,112,111,114,
- 116,32,40,7,0,0,0,117,3,0,0,0,115,121,115,117,
- 5,0,0,0,102,108,97,103,115,117,7,0,0,0,118,101,
- 114,98,111,115,101,117,10,0,0,0,115,116,97,114,116,115,
- 119,105,116,104,117,5,0,0,0,112,114,105,110,116,117,6,
- 0,0,0,102,111,114,109,97,116,117,6,0,0,0,115,116,
- 100,101,114,114,40,3,0,0,0,117,7,0,0,0,109,101,
- 115,115,97,103,101,117,9,0,0,0,118,101,114,98,111,115,
- 105,116,121,117,4,0,0,0,97,114,103,115,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,16,0,0,0,95,118,101,
- 114,98,111,115,101,95,109,101,115,115,97,103,101,228,1,0,
- 0,115,8,0,0,0,0,2,18,1,15,1,13,1,117,16,
- 0,0,0,95,118,101,114,98,111,115,101,95,109,101,115,115,
- 97,103,101,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,
- 40,3,0,0,0,117,39,0,0,0,83,101,116,32,95,95,
- 112,97,99,107,97,103,101,95,95,32,111,110,32,116,104,101,
- 32,114,101,116,117,114,110,101,100,32,109,111,100,117,108,101,
- 46,99,0,0,0,0,0,0,0,0,3,0,0,0,4,0,
- 0,0,31,0,0,0,115,101,0,0,0,136,0,0,124,0,
- 0,124,1,0,142,0,0,125,2,0,116,0,0,124,2,0,
- 100,1,0,100,0,0,131,3,0,100,0,0,107,8,0,114,
- 97,0,124,2,0,106,2,0,124,2,0,95,3,0,116,4,
- 0,124,2,0,100,2,0,131,2,0,115,97,0,124,2,0,
- 106,3,0,106,5,0,100,3,0,131,1,0,100,4,0,25,
- 124,2,0,95,3,0,113,97,0,110,0,0,124,2,0,83,
- 40,5,0,0,0,78,117,11,0,0,0,95,95,112,97,99,
- 107,97,103,101,95,95,117,8,0,0,0,95,95,112,97,116,
- 104,95,95,117,1,0,0,0,46,105,0,0,0,0,40,6,
- 0,0,0,117,7,0,0,0,103,101,116,97,116,116,114,117,
- 4,0,0,0,78,111,110,101,117,8,0,0,0,95,95,110,
- 97,109,101,95,95,117,11,0,0,0,95,95,112,97,99,107,
- 97,103,101,95,95,117,7,0,0,0,104,97,115,97,116,116,
- 114,117,10,0,0,0,114,112,97,114,116,105,116,105,111,110,
- 40,3,0,0,0,117,4,0,0,0,97,114,103,115,117,6,
- 0,0,0,107,119,97,114,103,115,117,6,0,0,0,109,111,
- 100,117,108,101,40,1,0,0,0,117,3,0,0,0,102,120,
- 110,40,0,0,0,0,117,29,0,0,0,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,117,19,0,0,0,115,101,116,
- 95,112,97,99,107,97,103,101,95,119,114,97,112,112,101,114,
- 238,1,0,0,115,12,0,0,0,0,1,15,1,24,1,12,
- 1,15,1,31,1,117,40,0,0,0,115,101,116,95,112,97,
- 99,107,97,103,101,46,60,108,111,99,97,108,115,62,46,115,
- 101,116,95,112,97,99,107,97,103,101,95,119,114,97,112,112,
- 101,114,40,1,0,0,0,117,5,0,0,0,95,119,114,97,
- 112,40,2,0,0,0,117,3,0,0,0,102,120,110,117,19,
- 0,0,0,115,101,116,95,112,97,99,107,97,103,101,95,119,
- 114,97,112,112,101,114,40,0,0,0,0,40,1,0,0,0,
- 117,3,0,0,0,102,120,110,117,29,0,0,0,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,117,11,0,0,0,115,
- 101,116,95,112,97,99,107,97,103,101,236,1,0,0,115,6,
- 0,0,0,0,2,18,7,13,1,117,11,0,0,0,115,101,
- 116,95,112,97,99,107,97,103,101,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,40,3,0,0,0,117,38,0,0,0,
+ 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,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,114,30,0,0,0,114,68,0,
+ 0,0,41,13,114,7,0,0,0,218,5,102,108,97,103,115,
+ 218,8,111,112,116,105,109,105,122,101,218,23,68,69,66,85,
+ 71,95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,
+ 88,69,83,218,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,38,0,0,0,218,9,112,97,114,116,105,116,105,111,110,
+ 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,114,28,0,0,0,218,8,95,80,89,67,
+ 65,67,72,69,41,11,114,35,0,0,0,90,14,100,101,98,
+ 117,103,95,111,118,101,114,114,105,100,101,218,5,100,101,98,
+ 117,103,218,8,115,117,102,102,105,120,101,115,218,4,104,101,
+ 97,100,114,37,0,0,0,218,13,98,97,115,101,95,102,105,
+ 108,101,110,97,109,101,218,3,115,101,112,114,36,0,0,0,
+ 90,3,116,97,103,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,17,
+ 99,97,99,104,101,95,102,114,111,109,95,115,111,117,114,99,
+ 101,133,1,0,0,115,22,0,0,0,0,13,31,1,6,1,
+ 9,2,6,1,18,1,24,1,12,1,12,1,15,1,31,1,
+ 114,118,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,193,0,0,0,116,
+ 0,0,106,1,0,106,2,0,100,1,0,107,8,0,114,33,
+ 0,116,3,0,100,2,0,131,1,0,130,1,0,110,0,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,108,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,110,0,0,124,2,0,106,8,
+ 0,100,4,0,131,1,0,100,5,0,107,3,0,114,153,0,
+ 116,6,0,100,6,0,106,7,0,124,2,0,131,1,0,131,
+ 1,0,130,1,0,110,0,0,124,2,0,106,9,0,100,4,
+ 0,131,1,0,100,7,0,25,125,4,0,116,10,0,124,1,
+ 0,124,4,0,116,11,0,100,7,0,25,23,131,2,0,83,
+ 41,8,97,121,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,
+ 47,46,112,121,111,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,47,46,112,121,111,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,47,46,112,121,111,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,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,102,
+ 0,0,0,114,101,0,0,0,122,28,101,120,112,101,99,116,
+ 101,100,32,111,110,108,121,32,50,32,100,111,116,115,32,105,
+ 110,32,123,33,114,125,114,68,0,0,0,41,12,114,7,0,
+ 0,0,114,108,0,0,0,114,109,0,0,0,114,110,0,0,
+ 0,114,38,0,0,0,114,111,0,0,0,218,10,86,97,108,
+ 117,101,69,114,114,111,114,114,47,0,0,0,114,74,0,0,
+ 0,114,107,0,0,0,114,28,0,0,0,218,15,83,79,85,
+ 82,67,69,95,83,85,70,70,73,88,69,83,41,5,114,35,
+ 0,0,0,114,114,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,114,115,0,0,0,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,160,1,0,0,115,24,
+ 0,0,0,0,9,18,1,15,1,18,1,18,1,12,1,3,
+ 1,24,1,21,1,3,1,21,1,19,1,114,121,0,0,0,
+ 99,1,0,0,0,0,0,0,0,5,0,0,0,13,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,68,
+ 0,0,0,78,114,102,0,0,0,233,3,0,0,0,114,29,
+ 0,0,0,90,2,112,121,233,253,255,255,255,233,255,255,255,
+ 255,114,124,0,0,0,41,7,114,31,0,0,0,114,32,0,
+ 0,0,218,5,108,111,119,101,114,114,121,0,0,0,114,110,
+ 0,0,0,114,119,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,90,4,
+ 114,101,115,116,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,183,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,128,
+ 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,63,0,0,0,121,22,0,
+ 116,0,0,106,1,0,124,0,0,131,1,0,106,2,0,125,
+ 1,0,87,110,24,0,4,116,3,0,107,10,0,114,48,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,4,114,
+ 3,0,0,0,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,202,1,0,0,115,12,
+ 0,0,0,0,2,3,1,22,1,13,1,11,3,10,1,114,
+ 130,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,81,0,0,0,116,0,
+ 0,106,1,0,106,2,0,124,1,0,107,5,0,114,77,0,
+ 124,0,0,106,3,0,100,6,0,131,1,0,115,46,0,100,
+ 3,0,124,0,0,23,125,0,0,110,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,110,0,0,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,132,0,0,0,114,133,0,
+ 0,0,41,7,114,7,0,0,0,114,103,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,218,7,109,101,115,115,97,103,101,114,131,0,0,0,
+ 114,99,0,0,0,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,214,1,0,0,115,8,0,0,0,0,
+ 2,18,1,15,1,13,1,114,138,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,13,95,77,
+ 97,110,97,103,101,82,101,108,111,97,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,218,5,95,110,97,109,101,41,2,
+ 114,76,0,0,0,114,72,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,77,0,0,0,224,1,
+ 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,140,0,0,0,114,7,
+ 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,76,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,9,
+ 95,95,101,110,116,101,114,95,95,227,1,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,12,0,0,0,71,0,
+ 0,0,115,80,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,76,0,
+ 124,0,0,106,1,0,12,114,76,0,121,17,0,116,2,0,
+ 106,3,0,124,0,0,106,4,0,61,87,113,76,0,4,116,
+ 5,0,107,10,0,114,72,0,1,1,1,89,113,76,0,88,
+ 110,0,0,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,4,0,0,0,41,2,114,22,0,0,0,90,3,
+ 97,114,103,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,250,9,60,103,101,110,101,120,112,114,62,231,1,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,142,0,0,0,114,
+ 7,0,0,0,114,141,0,0,0,114,140,0,0,0,114,92,
+ 0,0,0,41,2,114,76,0,0,0,114,99,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,
+ 95,95,101,120,105,116,95,95,230,1,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,6,114,57,0,0,0,114,56,0,0,0,
+ 114,58,0,0,0,114,77,0,0,0,114,143,0,0,0,114,
+ 146,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,139,0,0,0,222,1,0,
+ 0,115,6,0,0,0,12,2,12,3,12,3,114,139,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,
+ 0,0,0,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,135,0,0,102,1,0,100,4,0,100,5,0,134,
+ 0,1,90,4,0,135,0,0,102,1,0,100,6,0,100,7,
+ 0,134,0,0,90,5,0,135,0,0,102,1,0,100,8,0,
+ 100,9,0,134,0,0,90,6,0,135,0,0,83,41,10,218,
+ 14,95,77,111,100,117,108,101,77,97,110,97,103,101,114,122,
+ 122,67,111,110,116,101,120,116,32,109,97,110,97,103,101,114,
+ 32,119,104,105,99,104,32,114,101,116,117,114,110,115,32,116,
+ 104,101,32,109,111,100,117,108,101,32,116,111,32,98,101,32,
+ 108,111,97,100,101,100,46,10,10,32,32,32,32,68,111,101,
+ 115,32,116,104,101,32,112,114,111,112,101,114,32,117,110,108,
+ 111,97,100,105,110,103,32,102,114,111,109,32,115,121,115,46,
+ 109,111,100,117,108,101,115,32,117,112,111,110,32,102,97,105,
+ 108,117,114,101,46,10,10,32,32,32,32,218,10,114,101,115,
+ 101,116,95,110,97,109,101,84,99,2,0,0,0,1,0,0,
+ 0,3,0,0,0,2,0,0,0,3,0,0,0,115,29,0,
+ 0,0,116,0,0,131,0,0,106,1,0,124,1,0,131,1,
+ 0,1,124,2,0,124,0,0,95,2,0,100,1,0,83,41,
+ 2,122,183,80,114,101,112,97,114,101,32,116,104,101,32,99,
+ 111,110,116,101,120,116,32,109,97,110,97,103,101,114,46,10,
+ 10,32,32,32,32,32,32,32,32,84,104,101,32,114,101,115,
+ 101,116,95,110,97,109,101,32,97,114,103,117,109,101,110,116,
+ 32,115,112,101,99,105,102,105,101,115,32,119,104,101,116,104,
+ 101,114,32,116,111,32,117,110,99,111,110,100,105,116,105,111,
+ 110,97,108,108,121,32,114,101,115,101,116,10,32,32,32,32,
+ 32,32,32,32,116,104,101,32,95,95,110,97,109,101,95,95,
+ 32,97,116,116,114,105,98,117,116,101,32,105,102,32,116,104,
+ 101,32,109,111,100,117,108,101,32,105,115,32,102,111,117,110,
+ 100,32,116,111,32,98,101,32,97,32,114,101,108,111,97,100,
+ 46,10,32,32,32,32,32,32,32,32,78,41,3,218,5,115,
+ 117,112,101,114,114,77,0,0,0,218,11,95,114,101,115,101,
+ 116,95,110,97,109,101,41,3,114,76,0,0,0,114,72,0,
+ 0,0,114,148,0,0,0,41,1,218,9,95,95,99,108,97,
+ 115,115,95,95,114,4,0,0,0,114,5,0,0,0,114,77,
+ 0,0,0,247,1,0,0,115,4,0,0,0,0,6,16,1,
+ 122,23,95,77,111,100,117,108,101,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,11,0,0,0,3,0,0,0,115,163,
+ 0,0,0,116,0,0,131,0,0,106,1,0,131,0,0,1,
+ 116,2,0,106,3,0,106,4,0,124,0,0,106,5,0,131,
+ 1,0,124,0,0,95,6,0,124,0,0,106,7,0,115,104,
+ 0,116,8,0,116,9,0,131,1,0,124,0,0,106,5,0,
+ 131,1,0,124,0,0,95,6,0,100,1,0,124,0,0,106,
+ 6,0,95,10,0,124,0,0,106,6,0,116,2,0,106,3,
+ 0,124,0,0,106,5,0,60,110,52,0,124,0,0,106,11,
+ 0,114,156,0,121,19,0,124,0,0,106,5,0,124,0,0,
+ 106,6,0,95,12,0,87,113,156,0,4,116,13,0,107,10,
+ 0,114,152,0,1,1,1,89,113,156,0,88,110,0,0,124,
+ 0,0,106,6,0,83,41,2,78,84,41,14,114,149,0,0,
+ 0,114,143,0,0,0,114,7,0,0,0,114,141,0,0,0,
+ 114,80,0,0,0,114,140,0,0,0,218,7,95,109,111,100,
+ 117,108,101,114,142,0,0,0,218,4,116,121,112,101,114,49,
+ 0,0,0,218,16,95,95,105,110,105,116,105,97,108,105,122,
+ 105,110,103,95,95,114,150,0,0,0,114,57,0,0,0,218,
+ 14,65,116,116,114,105,98,117,116,101,69,114,114,111,114,41,
+ 1,114,76,0,0,0,41,1,114,151,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,143,0,0,0,0,2,0,0,
+ 115,24,0,0,0,0,1,13,1,24,1,9,4,24,3,12,
+ 1,22,1,9,1,3,1,19,1,13,1,8,1,122,24,95,
+ 77,111,100,117,108,101,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,
+ 2,0,0,0,2,0,0,0,7,0,0,0,115,38,0,0,
+ 0,100,1,0,124,0,0,106,0,0,95,1,0,124,0,0,
+ 96,0,0,116,2,0,131,0,0,106,3,0,124,1,0,140,
+ 0,0,1,100,0,0,83,41,2,78,70,41,4,114,152,0,
+ 0,0,114,154,0,0,0,114,149,0,0,0,114,146,0,0,
+ 0,41,2,114,76,0,0,0,114,99,0,0,0,41,1,114,
+ 151,0,0,0,114,4,0,0,0,114,5,0,0,0,114,146,
+ 0,0,0,19,2,0,0,115,6,0,0,0,0,1,12,1,
+ 6,1,122,23,95,77,111,100,117,108,101,77,97,110,97,103,
+ 101,114,46,95,95,101,120,105,116,95,95,41,7,114,57,0,
+ 0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,0,
+ 0,114,77,0,0,0,114,143,0,0,0,114,146,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,41,1,114,151,0,0,
+ 0,114,5,0,0,0,114,147,0,0,0,239,1,0,0,115,
+ 8,0,0,0,12,6,6,2,24,9,18,19,114,147,0,0,
+ 0,114,148,0,0,0,84,99,1,0,0,0,1,0,0,0,
+ 2,0,0,0,4,0,0,0,67,0,0,0,115,16,0,0,
+ 0,116,0,0,124,0,0,100,1,0,124,1,0,131,1,1,
+ 83,41,2,122,138,82,101,116,117,114,110,32,97,32,99,111,
+ 110,116,101,120,116,32,109,97,110,97,103,101,114,32,119,104,
+ 105,99,104,32,112,114,111,118,105,100,101,115,32,116,104,101,
+ 32,109,111,100,117,108,101,32,111,98,106,101,99,116,32,116,
+ 111,32,108,111,97,100,46,10,10,32,32,32,32,73,102,32,
+ 114,101,115,101,116,95,110,97,109,101,32,105,115,32,116,114,
+ 117,101,44,32,114,101,115,101,116,32,116,104,101,32,109,111,
+ 100,117,108,101,39,115,32,95,95,110,97,109,101,95,95,32,
+ 116,111,32,39,110,97,109,101,39,46,10,32,32,32,32,114,
+ 148,0,0,0,41,1,114,147,0,0,0,41,2,114,72,0,
+ 0,0,114,148,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,14,109,111,100,117,108,101,95,116,
+ 111,95,108,111,97,100,25,2,0,0,115,2,0,0,0,0,
+ 6,114,156,0,0,0,99,2,0,0,0,0,0,0,0,4,
+ 0,0,0,11,0,0,0,67,0,0,0,115,102,0,0,0,
+ 124,1,0,106,0,0,125,2,0,121,19,0,124,0,0,106,
+ 1,0,124,2,0,131,1,0,125,3,0,87,110,18,0,4,
+ 116,2,0,107,10,0,114,48,0,1,1,1,89,110,50,0,
+ 88,124,3,0,114,76,0,124,2,0,124,1,0,95,3,0,
+ 103,0,0,124,1,0,95,4,0,110,22,0,124,2,0,106,
+ 5,0,100,1,0,131,1,0,100,2,0,25,124,1,0,95,
+ 3,0,100,3,0,83,41,4,122,68,83,101,116,32,95,95,
+ 112,97,99,107,97,103,101,95,95,32,97,110,100,32,95,95,
+ 112,97,116,104,95,95,32,98,97,115,101,100,32,111,110,32,
+ 119,104,97,116,32,108,111,97,100,101,114,46,105,115,95,112,
+ 97,99,107,97,103,101,40,41,32,115,97,121,115,46,114,102,
+ 0,0,0,114,68,0,0,0,78,41,6,114,57,0,0,0,
+ 218,10,105,115,95,112,97,99,107,97,103,101,218,11,73,109,
+ 112,111,114,116,69,114,114,111,114,218,11,95,95,112,97,99,
+ 107,97,103,101,95,95,218,8,95,95,112,97,116,104,95,95,
+ 114,32,0,0,0,41,4,218,6,108,111,97,100,101,114,218,
+ 6,109,111,100,117,108,101,114,72,0,0,0,114,157,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 218,19,95,105,110,105,116,95,112,97,99,107,97,103,101,95,
+ 97,116,116,114,115,34,2,0,0,115,18,0,0,0,0,2,
+ 9,1,3,1,19,1,13,1,5,2,6,1,9,1,12,2,
+ 114,163,0,0,0,99,2,0,0,0,0,0,0,0,2,0,
+ 0,0,11,0,0,0,67,0,0,0,115,100,0,0,0,121,
+ 25,0,124,0,0,106,0,0,124,1,0,106,1,0,131,1,
+ 0,124,1,0,95,2,0,87,110,18,0,4,116,3,0,107,
+ 10,0,114,45,0,1,1,1,89,110,51,0,88,124,1,0,
+ 106,1,0,124,1,0,106,4,0,107,2,0,114,96,0,124,
+ 1,0,106,5,0,106,6,0,116,7,0,124,1,0,106,2,
+ 0,131,1,0,100,1,0,25,131,1,0,1,110,0,0,100,
+ 2,0,83,41,3,122,57,83,101,116,32,95,95,102,105,108,
+ 101,95,95,32,97,110,100,32,95,95,112,97,116,104,95,95,
+ 32,98,97,115,101,100,32,111,110,32,108,111,97,100,101,114,
+ 46,103,101,116,95,102,105,108,101,110,97,109,101,40,41,46,
+ 114,68,0,0,0,78,41,8,218,12,103,101,116,95,102,105,
+ 108,101,110,97,109,101,114,57,0,0,0,218,8,95,95,102,
+ 105,108,101,95,95,114,158,0,0,0,114,159,0,0,0,114,
+ 160,0,0,0,218,6,97,112,112,101,110,100,114,38,0,0,
+ 0,41,2,114,161,0,0,0,114,162,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,16,95,105,
+ 110,105,116,95,102,105,108,101,95,97,116,116,114,115,49,2,
+ 0,0,115,12,0,0,0,0,2,3,1,25,1,13,1,5,
+ 2,18,1,114,167,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,39,83,101,116,32,95,95,112,
+ 97,99,107,97,103,101,95,95,32,111,110,32,116,104,101,32,
+ 114,101,116,117,114,110,101,100,32,109,111,100,117,108,101,46,
+ 99,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,
+ 0,31,0,0,0,115,101,0,0,0,136,0,0,124,0,0,
+ 124,1,0,142,0,0,125,2,0,116,0,0,124,2,0,100,
+ 1,0,100,0,0,131,3,0,100,0,0,107,8,0,114,97,
+ 0,124,2,0,106,1,0,124,2,0,95,2,0,116,3,0,
+ 124,2,0,100,2,0,131,2,0,115,97,0,124,2,0,106,
+ 2,0,106,4,0,100,3,0,131,1,0,100,4,0,25,124,
+ 2,0,95,2,0,113,97,0,110,0,0,124,2,0,83,41,
+ 5,78,114,159,0,0,0,114,160,0,0,0,114,102,0,0,
+ 0,114,68,0,0,0,41,5,114,62,0,0,0,114,57,0,
+ 0,0,114,159,0,0,0,114,60,0,0,0,114,32,0,0,
+ 0,41,3,114,99,0,0,0,218,6,107,119,97,114,103,115,
+ 114,162,0,0,0,41,1,218,3,102,120,110,114,4,0,0,
+ 0,114,5,0,0,0,218,19,115,101,116,95,112,97,99,107,
+ 97,103,101,95,119,114,97,112,112,101,114,62,2,0,0,115,
+ 12,0,0,0,0,1,15,1,24,1,12,1,15,1,31,1,
+ 122,40,115,101,116,95,112,97,99,107,97,103,101,46,60,108,
+ 111,99,97,108,115,62,46,115,101,116,95,112,97,99,107,97,
+ 103,101,95,119,114,97,112,112,101,114,41,1,114,65,0,0,
+ 0,41,2,114,169,0,0,0,114,170,0,0,0,114,4,0,
+ 0,0,41,1,114,169,0,0,0,114,5,0,0,0,218,11,
+ 115,101,116,95,112,97,99,107,97,103,101,60,2,0,0,115,
+ 6,0,0,0,0,2,18,7,13,1,114,171,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,38,
83,101,116,32,95,95,108,111,97,100,101,114,95,95,32,111,
110,32,116,104,101,32,114,101,116,117,114,110,101,100,32,109,
111,100,117,108,101,46,99,1,0,0,0,0,0,0,0,4,
- 0,0,0,4,0,0,0,31,0,0,0,115,49,0,0,0,
+ 0,0,0,4,0,0,0,31,0,0,0,115,58,0,0,0,
136,0,0,124,0,0,124,1,0,124,2,0,142,1,0,125,
- 3,0,116,0,0,124,3,0,100,1,0,131,2,0,115,45,
- 0,124,0,0,124,3,0,95,1,0,110,0,0,124,3,0,
- 83,40,2,0,0,0,78,117,10,0,0,0,95,95,108,111,
- 97,100,101,114,95,95,40,2,0,0,0,117,7,0,0,0,
- 104,97,115,97,116,116,114,117,10,0,0,0,95,95,108,111,
- 97,100,101,114,95,95,40,4,0,0,0,117,4,0,0,0,
- 115,101,108,102,117,4,0,0,0,97,114,103,115,117,6,0,
- 0,0,107,119,97,114,103,115,117,6,0,0,0,109,111,100,
- 117,108,101,40,1,0,0,0,117,3,0,0,0,102,120,110,
- 40,0,0,0,0,117,29,0,0,0,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,117,18,0,0,0,115,101,116,95,
- 108,111,97,100,101,114,95,119,114,97,112,112,101,114,251,1,
- 0,0,115,8,0,0,0,0,1,18,1,15,1,12,1,117,
- 38,0,0,0,115,101,116,95,108,111,97,100,101,114,46,60,
- 108,111,99,97,108,115,62,46,115,101,116,95,108,111,97,100,
- 101,114,95,119,114,97,112,112,101,114,40,1,0,0,0,117,
- 5,0,0,0,95,119,114,97,112,40,2,0,0,0,117,3,
- 0,0,0,102,120,110,117,18,0,0,0,115,101,116,95,108,
- 111,97,100,101,114,95,119,114,97,112,112,101,114,40,0,0,
- 0,0,40,1,0,0,0,117,3,0,0,0,102,120,110,117,
- 29,0,0,0,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,117,10,0,0,0,115,101,116,95,108,111,97,100,101,114,
- 249,1,0,0,115,6,0,0,0,0,2,18,5,13,1,117,
- 10,0,0,0,115,101,116,95,108,111,97,100,101,114,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,40,3,0,0,0,
- 117,42,3,0,0,68,101,99,111,114,97,116,111,114,32,116,
- 111,32,104,97,110,100,108,101,32,115,101,108,101,99,116,105,
- 110,103,32,116,104,101,32,112,114,111,112,101,114,32,109,111,
- 100,117,108,101,32,102,111,114,32,108,111,97,100,101,114,115,
- 46,10,10,32,32,32,32,84,104,101,32,100,101,99,111,114,
- 97,116,101,100,32,102,117,110,99,116,105,111,110,32,105,115,
- 32,112,97,115,115,101,100,32,116,104,101,32,109,111,100,117,
- 108,101,32,116,111,32,117,115,101,32,105,110,115,116,101,97,
- 100,32,111,102,32,116,104,101,32,109,111,100,117,108,101,10,
- 32,32,32,32,110,97,109,101,46,32,84,104,101,32,109,111,
- 100,117,108,101,32,112,97,115,115,101,100,32,105,110,32,116,
- 111,32,116,104,101,32,102,117,110,99,116,105,111,110,32,105,
- 115,32,101,105,116,104,101,114,32,102,114,111,109,32,115,121,
- 115,46,109,111,100,117,108,101,115,32,105,102,10,32,32,32,
- 32,105,116,32,97,108,114,101,97,100,121,32,101,120,105,115,
- 116,115,32,111,114,32,105,115,32,97,32,110,101,119,32,109,
- 111,100,117,108,101,46,32,73,102,32,116,104,101,32,109,111,
- 100,117,108,101,32,105,115,32,110,101,119,44,32,116,104,101,
- 110,32,95,95,110,97,109,101,95,95,10,32,32,32,32,105,
- 115,32,115,101,116,32,116,104,101,32,102,105,114,115,116,32,
- 97,114,103,117,109,101,110,116,32,116,111,32,116,104,101,32,
- 109,101,116,104,111,100,44,32,95,95,108,111,97,100,101,114,
- 95,95,32,105,115,32,115,101,116,32,116,111,32,115,101,108,
- 102,44,32,97,110,100,10,32,32,32,32,95,95,112,97,99,
- 107,97,103,101,95,95,32,105,115,32,115,101,116,32,97,99,
- 99,111,114,100,105,110,103,108,121,32,40,105,102,32,115,101,
- 108,102,46,105,115,95,112,97,99,107,97,103,101,40,41,32,
- 105,115,32,100,101,102,105,110,101,100,41,32,119,105,108,108,
- 32,98,101,32,115,101,116,10,32,32,32,32,98,101,102,111,
- 114,101,32,105,116,32,105,115,32,112,97,115,115,101,100,32,
- 116,111,32,116,104,101,32,100,101,99,111,114,97,116,101,100,
- 32,102,117,110,99,116,105,111,110,32,40,105,102,32,115,101,
- 108,102,46,105,115,95,112,97,99,107,97,103,101,40,41,32,
- 100,111,101,115,10,32,32,32,32,110,111,116,32,119,111,114,
- 107,32,102,111,114,32,116,104,101,32,109,111,100,117,108,101,
- 32,105,116,32,119,105,108,108,32,98,101,32,115,101,116,32,
- 112,111,115,116,45,108,111,97,100,41,46,10,10,32,32,32,
- 32,73,102,32,97,110,32,101,120,99,101,112,116,105,111,110,
- 32,105,115,32,114,97,105,115,101,100,32,97,110,100,32,116,
- 104,101,32,100,101,99,111,114,97,116,111,114,32,99,114,101,
- 97,116,101,100,32,116,104,101,32,109,111,100,117,108,101,32,
- 105,116,32,105,115,10,32,32,32,32,115,117,98,115,101,113,
- 117,101,110,116,108,121,32,114,101,109,111,118,101,100,32,102,
- 114,111,109,32,115,121,115,46,109,111,100,117,108,101,115,46,
- 10,10,32,32,32,32,84,104,101,32,100,101,99,111,114,97,
- 116,111,114,32,97,115,115,117,109,101,115,32,116,104,97,116,
- 32,116,104,101,32,100,101,99,111,114,97,116,101,100,32,102,
- 117,110,99,116,105,111,110,32,116,97,107,101,115,32,116,104,
- 101,32,109,111,100,117,108,101,32,110,97,109,101,32,97,115,
- 10,32,32,32,32,116,104,101,32,115,101,99,111,110,100,32,
- 97,114,103,117,109,101,110,116,46,10,10,32,32,32,32,99,
- 2,0,0,0,0,0,0,0,7,0,0,0,25,0,0,0,
- 31,0,0,0,115,254,0,0,0,116,0,0,106,1,0,106,
- 2,0,124,1,0,131,1,0,125,4,0,124,4,0,100,0,
- 0,107,9,0,125,5,0,124,5,0,115,168,0,116,4,0,
- 124,1,0,131,1,0,125,4,0,100,3,0,124,4,0,95,
- 6,0,124,4,0,116,0,0,106,1,0,124,1,0,60,124,
- 0,0,124,4,0,95,7,0,121,19,0,124,0,0,106,8,
- 0,124,1,0,131,1,0,125,6,0,87,110,24,0,4,116,
- 9,0,116,10,0,102,2,0,107,10,0,114,124,0,1,1,
- 1,89,113,177,0,88,124,6,0,114,143,0,124,1,0,124,
- 4,0,95,11,0,113,177,0,124,1,0,106,12,0,100,1,
- 0,131,1,0,100,2,0,25,124,4,0,95,11,0,110,9,
- 0,100,3,0,124,4,0,95,6,0,122,60,0,121,23,0,
- 136,0,0,124,0,0,124,4,0,124,2,0,124,3,0,142,
- 2,0,83,87,110,30,0,1,1,1,124,5,0,115,228,0,
- 116,0,0,106,1,0,124,1,0,61,110,0,0,130,0,0,
- 89,110,1,0,88,87,100,0,0,100,4,0,124,4,0,95,
- 6,0,88,100,0,0,83,40,5,0,0,0,78,117,1,0,
- 0,0,46,105,0,0,0,0,84,70,40,14,0,0,0,117,
- 3,0,0,0,115,121,115,117,7,0,0,0,109,111,100,117,
- 108,101,115,117,3,0,0,0,103,101,116,117,4,0,0,0,
- 78,111,110,101,117,10,0,0,0,110,101,119,95,109,111,100,
- 117,108,101,117,4,0,0,0,84,114,117,101,117,16,0,0,
- 0,95,95,105,110,105,116,105,97,108,105,122,105,110,103,95,
- 95,117,10,0,0,0,95,95,108,111,97,100,101,114,95,95,
- 117,10,0,0,0,105,115,95,112,97,99,107,97,103,101,117,
- 11,0,0,0,73,109,112,111,114,116,69,114,114,111,114,117,
- 14,0,0,0,65,116,116,114,105,98,117,116,101,69,114,114,
- 111,114,117,11,0,0,0,95,95,112,97,99,107,97,103,101,
- 95,95,117,10,0,0,0,114,112,97,114,116,105,116,105,111,
- 110,117,5,0,0,0,70,97,108,115,101,40,7,0,0,0,
- 117,4,0,0,0,115,101,108,102,117,8,0,0,0,102,117,
- 108,108,110,97,109,101,117,4,0,0,0,97,114,103,115,117,
- 6,0,0,0,107,119,97,114,103,115,117,6,0,0,0,109,
- 111,100,117,108,101,117,9,0,0,0,105,115,95,114,101,108,
- 111,97,100,117,10,0,0,0,105,115,95,112,97,99,107,97,
- 103,101,40,1,0,0,0,117,3,0,0,0,102,120,110,40,
- 0,0,0,0,117,29,0,0,0,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,117,25,0,0,0,109,111,100,117,108,
- 101,95,102,111,114,95,108,111,97,100,101,114,95,119,114,97,
- 112,112,101,114,22,2,0,0,115,44,0,0,0,0,1,18,
- 1,12,1,6,4,12,3,9,1,13,1,9,1,3,1,19,
- 1,19,1,5,2,6,1,12,2,25,2,9,1,6,2,23,
- 1,3,1,6,1,13,1,12,2,117,52,0,0,0,109,111,
- 100,117,108,101,95,102,111,114,95,108,111,97,100,101,114,46,
- 60,108,111,99,97,108,115,62,46,109,111,100,117,108,101,95,
- 102,111,114,95,108,111,97,100,101,114,95,119,114,97,112,112,
- 101,114,40,1,0,0,0,117,5,0,0,0,95,119,114,97,
- 112,40,2,0,0,0,117,3,0,0,0,102,120,110,117,25,
- 0,0,0,109,111,100,117,108,101,95,102,111,114,95,108,111,
- 97,100,101,114,95,119,114,97,112,112,101,114,40,0,0,0,
- 0,40,1,0,0,0,117,3,0,0,0,102,120,110,117,29,
- 0,0,0,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,
- 117,17,0,0,0,109,111,100,117,108,101,95,102,111,114,95,
- 108,111,97,100,101,114,4,2,0,0,115,6,0,0,0,0,
- 18,18,33,13,1,117,17,0,0,0,109,111,100,117,108,101,
- 95,102,111,114,95,108,111,97,100,101,114,99,1,0,0,0,
- 0,0,0,0,2,0,0,0,4,0,0,0,3,0,0,0,
- 115,38,0,0,0,100,3,0,135,0,0,102,1,0,100,1,
- 0,100,2,0,134,1,0,125,1,0,116,1,0,124,1,0,
- 136,0,0,131,2,0,1,124,1,0,83,40,4,0,0,0,
- 117,252,0,0,0,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,99,2,0,0,0,0,0,0,0,4,0,0,0,5,0,
- 0,0,31,0,0,0,115,83,0,0,0,124,1,0,100,0,
- 0,107,8,0,114,24,0,124,0,0,106,1,0,125,1,0,
- 110,40,0,124,0,0,106,1,0,124,1,0,107,3,0,114,
- 64,0,116,2,0,100,1,0,124,1,0,22,100,2,0,124,
- 1,0,131,1,1,130,1,0,110,0,0,136,0,0,124,0,
- 0,124,1,0,124,2,0,124,3,0,142,2,0,83,40,3,
- 0,0,0,78,117,23,0,0,0,108,111,97,100,101,114,32,
- 99,97,110,110,111,116,32,104,97,110,100,108,101,32,37,115,
- 117,4,0,0,0,110,97,109,101,40,3,0,0,0,117,4,
- 0,0,0,78,111,110,101,117,4,0,0,0,110,97,109,101,
- 117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114,
- 40,4,0,0,0,117,4,0,0,0,115,101,108,102,117,4,
- 0,0,0,110,97,109,101,117,4,0,0,0,97,114,103,115,
- 117,6,0,0,0,107,119,97,114,103,115,40,1,0,0,0,
- 117,6,0,0,0,109,101,116,104,111,100,40,0,0,0,0,
- 117,29,0,0,0,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,117,19,0,0,0,95,99,104,101,99,107,95,110,97,
- 109,101,95,119,114,97,112,112,101,114,67,2,0,0,115,10,
- 0,0,0,0,1,12,1,12,1,15,1,25,1,117,40,0,
- 0,0,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,78,40,2,0,0,0,
- 117,4,0,0,0,78,111,110,101,117,5,0,0,0,95,119,
- 114,97,112,40,2,0,0,0,117,6,0,0,0,109,101,116,
- 104,111,100,117,19,0,0,0,95,99,104,101,99,107,95,110,
- 97,109,101,95,119,114,97,112,112,101,114,40,0,0,0,0,
- 40,1,0,0,0,117,6,0,0,0,109,101,116,104,111,100,
- 117,29,0,0,0,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,117,11,0,0,0,95,99,104,101,99,107,95,110,97,
- 109,101,59,2,0,0,115,6,0,0,0,0,8,21,6,13,
- 1,117,11,0,0,0,95,99,104,101,99,107,95,110,97,109,
- 101,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,40,3,
- 0,0,0,117,49,0,0,0,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,58,
- 0,0,0,124,1,0,116,0,0,106,1,0,107,7,0,114,
- 45,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,110,0,0,
- 136,0,0,124,0,0,124,1,0,131,2,0,83,40,3,0,
- 0,0,78,117,27,0,0,0,123,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,117,4,0,0,0,110,97,109,101,40,4,0,0,
- 0,117,3,0,0,0,115,121,115,117,20,0,0,0,98,117,
- 105,108,116,105,110,95,109,111,100,117,108,101,95,110,97,109,
- 101,115,117,11,0,0,0,73,109,112,111,114,116,69,114,114,
- 111,114,117,6,0,0,0,102,111,114,109,97,116,40,2,0,
- 0,0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,
- 102,117,108,108,110,97,109,101,40,1,0,0,0,117,3,0,
- 0,0,102,120,110,40,0,0,0,0,117,29,0,0,0,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,117,25,0,0,
- 0,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,79,2,0,0,115,8,
- 0,0,0,0,1,15,1,18,1,12,1,117,52,0,0,0,
- 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,40,1,0,0,0,117,5,0,0,0,95,119,
- 114,97,112,40,2,0,0,0,117,3,0,0,0,102,120,110,
- 117,25,0,0,0,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,40,0,
- 0,0,0,40,1,0,0,0,117,3,0,0,0,102,120,110,
- 117,29,0,0,0,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,117,17,0,0,0,95,114,101,113,117,105,114,101,115,
- 95,98,117,105,108,116,105,110,77,2,0,0,115,6,0,0,
- 0,0,2,18,5,13,1,117,17,0,0,0,95,114,101,113,
- 117,105,114,101,115,95,98,117,105,108,116,105,110,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,40,3,0,0,0,117,
- 47,0,0,0,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,58,0,0,0,116,0,0,
- 106,1,0,124,1,0,131,1,0,115,45,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,110,0,0,136,0,0,124,0,0,
- 124,1,0,131,2,0,83,40,3,0,0,0,78,117,25,0,
- 0,0,123,125,32,105,115,32,110,111,116,32,97,32,102,114,
- 111,122,101,110,32,109,111,100,117,108,101,117,4,0,0,0,
- 110,97,109,101,40,4,0,0,0,117,4,0,0,0,95,105,
- 109,112,117,9,0,0,0,105,115,95,102,114,111,122,101,110,
- 117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114,
- 117,6,0,0,0,102,111,114,109,97,116,40,2,0,0,0,
- 117,4,0,0,0,115,101,108,102,117,8,0,0,0,102,117,
- 108,108,110,97,109,101,40,1,0,0,0,117,3,0,0,0,
- 102,120,110,40,0,0,0,0,117,29,0,0,0,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,117,24,0,0,0,95,
- 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95,
- 119,114,97,112,112,101,114,90,2,0,0,115,8,0,0,0,
- 0,1,15,1,18,1,12,1,117,50,0,0,0,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,40,
- 1,0,0,0,117,5,0,0,0,95,119,114,97,112,40,2,
- 0,0,0,117,3,0,0,0,102,120,110,117,24,0,0,0,
- 95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,
- 95,119,114,97,112,112,101,114,40,0,0,0,0,40,1,0,
- 0,0,117,3,0,0,0,102,120,110,117,29,0,0,0,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,117,16,0,0,
- 0,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101,
- 110,88,2,0,0,115,6,0,0,0,0,2,18,5,13,1,
- 117,16,0,0,0,95,114,101,113,117,105,114,101,115,95,102,
- 114,111,122,101,110,99,2,0,0,0,0,0,0,0,5,0,
- 0,0,5,0,0,0,67,0,0,0,115,87,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,3,0,107,8,0,114,83,0,
- 116,2,0,124,3,0,131,1,0,114,83,0,100,1,0,125,
- 4,0,116,3,0,106,4,0,124,4,0,106,5,0,124,3,
- 0,100,2,0,25,131,1,0,116,6,0,131,2,0,1,110,
- 0,0,124,2,0,83,40,4,0,0,0,117,86,0,0,0,
- 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,117,44,0,0,0,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,105,0,0,0,0,78,40,7,0,
- 0,0,117,11,0,0,0,102,105,110,100,95,108,111,97,100,
- 101,114,117,4,0,0,0,78,111,110,101,117,3,0,0,0,
- 108,101,110,117,9,0,0,0,95,119,97,114,110,105,110,103,
- 115,117,4,0,0,0,119,97,114,110,117,6,0,0,0,102,
- 111,114,109,97,116,117,13,0,0,0,73,109,112,111,114,116,
- 87,97,114,110,105,110,103,40,5,0,0,0,117,4,0,0,
- 0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,97,
- 109,101,117,6,0,0,0,108,111,97,100,101,114,117,8,0,
- 0,0,112,111,114,116,105,111,110,115,117,3,0,0,0,109,
- 115,103,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,17,
- 0,0,0,95,102,105,110,100,95,109,111,100,117,108,101,95,
- 115,104,105,109,99,2,0,0,115,10,0,0,0,0,6,21,
- 1,24,1,6,1,32,1,117,17,0,0,0,95,102,105,110,
- 100,95,109,111,100,117,108,101,95,115,104,105,109,99,1,0,
- 0,0,0,0,0,0,1,0,0,0,6,0,0,0,66,0,
- 0,0,115,173,0,0,0,124,0,0,69,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,14,0,100,4,0,100,5,0,132,1,0,131,1,
- 0,90,7,0,101,4,0,101,8,0,101,9,0,101,10,0,
- 100,6,0,100,7,0,132,0,0,131,1,0,131,1,0,131,
- 1,0,131,1,0,90,11,0,101,4,0,101,10,0,100,8,
- 0,100,9,0,132,0,0,131,1,0,131,1,0,90,12,0,
- 101,4,0,101,10,0,100,10,0,100,11,0,132,0,0,131,
- 1,0,131,1,0,90,13,0,101,4,0,101,10,0,100,12,
- 0,100,13,0,132,0,0,131,1,0,131,1,0,90,14,0,
- 100,14,0,83,40,15,0,0,0,117,15,0,0,0,66,117,
- 105,108,116,105,110,73,109,112,111,114,116,101,114,117,144,0,
- 0,0,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,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,40,2,0,0,
- 0,78,117,24,0,0,0,60,109,111,100,117,108,101,32,39,
- 123,125,39,32,40,98,117,105,108,116,45,105,110,41,62,40,
- 2,0,0,0,117,6,0,0,0,102,111,114,109,97,116,117,
- 8,0,0,0,95,95,110,97,109,101,95,95,40,2,0,0,
- 0,117,3,0,0,0,99,108,115,117,6,0,0,0,109,111,
- 100,117,108,101,40,0,0,0,0,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,11,0,0,0,109,111,100,117,108,101,95,114,101,112,114,
- 125,2,0,0,115,2,0,0,0,0,2,117,27,0,0,0,
- 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,99,3,0,0,0,
- 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,
- 115,39,0,0,0,124,2,0,100,1,0,107,9,0,114,16,
- 0,100,1,0,83,116,1,0,106,2,0,124,1,0,131,1,
- 0,114,35,0,124,0,0,83,100,1,0,83,40,2,0,0,
- 0,117,113,0,0,0,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,78,40,3,0,0,0,117,4,0,
- 0,0,78,111,110,101,117,4,0,0,0,95,105,109,112,117,
- 10,0,0,0,105,115,95,98,117,105,108,116,105,110,40,3,
- 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0,
- 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116,
- 104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,11,0,
- 0,0,102,105,110,100,95,109,111,100,117,108,101,129,2,0,
- 0,115,6,0,0,0,0,7,12,1,4,1,117,27,0,0,
- 0,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,3,0,0,0,9,0,0,0,67,0,0,
- 0,115,88,0,0,0,124,1,0,116,0,0,106,1,0,107,
- 6,0,125,2,0,121,20,0,116,2,0,116,3,0,106,4,
- 0,124,1,0,131,2,0,83,87,110,46,0,1,1,1,124,
- 2,0,12,114,76,0,124,1,0,116,0,0,106,1,0,107,
- 6,0,114,76,0,116,0,0,106,1,0,124,1,0,61,110,
- 0,0,130,0,0,89,110,1,0,88,100,1,0,83,40,2,
- 0,0,0,117,23,0,0,0,76,111,97,100,32,97,32,98,
- 117,105,108,116,45,105,110,32,109,111,100,117,108,101,46,78,
- 40,5,0,0,0,117,3,0,0,0,115,121,115,117,7,0,
- 0,0,109,111,100,117,108,101,115,117,25,0,0,0,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,117,4,0,0,0,95,105,109,112,
- 117,12,0,0,0,105,110,105,116,95,98,117,105,108,116,105,
- 110,40,3,0,0,0,117,3,0,0,0,99,108,115,117,8,
- 0,0,0,102,117,108,108,110,97,109,101,117,9,0,0,0,
- 105,115,95,114,101,108,111,97,100,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,11,0,0,0,108,111,97,100,95,109,
- 111,100,117,108,101,140,2,0,0,115,14,0,0,0,0,6,
- 15,1,3,1,20,1,3,1,22,1,13,1,117,27,0,0,
- 0,66,117,105,108,116,105,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,1,0,0,0,67,0,0,
- 0,115,4,0,0,0,100,1,0,83,40,2,0,0,0,117,
- 57,0,0,0,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,40,1,
- 0,0,0,117,4,0,0,0,78,111,110,101,40,2,0,0,
- 0,117,3,0,0,0,99,108,115,117,8,0,0,0,102,117,
- 108,108,110,97,109,101,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,8,0,0,0,103,101,116,95,99,111,100,101,154,
- 2,0,0,115,2,0,0,0,0,4,117,24,0,0,0,66,
+ 3,0,116,0,0,124,3,0,100,1,0,100,0,0,131,3,
+ 0,100,0,0,107,8,0,114,54,0,124,0,0,124,3,0,
+ 95,1,0,110,0,0,124,3,0,83,41,2,78,218,10,95,
+ 95,108,111,97,100,101,114,95,95,41,2,114,62,0,0,0,
+ 114,172,0,0,0,41,4,114,76,0,0,0,114,99,0,0,
+ 0,114,168,0,0,0,114,162,0,0,0,41,1,114,169,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,18,115,101,
+ 116,95,108,111,97,100,101,114,95,119,114,97,112,112,101,114,
+ 75,2,0,0,115,8,0,0,0,0,1,18,1,24,1,12,
+ 1,122,38,115,101,116,95,108,111,97,100,101,114,46,60,108,
+ 111,99,97,108,115,62,46,115,101,116,95,108,111,97,100,101,
+ 114,95,119,114,97,112,112,101,114,41,1,114,65,0,0,0,
+ 41,2,114,169,0,0,0,114,173,0,0,0,114,4,0,0,
+ 0,41,1,114,169,0,0,0,114,5,0,0,0,218,10,115,
+ 101,116,95,108,111,97,100,101,114,73,2,0,0,115,6,0,
+ 0,0,0,2,18,5,13,1,114,174,0,0,0,99,1,0,
+ 0,0,0,0,0,0,2,0,0,0,4,0,0,0,3,0,
+ 0,0,115,38,0,0,0,100,1,0,135,0,0,102,1,0,
+ 100,2,0,100,3,0,134,1,0,125,1,0,116,0,0,124,
+ 1,0,136,0,0,131,2,0,1,124,1,0,83,41,4,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,83,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,40,0,
+ 124,0,0,106,0,0,124,1,0,107,3,0,114,64,0,116,
+ 1,0,100,1,0,124,1,0,22,100,2,0,124,1,0,131,
+ 1,1,130,1,0,110,0,0,136,0,0,124,0,0,124,1,
+ 0,124,2,0,124,3,0,142,2,0,83,41,3,78,122,23,
+ 108,111,97,100,101,114,32,99,97,110,110,111,116,32,104,97,
+ 110,100,108,101,32,37,115,114,72,0,0,0,41,2,114,72,
+ 0,0,0,114,158,0,0,0,41,4,114,76,0,0,0,114,
+ 72,0,0,0,114,99,0,0,0,114,168,0,0,0,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,92,2,0,0,115,10,0,0,0,
+ 0,1,12,1,12,1,15,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,41,1,114,65,0,0,0,41,2,114,175,0,
+ 0,0,114,176,0,0,0,114,4,0,0,0,41,1,114,175,
+ 0,0,0,114,5,0,0,0,218,11,95,99,104,101,99,107,
+ 95,110,97,109,101,84,2,0,0,115,6,0,0,0,0,8,
+ 21,6,13,1,114,177,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,58,0,0,0,124,1,0,116,0,0,106,1,0,107,7,
+ 0,114,45,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,110,
+ 0,0,136,0,0,124,0,0,124,1,0,131,2,0,83,41,
+ 3,78,122,27,123,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,
+ 72,0,0,0,41,4,114,7,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,114,158,0,0,0,114,47,0,0,0,41,2,114,76,0,
+ 0,0,218,8,102,117,108,108,110,97,109,101,41,1,114,169,
+ 0,0,0,114,4,0,0,0,114,5,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,104,2,0,0,115,8,0,0,
+ 0,0,1,15,1,18,1,12,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,65,0,0,0,41,2,114,169,0,0,0,114,180,0,
+ 0,0,114,4,0,0,0,41,1,114,169,0,0,0,114,5,
+ 0,0,0,218,17,95,114,101,113,117,105,114,101,115,95,98,
+ 117,105,108,116,105,110,102,2,0,0,115,6,0,0,0,0,
+ 2,18,5,13,1,114,181,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,
+ 58,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,
+ 115,45,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,110,0,
+ 0,136,0,0,124,0,0,124,1,0,131,2,0,83,41,3,
+ 78,122,25,123,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,72,0,0,
+ 0,41,4,114,95,0,0,0,218,9,105,115,95,102,114,111,
+ 122,101,110,114,158,0,0,0,114,47,0,0,0,41,2,114,
+ 76,0,0,0,114,179,0,0,0,41,1,114,169,0,0,0,
+ 114,4,0,0,0,114,5,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,115,2,0,0,115,8,0,0,0,0,1,15,
+ 1,18,1,12,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,65,0,0,0,
+ 41,2,114,169,0,0,0,114,183,0,0,0,114,4,0,0,
+ 0,41,1,114,169,0,0,0,114,5,0,0,0,218,16,95,
+ 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,113,
+ 2,0,0,115,6,0,0,0,0,2,18,5,13,1,114,184,
+ 0,0,0,99,2,0,0,0,0,0,0,0,5,0,0,0,
+ 5,0,0,0,67,0,0,0,115,87,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,83,0,116,1,
+ 0,124,3,0,131,1,0,114,83,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,110,0,0,
+ 124,2,0,83,41,4,122,86,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,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,68,0,
+ 0,0,41,6,218,11,102,105,110,100,95,108,111,97,100,101,
+ 114,114,31,0,0,0,218,9,95,119,97,114,110,105,110,103,
+ 115,218,4,119,97,114,110,114,47,0,0,0,218,13,73,109,
+ 112,111,114,116,87,97,114,110,105,110,103,41,5,114,76,0,
+ 0,0,114,179,0,0,0,114,161,0,0,0,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,124,2,0,
+ 0,115,10,0,0,0,0,6,21,1,24,1,6,1,32,1,
+ 114,191,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,243,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,62,0,
+ 124,3,0,124,4,0,100,4,0,60,110,0,0,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,124,8,
+ 0,131,1,0,1,116,3,0,124,8,0,124,4,0,141,1,
+ 0,130,1,0,110,116,0,116,4,0,124,6,0,131,1,0,
+ 100,5,0,107,3,0,114,226,0,100,9,0,106,1,0,124,
+ 2,0,131,1,0,125,8,0,116,2,0,124,8,0,131,1,
+ 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,28,1,100,10,0,106,1,0,124,2,0,131,1,0,125,
+ 8,0,116,2,0,124,8,0,131,1,0,1,116,5,0,124,
+ 8,0,131,1,0,130,1,0,110,0,0,124,1,0,100,1,
+ 0,107,9,0,114,229,1,121,20,0,116,6,0,124,1,0,
+ 100,11,0,25,131,1,0,125,9,0,87,110,18,0,4,116,
+ 7,0,107,10,0,114,80,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,
+ 142,1,100,12,0,106,1,0,124,2,0,131,1,0,125,8,
+ 0,116,2,0,124,8,0,131,1,0,1,116,3,0,124,8,
+ 0,124,4,0,141,1,0,130,1,0,110,0,0,121,18,0,
+ 124,1,0,100,13,0,25,100,14,0,64,125,10,0,87,110,
+ 18,0,4,116,7,0,107,10,0,114,180,1,1,1,1,89,
+ 113,229,1,88,116,8,0,124,7,0,131,1,0,124,10,0,
+ 107,3,0,114,229,1,116,3,0,100,12,0,106,1,0,124,
+ 2,0,131,1,0,124,4,0,141,1,0,130,1,0,113,229,
+ 1,110,0,0,124,0,0,100,7,0,100,1,0,133,2,0,
+ 25,83,41,15,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,72,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,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,138,0,0,0,114,158,0,0,0,114,31,0,0,0,
+ 218,8,69,79,70,69,114,114,111,114,114,14,0,0,0,114,
+ 92,0,0,0,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,72,
+ 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,137,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,137,
+ 2,0,0,115,76,0,0,0,0,11,6,1,12,1,13,3,
+ 6,1,12,1,13,1,16,1,16,1,16,1,12,1,18,1,
+ 10,1,18,1,18,1,15,1,10,1,15,1,18,1,15,1,
+ 10,1,15,1,12,1,3,1,20,1,13,1,5,2,18,1,
+ 15,1,10,1,18,1,3,1,18,1,13,1,5,2,18,1,
+ 15,1,15,1,114,201,0,0,0,99,4,0,0,0,0,0,
+ 0,0,5,0,0,0,6,0,0,0,67,0,0,0,115,115,
+ 0,0,0,116,0,0,106,1,0,124,0,0,131,1,0,125,
+ 4,0,116,2,0,124,4,0,116,3,0,131,2,0,114,78,
+ 0,116,4,0,100,1,0,124,2,0,131,2,0,1,124,3,
+ 0,100,2,0,107,9,0,114,74,0,116,5,0,106,6,0,
+ 124,4,0,124,3,0,131,2,0,1,110,0,0,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,72,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,138,0,0,0,
+ 114,95,0,0,0,90,16,95,102,105,120,95,99,111,95,102,
+ 105,108,101,110,97,109,101,114,158,0,0,0,114,47,0,0,
+ 0,41,5,114,53,0,0,0,114,72,0,0,0,114,126,0,
+ 0,0,114,127,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,192,
+ 2,0,0,115,16,0,0,0,0,2,15,1,15,1,13,1,
+ 12,1,19,1,4,2,18,1,114,206,0,0,0,114,68,0,
+ 0,0,99,3,0,0,0,0,0,0,0,4,0,0,0,3,
+ 0,0,0,67,0,0,0,115,76,0,0,0,116,0,0,116,
+ 1,0,131,1,0,125,3,0,124,3,0,106,2,0,116,3,
+ 0,124,1,0,131,1,0,131,1,0,1,124,3,0,106,2,
+ 0,116,3,0,124,2,0,131,1,0,131,1,0,1,124,3,
+ 0,106,2,0,116,4,0,106,5,0,124,0,0,131,1,0,
+ 131,1,0,1,124,3,0,83,41,1,122,80,67,111,109,112,
+ 105,108,101,32,97,32,99,111,100,101,32,111,98,106,101,99,
+ 116,32,105,110,116,111,32,98,121,116,101,99,111,100,101,32,
+ 102,111,114,32,119,114,105,116,105,110,103,32,111,117,116,32,
+ 116,111,32,97,32,98,121,116,101,45,99,111,109,112,105,108,
+ 101,100,10,32,32,32,32,102,105,108,101,46,41,6,218,9,
+ 98,121,116,101,97,114,114,97,121,114,196,0,0,0,218,6,
+ 101,120,116,101,110,100,114,17,0,0,0,114,202,0,0,0,
+ 90,5,100,117,109,112,115,41,4,114,205,0,0,0,114,194,
+ 0,0,0,114,200,0,0,0,114,53,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,17,95,99,
+ 111,100,101,95,116,111,95,98,121,116,101,99,111,100,101,204,
+ 2,0,0,115,10,0,0,0,0,3,12,1,19,1,19,1,
+ 22,1,114,209,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,68,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,210,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,214,2,0,0,115,
+ 10,0,0,0,0,5,12,1,18,1,15,1,18,1,114,214,
+ 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
+ 6,0,0,0,64,0,0,0,115,169,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,100,6,0,132,1,0,
+ 131,1,0,90,6,0,101,4,0,101,7,0,101,8,0,101,
+ 9,0,100,7,0,100,8,0,132,0,0,131,1,0,131,1,
+ 0,131,1,0,131,1,0,90,10,0,101,4,0,101,9,0,
+ 100,9,0,100,10,0,132,0,0,131,1,0,131,1,0,90,
+ 11,0,101,4,0,101,9,0,100,11,0,100,12,0,132,0,
+ 0,131,1,0,131,1,0,90,12,0,101,4,0,101,9,0,
+ 100,13,0,100,14,0,132,0,0,131,1,0,131,1,0,90,
+ 13,0,100,4,0,83,41,15,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,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,78,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,47,0,0,0,114,57,0,0,0,41,2,
+ 218,3,99,108,115,114,162,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,237,2,0,0,115,2,0,0,0,0,
+ 2,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,
+ 3,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,
+ 67,0,0,0,115,39,0,0,0,124,2,0,100,1,0,107,
+ 9,0,114,16,0,100,1,0,83,116,0,0,106,1,0,124,
+ 1,0,131,1,0,114,35,0,124,0,0,83,100,1,0,83,
+ 41,2,122,113,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,78,41,2,114,95,0,0,0,90,10,105,
+ 115,95,98,117,105,108,116,105,110,41,3,114,216,0,0,0,
+ 114,179,0,0,0,114,35,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,241,2,0,0,115,6,0,0,0,0,
+ 7,12,1,4,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,10,
+ 0,0,0,67,0,0,0,115,39,0,0,0,116,0,0,124,
+ 1,0,131,1,0,143,21,0,1,116,1,0,116,2,0,106,
+ 3,0,124,1,0,131,2,0,83,87,100,1,0,81,88,100,
+ 1,0,83,41,2,122,23,76,111,97,100,32,97,32,98,117,
+ 105,108,116,45,105,110,32,109,111,100,117,108,101,46,78,41,
+ 4,114,139,0,0,0,114,100,0,0,0,114,95,0,0,0,
+ 90,12,105,110,105,116,95,98,117,105,108,116,105,110,41,2,
+ 114,216,0,0,0,114,179,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,252,2,0,0,115,4,0,0,0,0,
+ 6,13,1,122,27,66,117,105,108,116,105,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,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,4,0,0,
+ 0,41,2,114,216,0,0,0,114,179,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,218,8,103,101,
+ 116,95,99,111,100,101,5,3,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,4,0,0,0,41,2,114,216,0,
+ 0,0,114,179,0,0,0,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,11,3,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,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,40,2,0,0,0,117,56,0,0,0,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,40,1,0,0,0,117,4,0,
- 0,0,78,111,110,101,40,2,0,0,0,117,3,0,0,0,
- 99,108,115,117,8,0,0,0,102,117,108,108,110,97,109,101,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,
- 0,103,101,116,95,115,111,117,114,99,101,160,2,0,0,115,
- 2,0,0,0,0,4,117,26,0,0,0,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,0,83,40,2,0,0,0,117,52,0,0,0,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,40,1,0,0,0,117,5,0,0,0,70,97,108,115,
- 101,40,2,0,0,0,117,3,0,0,0,99,108,115,117,8,
- 0,0,0,102,117,108,108,110,97,109,101,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,105,115,95,112,
- 97,99,107,97,103,101,166,2,0,0,115,2,0,0,0,0,
- 4,117,26,0,0,0,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,
- 78,40,15,0,0,0,117,8,0,0,0,95,95,110,97,109,
- 101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,101,
- 95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,109,
- 101,95,95,117,7,0,0,0,95,95,100,111,99,95,95,117,
- 11,0,0,0,99,108,97,115,115,109,101,116,104,111,100,117,
- 11,0,0,0,109,111,100,117,108,101,95,114,101,112,114,117,
- 4,0,0,0,78,111,110,101,117,11,0,0,0,102,105,110,
- 100,95,109,111,100,117,108,101,117,11,0,0,0,115,101,116,
- 95,112,97,99,107,97,103,101,117,10,0,0,0,115,101,116,
- 95,108,111,97,100,101,114,117,17,0,0,0,95,114,101,113,
- 117,105,114,101,115,95,98,117,105,108,116,105,110,117,11,0,
- 0,0,108,111,97,100,95,109,111,100,117,108,101,117,8,0,
- 0,0,103,101,116,95,99,111,100,101,117,10,0,0,0,103,
- 101,116,95,115,111,117,114,99,101,117,10,0,0,0,105,115,
- 95,112,97,99,107,97,103,101,40,1,0,0,0,117,10,0,
- 0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,15,0,0,0,66,117,105,
- 108,116,105,110,73,109,112,111,114,116,101,114,116,2,0,0,
- 115,28,0,0,0,16,7,6,2,18,4,3,1,18,10,3,
- 1,3,1,3,1,27,11,3,1,21,5,3,1,21,5,3,
- 1,117,15,0,0,0,66,117,105,108,116,105,110,73,109,112,
- 111,114,116,101,114,99,1,0,0,0,0,0,0,0,1,0,
- 0,0,6,0,0,0,66,0,0,0,115,173,0,0,0,124,
- 0,0,69,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,14,0,100,4,0,
- 100,5,0,132,1,0,131,1,0,90,7,0,101,4,0,101,
- 8,0,101,9,0,101,10,0,100,6,0,100,7,0,132,0,
- 0,131,1,0,131,1,0,131,1,0,131,1,0,90,11,0,
- 101,4,0,101,10,0,100,8,0,100,9,0,132,0,0,131,
- 1,0,131,1,0,90,12,0,101,4,0,101,10,0,100,10,
- 0,100,11,0,132,0,0,131,1,0,131,1,0,90,13,0,
- 101,4,0,101,10,0,100,12,0,100,13,0,132,0,0,131,
- 1,0,131,1,0,90,14,0,100,14,0,83,40,15,0,0,
- 0,117,14,0,0,0,70,114,111,122,101,110,73,109,112,111,
- 114,116,101,114,117,142,0,0,0,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,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,40,2,0,0,0,78,117,22,0,0,0,60,109,111,100,
- 117,108,101,32,39,123,125,39,32,40,102,114,111,122,101,110,
- 41,62,40,2,0,0,0,117,6,0,0,0,102,111,114,109,
- 97,116,117,8,0,0,0,95,95,110,97,109,101,95,95,40,
- 2,0,0,0,117,3,0,0,0,99,108,115,117,1,0,0,
- 0,109,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,11,
- 0,0,0,109,111,100,117,108,101,95,114,101,112,114,182,2,
- 0,0,115,2,0,0,0,0,2,117,26,0,0,0,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,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,40,2,0,0,0,117,21,
- 0,0,0,70,105,110,100,32,97,32,102,114,111,122,101,110,
- 32,109,111,100,117,108,101,46,78,40,3,0,0,0,117,4,
- 0,0,0,95,105,109,112,117,9,0,0,0,105,115,95,102,
- 114,111,122,101,110,117,4,0,0,0,78,111,110,101,40,3,
- 0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,0,
- 102,117,108,108,110,97,109,101,117,4,0,0,0,112,97,116,
- 104,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,11,0,
- 0,0,102,105,110,100,95,109,111,100,117,108,101,186,2,0,
- 0,115,2,0,0,0,0,3,117,26,0,0,0,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,
- 4,0,0,0,9,0,0,0,67,0,0,0,115,100,0,0,
- 0,124,1,0,116,0,0,106,1,0,107,6,0,125,2,0,
- 121,32,0,116,2,0,116,3,0,106,4,0,124,1,0,131,
- 2,0,125,3,0,124,3,0,96,5,0,124,3,0,83,87,
- 110,46,0,1,1,1,124,2,0,12,114,88,0,124,1,0,
- 116,0,0,106,1,0,107,6,0,114,88,0,116,0,0,106,
- 1,0,124,1,0,61,110,0,0,130,0,0,89,110,1,0,
- 88,100,1,0,83,40,2,0,0,0,117,21,0,0,0,76,
+ 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,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,4,0,0,0,41,2,114,216,0,0,0,114,179,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,157,0,0,0,17,3,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,14,114,57,
+ 0,0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,
+ 0,0,218,11,99,108,97,115,115,109,101,116,104,111,100,114,
+ 217,0,0,0,114,218,0,0,0,114,171,0,0,0,114,174,
+ 0,0,0,114,181,0,0,0,114,219,0,0,0,114,220,0,
+ 0,0,114,221,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,215,0,0,0,228,2,0,0,115,28,0,0,0,12,7,
+ 6,2,18,4,3,1,18,10,3,1,3,1,3,1,27,6,
+ 3,1,21,5,3,1,21,5,3,1,114,215,0,0,0,99,
+ 0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,
+ 64,0,0,0,115,169,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,100,6,0,132,1,0,131,1,0,90,
+ 6,0,101,4,0,101,7,0,101,8,0,101,9,0,100,7,
+ 0,100,8,0,132,0,0,131,1,0,131,1,0,131,1,0,
+ 131,1,0,90,10,0,101,4,0,101,9,0,100,9,0,100,
+ 10,0,132,0,0,131,1,0,131,1,0,90,11,0,101,4,
+ 0,101,9,0,100,11,0,100,12,0,132,0,0,131,1,0,
+ 131,1,0,90,12,0,101,4,0,101,9,0,100,13,0,100,
+ 14,0,132,0,0,131,1,0,131,1,0,90,13,0,100,4,
+ 0,83,41,15,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,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,
+ 78,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,47,0,0,0,
+ 114,57,0,0,0,41,2,114,216,0,0,0,218,1,109,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,217,
+ 0,0,0,33,3,0,0,115,2,0,0,0,0,2,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,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,21,
+ 70,105,110,100,32,97,32,102,114,111,122,101,110,32,109,111,
+ 100,117,108,101,46,78,41,2,114,95,0,0,0,114,182,0,
+ 0,0,41,3,114,216,0,0,0,114,179,0,0,0,114,35,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,218,0,0,0,37,3,0,0,115,2,0,0,0,
+ 0,3,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,3,0,0,0,10,0,0,0,67,
+ 0,0,0,115,51,0,0,0,116,0,0,124,1,0,131,1,
+ 0,143,33,0,1,116,1,0,116,2,0,106,3,0,124,1,
+ 0,131,2,0,125,2,0,124,2,0,96,4,0,124,2,0,
+ 83,87,100,1,0,81,88,100,1,0,83,41,2,122,21,76,
111,97,100,32,97,32,102,114,111,122,101,110,32,109,111,100,
- 117,108,101,46,78,40,6,0,0,0,117,3,0,0,0,115,
- 121,115,117,7,0,0,0,109,111,100,117,108,101,115,117,25,
- 0,0,0,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,117,4,0,0,
- 0,95,105,109,112,117,11,0,0,0,105,110,105,116,95,102,
- 114,111,122,101,110,117,8,0,0,0,95,95,102,105,108,101,
- 95,95,40,4,0,0,0,117,3,0,0,0,99,108,115,117,
- 8,0,0,0,102,117,108,108,110,97,109,101,117,9,0,0,
- 0,105,115,95,114,101,108,111,97,100,117,1,0,0,0,109,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,
- 0,108,111,97,100,95,109,111,100,117,108,101,191,2,0,0,
- 115,18,0,0,0,0,6,15,1,3,1,18,2,6,1,8,
- 1,3,1,22,1,13,1,117,26,0,0,0,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,40,1,0,
- 0,0,117,45,0,0,0,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,40,2,0,0,0,117,4,0,0,0,95,105,
- 109,112,117,17,0,0,0,103,101,116,95,102,114,111,122,101,
- 110,95,111,98,106,101,99,116,40,2,0,0,0,117,3,0,
- 0,0,99,108,115,117,8,0,0,0,102,117,108,108,110,97,
- 109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,8,
- 0,0,0,103,101,116,95,99,111,100,101,208,2,0,0,115,
- 2,0,0,0,0,4,117,23,0,0,0,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,
- 40,2,0,0,0,117,54,0,0,0,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,40,1,0,0,0,117,4,0,0,0,78,111,110,101,40,
- 2,0,0,0,117,3,0,0,0,99,108,115,117,8,0,0,
- 0,102,117,108,108,110,97,109,101,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,10,0,0,0,103,101,116,95,115,111,
- 117,114,99,101,214,2,0,0,115,2,0,0,0,0,4,117,
- 25,0,0,0,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,40,1,0,0,0,117,46,0,0,0,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,40,2,0,0,
- 0,117,4,0,0,0,95,105,109,112,117,17,0,0,0,105,
- 115,95,102,114,111,122,101,110,95,112,97,99,107,97,103,101,
- 40,2,0,0,0,117,3,0,0,0,99,108,115,117,8,0,
- 0,0,102,117,108,108,110,97,109,101,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,105,115,95,112,97,
- 99,107,97,103,101,220,2,0,0,115,2,0,0,0,0,4,
- 117,25,0,0,0,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,78,40,
- 15,0,0,0,117,8,0,0,0,95,95,110,97,109,101,95,
- 95,117,10,0,0,0,95,95,109,111,100,117,108,101,95,95,
- 117,12,0,0,0,95,95,113,117,97,108,110,97,109,101,95,
- 95,117,7,0,0,0,95,95,100,111,99,95,95,117,11,0,
- 0,0,99,108,97,115,115,109,101,116,104,111,100,117,11,0,
- 0,0,109,111,100,117,108,101,95,114,101,112,114,117,4,0,
- 0,0,78,111,110,101,117,11,0,0,0,102,105,110,100,95,
- 109,111,100,117,108,101,117,11,0,0,0,115,101,116,95,112,
- 97,99,107,97,103,101,117,10,0,0,0,115,101,116,95,108,
- 111,97,100,101,114,117,16,0,0,0,95,114,101,113,117,105,
- 114,101,115,95,102,114,111,122,101,110,117,11,0,0,0,108,
- 111,97,100,95,109,111,100,117,108,101,117,8,0,0,0,103,
- 101,116,95,99,111,100,101,117,10,0,0,0,103,101,116,95,
- 115,111,117,114,99,101,117,10,0,0,0,105,115,95,112,97,
- 99,107,97,103,101,40,1,0,0,0,117,10,0,0,0,95,
- 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,14,0,0,0,70,114,111,122,101,110,
- 73,109,112,111,114,116,101,114,173,2,0,0,115,28,0,0,
- 0,16,7,6,2,18,4,3,1,18,4,3,1,3,1,3,
- 1,27,14,3,1,21,5,3,1,21,5,3,1,117,14,0,
- 0,0,70,114,111,122,101,110,73,109,112,111,114,116,101,114,
- 99,1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,
- 0,66,0,0,0,115,101,0,0,0,124,0,0,69,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,11,0,90,
- 7,0,101,8,0,100,4,0,100,5,0,132,0,0,131,1,
- 0,90,9,0,101,8,0,100,6,0,100,7,0,132,0,0,
- 131,1,0,90,10,0,101,8,0,100,10,0,100,8,0,100,
- 9,0,132,1,0,131,1,0,90,12,0,100,10,0,83,40,
- 12,0,0,0,117,21,0,0,0,87,105,110,100,111,119,115,
- 82,101,103,105,115,116,114,121,70,105,110,100,101,114,117,67,
- 0,0,0,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,10,32,32,32,32,117,59,0,0,0,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,117,65,0,0,0,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,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,40,1,0,0,0,78,40,
- 5,0,0,0,117,7,0,0,0,95,119,105,110,114,101,103,
- 117,7,0,0,0,79,112,101,110,75,101,121,117,17,0,0,
- 0,72,75,69,89,95,67,85,82,82,69,78,84,95,85,83,
- 69,82,117,12,0,0,0,87,105,110,100,111,119,115,69,114,
- 114,111,114,117,18,0,0,0,72,75,69,89,95,76,79,67,
- 65,76,95,77,65,67,72,73,78,69,40,2,0,0,0,117,
- 3,0,0,0,99,108,115,117,3,0,0,0,107,101,121,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,14,0,0,0,
- 95,111,112,101,110,95,114,101,103,105,115,116,114,121,240,2,
- 0,0,115,8,0,0,0,0,2,3,1,23,1,13,1,117,
- 36,0,0,0,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,142,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,46,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,88,87,110,22,0,4,116,9,0,107,10,0,114,137,0,
- 1,1,1,100,0,0,83,89,110,1,0,88,124,5,0,83,
- 40,5,0,0,0,78,117,8,0,0,0,102,117,108,108,110,
- 97,109,101,117,11,0,0,0,115,121,115,95,118,101,114,115,
- 105,111,110,105,3,0,0,0,117,0,0,0,0,40,11,0,
- 0,0,117,11,0,0,0,68,69,66,85,71,95,66,85,73,
- 76,68,117,18,0,0,0,82,69,71,73,83,84,82,89,95,
- 75,69,89,95,68,69,66,85,71,117,12,0,0,0,82,69,
- 71,73,83,84,82,89,95,75,69,89,117,6,0,0,0,102,
- 111,114,109,97,116,117,3,0,0,0,115,121,115,117,7,0,
- 0,0,118,101,114,115,105,111,110,117,14,0,0,0,95,111,
- 112,101,110,95,114,101,103,105,115,116,114,121,117,7,0,0,
- 0,95,119,105,110,114,101,103,117,10,0,0,0,81,117,101,
- 114,121,86,97,108,117,101,117,12,0,0,0,87,105,110,100,
- 111,119,115,69,114,114,111,114,117,4,0,0,0,78,111,110,
- 101,40,6,0,0,0,117,3,0,0,0,99,108,115,117,8,
- 0,0,0,102,117,108,108,110,97,109,101,117,12,0,0,0,
- 114,101,103,105,115,116,114,121,95,107,101,121,117,3,0,0,
- 0,107,101,121,117,4,0,0,0,104,107,101,121,117,8,0,
- 0,0,102,105,108,101,112,97,116,104,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,16,0,0,0,95,115,101,97,114,
- 99,104,95,114,101,103,105,115,116,114,121,247,2,0,0,115,
- 22,0,0,0,0,2,9,1,12,2,9,1,15,1,22,1,
- 3,1,18,1,28,1,13,1,9,1,117,38,0,0,0,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,99,3,0,0,0,0,0,0,0,6,0,
- 0,0,12,0,0,0,67,0,0,0,115,137,0,0,0,124,
- 0,0,106,0,0,124,1,0,131,1,0,125,3,0,124,3,
- 0,100,1,0,107,8,0,114,31,0,100,1,0,83,121,17,
- 0,116,2,0,106,3,0,124,3,0,131,1,0,1,87,110,
- 22,0,4,116,4,0,107,10,0,114,72,0,1,1,1,100,
- 1,0,83,89,110,1,0,88,120,57,0,116,5,0,131,0,
- 0,68,93,46,0,92,2,0,125,4,0,125,5,0,124,3,
- 0,106,6,0,116,7,0,124,5,0,131,1,0,131,1,0,
- 114,83,0,124,4,0,124,1,0,124,3,0,131,2,0,83,
- 113,83,0,87,100,1,0,83,40,2,0,0,0,117,34,0,
- 0,0,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,78,40,8,0,0,0,117,16,0,0,0,95,
- 115,101,97,114,99,104,95,114,101,103,105,115,116,114,121,117,
- 4,0,0,0,78,111,110,101,117,3,0,0,0,95,111,115,
- 117,4,0,0,0,115,116,97,116,117,7,0,0,0,79,83,
- 69,114,114,111,114,117,27,0,0,0,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,117,8,0,0,0,101,110,100,115,119,105,
- 116,104,117,5,0,0,0,116,117,112,108,101,40,6,0,0,
- 0,117,3,0,0,0,99,108,115,117,8,0,0,0,102,117,
- 108,108,110,97,109,101,117,4,0,0,0,112,97,116,104,117,
- 8,0,0,0,102,105,108,101,112,97,116,104,117,6,0,0,
- 0,108,111,97,100,101,114,117,8,0,0,0,115,117,102,102,
- 105,120,101,115,40,0,0,0,0,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,11,0,0,0,102,105,110,100,95,109,111,100,117,108,101,
- 6,3,0,0,115,20,0,0,0,0,3,15,1,12,1,4,
- 1,3,1,17,1,13,1,9,1,22,1,21,1,117,33,0,
- 0,0,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,78,70,40,13,0,0,0,117,8,0,0,0,95,
- 95,110,97,109,101,95,95,117,10,0,0,0,95,95,109,111,
- 100,117,108,101,95,95,117,12,0,0,0,95,95,113,117,97,
- 108,110,97,109,101,95,95,117,7,0,0,0,95,95,100,111,
- 99,95,95,117,12,0,0,0,82,69,71,73,83,84,82,89,
- 95,75,69,89,117,18,0,0,0,82,69,71,73,83,84,82,
- 89,95,75,69,89,95,68,69,66,85,71,117,5,0,0,0,
- 70,97,108,115,101,117,11,0,0,0,68,69,66,85,71,95,
- 66,85,73,76,68,117,11,0,0,0,99,108,97,115,115,109,
- 101,116,104,111,100,117,14,0,0,0,95,111,112,101,110,95,
- 114,101,103,105,115,116,114,121,117,16,0,0,0,95,115,101,
- 97,114,99,104,95,114,101,103,105,115,116,114,121,117,4,0,
- 0,0,78,111,110,101,117,11,0,0,0,102,105,110,100,95,
- 109,111,100,117,108,101,40,1,0,0,0,117,10,0,0,0,
- 95,95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,21,0,0,0,87,105,110,100,111,
+ 117,108,101,46,78,41,5,114,139,0,0,0,114,100,0,0,
+ 0,114,95,0,0,0,90,11,105,110,105,116,95,102,114,111,
+ 122,101,110,114,165,0,0,0,41,3,114,216,0,0,0,114,
+ 179,0,0,0,114,224,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,219,0,0,0,42,3,0,
+ 0,115,8,0,0,0,0,6,13,1,18,2,6,1,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,95,0,0,0,90,17,103,101,116,95,102,
+ 114,111,122,101,110,95,111,98,106,101,99,116,41,2,114,216,
+ 0,0,0,114,179,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,220,0,0,0,54,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,4,0,0,0,41,2,
+ 114,216,0,0,0,114,179,0,0,0,114,4,0,0,0,114,
+ 4,0,0,0,114,5,0,0,0,114,221,0,0,0,60,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,
+ 95,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,216,0,0,0,114,179,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,157,0,0,0,66,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,14,114,
+ 57,0,0,0,114,56,0,0,0,114,58,0,0,0,114,59,
+ 0,0,0,114,222,0,0,0,114,217,0,0,0,114,218,0,
+ 0,0,114,171,0,0,0,114,174,0,0,0,114,184,0,0,
+ 0,114,219,0,0,0,114,220,0,0,0,114,221,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,223,0,0,0,24,3,
+ 0,0,115,28,0,0,0,12,7,6,2,18,4,3,1,18,
+ 4,3,1,3,1,3,1,27,9,3,1,21,5,3,1,21,
+ 5,3,1,114,223,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,97,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,10,0,100,11,0,132,1,0,131,1,0,90,10,0,100,
+ 9,0,83,41,12,218,21,87,105,110,100,111,119,115,82,101,
+ 103,105,115,116,114,121,70,105,110,100,101,114,122,67,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,10,32,32,32,
+ 32,122,59,83,111,102,116,119,97,114,101,92,80,121,116,104,
+ 111,110,92,80,121,116,104,111,110,67,111,114,101,92,123,115,
+ 121,115,95,118,101,114,115,105,111,110,125,92,77,111,100,117,
+ 108,101,115,92,123,102,117,108,108,110,97,109,101,125,122,65,
+ 83,111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,
+ 80,121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,
+ 118,101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,
+ 92,123,102,117,108,108,110,97,109,101,125,92,68,101,98,117,
+ 103,70,99,2,0,0,0,0,0,0,0,2,0,0,0,11,
+ 0,0,0,67,0,0,0,115,67,0,0,0,121,23,0,116,
+ 0,0,106,1,0,116,0,0,106,2,0,124,1,0,131,2,
+ 0,83,87,110,37,0,4,116,3,0,107,10,0,114,62,0,
+ 1,1,1,116,0,0,106,1,0,116,0,0,106,4,0,124,
+ 1,0,131,2,0,83,89,110,1,0,88,100,0,0,83,41,
+ 1,78,41,5,218,7,95,119,105,110,114,101,103,90,7,79,
+ 112,101,110,75,101,121,90,17,72,75,69,89,95,67,85,82,
+ 82,69,78,84,95,85,83,69,82,114,40,0,0,0,90,18,
+ 72,75,69,89,95,76,79,67,65,76,95,77,65,67,72,73,
+ 78,69,41,2,114,216,0,0,0,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,86,3,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,142,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,46,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,88,87,110,
+ 22,0,4,116,9,0,107,10,0,114,137,0,1,1,1,100,
+ 0,0,83,89,110,1,0,88,124,5,0,83,41,5,78,114,
+ 179,0,0,0,90,11,115,121,115,95,118,101,114,115,105,111,
+ 110,114,122,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,
+ 228,0,0,0,114,226,0,0,0,90,10,81,117,101,114,121,
+ 86,97,108,117,101,114,40,0,0,0,41,6,114,216,0,0,
+ 0,114,179,0,0,0,90,12,114,101,103,105,115,116,114,121,
+ 95,107,101,121,114,227,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,93,3,0,0,115,22,
+ 0,0,0,0,2,9,1,12,2,9,1,15,1,22,1,3,
+ 1,18,1,28,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,
- 227,2,0,0,115,16,0,0,0,16,3,6,3,6,3,6,
- 2,6,2,18,7,18,15,3,1,117,21,0,0,0,87,105,
- 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,
- 100,101,114,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 5,0,0,0,66,0,0,0,115,74,0,0,0,124,0,0,
- 69,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,100,6,
- 0,100,10,0,100,7,0,100,8,0,132,0,1,131,1,0,
- 90,8,0,100,9,0,83,40,11,0,0,0,117,13,0,0,
- 0,95,76,111,97,100,101,114,66,97,115,105,99,115,117,83,
- 0,0,0,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,40,6,0,0,0,117,141,0,
- 0,0,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,105,
- 1,0,0,0,117,1,0,0,0,46,105,0,0,0,0,105,
- 2,0,0,0,117,8,0,0,0,95,95,105,110,105,116,95,
- 95,40,4,0,0,0,117,11,0,0,0,95,112,97,116,104,
- 95,115,112,108,105,116,117,12,0,0,0,103,101,116,95,102,
- 105,108,101,110,97,109,101,117,6,0,0,0,114,115,112,108,
- 105,116,117,10,0,0,0,114,112,97,114,116,105,116,105,111,
- 110,40,5,0,0,0,117,4,0,0,0,115,101,108,102,117,
- 8,0,0,0,102,117,108,108,110,97,109,101,117,8,0,0,
- 0,102,105,108,101,110,97,109,101,117,13,0,0,0,102,105,
- 108,101,110,97,109,101,95,98,97,115,101,117,9,0,0,0,
- 116,97,105,108,95,110,97,109,101,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,10,0,0,0,105,115,95,112,97,99,
- 107,97,103,101,26,3,0,0,115,8,0,0,0,0,3,25,
- 1,22,1,19,1,117,24,0,0,0,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,5,0,0,0,0,0,0,0,12,0,0,0,22,
- 0,0,0,67,0,0,0,115,208,1,0,0,124,2,0,100,
- 1,0,100,2,0,133,2,0,25,125,5,0,124,2,0,100,
- 2,0,100,3,0,133,2,0,25,125,6,0,124,2,0,100,
- 3,0,100,4,0,133,2,0,25,125,7,0,124,5,0,116,
- 0,0,107,3,0,114,115,0,100,5,0,106,1,0,124,1,
- 0,124,5,0,131,2,0,125,8,0,116,2,0,124,8,0,
- 131,1,0,1,116,3,0,124,8,0,100,6,0,124,1,0,
- 100,7,0,124,3,0,131,1,2,130,1,0,110,116,0,116,
- 4,0,124,6,0,131,1,0,100,2,0,107,3,0,114,173,
- 0,100,8,0,106,1,0,124,1,0,131,1,0,125,9,0,
- 116,2,0,124,9,0,131,1,0,1,116,5,0,124,9,0,
- 131,1,0,130,1,0,110,58,0,116,4,0,124,7,0,131,
- 1,0,100,2,0,107,3,0,114,231,0,100,9,0,106,1,
- 0,124,1,0,131,1,0,125,9,0,116,2,0,124,9,0,
- 131,1,0,1,116,5,0,124,9,0,131,1,0,130,1,0,
- 110,0,0,124,4,0,100,1,0,107,9,0,114,194,1,121,
- 20,0,116,7,0,124,4,0,100,10,0,25,131,1,0,125,
- 10,0,87,110,18,0,4,116,8,0,107,10,0,114,27,1,
- 1,1,1,89,110,71,0,88,116,9,0,124,6,0,131,1,
- 0,124,10,0,107,3,0,114,98,1,100,11,0,106,1,0,
- 124,1,0,131,1,0,125,9,0,116,2,0,124,9,0,131,
- 1,0,1,116,3,0,124,9,0,100,6,0,124,1,0,100,
- 7,0,124,3,0,131,1,2,130,1,0,110,0,0,121,18,
- 0,124,4,0,100,12,0,25,100,13,0,64,125,11,0,87,
- 110,18,0,4,116,8,0,107,10,0,114,136,1,1,1,1,
- 89,113,194,1,88,116,9,0,124,7,0,131,1,0,124,11,
- 0,107,3,0,114,194,1,116,3,0,100,11,0,106,1,0,
- 124,1,0,131,1,0,100,6,0,124,1,0,100,7,0,124,
- 3,0,131,1,2,130,1,0,113,194,1,110,0,0,124,2,
- 0,100,4,0,100,1,0,133,2,0,25,83,40,14,0,0,
- 0,117,193,0,0,0,82,101,116,117,114,110,32,116,104,101,
- 32,109,97,114,115,104,97,108,108,101,100,32,98,121,116,101,
- 115,32,102,114,111,109,32,98,121,116,101,99,111,100,101,44,
- 32,118,101,114,105,102,121,105,110,103,32,116,104,101,32,109,
- 97,103,105,99,10,32,32,32,32,32,32,32,32,110,117,109,
- 98,101,114,44,32,116,105,109,101,115,116,97,109,112,32,97,
- 110,100,32,115,111,117,114,99,101,32,115,105,122,101,32,97,
- 108,111,110,103,32,116,104,101,32,119,97,121,46,10,10,32,
- 32,32,32,32,32,32,32,73,102,32,115,111,117,114,99,101,
- 95,115,116,97,116,115,32,105,115,32,78,111,110,101,32,116,
- 104,101,110,32,115,107,105,112,32,116,104,101,32,116,105,109,
- 101,115,116,97,109,112,32,99,104,101,99,107,46,10,10,32,
- 32,32,32,32,32,32,32,78,105,4,0,0,0,105,8,0,
- 0,0,105,12,0,0,0,117,30,0,0,0,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,117,4,0,0,0,110,
- 97,109,101,117,4,0,0,0,112,97,116,104,117,19,0,0,
- 0,98,97,100,32,116,105,109,101,115,116,97,109,112,32,105,
- 110,32,123,125,117,14,0,0,0,98,97,100,32,115,105,122,
- 101,32,105,110,32,123,125,117,5,0,0,0,109,116,105,109,
- 101,117,24,0,0,0,98,121,116,101,99,111,100,101,32,105,
- 115,32,115,116,97,108,101,32,102,111,114,32,123,125,117,4,
- 0,0,0,115,105,122,101,108,3,0,0,0,255,127,255,127,
- 3,0,40,10,0,0,0,117,12,0,0,0,95,77,65,71,
- 73,67,95,66,89,84,69,83,117,6,0,0,0,102,111,114,
- 109,97,116,117,16,0,0,0,95,118,101,114,98,111,115,101,
- 95,109,101,115,115,97,103,101,117,11,0,0,0,73,109,112,
- 111,114,116,69,114,114,111,114,117,3,0,0,0,108,101,110,
- 117,8,0,0,0,69,79,70,69,114,114,111,114,117,4,0,
- 0,0,78,111,110,101,117,3,0,0,0,105,110,116,117,8,
- 0,0,0,75,101,121,69,114,114,111,114,117,7,0,0,0,
- 95,114,95,108,111,110,103,40,12,0,0,0,117,4,0,0,
- 0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,97,
- 109,101,117,4,0,0,0,100,97,116,97,117,13,0,0,0,
- 98,121,116,101,99,111,100,101,95,112,97,116,104,117,12,0,
- 0,0,115,111,117,114,99,101,95,115,116,97,116,115,117,5,
- 0,0,0,109,97,103,105,99,117,13,0,0,0,114,97,119,
- 95,116,105,109,101,115,116,97,109,112,117,8,0,0,0,114,
- 97,119,95,115,105,122,101,117,3,0,0,0,109,115,103,117,
- 7,0,0,0,109,101,115,115,97,103,101,117,12,0,0,0,
- 115,111,117,114,99,101,95,109,116,105,109,101,117,11,0,0,
- 0,115,111,117,114,99,101,95,115,105,122,101,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,20,0,0,0,95,98,121,
- 116,101,115,95,102,114,111,109,95,98,121,116,101,99,111,100,
- 101,34,3,0,0,115,68,0,0,0,0,7,16,1,16,1,
- 16,1,12,1,18,1,10,1,27,1,18,1,15,1,10,1,
- 15,1,18,1,15,1,10,1,15,1,12,1,3,1,20,1,
- 13,1,5,2,18,1,15,1,10,1,15,1,12,1,3,1,
- 18,1,13,1,5,2,18,1,3,1,15,1,21,3,117,34,
- 0,0,0,95,76,111,97,100,101,114,66,97,115,105,99,115,
- 46,95,98,121,116,101,115,95,102,114,111,109,95,98,121,116,
- 101,99,111,100,101,117,10,0,0,0,115,111,117,114,99,101,
- 108,101,115,115,99,2,0,0,0,1,0,0,0,5,0,0,
- 0,12,0,0,0,67,0,0,0,115,227,0,0,0,124,1,
- 0,106,0,0,125,3,0,124,0,0,106,1,0,124,3,0,
- 131,1,0,125,4,0,124,0,0,106,2,0,124,3,0,131,
- 1,0,124,1,0,95,3,0,124,2,0,115,106,0,121,22,
- 0,116,4,0,124,1,0,106,3,0,131,1,0,124,1,0,
- 95,5,0,87,113,118,0,4,116,6,0,107,10,0,114,102,
- 0,1,1,1,124,1,0,106,3,0,124,1,0,95,5,0,
- 89,113,118,0,88,110,12,0,124,1,0,106,3,0,124,1,
- 0,95,5,0,124,3,0,124,1,0,95,7,0,124,0,0,
- 106,8,0,124,3,0,131,1,0,114,170,0,116,9,0,124,
- 1,0,106,3,0,131,1,0,100,1,0,25,103,1,0,124,
- 1,0,95,10,0,110,25,0,124,1,0,106,7,0,106,11,
- 0,100,2,0,131,1,0,100,1,0,25,124,1,0,95,7,
- 0,124,0,0,124,1,0,95,12,0,116,13,0,116,14,0,
- 124,4,0,124,1,0,106,15,0,131,3,0,1,124,1,0,
- 83,40,3,0,0,0,117,82,0,0,0,72,101,108,112,101,
- 114,32,102,111,114,32,108,111,97,100,95,109,111,100,117,108,
- 101,32,97,98,108,101,32,116,111,32,104,97,110,100,108,101,
- 32,101,105,116,104,101,114,32,115,111,117,114,99,101,32,111,
- 114,32,115,111,117,114,99,101,108,101,115,115,10,32,32,32,
- 32,32,32,32,32,108,111,97,100,105,110,103,46,105,0,0,
- 0,0,117,1,0,0,0,46,40,16,0,0,0,117,8,0,
- 0,0,95,95,110,97,109,101,95,95,117,8,0,0,0,103,
- 101,116,95,99,111,100,101,117,12,0,0,0,103,101,116,95,
- 102,105,108,101,110,97,109,101,117,8,0,0,0,95,95,102,
- 105,108,101,95,95,117,17,0,0,0,99,97,99,104,101,95,
- 102,114,111,109,95,115,111,117,114,99,101,117,10,0,0,0,
- 95,95,99,97,99,104,101,100,95,95,117,19,0,0,0,78,
- 111,116,73,109,112,108,101,109,101,110,116,101,100,69,114,114,
- 111,114,117,11,0,0,0,95,95,112,97,99,107,97,103,101,
- 95,95,117,10,0,0,0,105,115,95,112,97,99,107,97,103,
- 101,117,11,0,0,0,95,112,97,116,104,95,115,112,108,105,
- 116,117,8,0,0,0,95,95,112,97,116,104,95,95,117,10,
- 0,0,0,114,112,97,114,116,105,116,105,111,110,117,10,0,
- 0,0,95,95,108,111,97,100,101,114,95,95,117,25,0,0,
- 0,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,117,4,0,0,0,101,
- 120,101,99,117,8,0,0,0,95,95,100,105,99,116,95,95,
- 40,5,0,0,0,117,4,0,0,0,115,101,108,102,117,6,
- 0,0,0,109,111,100,117,108,101,117,10,0,0,0,115,111,
- 117,114,99,101,108,101,115,115,117,4,0,0,0,110,97,109,
- 101,117,11,0,0,0,99,111,100,101,95,111,98,106,101,99,
- 116,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,12,0,
- 0,0,95,108,111,97,100,95,109,111,100,117,108,101,80,3,
- 0,0,115,32,0,0,0,0,4,9,1,15,1,18,1,6,
- 1,3,1,22,1,13,1,20,2,12,1,9,1,15,1,28,
- 2,25,1,9,1,19,1,117,26,0,0,0,95,76,111,97,
- 100,101,114,66,97,115,105,99,115,46,95,108,111,97,100,95,
- 109,111,100,117,108,101,78,70,40,9,0,0,0,117,8,0,
- 0,0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,
- 95,109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,
- 113,117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,
- 95,100,111,99,95,95,117,10,0,0,0,105,115,95,112,97,
- 99,107,97,103,101,117,20,0,0,0,95,98,121,116,101,115,
- 95,102,114,111,109,95,98,121,116,101,99,111,100,101,117,17,
- 0,0,0,109,111,100,117,108,101,95,102,111,114,95,108,111,
- 97,100,101,114,117,5,0,0,0,70,97,108,115,101,117,12,
- 0,0,0,95,108,111,97,100,95,109,111,100,117,108,101,40,
- 1,0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,
- 115,95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 13,0,0,0,95,76,111,97,100,101,114,66,97,115,105,99,
- 115,21,3,0,0,115,10,0,0,0,16,3,6,2,12,8,
- 12,46,6,1,117,13,0,0,0,95,76,111,97,100,101,114,
- 66,97,115,105,99,115,99,1,0,0,0,0,0,0,0,1,
- 0,0,0,2,0,0,0,66,0,0,0,115,104,0,0,0,
- 124,0,0,69,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,
- 12,0,132,0,0,90,8,0,100,13,0,100,14,0,132,0,
- 0,90,9,0,100,15,0,83,40,16,0,0,0,117,12,0,
- 0,0,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,40,2,0,0,0,117,121,0,0,0,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,32,32,32,
- 32,32,32,32,32,78,40,1,0,0,0,117,19,0,0,0,
- 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114,
- 114,111,114,40,2,0,0,0,117,4,0,0,0,115,101,108,
- 102,117,4,0,0,0,112,97,116,104,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,112,97,116,104,95,
- 109,116,105,109,101,106,3,0,0,115,2,0,0,0,0,4,
- 117,23,0,0,0,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,20,0,0,0,105,1,0,124,0,0,106,0,0,124,
- 1,0,131,1,0,100,1,0,54,83,40,2,0,0,0,117,
- 114,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,117,5,0,0,0,109,116,105,109,101,
- 40,1,0,0,0,117,10,0,0,0,112,97,116,104,95,109,
- 116,105,109,101,40,2,0,0,0,117,4,0,0,0,115,101,
- 108,102,117,4,0,0,0,112,97,116,104,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,112,97,116,104,
- 95,115,116,97,116,115,112,3,0,0,115,2,0,0,0,0,
- 10,117,23,0,0,0,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,40,1,0,0,0,117,228,0,0,
- 0,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,40,1,0,0,0,117,8,0,0,0,115,
- 101,116,95,100,97,116,97,40,4,0,0,0,117,4,0,0,
- 0,115,101,108,102,117,11,0,0,0,115,111,117,114,99,101,
- 95,112,97,116,104,117,10,0,0,0,99,97,99,104,101,95,
- 112,97,116,104,117,4,0,0,0,100,97,116,97,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,15,0,0,0,95,99,
- 97,99,104,101,95,98,121,116,101,99,111,100,101,124,3,0,
- 0,115,2,0,0,0,0,8,117,28,0,0,0,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,10,
- 0,0,0,116,0,0,130,1,0,100,1,0,83,40,2,0,
- 0,0,117,151,0,0,0,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,78,40,
- 1,0,0,0,117,19,0,0,0,78,111,116,73,109,112,108,
- 101,109,101,110,116,101,100,69,114,114,111,114,40,3,0,0,
- 0,117,4,0,0,0,115,101,108,102,117,4,0,0,0,112,
- 97,116,104,117,4,0,0,0,100,97,116,97,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,115,101,116,
- 95,100,97,116,97,134,3,0,0,115,2,0,0,0,0,6,
- 117,21,0,0,0,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,9,0,0,0,44,0,0,0,67,0,0,0,115,
- 62,1,0,0,100,1,0,100,2,0,108,0,0,125,2,0,
- 124,0,0,106,1,0,124,1,0,131,1,0,125,3,0,121,
- 19,0,124,0,0,106,2,0,124,3,0,131,1,0,125,4,
- 0,87,110,58,0,4,116,3,0,107,10,0,114,106,0,1,
- 125,5,0,1,122,26,0,116,4,0,100,3,0,100,4,0,
- 124,1,0,131,1,1,124,5,0,130,2,0,87,89,100,2,
- 0,100,2,0,125,5,0,126,5,0,88,110,1,0,88,116,
- 5,0,106,6,0,124,4,0,131,1,0,106,7,0,125,6,
- 0,121,19,0,124,2,0,106,8,0,124,6,0,131,1,0,
- 125,7,0,87,110,58,0,4,116,9,0,107,10,0,114,204,
- 0,1,125,5,0,1,122,26,0,116,4,0,100,5,0,100,
- 4,0,124,1,0,131,1,1,124,5,0,130,2,0,87,89,
- 100,2,0,100,2,0,125,5,0,126,5,0,88,110,1,0,
- 88,116,5,0,106,10,0,100,2,0,100,7,0,131,2,0,
- 125,8,0,121,30,0,124,8,0,106,13,0,124,4,0,106,
- 13,0,124,7,0,100,1,0,25,131,1,0,131,1,0,83,
- 87,110,58,0,4,116,14,0,107,10,0,114,57,1,1,125,
- 5,0,1,122,26,0,116,4,0,100,6,0,100,4,0,124,
- 1,0,131,1,1,124,5,0,130,2,0,87,89,100,2,0,
- 100,2,0,125,5,0,126,5,0,88,110,1,0,88,100,2,
- 0,83,40,8,0,0,0,117,52,0,0,0,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,
- 105,0,0,0,0,78,117,39,0,0,0,115,111,117,114,99,
+ 46,95,115,101,97,114,99,104,95,114,101,103,105,115,116,114,
+ 121,78,99,3,0,0,0,0,0,0,0,6,0,0,0,12,
+ 0,0,0,67,0,0,0,115,137,0,0,0,124,0,0,106,
+ 0,0,124,1,0,131,1,0,125,3,0,124,3,0,100,1,
+ 0,107,8,0,114,31,0,100,1,0,83,121,17,0,116,1,
+ 0,106,2,0,124,3,0,131,1,0,1,87,110,22,0,4,
+ 116,3,0,107,10,0,114,72,0,1,1,1,100,1,0,83,
+ 89,110,1,0,88,120,57,0,116,4,0,131,0,0,68,93,
+ 46,0,92,2,0,125,4,0,125,5,0,124,3,0,106,5,
+ 0,116,6,0,124,5,0,131,1,0,131,1,0,114,83,0,
+ 124,4,0,124,1,0,124,3,0,131,2,0,83,113,83,0,
+ 87,100,1,0,83,41,2,122,34,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,78,41,7,114,234,
+ 0,0,0,114,3,0,0,0,114,39,0,0,0,114,40,0,
+ 0,0,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,218,
+ 8,101,110,100,115,119,105,116,104,218,5,116,117,112,108,101,
+ 41,6,114,216,0,0,0,114,179,0,0,0,114,35,0,0,
+ 0,114,233,0,0,0,114,161,0,0,0,114,113,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 218,0,0,0,108,3,0,0,115,20,0,0,0,0,3,15,
+ 1,12,1,4,1,3,1,17,1,13,1,9,1,22,1,21,
+ 1,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,11,114,57,0,0,0,114,56,0,0,0,
+ 114,58,0,0,0,114,59,0,0,0,114,231,0,0,0,114,
+ 230,0,0,0,114,229,0,0,0,114,222,0,0,0,114,228,
+ 0,0,0,114,234,0,0,0,114,218,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,73,3,0,0,115,16,0,0,0,12,
+ 3,6,3,6,3,6,2,6,2,18,7,18,15,3,1,114,
+ 225,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,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,102,0,0,0,114,68,0,0,0,
+ 114,101,0,0,0,114,77,0,0,0,41,4,114,38,0,0,
+ 0,114,164,0,0,0,114,34,0,0,0,114,32,0,0,0,
+ 41,5,114,76,0,0,0,114,179,0,0,0,114,117,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,157,0,0,0,128,
+ 3,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,11,0,0,0,67,0,0,0,115,
+ 100,0,0,0,124,0,0,124,1,0,95,0,0,116,1,0,
+ 124,0,0,124,1,0,131,2,0,1,116,2,0,124,0,0,
+ 124,1,0,131,2,0,1,116,3,0,124,1,0,100,1,0,
+ 131,2,0,114,96,0,121,22,0,116,4,0,124,1,0,106,
+ 5,0,131,1,0,124,1,0,95,6,0,87,113,96,0,4,
+ 116,7,0,107,10,0,114,92,0,1,1,1,89,113,96,0,
+ 88,110,0,0,100,2,0,83,41,3,97,2,1,0,0,83,
+ 101,116,32,118,97,114,105,111,117,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,46,10,10,32,32,32,32,32,32,32,32,69,120,
+ 101,99,117,116,105,111,110,76,111,97,100,101,114,46,105,110,
+ 105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,40,
+ 41,32,105,115,32,117,115,101,100,32,116,111,32,115,101,116,
+ 32,95,95,108,111,97,100,101,114,95,95,44,10,32,32,32,
+ 32,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95,
+ 44,32,95,95,102,105,108,101,95,95,44,32,97,110,100,32,
+ 111,112,116,105,111,110,97,108,108,121,32,95,95,112,97,116,
+ 104,95,95,46,32,84,104,101,32,95,95,99,97,99,104,101,
+ 100,95,95,32,97,116,116,114,105,98,117,116,101,10,32,32,
+ 32,32,32,32,32,32,105,115,32,115,101,116,32,117,115,105,
+ 110,103,32,105,109,112,46,99,97,99,104,101,95,102,114,111,
+ 109,95,115,111,117,114,99,101,40,41,32,97,110,100,32,95,
+ 95,102,105,108,101,95,95,46,10,32,32,32,32,32,32,32,
+ 32,114,165,0,0,0,78,41,8,114,172,0,0,0,114,163,
+ 0,0,0,114,167,0,0,0,114,60,0,0,0,114,118,0,
+ 0,0,114,165,0,0,0,218,10,95,95,99,97,99,104,101,
+ 100,95,95,114,110,0,0,0,41,2,114,76,0,0,0,114,
+ 162,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,218,17,105,110,105,116,95,109,111,100,117,108,101,
+ 95,97,116,116,114,115,136,3,0,0,115,16,0,0,0,0,
+ 7,9,1,13,1,13,1,15,1,3,1,22,1,13,1,122,
+ 31,95,76,111,97,100,101,114,66,97,115,105,99,115,46,105,
+ 110,105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,
+ 99,2,0,0,0,0,0,0,0,4,0,0,0,11,0,0,
+ 0,67,0,0,0,115,112,0,0,0,116,0,0,124,1,0,
+ 131,1,0,143,94,0,125,2,0,124,0,0,106,1,0,124,
+ 2,0,131,1,0,1,124,0,0,106,2,0,124,1,0,131,
+ 1,0,125,3,0,124,3,0,100,1,0,107,8,0,114,79,
+ 0,116,3,0,100,2,0,106,4,0,124,1,0,131,1,0,
+ 131,1,0,130,1,0,110,0,0,116,5,0,116,6,0,124,
+ 3,0,124,2,0,106,7,0,131,3,0,1,124,2,0,83,
+ 87,100,1,0,81,88,100,1,0,83,41,3,122,57,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,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,
+ 114,156,0,0,0,114,240,0,0,0,114,220,0,0,0,114,
+ 158,0,0,0,114,47,0,0,0,114,100,0,0,0,218,4,
+ 101,120,101,99,114,63,0,0,0,41,4,114,76,0,0,0,
+ 114,179,0,0,0,114,162,0,0,0,114,205,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,219,
+ 0,0,0,152,3,0,0,115,16,0,0,0,0,2,15,1,
+ 13,1,15,1,12,1,3,1,21,1,19,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,7,114,57,0,0,0,114,
+ 56,0,0,0,114,58,0,0,0,114,59,0,0,0,114,157,
+ 0,0,0,114,240,0,0,0,114,219,0,0,0,114,4,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,238,0,0,0,123,3,0,0,115,8,0,0,0,12,
+ 3,6,2,12,8,12,16,114,238,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,76,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,166,3,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,20,0,0,0,105,1,0,124,0,
+ 0,106,0,0,124,1,0,131,1,0,100,1,0,54,83,41,
+ 2,97,170,1,0,0,79,112,116,105,111,110,97,108,32,109,
+ 101,116,104,111,100,32,114,101,116,117,114,110,105,110,103,32,
+ 97,32,109,101,116,97,100,97,116,97,32,100,105,99,116,32,
+ 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,
+ 100,32,112,97,116,104,10,32,32,32,32,32,32,32,32,116,
+ 111,32,98,121,32,116,104,101,32,112,97,116,104,32,40,115,
+ 116,114,41,46,10,32,32,32,32,32,32,32,32,80,111,115,
+ 115,105,98,108,101,32,107,101,121,115,58,10,32,32,32,32,
+ 32,32,32,32,45,32,39,109,116,105,109,101,39,32,40,109,
+ 97,110,100,97,116,111,114,121,41,32,105,115,32,116,104,101,
+ 32,110,117,109,101,114,105,99,32,116,105,109,101,115,116,97,
+ 109,112,32,111,102,32,108,97,115,116,32,115,111,117,114,99,
+ 101,10,32,32,32,32,32,32,32,32,32,32,99,111,100,101,
+ 32,109,111,100,105,102,105,99,97,116,105,111,110,59,10,32,
+ 32,32,32,32,32,32,32,45,32,39,115,105,122,101,39,32,
+ 40,111,112,116,105,111,110,97,108,41,32,105,115,32,116,104,
+ 101,32,115,105,122,101,32,105,110,32,98,121,116,101,115,32,
+ 111,102,32,116,104,101,32,115,111,117,114,99,101,32,99,111,
+ 100,101,46,10,10,32,32,32,32,32,32,32,32,73,109,112,
+ 108,101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,
+ 101,116,104,111,100,32,97,108,108,111,119,115,32,116,104,101,
+ 32,108,111,97,100,101,114,32,116,111,32,114,101,97,100,32,
+ 98,121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,
+ 32,32,32,32,32,32,32,32,82,97,105,115,101,115,32,73,
+ 79,69,114,114,111,114,32,119,104,101,110,32,116,104,101,32,
+ 112,97,116,104,32,99,97,110,110,111,116,32,98,101,32,104,
+ 97,110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,
+ 114,194,0,0,0,41,1,114,244,0,0,0,41,2,114,76,
+ 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,174,3,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,76,0,0,0,114,127,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,187,3,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,76,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,246,0,0,0,197,3,
+ 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,117,4,0,0,0,110,97,109,101,117,25,0,0,0,
- 70,97,105,108,101,100,32,116,111,32,100,101,116,101,99,116,
- 32,101,110,99,111,100,105,110,103,117,28,0,0,0,70,97,
- 105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,115,
- 111,117,114,99,101,32,102,105,108,101,84,40,15,0,0,0,
- 117,8,0,0,0,116,111,107,101,110,105,122,101,117,12,0,
- 0,0,103,101,116,95,102,105,108,101,110,97,109,101,117,8,
- 0,0,0,103,101,116,95,100,97,116,97,117,7,0,0,0,
- 73,79,69,114,114,111,114,117,11,0,0,0,73,109,112,111,
- 114,116,69,114,114,111,114,117,3,0,0,0,95,105,111,117,
- 7,0,0,0,66,121,116,101,115,73,79,117,8,0,0,0,
- 114,101,97,100,108,105,110,101,117,15,0,0,0,100,101,116,
- 101,99,116,95,101,110,99,111,100,105,110,103,117,11,0,0,
- 0,83,121,110,116,97,120,69,114,114,111,114,117,25,0,0,
- 0,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,117,4,0,0,0,78,
- 111,110,101,117,4,0,0,0,84,114,117,101,117,6,0,0,
- 0,100,101,99,111,100,101,117,18,0,0,0,85,110,105,99,
- 111,100,101,68,101,99,111,100,101,69,114,114,111,114,40,9,
- 0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,0,
- 0,102,117,108,108,110,97,109,101,117,8,0,0,0,116,111,
- 107,101,110,105,122,101,117,4,0,0,0,112,97,116,104,117,
- 12,0,0,0,115,111,117,114,99,101,95,98,121,116,101,115,
- 117,3,0,0,0,101,120,99,117,10,0,0,0,114,101,97,
- 100,115,111,117,114,99,101,117,8,0,0,0,101,110,99,111,
- 100,105,110,103,117,15,0,0,0,110,101,119,108,105,110,101,
- 95,100,101,99,111,100,101,114,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,10,0,0,0,103,101,116,95,115,111,117,
- 114,99,101,143,3,0,0,115,38,0,0,0,0,2,12,1,
- 15,1,3,1,19,1,18,1,9,1,31,1,18,1,3,1,
- 19,1,18,1,9,1,31,1,18,1,3,1,30,1,18,1,
- 9,1,117,23,0,0,0,83,111,117,114,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,12,0,0,0,45,0,0,0,67,
- 0,0,0,115,52,2,0,0,124,0,0,106,0,0,124,1,
- 0,131,1,0,125,2,0,100,10,0,125,3,0,121,16,0,
- 116,2,0,124,2,0,131,1,0,125,4,0,87,110,24,0,
- 4,116,3,0,107,10,0,114,63,0,1,1,1,100,10,0,
- 125,4,0,89,110,14,1,88,121,19,0,124,0,0,106,4,
+ 40,41,114,72,0,0,0,78,41,5,114,164,0,0,0,218,
+ 8,103,101,116,95,100,97,116,97,114,40,0,0,0,114,158,
+ 0,0,0,114,214,0,0,0,41,5,114,76,0,0,0,114,
+ 179,0,0,0,114,35,0,0,0,114,212,0,0,0,218,3,
+ 101,120,99,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,221,0,0,0,204,3,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,31,0,0,
+ 0,116,0,0,116,1,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,241,0,0,0,218,12,100,111,110,
+ 116,95,105,110,104,101,114,105,116,84,114,104,0,0,0,41,
+ 2,114,100,0,0,0,218,7,99,111,109,112,105,108,101,41,
+ 4,114,76,0,0,0,114,53,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,14,115,111,117,114,99,101,95,116,111,95,
+ 99,111,100,101,214,3,0,0,115,4,0,0,0,0,5,18,
+ 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,45,0,0,0,67,
+ 0,0,0,115,177,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,
- 3,0,107,10,0,114,103,0,1,1,1,89,110,230,0,88,
- 116,5,0,124,5,0,100,1,0,25,131,1,0,125,3,0,
+ 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,174,0,88,121,28,0,124,0,0,106,8,
- 0,124,1,0,124,6,0,124,4,0,124,5,0,131,4,0,
- 125,7,0,87,110,24,0,4,116,9,0,116,10,0,102,2,
- 0,107,10,0,114,214,0,1,1,1,89,110,119,0,88,116,
- 11,0,100,2,0,124,4,0,124,2,0,131,3,0,1,116,
- 12,0,106,13,0,124,7,0,131,1,0,125,8,0,116,14,
- 0,124,8,0,116,15,0,131,2,0,114,38,1,116,16,0,
- 106,17,0,124,8,0,124,2,0,131,2,0,1,116,11,0,
- 100,3,0,124,4,0,131,2,0,1,124,8,0,83,100,4,
- 0,125,9,0,116,9,0,124,9,0,106,18,0,124,4,0,
- 131,1,0,100,5,0,124,1,0,100,6,0,124,4,0,131,
- 1,2,130,1,0,124,0,0,106,6,0,124,2,0,131,1,
- 0,125,10,0,116,19,0,116,20,0,124,10,0,124,2,0,
- 100,7,0,100,8,0,100,11,0,131,4,1,125,11,0,116,
- 11,0,100,3,0,124,2,0,131,2,0,1,116,22,0,106,
- 23,0,12,114,48,2,124,4,0,100,10,0,107,9,0,114,
- 48,2,124,3,0,100,10,0,107,9,0,114,48,2,116,24,
- 0,116,25,0,131,1,0,125,6,0,124,6,0,106,26,0,
- 116,27,0,124,3,0,131,1,0,131,1,0,1,124,6,0,
- 106,26,0,116,27,0,116,28,0,124,10,0,131,1,0,131,
- 1,0,131,1,0,1,124,6,0,106,26,0,116,12,0,106,
- 29,0,124,11,0,131,1,0,131,1,0,1,121,36,0,124,
- 0,0,106,30,0,124,2,0,124,4,0,124,6,0,131,3,
- 0,1,116,11,0,100,9,0,124,4,0,131,2,0,1,87,
- 113,48,2,4,116,3,0,107,10,0,114,44,2,1,1,1,
- 89,113,48,2,88,110,0,0,124,11,0,83,40,12,0,0,
- 0,117,190,0,0,0,67,111,110,99,114,101,116,101,32,105,
- 109,112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,
- 32,73,110,115,112,101,99,116,76,111,97,100,101,114,46,103,
- 101,116,95,99,111,100,101,46,10,10,32,32,32,32,32,32,
- 32,32,82,101,97,100,105,110,103,32,111,102,32,98,121,116,
- 101,99,111,100,101,32,114,101,113,117,105,114,101,115,32,112,
- 97,116,104,95,115,116,97,116,115,32,116,111,32,98,101,32,
- 105,109,112,108,101,109,101,110,116,101,100,46,32,84,111,32,
- 119,114,105,116,101,10,32,32,32,32,32,32,32,32,98,121,
- 116,101,99,111,100,101,44,32,115,101,116,95,100,97,116,97,
- 32,109,117,115,116,32,97,108,115,111,32,98,101,32,105,109,
- 112,108,101,109,101,110,116,101,100,46,10,10,32,32,32,32,
- 32,32,32,32,117,5,0,0,0,109,116,105,109,101,117,13,
- 0,0,0,123,125,32,109,97,116,99,104,101,115,32,123,125,
- 117,19,0,0,0,99,111,100,101,32,111,98,106,101,99,116,
- 32,102,114,111,109,32,123,125,117,21,0,0,0,78,111,110,
- 45,99,111,100,101,32,111,98,106,101,99,116,32,105,110,32,
- 123,125,117,4,0,0,0,110,97,109,101,117,4,0,0,0,
- 112,97,116,104,117,4,0,0,0,101,120,101,99,117,12,0,
- 0,0,100,111,110,116,95,105,110,104,101,114,105,116,117,10,
- 0,0,0,119,114,111,116,101,32,123,33,114,125,78,84,40,
- 31,0,0,0,117,12,0,0,0,103,101,116,95,102,105,108,
- 101,110,97,109,101,117,4,0,0,0,78,111,110,101,117,17,
- 0,0,0,99,97,99,104,101,95,102,114,111,109,95,115,111,
- 117,114,99,101,117,19,0,0,0,78,111,116,73,109,112,108,
- 101,109,101,110,116,101,100,69,114,114,111,114,117,10,0,0,
- 0,112,97,116,104,95,115,116,97,116,115,117,3,0,0,0,
- 105,110,116,117,8,0,0,0,103,101,116,95,100,97,116,97,
- 117,7,0,0,0,73,79,69,114,114,111,114,117,20,0,0,
- 0,95,98,121,116,101,115,95,102,114,111,109,95,98,121,116,
- 101,99,111,100,101,117,11,0,0,0,73,109,112,111,114,116,
- 69,114,114,111,114,117,8,0,0,0,69,79,70,69,114,114,
- 111,114,117,16,0,0,0,95,118,101,114,98,111,115,101,95,
- 109,101,115,115,97,103,101,117,7,0,0,0,109,97,114,115,
- 104,97,108,117,5,0,0,0,108,111,97,100,115,117,10,0,
- 0,0,105,115,105,110,115,116,97,110,99,101,117,10,0,0,
- 0,95,99,111,100,101,95,116,121,112,101,117,4,0,0,0,
- 95,105,109,112,117,16,0,0,0,95,102,105,120,95,99,111,
- 95,102,105,108,101,110,97,109,101,117,6,0,0,0,102,111,
- 114,109,97,116,117,25,0,0,0,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,117,7,0,0,0,99,111,109,112,105,108,101,117,4,
- 0,0,0,84,114,117,101,117,3,0,0,0,115,121,115,117,
- 19,0,0,0,100,111,110,116,95,119,114,105,116,101,95,98,
- 121,116,101,99,111,100,101,117,9,0,0,0,98,121,116,101,
- 97,114,114,97,121,117,12,0,0,0,95,77,65,71,73,67,
- 95,66,89,84,69,83,117,6,0,0,0,101,120,116,101,110,
- 100,117,7,0,0,0,95,119,95,108,111,110,103,117,3,0,
- 0,0,108,101,110,117,5,0,0,0,100,117,109,112,115,117,
- 15,0,0,0,95,99,97,99,104,101,95,98,121,116,101,99,
- 111,100,101,40,12,0,0,0,117,4,0,0,0,115,101,108,
- 102,117,8,0,0,0,102,117,108,108,110,97,109,101,117,11,
- 0,0,0,115,111,117,114,99,101,95,112,97,116,104,117,12,
- 0,0,0,115,111,117,114,99,101,95,109,116,105,109,101,117,
- 13,0,0,0,98,121,116,101,99,111,100,101,95,112,97,116,
- 104,117,2,0,0,0,115,116,117,4,0,0,0,100,97,116,
- 97,117,10,0,0,0,98,121,116,101,115,95,100,97,116,97,
- 117,5,0,0,0,102,111,117,110,100,117,3,0,0,0,109,
- 115,103,117,12,0,0,0,115,111,117,114,99,101,95,98,121,
- 116,101,115,117,11,0,0,0,99,111,100,101,95,111,98,106,
- 101,99,116,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 8,0,0,0,103,101,116,95,99,111,100,101,165,3,0,0,
- 115,98,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,12,1,3,1,13,1,19,1,5,
- 2,9,1,7,1,15,1,15,1,16,1,6,1,7,1,4,
- 2,6,1,18,1,15,1,15,1,6,1,12,1,9,1,13,
- 1,22,1,12,1,12,1,19,1,25,1,22,1,3,1,19,
- 1,17,1,13,1,8,1,117,21,0,0,0,83,111,117,114,
- 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,2,0,
- 0,0,67,0,0,0,115,13,0,0,0,124,0,0,106,0,
- 0,124,1,0,131,1,0,83,40,1,0,0,0,117,0,1,
- 0,0,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,76,111,97,
- 100,101,114,46,108,111,97,100,95,109,111,100,117,108,101,46,
- 10,10,32,32,32,32,32,32,32,32,82,101,113,117,105,114,
- 101,115,32,69,120,101,99,117,116,105,111,110,76,111,97,100,
- 101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,32,
- 97,110,100,32,82,101,115,111,117,114,99,101,76,111,97,100,
- 101,114,46,103,101,116,95,100,97,116,97,32,116,111,32,98,
- 101,10,32,32,32,32,32,32,32,32,105,109,112,108,101,109,
- 101,110,116,101,100,32,116,111,32,108,111,97,100,32,115,111,
- 117,114,99,101,32,99,111,100,101,46,32,85,115,101,32,111,
- 102,32,98,121,116,101,99,111,100,101,32,105,115,32,100,105,
- 99,116,97,116,101,100,32,98,121,32,119,104,101,116,104,101,
- 114,10,32,32,32,32,32,32,32,32,103,101,116,95,99,111,
- 100,101,32,117,115,101,115,47,119,114,105,116,101,115,32,98,
- 121,116,101,99,111,100,101,46,10,10,32,32,32,32,32,32,
- 32,32,40,1,0,0,0,117,12,0,0,0,95,108,111,97,
- 100,95,109,111,100,117,108,101,40,2,0,0,0,117,4,0,
- 0,0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,
- 97,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 11,0,0,0,108,111,97,100,95,109,111,100,117,108,101,227,
- 3,0,0,115,2,0,0,0,0,8,117,24,0,0,0,83,
- 111,117,114,99,101,76,111,97,100,101,114,46,108,111,97,100,
- 95,109,111,100,117,108,101,78,40,10,0,0,0,117,8,0,
- 0,0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,
- 95,109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,
- 113,117,97,108,110,97,109,101,95,95,117,10,0,0,0,112,
- 97,116,104,95,109,116,105,109,101,117,10,0,0,0,112,97,
- 116,104,95,115,116,97,116,115,117,15,0,0,0,95,99,97,
- 99,104,101,95,98,121,116,101,99,111,100,101,117,8,0,0,
- 0,115,101,116,95,100,97,116,97,117,10,0,0,0,103,101,
- 116,95,115,111,117,114,99,101,117,8,0,0,0,103,101,116,
- 95,99,111,100,101,117,11,0,0,0,108,111,97,100,95,109,
- 111,100,117,108,101,40,1,0,0,0,117,10,0,0,0,95,
- 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,12,0,0,0,83,111,117,114,99,101,
- 76,111,97,100,101,114,104,3,0,0,115,14,0,0,0,16,
- 2,12,6,12,12,12,10,12,9,12,22,12,62,117,12,0,
- 0,0,83,111,117,114,99,101,76,111,97,100,101,114,99,1,
- 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,2,
- 0,0,0,115,92,0,0,0,124,0,0,69,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,101,5,0,135,0,0,
- 102,1,0,100,4,0,100,5,0,134,0,0,131,1,0,90,
- 6,0,101,5,0,100,6,0,100,7,0,132,0,0,131,1,
- 0,90,7,0,100,8,0,100,9,0,132,0,0,90,8,0,
- 135,0,0,83,40,10,0,0,0,117,10,0,0,0,70,105,
- 108,101,76,111,97,100,101,114,117,103,0,0,0,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,40,2,0,0,0,117,75,0,0,0,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,40,2,0,0,0,117,
- 4,0,0,0,110,97,109,101,117,4,0,0,0,112,97,116,
- 104,40,3,0,0,0,117,4,0,0,0,115,101,108,102,117,
- 8,0,0,0,102,117,108,108,110,97,109,101,117,4,0,0,
- 0,112,97,116,104,40,0,0,0,0,40,0,0,0,0,117,
- 29,0,0,0,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,117,8,0,0,0,95,95,105,110,105,116,95,95,243,3,
- 0,0,115,4,0,0,0,0,3,9,1,117,19,0,0,0,
- 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,
- 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,40,1,0,0,0,117,26,0,0,0,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,40,3,0,0,0,117,5,0,0,
- 0,115,117,112,101,114,117,10,0,0,0,70,105,108,101,76,
- 111,97,100,101,114,117,11,0,0,0,108,111,97,100,95,109,
- 111,100,117,108,101,40,2,0,0,0,117,4,0,0,0,115,
- 101,108,102,117,8,0,0,0,102,117,108,108,110,97,109,101,
- 40,1,0,0,0,117,9,0,0,0,95,95,99,108,97,115,
- 115,95,95,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,108,
- 111,97,100,95,109,111,100,117,108,101,249,3,0,0,115,2,
- 0,0,0,0,5,117,22,0,0,0,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,40,1,0,0,0,117,58,0,0,0,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,40,1,0,0,0,117,4,0,0,0,112,
- 97,116,104,40,2,0,0,0,117,4,0,0,0,115,101,108,
- 102,117,8,0,0,0,102,117,108,108,110,97,109,101,40,0,
- 0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,12,0,0,0,103,
- 101,116,95,102,105,108,101,110,97,109,101,0,4,0,0,115,
- 2,0,0,0,0,3,117,23,0,0,0,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,8,
- 0,0,0,67,0,0,0,115,41,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,
- 88,100,2,0,83,40,3,0,0,0,117,39,0,0,0,82,
+ 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,173,1,124,4,0,100,1,0,107,
+ 9,0,114,173,1,124,3,0,100,1,0,107,9,0,114,173,
+ 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,113,173,1,
+ 4,116,2,0,107,10,0,114,169,1,1,1,1,89,113,173,
+ 1,88,110,0,0,124,9,0,83,41,11,122,190,67,111,110,
+ 99,114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,
+ 116,105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,
+ 111,97,100,101,114,46,103,101,116,95,99,111,100,101,46,10,
+ 10,32,32,32,32,32,32,32,32,82,101,97,100,105,110,103,
+ 32,111,102,32,98,121,116,101,99,111,100,101,32,114,101,113,
+ 117,105,114,101,115,32,112,97,116,104,95,115,116,97,116,115,
+ 32,116,111,32,98,101,32,105,109,112,108,101,109,101,110,116,
+ 101,100,46,32,84,111,32,119,114,105,116,101,10,32,32,32,
+ 32,32,32,32,32,98,121,116,101,99,111,100,101,44,32,115,
+ 101,116,95,100,97,116,97,32,109,117,115,116,32,97,108,115,
+ 111,32,98,101,32,105,109,112,108,101,109,101,110,116,101,100,
+ 46,10,10,32,32,32,32,32,32,32,32,78,114,194,0,0,
+ 0,114,198,0,0,0,114,72,0,0,0,114,35,0,0,0,
+ 122,13,123,125,32,109,97,116,99,104,101,115,32,123,125,114,
+ 126,0,0,0,114,127,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,164,0,0,
+ 0,114,118,0,0,0,114,110,0,0,0,114,245,0,0,0,
+ 114,243,0,0,0,114,14,0,0,0,114,248,0,0,0,114,
+ 40,0,0,0,114,201,0,0,0,114,158,0,0,0,114,197,
+ 0,0,0,114,138,0,0,0,114,206,0,0,0,114,253,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,209,0,0,
+ 0,114,31,0,0,0,114,247,0,0,0,41,10,114,76,0,
+ 0,0,114,179,0,0,0,114,127,0,0,0,114,199,0,0,
+ 0,114,126,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,212,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,220,0,0,
+ 0,222,3,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,8,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,124,0,0,0,41,10,114,57,0,0,0,114,56,0,0,
+ 0,114,58,0,0,0,114,244,0,0,0,114,245,0,0,0,
+ 114,247,0,0,0,114,246,0,0,0,114,221,0,0,0,114,
+ 253,0,0,0,114,220,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,242,0,
+ 0,0,164,3,0,0,115,14,0,0,0,12,2,12,8,12,
+ 13,12,10,12,7,12,10,18,8,114,242,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,88,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,101,5,0,135,0,0,102,1,0,100,
+ 4,0,100,5,0,134,0,0,131,1,0,90,6,0,101,5,
+ 0,100,6,0,100,7,0,132,0,0,131,1,0,90,7,0,
+ 100,8,0,100,9,0,132,0,0,90,8,0,135,0,0,83,
+ 41,10,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,72,0,0,0,114,35,
+ 0,0,0,41,3,114,76,0,0,0,114,179,0,0,0,114,
+ 35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,77,0,0,0,23,4,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,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,26,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,41,3,114,149,0,0,0,114,
+ 1,1,0,0,114,219,0,0,0,41,2,114,76,0,0,0,
+ 114,179,0,0,0,41,1,114,151,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,219,0,0,0,29,4,0,0,115,
+ 2,0,0,0,0,5,122,22,70,105,108,101,76,111,97,100,
+ 101,114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,
+ 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,
+ 0,0,0,115,7,0,0,0,124,0,0,106,0,0,83,41,
+ 1,122,58,82,101,116,117,114,110,32,116,104,101,32,112,97,
+ 116,104,32,116,111,32,116,104,101,32,115,111,117,114,99,101,
+ 32,102,105,108,101,32,97,115,32,102,111,117,110,100,32,98,
+ 121,32,116,104,101,32,102,105,110,100,101,114,46,41,1,114,
+ 35,0,0,0,41,2,114,76,0,0,0,114,179,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 164,0,0,0,36,4,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,8,0,0,0,67,0,0,0,115,41,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,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,117,1,0,0,0,114,78,40,3,0,
- 0,0,117,3,0,0,0,95,105,111,117,6,0,0,0,70,
- 105,108,101,73,79,117,4,0,0,0,114,101,97,100,40,3,
- 0,0,0,117,4,0,0,0,115,101,108,102,117,4,0,0,
- 0,112,97,116,104,117,4,0,0,0,102,105,108,101,40,0,
- 0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,103,
- 101,116,95,100,97,116,97,5,4,0,0,115,4,0,0,0,
- 0,2,21,1,117,19,0,0,0,70,105,108,101,76,111,97,
- 100,101,114,46,103,101,116,95,100,97,116,97,40,9,0,0,
- 0,117,8,0,0,0,95,95,110,97,109,101,95,95,117,10,
- 0,0,0,95,95,109,111,100,117,108,101,95,95,117,12,0,
- 0,0,95,95,113,117,97,108,110,97,109,101,95,95,117,7,
- 0,0,0,95,95,100,111,99,95,95,117,8,0,0,0,95,
- 95,105,110,105,116,95,95,117,11,0,0,0,95,99,104,101,
- 99,107,95,110,97,109,101,117,11,0,0,0,108,111,97,100,
- 95,109,111,100,117,108,101,117,12,0,0,0,103,101,116,95,
- 102,105,108,101,110,97,109,101,117,8,0,0,0,103,101,116,
- 95,100,97,116,97,40,1,0,0,0,117,10,0,0,0,95,
- 95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,1,
- 0,0,0,117,9,0,0,0,95,95,99,108,97,115,115,95,
- 95,117,29,0,0,0,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,117,10,0,0,0,70,105,108,101,76,111,97,100,
- 101,114,238,3,0,0,115,10,0,0,0,16,3,6,2,12,
- 6,24,7,18,5,117,10,0,0,0,70,105,108,101,76,111,
- 97,100,101,114,99,1,0,0,0,0,0,0,0,1,0,0,
- 0,4,0,0,0,66,0,0,0,115,68,0,0,0,124,0,
- 0,69,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,40,11,0,0,0,117,16,0,0,0,83,111,117,114,
- 99,101,70,105,108,101,76,111,97,100,101,114,117,62,0,0,
- 0,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,39,0,0,0,116,0,0,106,1,0,124,
- 1,0,131,1,0,125,2,0,105,2,0,124,2,0,106,2,
- 0,100,1,0,54,124,2,0,106,3,0,100,2,0,54,83,
- 40,3,0,0,0,117,33,0,0,0,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,117,5,0,0,0,
- 109,116,105,109,101,117,4,0,0,0,115,105,122,101,40,4,
- 0,0,0,117,3,0,0,0,95,111,115,117,4,0,0,0,
- 115,116,97,116,117,8,0,0,0,115,116,95,109,116,105,109,
- 101,117,7,0,0,0,115,116,95,115,105,122,101,40,3,0,
- 0,0,117,4,0,0,0,115,101,108,102,117,4,0,0,0,
- 112,97,116,104,117,2,0,0,0,115,116,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,112,97,116,104,
- 95,115,116,97,116,115,15,4,0,0,115,4,0,0,0,0,
- 2,15,1,117,27,0,0,0,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,
- 13,0,0,0,67,0,0,0,115,81,0,0,0,121,22,0,
- 116,0,0,106,1,0,124,1,0,131,1,0,106,2,0,125,
- 4,0,87,110,24,0,4,116,3,0,107,10,0,114,48,0,
- 1,1,1,100,1,0,125,4,0,89,110,1,0,88,124,4,
- 0,100,2,0,79,125,4,0,124,0,0,106,4,0,124,2,
- 0,124,3,0,100,3,0,124,4,0,131,2,1,83,40,4,
- 0,0,0,78,105,182,1,0,0,105,128,0,0,0,117,5,
- 0,0,0,95,109,111,100,101,40,5,0,0,0,117,3,0,
- 0,0,95,111,115,117,4,0,0,0,115,116,97,116,117,7,
- 0,0,0,115,116,95,109,111,100,101,117,7,0,0,0,79,
- 83,69,114,114,111,114,117,8,0,0,0,115,101,116,95,100,
- 97,116,97,40,5,0,0,0,117,4,0,0,0,115,101,108,
- 102,117,11,0,0,0,115,111,117,114,99,101,95,112,97,116,
- 104,117,13,0,0,0,98,121,116,101,99,111,100,101,95,112,
- 97,116,104,117,4,0,0,0,100,97,116,97,117,4,0,0,
- 0,109,111,100,101,40,0,0,0,0,40,0,0,0,0,117,
- 29,0,0,0,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,117,15,0,0,0,95,99,97,99,104,101,95,98,121,116,
- 101,99,111,100,101,20,4,0,0,115,12,0,0,0,0,2,
- 3,1,22,1,13,1,11,3,10,1,117,32,0,0,0,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,117,
- 5,0,0,0,95,109,111,100,101,105,182,1,0,0,99,3,
- 0,0,0,1,0,0,0,9,0,0,0,18,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,40,4,0,
- 0,0,117,27,0,0,0,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,117,27,0,0,0,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,117,12,0,0,0,99,114,101,97,116,101,100,32,
- 123,33,114,125,40,11,0,0,0,117,11,0,0,0,95,112,
- 97,116,104,95,115,112,108,105,116,117,11,0,0,0,95,112,
- 97,116,104,95,105,115,100,105,114,117,6,0,0,0,97,112,
- 112,101,110,100,117,8,0,0,0,114,101,118,101,114,115,101,
- 100,117,10,0,0,0,95,112,97,116,104,95,106,111,105,110,
- 117,3,0,0,0,95,111,115,117,5,0,0,0,109,107,100,
- 105,114,117,15,0,0,0,70,105,108,101,69,120,105,115,116,
- 115,69,114,114,111,114,117,7,0,0,0,79,83,69,114,114,
- 111,114,117,16,0,0,0,95,118,101,114,98,111,115,101,95,
- 109,101,115,115,97,103,101,117,13,0,0,0,95,119,114,105,
- 116,101,95,97,116,111,109,105,99,40,9,0,0,0,117,4,
- 0,0,0,115,101,108,102,117,4,0,0,0,112,97,116,104,
- 117,4,0,0,0,100,97,116,97,117,5,0,0,0,95,109,
- 111,100,101,117,6,0,0,0,112,97,114,101,110,116,117,8,
- 0,0,0,102,105,108,101,110,97,109,101,117,10,0,0,0,
- 112,97,116,104,95,112,97,114,116,115,117,4,0,0,0,112,
- 97,114,116,117,3,0,0,0,101,120,99,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,115,101,116,95,
- 100,97,116,97,31,4,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,117,25,0,0,0,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,40,7,0,0,0,117,8,0,0,0,95,95,110,97,
- 109,101,95,95,117,10,0,0,0,95,95,109,111,100,117,108,
- 101,95,95,117,12,0,0,0,95,95,113,117,97,108,110,97,
- 109,101,95,95,117,7,0,0,0,95,95,100,111,99,95,95,
- 117,10,0,0,0,112,97,116,104,95,115,116,97,116,115,117,
- 15,0,0,0,95,99,97,99,104,101,95,98,121,116,101,99,
- 111,100,101,117,8,0,0,0,115,101,116,95,100,97,116,97,
- 40,1,0,0,0,117,10,0,0,0,95,95,108,111,99,97,
- 108,115,95,95,40,0,0,0,0,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,16,0,0,0,83,111,117,114,99,101,70,105,108,101,76,
- 111,97,100,101,114,11,4,0,0,115,8,0,0,0,16,2,
- 6,2,12,5,12,11,117,16,0,0,0,83,111,117,114,99,
- 101,70,105,108,101,76,111,97,100,101,114,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,2,0,0,0,66,0,0,0,
- 115,62,0,0,0,124,0,0,69,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,40,9,0,0,0,117,20,0,0,0,83,111,117,
- 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,
- 114,117,45,0,0,0,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,2,0,0,0,
- 4,0,0,0,67,0,0,0,115,19,0,0,0,124,0,0,
- 106,0,0,124,1,0,100,1,0,100,2,0,131,1,1,83,
- 40,3,0,0,0,78,117,10,0,0,0,115,111,117,114,99,
- 101,108,101,115,115,84,40,2,0,0,0,117,12,0,0,0,
- 95,108,111,97,100,95,109,111,100,117,108,101,117,4,0,0,
- 0,84,114,117,101,40,2,0,0,0,117,4,0,0,0,115,
- 101,108,102,117,8,0,0,0,102,117,108,108,110,97,109,101,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,
- 0,108,111,97,100,95,109,111,100,117,108,101,64,4,0,0,
- 115,2,0,0,0,0,1,117,32,0,0,0,83,111,117,114,
- 99,101,108,101,115,115,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,6,0,0,0,6,0,0,0,67,0,0,
- 0,115,138,0,0,0,124,0,0,106,0,0,124,1,0,131,
+ 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,76,
+ 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,248,0,0,
+ 0,41,4,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,9,114,57,0,0,0,114,56,0,0,0,114,
+ 58,0,0,0,114,59,0,0,0,114,77,0,0,0,114,177,
+ 0,0,0,114,219,0,0,0,114,164,0,0,0,114,248,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,41,1,114,151,
+ 0,0,0,114,5,0,0,0,114,1,1,0,0,18,4,0,
+ 0,115,10,0,0,0,12,3,6,2,12,6,24,7,18,5,
+ 114,1,1,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,
+ 3,0,0,0,67,0,0,0,115,39,0,0,0,116,0,0,
+ 106,1,0,124,1,0,131,1,0,125,2,0,105,2,0,124,
+ 2,0,106,2,0,100,1,0,54,124,2,0,106,3,0,100,
+ 2,0,54,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,194,0,0,0,114,195,
+ 0,0,0,41,4,114,3,0,0,0,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,76,0,0,0,114,35,0,0,0,114,255,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,245,0,0,0,51,4,0,0,115,4,0,0,0,
+ 0,2,15,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,130,0,0,0,114,246,
+ 0,0,0,41,5,114,76,0,0,0,114,127,0,0,0,114,
+ 126,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,247,0,
+ 0,0,56,4,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,5,1,0,0,105,182,1,0,0,99,3,0,0,0,
+ 1,0,0,0,9,0,0,0,18,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,166,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,138,0,0,0,114,55,0,0,0,41,9,114,76,
+ 0,0,0,114,35,0,0,0,114,53,0,0,0,114,5,1,
+ 0,0,218,6,112,97,114,101,110,116,114,117,0,0,0,114,
+ 27,0,0,0,114,23,0,0,0,114,249,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,246,0,
+ 0,0,61,4,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,
+ 57,0,0,0,114,56,0,0,0,114,58,0,0,0,114,59,
+ 0,0,0,114,245,0,0,0,114,247,0,0,0,114,246,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,47,4,0,0,115,
+ 8,0,0,0,12,2,6,2,12,5,12,5,114,3,1,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,
+ 0,0,0,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,135,0,0,
+ 102,1,0,100,2,0,100,3,0,134,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,135,0,0,83,41,8,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,2,0,0,0,2,
+ 0,0,0,3,0,0,0,115,32,0,0,0,116,0,0,131,
+ 0,0,106,1,0,124,1,0,131,1,0,1,124,1,0,106,
+ 2,0,124,1,0,95,3,0,100,0,0,83,41,1,78,41,
+ 4,114,149,0,0,0,114,240,0,0,0,114,165,0,0,0,
+ 114,239,0,0,0,41,2,114,76,0,0,0,114,162,0,0,
+ 0,41,1,114,151,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,240,0,0,0,94,4,0,0,115,4,0,0,0,
+ 0,1,16,1,122,38,83,111,117,114,99,101,108,101,115,115,
+ 70,105,108,101,76,111,97,100,101,114,46,105,110,105,116,95,
+ 109,111,100,117,108,101,95,97,116,116,114,115,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,124,0,0,106,2,0,124,1,0,124,3,0,
- 124,2,0,100,0,0,131,4,0,125,4,0,116,4,0,106,
- 5,0,124,4,0,131,1,0,125,5,0,116,6,0,124,5,
- 0,116,7,0,131,2,0,114,101,0,116,8,0,100,1,0,
- 124,2,0,131,2,0,1,124,5,0,83,116,9,0,100,2,
- 0,106,10,0,124,2,0,131,1,0,100,3,0,124,1,0,
- 100,4,0,124,2,0,131,1,2,130,1,0,100,0,0,83,
- 40,5,0,0,0,78,117,21,0,0,0,99,111,100,101,32,
- 111,98,106,101,99,116,32,102,114,111,109,32,123,33,114,125,
- 117,21,0,0,0,78,111,110,45,99,111,100,101,32,111,98,
- 106,101,99,116,32,105,110,32,123,125,117,4,0,0,0,110,
- 97,109,101,117,4,0,0,0,112,97,116,104,40,11,0,0,
- 0,117,12,0,0,0,103,101,116,95,102,105,108,101,110,97,
- 109,101,117,8,0,0,0,103,101,116,95,100,97,116,97,117,
- 20,0,0,0,95,98,121,116,101,115,95,102,114,111,109,95,
- 98,121,116,101,99,111,100,101,117,4,0,0,0,78,111,110,
- 101,117,7,0,0,0,109,97,114,115,104,97,108,117,5,0,
- 0,0,108,111,97,100,115,117,10,0,0,0,105,115,105,110,
- 115,116,97,110,99,101,117,10,0,0,0,95,99,111,100,101,
- 95,116,121,112,101,117,16,0,0,0,95,118,101,114,98,111,
- 115,101,95,109,101,115,115,97,103,101,117,11,0,0,0,73,
- 109,112,111,114,116,69,114,114,111,114,117,6,0,0,0,102,
- 111,114,109,97,116,40,6,0,0,0,117,4,0,0,0,115,
- 101,108,102,117,8,0,0,0,102,117,108,108,110,97,109,101,
- 117,4,0,0,0,112,97,116,104,117,4,0,0,0,100,97,
- 116,97,117,10,0,0,0,98,121,116,101,115,95,100,97,116,
- 97,117,5,0,0,0,102,111,117,110,100,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,103,101,116,95,
- 99,111,100,101,67,4,0,0,115,18,0,0,0,0,1,15,
- 1,15,1,24,1,15,1,15,1,13,1,4,2,18,1,117,
- 29,0,0,0,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,40,
- 2,0,0,0,117,39,0,0,0,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,40,1,0,0,0,117,4,0,0,0,78,111,110,101,40,
- 2,0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,
- 0,0,102,117,108,108,110,97,109,101,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,103,101,116,95,115,
- 111,117,114,99,101,79,4,0,0,115,2,0,0,0,0,2,
- 117,31,0,0,0,83,111,117,114,99,101,108,101,115,115,70,
+ 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,72,0,0,0,114,35,0,0,0,114,
+ 126,0,0,0,41,4,114,164,0,0,0,114,248,0,0,0,
+ 114,201,0,0,0,114,206,0,0,0,41,5,114,76,0,0,
+ 0,114,179,0,0,0,114,35,0,0,0,114,53,0,0,0,
+ 114,0,1,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,114,220,0,0,0,98,4,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,76,0,0,0,114,
+ 179,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,221,0,0,0,104,4,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,40,7,0,0,0,117,8,0,0,0,95,
- 95,110,97,109,101,95,95,117,10,0,0,0,95,95,109,111,
- 100,117,108,101,95,95,117,12,0,0,0,95,95,113,117,97,
- 108,110,97,109,101,95,95,117,7,0,0,0,95,95,100,111,
- 99,95,95,117,11,0,0,0,108,111,97,100,95,109,111,100,
- 117,108,101,117,8,0,0,0,103,101,116,95,99,111,100,101,
- 117,10,0,0,0,103,101,116,95,115,111,117,114,99,101,40,
- 1,0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,
- 115,95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 20,0,0,0,83,111,117,114,99,101,108,101,115,115,70,105,
- 108,101,76,111,97,100,101,114,60,4,0,0,115,8,0,0,
- 0,16,2,6,2,12,3,12,12,117,20,0,0,0,83,111,
- 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,
- 101,114,99,1,0,0,0,0,0,0,0,1,0,0,0,5,
- 0,0,0,66,0,0,0,115,104,0,0,0,124,0,0,69,
- 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,101,5,
- 0,101,6,0,101,7,0,100,4,0,100,5,0,132,0,0,
- 131,1,0,131,1,0,131,1,0,90,8,0,100,6,0,100,
- 7,0,132,0,0,90,9,0,100,8,0,100,9,0,132,0,
- 0,90,10,0,100,10,0,100,11,0,132,0,0,90,11,0,
- 100,12,0,83,40,13,0,0,0,117,19,0,0,0,69,120,
+ 117,114,99,101,41,7,114,57,0,0,0,114,56,0,0,0,
+ 114,58,0,0,0,114,59,0,0,0,114,240,0,0,0,114,
+ 220,0,0,0,114,221,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,41,1,114,151,0,0,0,114,5,0,0,0,114,
+ 8,1,0,0,90,4,0,0,115,8,0,0,0,12,2,6,
+ 2,18,4,12,6,114,8,1,0,0,99,0,0,0,0,0,
+ 0,0,0,0,0,0,0,5,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,90,3,0,100,2,0,100,3,0,132,0,0,90,
+ 4,0,101,5,0,101,6,0,101,7,0,100,4,0,100,5,
+ 0,132,0,0,131,1,0,131,1,0,131,1,0,90,8,0,
+ 100,6,0,100,7,0,132,0,0,90,9,0,100,8,0,100,
+ 9,0,132,0,0,90,10,0,100,10,0,100,11,0,132,0,
+ 0,90,11,0,101,5,0,100,12,0,100,13,0,132,0,0,
+ 131,1,0,90,12,0,100,14,0,83,41,15,218,19,69,120,
116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,
- 114,117,93,0,0,0,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,40,1,0,0,0,78,40,2,0,0,0,117,4,
- 0,0,0,110,97,109,101,117,4,0,0,0,112,97,116,104,
- 40,3,0,0,0,117,4,0,0,0,115,101,108,102,117,4,
- 0,0,0,110,97,109,101,117,4,0,0,0,112,97,116,104,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,
- 0,95,95,105,110,105,116,95,95,96,4,0,0,115,4,0,
- 0,0,0,1,9,1,117,28,0,0,0,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,
- 4,0,0,0,10,0,0,0,67,0,0,0,115,175,0,0,
- 0,124,1,0,116,0,0,106,1,0,107,6,0,125,2,0,
- 121,107,0,116,2,0,116,3,0,106,4,0,124,1,0,124,
- 0,0,106,5,0,131,3,0,125,3,0,116,6,0,100,1,
- 0,124,0,0,106,5,0,131,2,0,1,124,0,0,106,7,
- 0,124,1,0,131,1,0,114,117,0,116,8,0,124,3,0,
- 100,2,0,131,2,0,12,114,117,0,116,9,0,124,0,0,
- 106,5,0,131,1,0,100,3,0,25,103,1,0,124,3,0,
- 95,10,0,110,0,0,124,3,0,83,87,110,46,0,1,1,
- 1,124,2,0,12,114,163,0,124,1,0,116,0,0,106,1,
- 0,107,6,0,114,163,0,116,0,0,106,1,0,124,1,0,
- 61,110,0,0,130,0,0,89,110,1,0,88,100,4,0,83,
- 40,5,0,0,0,117,25,0,0,0,76,111,97,100,32,97,
- 110,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,
- 108,101,46,117,33,0,0,0,101,120,116,101,110,115,105,111,
- 110,32,109,111,100,117,108,101,32,108,111,97,100,101,100,32,
- 102,114,111,109,32,123,33,114,125,117,8,0,0,0,95,95,
- 112,97,116,104,95,95,105,0,0,0,0,78,40,11,0,0,
- 0,117,3,0,0,0,115,121,115,117,7,0,0,0,109,111,
- 100,117,108,101,115,117,25,0,0,0,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,117,4,0,0,0,95,105,109,112,117,12,0,0,
- 0,108,111,97,100,95,100,121,110,97,109,105,99,117,4,0,
- 0,0,112,97,116,104,117,16,0,0,0,95,118,101,114,98,
- 111,115,101,95,109,101,115,115,97,103,101,117,10,0,0,0,
- 105,115,95,112,97,99,107,97,103,101,117,7,0,0,0,104,
- 97,115,97,116,116,114,117,11,0,0,0,95,112,97,116,104,
- 95,115,112,108,105,116,117,8,0,0,0,95,95,112,97,116,
- 104,95,95,40,4,0,0,0,117,4,0,0,0,115,101,108,
- 102,117,8,0,0,0,102,117,108,108,110,97,109,101,117,9,
- 0,0,0,105,115,95,114,101,108,111,97,100,117,6,0,0,
- 0,109,111,100,117,108,101,40,0,0,0,0,40,0,0,0,
- 0,117,29,0,0,0,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,117,11,0,0,0,108,111,97,100,95,109,111,100,
- 117,108,101,100,4,0,0,115,24,0,0,0,0,5,15,1,
- 3,1,9,1,15,1,16,1,31,1,28,1,8,1,3,1,
- 22,1,13,1,117,31,0,0,0,69,120,116,101,110,115,105,
- 111,110,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,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,40,4,0,0,0,117,49,0,0,0,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,105,1,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,40,2,0,0,0,
- 117,8,0,0,0,95,95,105,110,105,116,95,95,78,40,0,
- 0,0,0,40,2,0,0,0,117,2,0,0,0,46,48,117,
- 6,0,0,0,115,117,102,102,105,120,40,1,0,0,0,117,
- 9,0,0,0,102,105,108,101,95,110,97,109,101,40,0,0,
- 0,0,117,29,0,0,0,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,117,9,0,0,0,60,103,101,110,101,120,112,
- 114,62,121,4,0,0,115,2,0,0,0,6,1,117,49,0,
- 0,0,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,40,4,0,0,0,117,11,0,0,0,95,112,97,
- 116,104,95,115,112,108,105,116,117,4,0,0,0,112,97,116,
- 104,117,3,0,0,0,97,110,121,117,18,0,0,0,69,88,
- 84,69,78,83,73,79,78,95,83,85,70,70,73,88,69,83,
- 40,2,0,0,0,117,4,0,0,0,115,101,108,102,117,8,
- 0,0,0,102,117,108,108,110,97,109,101,40,0,0,0,0,
- 40,1,0,0,0,117,9,0,0,0,102,105,108,101,95,110,
- 97,109,101,117,29,0,0,0,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,117,10,0,0,0,105,115,95,112,97,99,
- 107,97,103,101,118,4,0,0,115,6,0,0,0,0,2,19,
- 1,18,1,117,30,0,0,0,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,40,2,0,0,0,117,63,0,0,0,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,40,1,
- 0,0,0,117,4,0,0,0,78,111,110,101,40,2,0,0,
- 0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,102,
- 117,108,108,110,97,109,101,40,0,0,0,0,40,0,0,0,
- 0,117,29,0,0,0,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,117,8,0,0,0,103,101,116,95,99,111,100,101,
- 124,4,0,0,115,2,0,0,0,0,2,117,28,0,0,0,
- 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,40,2,0,0,0,117,
- 53,0,0,0,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,40,1,0,0,0,117,
- 4,0,0,0,78,111,110,101,40,2,0,0,0,117,4,0,
- 0,0,115,101,108,102,117,8,0,0,0,102,117,108,108,110,
- 97,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 10,0,0,0,103,101,116,95,115,111,117,114,99,101,128,4,
- 0,0,115,2,0,0,0,0,2,117,30,0,0,0,69,120,
+ 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,72,0,0,0,114,35,0,0,0,41,
+ 3,114,76,0,0,0,114,72,0,0,0,114,35,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 77,0,0,0,121,4,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,3,0,0,0,11,0,0,0,
+ 67,0,0,0,115,126,0,0,0,116,0,0,124,1,0,131,
+ 1,0,143,108,0,1,116,1,0,116,2,0,106,3,0,124,
+ 1,0,124,0,0,106,4,0,131,3,0,125,2,0,116,5,
+ 0,100,1,0,124,0,0,106,4,0,131,2,0,1,124,0,
+ 0,106,6,0,124,1,0,131,1,0,114,112,0,116,7,0,
+ 124,2,0,100,2,0,131,2,0,12,114,112,0,116,8,0,
+ 124,0,0,106,4,0,131,1,0,100,3,0,25,103,1,0,
+ 124,2,0,95,9,0,110,0,0,124,2,0,83,87,100,4,
+ 0,81,88,100,4,0,83,41,5,122,25,76,111,97,100,32,
+ 97,110,32,101,120,116,101,110,115,105,111,110,32,109,111,100,
+ 117,108,101,46,122,33,101,120,116,101,110,115,105,111,110,32,
+ 109,111,100,117,108,101,32,108,111,97,100,101,100,32,102,114,
+ 111,109,32,123,33,114,125,114,160,0,0,0,114,68,0,0,
+ 0,78,41,10,114,139,0,0,0,114,100,0,0,0,114,95,
+ 0,0,0,90,12,108,111,97,100,95,100,121,110,97,109,105,
+ 99,114,35,0,0,0,114,138,0,0,0,114,157,0,0,0,
+ 114,60,0,0,0,114,38,0,0,0,114,160,0,0,0,41,
+ 3,114,76,0,0,0,114,179,0,0,0,114,162,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 219,0,0,0,125,4,0,0,115,14,0,0,0,0,5,13,
+ 1,9,1,15,1,16,1,31,1,28,1,122,31,69,120,116,
+ 101,110,115,105,111,110,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,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,77,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,114,144,0,0,
+ 0,141,4,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,103,101,116,95,115,111,117,114,99,101,78,40,12,0,
- 0,0,117,8,0,0,0,95,95,110,97,109,101,95,95,117,
- 10,0,0,0,95,95,109,111,100,117,108,101,95,95,117,12,
- 0,0,0,95,95,113,117,97,108,110,97,109,101,95,95,117,
- 7,0,0,0,95,95,100,111,99,95,95,117,8,0,0,0,
- 95,95,105,110,105,116,95,95,117,11,0,0,0,95,99,104,
- 101,99,107,95,110,97,109,101,117,11,0,0,0,115,101,116,
- 95,112,97,99,107,97,103,101,117,10,0,0,0,115,101,116,
- 95,108,111,97,100,101,114,117,11,0,0,0,108,111,97,100,
- 95,109,111,100,117,108,101,117,10,0,0,0,105,115,95,112,
- 97,99,107,97,103,101,117,8,0,0,0,103,101,116,95,99,
- 111,100,101,117,10,0,0,0,103,101,116,95,115,111,117,114,
- 99,101,40,1,0,0,0,117,10,0,0,0,95,95,108,111,
- 99,97,108,115,95,95,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,19,0,0,0,69,120,116,101,110,115,105,111,110,
- 70,105,108,101,76,111,97,100,101,114,88,4,0,0,115,16,
- 0,0,0,16,6,6,2,12,4,3,1,3,1,24,16,12,
- 6,12,4,117,19,0,0,0,69,120,116,101,110,115,105,111,
- 110,70,105,108,101,76,111,97,100,101,114,99,1,0,0,0,
- 0,0,0,0,1,0,0,0,2,0,0,0,66,0,0,0,
- 115,134,0,0,0,124,0,0,69,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,40,21,0,0,0,
- 117,14,0,0,0,95,78,97,109,101,115,112,97,99,101,80,
- 97,116,104,117,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,40,1,0,0,
- 0,78,40,6,0,0,0,117,5,0,0,0,95,110,97,109,
- 101,117,5,0,0,0,95,112,97,116,104,117,5,0,0,0,
- 116,117,112,108,101,117,16,0,0,0,95,103,101,116,95,112,
- 97,114,101,110,116,95,112,97,116,104,117,17,0,0,0,95,
- 108,97,115,116,95,112,97,114,101,110,116,95,112,97,116,104,
- 117,12,0,0,0,95,112,97,116,104,95,102,105,110,100,101,
- 114,40,4,0,0,0,117,4,0,0,0,115,101,108,102,117,
- 4,0,0,0,110,97,109,101,117,4,0,0,0,112,97,116,
- 104,117,11,0,0,0,112,97,116,104,95,102,105,110,100,101,
- 114,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,8,0,
- 0,0,95,95,105,110,105,116,95,95,140,4,0,0,115,8,
- 0,0,0,0,1,9,1,9,1,21,1,117,23,0,0,0,
- 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,40,7,0,0,0,117,62,0,0,0,
- 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,117,1,
- 0,0,0,46,117,0,0,0,0,117,3,0,0,0,115,121,
- 115,117,4,0,0,0,112,97,116,104,117,8,0,0,0,95,
- 95,112,97,116,104,95,95,40,2,0,0,0,117,3,0,0,
- 0,115,121,115,117,4,0,0,0,112,97,116,104,40,2,0,
- 0,0,117,5,0,0,0,95,110,97,109,101,117,10,0,0,
- 0,114,112,97,114,116,105,116,105,111,110,40,4,0,0,0,
- 117,4,0,0,0,115,101,108,102,117,6,0,0,0,112,97,
- 114,101,110,116,117,3,0,0,0,100,111,116,117,2,0,0,
- 0,109,101,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 23,0,0,0,95,102,105,110,100,95,112,97,114,101,110,116,
- 95,112,97,116,104,95,110,97,109,101,115,146,4,0,0,115,
- 8,0,0,0,0,2,27,1,12,2,4,3,117,38,0,0,
- 0,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,40,1,0,0,0,78,40,4,0,
- 0,0,117,23,0,0,0,95,102,105,110,100,95,112,97,114,
- 101,110,116,95,112,97,116,104,95,110,97,109,101,115,117,7,
- 0,0,0,103,101,116,97,116,116,114,117,3,0,0,0,115,
- 121,115,117,7,0,0,0,109,111,100,117,108,101,115,40,3,
- 0,0,0,117,4,0,0,0,115,101,108,102,117,18,0,0,
- 0,112,97,114,101,110,116,95,109,111,100,117,108,101,95,110,
- 97,109,101,117,14,0,0,0,112,97,116,104,95,97,116,116,
- 114,95,110,97,109,101,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,16,0,0,0,95,103,101,116,95,112,97,114,101,
- 110,116,95,112,97,116,104,156,4,0,0,115,4,0,0,0,
- 0,1,18,1,117,31,0,0,0,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,4,0,0,0,3,0,0,0,67,0,0,0,115,103,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,96,0,124,0,0,106,3,0,124,0,0,106,4,0,124,
- 1,0,131,2,0,92,2,0,125,2,0,125,3,0,124,2,
- 0,100,0,0,107,8,0,114,84,0,124,3,0,124,0,0,
- 95,6,0,110,0,0,124,1,0,124,0,0,95,2,0,110,
- 0,0,124,0,0,106,6,0,83,40,1,0,0,0,78,40,
- 7,0,0,0,117,5,0,0,0,116,117,112,108,101,117,16,
- 0,0,0,95,103,101,116,95,112,97,114,101,110,116,95,112,
- 97,116,104,117,17,0,0,0,95,108,97,115,116,95,112,97,
- 114,101,110,116,95,112,97,116,104,117,12,0,0,0,95,112,
- 97,116,104,95,102,105,110,100,101,114,117,5,0,0,0,95,
- 110,97,109,101,117,4,0,0,0,78,111,110,101,117,5,0,
- 0,0,95,112,97,116,104,40,4,0,0,0,117,4,0,0,
- 0,115,101,108,102,117,11,0,0,0,112,97,114,101,110,116,
- 95,112,97,116,104,117,6,0,0,0,108,111,97,100,101,114,
- 117,8,0,0,0,110,101,119,95,112,97,116,104,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,12,0,0,0,95,114,
- 101,99,97,108,99,117,108,97,116,101,160,4,0,0,115,14,
- 0,0,0,0,2,18,1,15,1,27,3,12,1,12,1,12,
- 1,117,27,0,0,0,95,78,97,109,101,115,112,97,99,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,114,145,0,0,0,
+ 218,18,69,88,84,69,78,83,73,79,78,95,83,85,70,70,
+ 73,88,69,83,41,2,114,76,0,0,0,114,179,0,0,0,
+ 114,4,0,0,0,41,1,114,11,1,0,0,114,5,0,0,
+ 0,114,157,0,0,0,138,4,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,76,
+ 0,0,0,114,179,0,0,0,114,4,0,0,0,114,4,0,
+ 0,0,114,5,0,0,0,114,220,0,0,0,144,4,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,76,0,0,0,114,179,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,221,0,
+ 0,0,148,4,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,76,0,0,0,114,179,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,164,
+ 0,0,0,152,4,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,13,114,57,0,0,0,114,56,0,0,0,114,58,0,
+ 0,0,114,59,0,0,0,114,77,0,0,0,114,177,0,0,
+ 0,114,171,0,0,0,114,174,0,0,0,114,219,0,0,0,
+ 114,157,0,0,0,114,220,0,0,0,114,221,0,0,0,114,
+ 164,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,9,1,0,0,113,4,0,
+ 0,115,18,0,0,0,12,6,6,2,12,4,3,1,3,1,
+ 24,11,12,6,12,4,12,4,114,9,1,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,114,140,0,0,0,218,5,
+ 95,112,97,116,104,114,237,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,
+ 76,0,0,0,114,72,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,77,0,0,0,165,
+ 4,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,102,0,0,0,114,
+ 30,0,0,0,114,7,0,0,0,114,35,0,0,0,114,160,
+ 0,0,0,41,2,122,3,115,121,115,122,4,112,97,116,104,
+ 41,2,114,140,0,0,0,114,32,0,0,0,41,4,114,76,
+ 0,0,0,114,7,1,0,0,218,3,100,111,116,114,81,0,
+ 0,0,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,171,4,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,20,1,0,0,114,62,0,
+ 0,0,114,7,0,0,0,114,141,0,0,0,41,3,114,76,
+ 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,15,1,0,0,181,4,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,4,0,0,0,3,0,0,0,67,0,0,0,115,103,
+ 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,96,0,124,0,0,106,3,0,124,0,0,106,4,0,
+ 124,1,0,131,2,0,92,2,0,125,2,0,125,3,0,124,
+ 2,0,100,0,0,107,8,0,114,84,0,124,3,0,124,0,
+ 0,95,5,0,110,0,0,124,1,0,124,0,0,95,2,0,
+ 110,0,0,124,0,0,106,5,0,83,41,1,78,41,6,114,
+ 237,0,0,0,114,15,1,0,0,114,16,1,0,0,114,17,
+ 1,0,0,114,140,0,0,0,114,14,1,0,0,41,4,114,
+ 76,0,0,0,90,11,112,97,114,101,110,116,95,112,97,116,
+ 104,114,161,0,0,0,90,8,110,101,119,95,112,97,116,104,
+ 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,185,4,0,
+ 0,115,14,0,0,0,0,2,18,1,15,1,27,3,12,1,
+ 12,1,12,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,40,1,0,0,0,
- 78,40,2,0,0,0,117,4,0,0,0,105,116,101,114,117,
- 12,0,0,0,95,114,101,99,97,108,99,117,108,97,116,101,
- 40,1,0,0,0,117,4,0,0,0,115,101,108,102,40,0,
- 0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,95,
- 95,105,116,101,114,95,95,172,4,0,0,115,2,0,0,0,
- 0,1,117,23,0,0,0,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,40,1,0,0,0,78,40,2,
- 0,0,0,117,3,0,0,0,108,101,110,117,12,0,0,0,
- 95,114,101,99,97,108,99,117,108,97,116,101,40,1,0,0,
- 0,117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,7,0,0,0,95,95,108,101,110,
- 95,95,175,4,0,0,115,2,0,0,0,0,1,117,22,0,
- 0,0,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,40,2,0,0,0,78,117,20,0,0,0,95,78,97,
- 109,101,115,112,97,99,101,80,97,116,104,40,123,33,114,125,
- 41,40,2,0,0,0,117,6,0,0,0,102,111,114,109,97,
- 116,117,5,0,0,0,95,112,97,116,104,40,1,0,0,0,
- 117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,8,0,0,0,95,95,114,101,112,114,
- 95,95,178,4,0,0,115,2,0,0,0,0,1,117,23,0,
- 0,0,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,40,1,0,0,0,78,40,1,0,0,0,117,12,
- 0,0,0,95,114,101,99,97,108,99,117,108,97,116,101,40,
- 2,0,0,0,117,4,0,0,0,115,101,108,102,117,4,0,
- 0,0,105,116,101,109,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,12,0,0,0,95,95,99,111,110,116,97,105,110,
- 115,95,95,181,4,0,0,115,2,0,0,0,0,1,117,27,
- 0,0,0,95,78,97,109,101,115,112,97,99,101,80,97,116,
+ 0,106,1,0,131,0,0,131,1,0,83,41,1,78,41,2,
+ 218,4,105,116,101,114,114,21,1,0,0,41,1,114,76,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,197,4,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,21,1,0,0,41,1,114,76,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,200,4,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,14,1,0,0,41,1,114,76,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 88,0,0,0,203,4,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,21,1,0,0,41,2,114,76,
+ 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,206,4,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,40,1,0,0,
- 0,78,40,2,0,0,0,117,5,0,0,0,95,112,97,116,
- 104,117,6,0,0,0,97,112,112,101,110,100,40,2,0,0,
- 0,117,4,0,0,0,115,101,108,102,117,4,0,0,0,105,
- 116,101,109,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 6,0,0,0,97,112,112,101,110,100,184,4,0,0,115,2,
- 0,0,0,0,1,117,21,0,0,0,95,78,97,109,101,115,
- 112,97,99,101,80,97,116,104,46,97,112,112,101,110,100,78,
- 40,13,0,0,0,117,8,0,0,0,95,95,110,97,109,101,
- 95,95,117,10,0,0,0,95,95,109,111,100,117,108,101,95,
- 95,117,12,0,0,0,95,95,113,117,97,108,110,97,109,101,
- 95,95,117,7,0,0,0,95,95,100,111,99,95,95,117,8,
- 0,0,0,95,95,105,110,105,116,95,95,117,23,0,0,0,
- 95,102,105,110,100,95,112,97,114,101,110,116,95,112,97,116,
- 104,95,110,97,109,101,115,117,16,0,0,0,95,103,101,116,
- 95,112,97,114,101,110,116,95,112,97,116,104,117,12,0,0,
- 0,95,114,101,99,97,108,99,117,108,97,116,101,117,8,0,
- 0,0,95,95,105,116,101,114,95,95,117,7,0,0,0,95,
- 95,108,101,110,95,95,117,8,0,0,0,95,95,114,101,112,
- 114,95,95,117,12,0,0,0,95,95,99,111,110,116,97,105,
- 110,115,95,95,117,6,0,0,0,97,112,112,101,110,100,40,
- 1,0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,
- 115,95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,
- 0,0,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,117,
- 14,0,0,0,95,78,97,109,101,115,112,97,99,101,80,97,
- 116,104,133,4,0,0,115,20,0,0,0,16,5,6,2,12,
- 6,12,10,12,4,12,12,12,3,12,3,12,3,12,3,117,
- 14,0,0,0,95,78,97,109,101,115,112,97,99,101,80,97,
- 116,104,99,1,0,0,0,0,0,0,0,1,0,0,0,3,
- 0,0,0,66,0,0,0,115,68,0,0,0,124,0,0,69,
- 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,101,6,0,100,5,0,
- 100,6,0,132,0,0,131,1,0,90,7,0,100,7,0,83,
- 40,8,0,0,0,117,15,0,0,0,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,40,1,0,0,
- 0,78,40,2,0,0,0,117,14,0,0,0,95,78,97,109,
- 101,115,112,97,99,101,80,97,116,104,117,5,0,0,0,95,
- 112,97,116,104,40,4,0,0,0,117,4,0,0,0,115,101,
- 108,102,117,4,0,0,0,110,97,109,101,117,4,0,0,0,
- 112,97,116,104,117,11,0,0,0,112,97,116,104,95,102,105,
- 110,100,101,114,40,0,0,0,0,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,8,0,0,0,95,95,105,110,105,116,95,95,189,4,0,
- 0,115,2,0,0,0,0,1,117,24,0,0,0,78,97,109,
- 101,115,112,97,99,101,76,111,97,100,101,114,46,95,95,105,
- 110,105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,
- 0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,100,
- 1,0,106,0,0,124,1,0,106,1,0,131,1,0,83,40,
- 2,0,0,0,78,117,25,0,0,0,60,109,111,100,117,108,
- 101,32,39,123,125,39,32,40,110,97,109,101,115,112,97,99,
- 101,41,62,40,2,0,0,0,117,6,0,0,0,102,111,114,
- 109,97,116,117,8,0,0,0,95,95,110,97,109,101,95,95,
- 40,2,0,0,0,117,3,0,0,0,99,108,115,117,6,0,
- 0,0,109,111,100,117,108,101,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,11,0,0,0,109,111,100,117,108,101,95,
- 114,101,112,114,192,4,0,0,115,2,0,0,0,0,2,117,
- 27,0,0,0,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,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,124,0,0,106,1,0,124,
- 1,0,95,2,0,124,1,0,83,40,2,0,0,0,117,24,
- 0,0,0,76,111,97,100,32,97,32,110,97,109,101,115,112,
- 97,99,101,32,109,111,100,117,108,101,46,117,38,0,0,0,
- 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,40,3,0,0,0,117,16,0,0,0,
- 95,118,101,114,98,111,115,101,95,109,101,115,115,97,103,101,
- 117,5,0,0,0,95,112,97,116,104,117,8,0,0,0,95,
- 95,112,97,116,104,95,95,40,2,0,0,0,117,4,0,0,
- 0,115,101,108,102,117,6,0,0,0,109,111,100,117,108,101,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,
- 0,108,111,97,100,95,109,111,100,117,108,101,196,4,0,0,
- 115,6,0,0,0,0,3,16,1,12,1,117,27,0,0,0,
- 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,40,8,0,0,
- 0,117,8,0,0,0,95,95,110,97,109,101,95,95,117,10,
- 0,0,0,95,95,109,111,100,117,108,101,95,95,117,12,0,
- 0,0,95,95,113,117,97,108,110,97,109,101,95,95,117,8,
- 0,0,0,95,95,105,110,105,116,95,95,117,11,0,0,0,
- 99,108,97,115,115,109,101,116,104,111,100,117,11,0,0,0,
- 109,111,100,117,108,101,95,114,101,112,114,117,17,0,0,0,
- 109,111,100,117,108,101,95,102,111,114,95,108,111,97,100,101,
- 114,117,11,0,0,0,108,111,97,100,95,109,111,100,117,108,
- 101,40,1,0,0,0,117,10,0,0,0,95,95,108,111,99,
- 97,108,115,95,95,40,0,0,0,0,40,0,0,0,0,117,
- 29,0,0,0,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,117,15,0,0,0,78,97,109,101,115,112,97,99,101,76,
- 111,97,100,101,114,188,4,0,0,115,6,0,0,0,16,1,
- 12,3,18,4,117,15,0,0,0,78,97,109,101,115,112,97,
- 99,101,76,111,97,100,101,114,99,1,0,0,0,0,0,0,
- 0,1,0,0,0,4,0,0,0,66,0,0,0,115,119,0,
- 0,0,124,0,0,69,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,12,0,100,10,0,100,11,0,132,1,0,131,
- 1,0,90,10,0,100,12,0,83,40,13,0,0,0,117,10,
- 0,0,0,80,97,116,104,70,105,110,100,101,114,117,62,0,
- 0,0,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,58,0,0,0,120,51,0,116,0,0,
- 106,1,0,106,2,0,131,0,0,68,93,34,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,113,16,0,87,
- 100,2,0,83,40,3,0,0,0,117,125,0,0,0,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,117,17,0,0,0,
+ 0,124,1,0,131,1,0,1,100,0,0,83,41,1,78,41,
+ 2,114,14,1,0,0,114,166,0,0,0,41,2,114,76,0,
+ 0,0,114,25,1,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,166,0,0,0,209,4,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,57,0,0,0,114,56,0,0,0,114,58,0,0,0,114,
+ 59,0,0,0,114,77,0,0,0,114,20,1,0,0,114,15,
+ 1,0,0,114,21,1,0,0,114,23,1,0,0,114,24,1,
+ 0,0,114,88,0,0,0,114,26,1,0,0,114,166,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,5,0,0,0,114,13,1,0,0,158,4,0,0,115,20,
+ 0,0,0,12,5,6,2,12,6,12,10,12,4,12,12,12,
+ 3,12,3,12,3,12,3,114,13,1,0,0,99,0,0,0,
+ 0,0,0,0,0,0,0,0,0,3,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,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,83,
+ 41,16,218,15,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,13,1,0,0,
+ 114,14,1,0,0,41,4,114,76,0,0,0,114,72,0,0,
+ 0,114,35,0,0,0,114,18,1,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,77,0,0,0,214,
+ 4,0,0,115,2,0,0,0,0,1,122,24,78,97,109,101,
+ 115,112,97,99,101,76,111,97,100,101,114,46,95,95,105,110,
+ 105,116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,
+ 0,2,0,0,0,67,0,0,0,115,16,0,0,0,100,1,
+ 0,106,0,0,124,1,0,106,1,0,131,1,0,83,41,2,
+ 78,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,57,0,0,0,41,2,114,216,0,0,0,114,
+ 162,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,217,0,0,0,217,4,0,0,115,2,0,0,
+ 0,0,2,122,27,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,76,0,0,0,114,179,
+ 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,
+ 0,0,114,157,0,0,0,221,4,0,0,115,2,0,0,0,
+ 0,1,122,26,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,76,0,0,0,
+ 114,179,0,0,0,114,4,0,0,0,114,4,0,0,0,114,
+ 5,0,0,0,114,221,0,0,0,224,4,0,0,115,2,0,
+ 0,0,0,1,122,26,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,241,0,0,0,114,251,0,0,0,84,41,1,114,
+ 252,0,0,0,41,2,114,76,0,0,0,114,179,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,
+ 220,0,0,0,227,4,0,0,115,2,0,0,0,0,1,122,
+ 24,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,2,0,0,0,67,0,0,0,115,25,
+ 0,0,0,124,0,0,124,1,0,95,0,0,124,1,0,106,
+ 1,0,124,1,0,95,2,0,100,0,0,83,41,1,78,41,
+ 3,114,172,0,0,0,114,57,0,0,0,114,159,0,0,0,
+ 41,2,114,76,0,0,0,114,162,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,114,240,0,0,0,
+ 230,4,0,0,115,4,0,0,0,0,1,9,1,122,33,78,
+ 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,105,
+ 110,105,116,95,109,111,100,117,108,101,95,97,116,116,114,115,
+ 99,2,0,0,0,0,0,0,0,3,0,0,0,9,0,0,
+ 0,67,0,0,0,115,70,0,0,0,116,0,0,100,1,0,
+ 124,0,0,106,1,0,131,2,0,1,116,2,0,124,1,0,
+ 131,1,0,143,36,0,125,2,0,124,0,0,106,3,0,124,
+ 2,0,131,1,0,1,124,0,0,106,1,0,124,2,0,95,
+ 4,0,124,2,0,83,87,100,2,0,81,88,100,2,0,83,
+ 41,3,122,24,76,111,97,100,32,97,32,110,97,109,101,115,
+ 112,97,99,101,32,109,111,100,117,108,101,46,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,78,41,5,114,138,0,0,0,114,14,1,0,
+ 0,114,156,0,0,0,114,240,0,0,0,114,160,0,0,0,
+ 41,3,114,76,0,0,0,114,179,0,0,0,114,162,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,219,0,0,0,234,4,0,0,115,10,0,0,0,0,2,
+ 16,1,15,1,13,1,12,1,122,27,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,11,114,57,0,0,0,114,56,0,
+ 0,0,114,58,0,0,0,114,77,0,0,0,114,222,0,0,
+ 0,114,217,0,0,0,114,157,0,0,0,114,221,0,0,0,
+ 114,220,0,0,0,114,240,0,0,0,114,219,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,
+ 0,0,0,114,27,1,0,0,213,4,0,0,115,14,0,0,
+ 0,12,1,12,3,18,4,12,3,12,3,12,3,12,4,114,
+ 27,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0,
+ 0,4,0,0,0,64,0,0,0,115,115,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,100,10,0,
+ 83,41,13,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,58,0,0,0,120,51,0,116,0,0,106,
+ 1,0,106,2,0,131,0,0,68,93,34,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,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,78,40,5,0,0,0,117,3,0,0,0,115,121,115,117,
- 19,0,0,0,112,97,116,104,95,105,109,112,111,114,116,101,
- 114,95,99,97,99,104,101,117,6,0,0,0,118,97,108,117,
- 101,115,117,7,0,0,0,104,97,115,97,116,116,114,117,17,
- 0,0,0,105,110,118,97,108,105,100,97,116,101,95,99,97,
- 99,104,101,115,40,2,0,0,0,117,3,0,0,0,99,108,
- 115,117,6,0,0,0,102,105,110,100,101,114,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,17,0,0,0,105,110,118,
- 97,108,105,100,97,116,101,95,99,97,99,104,101,115,210,4,
- 0,0,115,6,0,0,0,0,4,22,1,15,1,117,28,0,
- 0,0,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,94,0,0,0,116,0,0,106,1,0,115,28,
- 0,116,2,0,106,3,0,100,1,0,116,4,0,131,2,0,
- 1,110,0,0,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,38,0,4,116,5,0,107,10,0,114,81,0,1,
- 1,1,119,38,0,89,113,38,0,88,113,38,0,87,100,2,
- 0,83,100,2,0,83,40,3,0,0,0,117,113,0,0,0,
- 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,117,23,0,0,0,115,121,115,46,112,97,116,104,95,104,
- 111,111,107,115,32,105,115,32,101,109,112,116,121,78,40,7,
- 0,0,0,117,3,0,0,0,115,121,115,117,10,0,0,0,
- 112,97,116,104,95,104,111,111,107,115,117,9,0,0,0,95,
- 119,97,114,110,105,110,103,115,117,4,0,0,0,119,97,114,
- 110,117,13,0,0,0,73,109,112,111,114,116,87,97,114,110,
- 105,110,103,117,11,0,0,0,73,109,112,111,114,116,69,114,
- 114,111,114,117,4,0,0,0,78,111,110,101,40,3,0,0,
- 0,117,3,0,0,0,99,108,115,117,4,0,0,0,112,97,
- 116,104,117,4,0,0,0,104,111,111,107,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,95,112,97,116,
- 104,95,104,111,111,107,115,218,4,0,0,115,16,0,0,0,
- 0,7,9,1,19,1,16,1,3,1,14,1,13,1,12,2,
- 117,22,0,0,0,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,11,0,0,0,67,0,0,0,
- 115,91,0,0,0,124,1,0,100,1,0,107,2,0,114,21,
- 0,100,2,0,125,1,0,110,0,0,121,17,0,116,0,0,
- 106,1,0,124,1,0,25,125,2,0,87,110,46,0,4,116,
- 2,0,107,10,0,114,86,0,1,1,1,124,0,0,106,3,
- 0,124,1,0,131,1,0,125,2,0,124,2,0,116,0,0,
- 106,1,0,124,1,0,60,89,110,1,0,88,124,2,0,83,
- 40,3,0,0,0,117,210,0,0,0,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,117,0,0,0,
- 0,117,1,0,0,0,46,40,4,0,0,0,117,3,0,0,
- 0,115,121,115,117,19,0,0,0,112,97,116,104,95,105,109,
- 112,111,114,116,101,114,95,99,97,99,104,101,117,8,0,0,
- 0,75,101,121,69,114,114,111,114,117,11,0,0,0,95,112,
- 97,116,104,95,104,111,111,107,115,40,3,0,0,0,117,3,
- 0,0,0,99,108,115,117,4,0,0,0,112,97,116,104,117,
- 6,0,0,0,102,105,110,100,101,114,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,20,0,0,0,95,112,97,116,104,
- 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,235,
- 4,0,0,115,16,0,0,0,0,8,12,1,9,1,3,1,
- 17,1,13,1,15,1,18,1,117,31,0,0,0,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,8,0,0,0,5,0,0,0,67,0,0,
- 0,115,189,0,0,0,103,0,0,125,3,0,120,176,0,124,
- 2,0,68,93,158,0,125,4,0,116,0,0,124,4,0,116,
- 1,0,116,2,0,102,2,0,131,2,0,115,46,0,113,13,
- 0,110,0,0,124,0,0,106,3,0,124,4,0,131,1,0,
- 125,5,0,124,5,0,100,2,0,107,9,0,114,13,0,116,
- 5,0,124,5,0,100,1,0,131,2,0,114,112,0,124,5,
- 0,106,6,0,124,1,0,131,1,0,92,2,0,125,6,0,
- 125,7,0,110,21,0,124,5,0,106,7,0,124,1,0,131,
- 1,0,125,6,0,103,0,0,125,7,0,124,6,0,100,2,
- 0,107,9,0,114,155,0,124,6,0,124,3,0,102,2,0,
- 83,124,3,0,106,8,0,124,7,0,131,1,0,1,113,13,
- 0,113,13,0,87,100,2,0,124,3,0,102,2,0,83,100,
- 2,0,83,40,3,0,0,0,117,63,0,0,0,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,117,11,0,0,
- 0,102,105,110,100,95,108,111,97,100,101,114,78,40,9,0,
- 0,0,117,10,0,0,0,105,115,105,110,115,116,97,110,99,
- 101,117,3,0,0,0,115,116,114,117,5,0,0,0,98,121,
- 116,101,115,117,20,0,0,0,95,112,97,116,104,95,105,109,
- 112,111,114,116,101,114,95,99,97,99,104,101,117,4,0,0,
- 0,78,111,110,101,117,7,0,0,0,104,97,115,97,116,116,
- 114,117,11,0,0,0,102,105,110,100,95,108,111,97,100,101,
- 114,117,11,0,0,0,102,105,110,100,95,109,111,100,117,108,
- 101,117,6,0,0,0,101,120,116,101,110,100,40,8,0,0,
- 0,117,3,0,0,0,99,108,115,117,8,0,0,0,102,117,
- 108,108,110,97,109,101,117,4,0,0,0,112,97,116,104,117,
- 14,0,0,0,110,97,109,101,115,112,97,99,101,95,112,97,
- 116,104,117,5,0,0,0,101,110,116,114,121,117,6,0,0,
- 0,102,105,110,100,101,114,117,6,0,0,0,108,111,97,100,
- 101,114,117,8,0,0,0,112,111,114,116,105,111,110,115,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,
- 95,103,101,116,95,108,111,97,100,101,114,252,4,0,0,115,
- 28,0,0,0,0,5,6,1,13,1,21,1,6,1,15,1,
- 12,1,15,1,24,2,15,1,6,1,12,2,10,5,20,2,
- 117,22,0,0,0,80,97,116,104,70,105,110,100,101,114,46,
- 95,103,101,116,95,108,111,97,100,101,114,99,3,0,0,0,
- 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0,
- 115,97,0,0,0,124,2,0,100,1,0,107,8,0,114,24,
- 0,116,1,0,106,2,0,125,2,0,110,0,0,124,0,0,
- 106,3,0,124,1,0,124,2,0,131,2,0,92,2,0,125,
- 3,0,125,4,0,124,3,0,100,1,0,107,9,0,114,64,
- 0,124,3,0,83,124,4,0,114,89,0,116,4,0,124,1,
- 0,124,4,0,124,0,0,106,3,0,131,3,0,83,100,1,
- 0,83,100,1,0,83,40,2,0,0,0,117,98,0,0,0,
- 70,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,40,5,0,0,0,117,4,0,0,0,78,111,110,
- 101,117,3,0,0,0,115,121,115,117,4,0,0,0,112,97,
- 116,104,117,11,0,0,0,95,103,101,116,95,108,111,97,100,
- 101,114,117,15,0,0,0,78,97,109,101,115,112,97,99,101,
- 76,111,97,100,101,114,40,5,0,0,0,117,3,0,0,0,
- 99,108,115,117,8,0,0,0,102,117,108,108,110,97,109,101,
- 117,4,0,0,0,112,97,116,104,117,6,0,0,0,108,111,
- 97,100,101,114,117,14,0,0,0,110,97,109,101,115,112,97,
- 99,101,95,112,97,116,104,40,0,0,0,0,40,0,0,0,
- 0,117,29,0,0,0,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,117,11,0,0,0,102,105,110,100,95,109,111,100,
- 117,108,101,23,5,0,0,115,16,0,0,0,0,4,12,1,
- 12,1,24,1,12,1,4,2,6,3,19,2,117,22,0,0,
- 0,80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,
- 95,109,111,100,117,108,101,78,40,11,0,0,0,117,8,0,
- 0,0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,
- 95,109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,
- 113,117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,
- 95,100,111,99,95,95,117,11,0,0,0,99,108,97,115,115,
- 109,101,116,104,111,100,117,17,0,0,0,105,110,118,97,108,
- 105,100,97,116,101,95,99,97,99,104,101,115,117,11,0,0,
- 0,95,112,97,116,104,95,104,111,111,107,115,117,20,0,0,
- 0,95,112,97,116,104,95,105,109,112,111,114,116,101,114,95,
- 99,97,99,104,101,117,11,0,0,0,95,103,101,116,95,108,
- 111,97,100,101,114,117,4,0,0,0,78,111,110,101,117,11,
- 0,0,0,102,105,110,100,95,109,111,100,117,108,101,40,1,
- 0,0,0,117,10,0,0,0,95,95,108,111,99,97,108,115,
- 95,95,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,10,
- 0,0,0,80,97,116,104,70,105,110,100,101,114,206,4,0,
- 0,115,14,0,0,0,16,2,6,2,18,8,18,17,18,17,
- 18,27,3,1,117,10,0,0,0,80,97,116,104,70,105,110,
- 100,101,114,99,1,0,0,0,0,0,0,0,1,0,0,0,
- 3,0,0,0,66,0,0,0,115,110,0,0,0,124,0,0,
- 69,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,
+ 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,60,0,0,
+ 0,114,29,1,0,0,41,2,114,216,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,29,1,0,0,249,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,94,0,0,0,
+ 116,0,0,106,1,0,115,28,0,116,2,0,106,3,0,100,
+ 1,0,116,4,0,131,2,0,1,110,0,0,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,38,0,4,116,5,
+ 0,107,10,0,114,81,0,1,1,1,119,38,0,89,113,38,
+ 0,88,113,38,0,87,100,2,0,83,100,2,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,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,78,41,6,114,
+ 7,0,0,0,218,10,112,97,116,104,95,104,111,111,107,115,
+ 114,186,0,0,0,114,187,0,0,0,114,188,0,0,0,114,
+ 158,0,0,0,41,3,114,216,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,1,5,0,0,115,16,0,0,0,0,7,9,1,19,
+ 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,
+ 11,0,0,0,67,0,0,0,115,97,0,0,0,124,1,0,
+ 100,1,0,107,2,0,114,27,0,116,0,0,106,1,0,131,
+ 0,0,125,1,0,110,0,0,121,17,0,116,2,0,106,3,
+ 0,124,1,0,25,125,2,0,87,110,46,0,4,116,4,0,
+ 107,10,0,114,92,0,1,1,1,124,0,0,106,5,0,124,
+ 1,0,131,1,0,125,2,0,124,2,0,116,2,0,106,3,
+ 0,124,1,0,60,89,110,1,0,88,124,2,0,83,41,2,
+ 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,41,6,114,3,0,0,0,
+ 114,45,0,0,0,114,7,0,0,0,114,30,1,0,0,114,
+ 92,0,0,0,114,34,1,0,0,41,3,114,216,0,0,0,
+ 114,35,0,0,0,114,32,1,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,18,
+ 5,0,0,115,16,0,0,0,0,8,12,1,15,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,8,0,0,0,5,0,0,0,67,0,0,0,115,189,
+ 0,0,0,103,0,0,125,3,0,120,176,0,124,2,0,68,
+ 93,158,0,125,4,0,116,0,0,124,4,0,116,1,0,116,
+ 2,0,102,2,0,131,2,0,115,46,0,113,13,0,110,0,
+ 0,124,0,0,106,3,0,124,4,0,131,1,0,125,5,0,
+ 124,5,0,100,1,0,107,9,0,114,13,0,116,4,0,124,
+ 5,0,100,2,0,131,2,0,114,112,0,124,5,0,106,5,
+ 0,124,1,0,131,1,0,92,2,0,125,6,0,125,7,0,
+ 110,21,0,124,5,0,106,6,0,124,1,0,131,1,0,125,
+ 6,0,103,0,0,125,7,0,124,6,0,100,1,0,107,9,
+ 0,114,155,0,124,6,0,124,3,0,102,2,0,83,124,3,
+ 0,106,7,0,124,7,0,131,1,0,1,113,13,0,113,13,
+ 0,87,100,1,0,124,3,0,102,2,0,83,100,1,0,83,
+ 41,3,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,185,0,0,0,41,8,114,203,0,0,0,
+ 218,3,115,116,114,218,5,98,121,116,101,115,114,35,1,0,
+ 0,114,60,0,0,0,114,185,0,0,0,114,218,0,0,0,
+ 114,208,0,0,0,41,8,114,216,0,0,0,114,179,0,0,
+ 0,114,35,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,32,1,
+ 0,0,114,161,0,0,0,114,189,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,218,11,95,103,101,
+ 116,95,108,111,97,100,101,114,35,5,0,0,115,28,0,0,
+ 0,0,5,6,1,13,1,21,1,6,1,15,1,12,1,15,
+ 1,24,2,15,1,6,1,12,2,10,5,20,2,122,22,80,
+ 97,116,104,70,105,110,100,101,114,46,95,103,101,116,95,108,
+ 111,97,100,101,114,78,99,3,0,0,0,0,0,0,0,5,
+ 0,0,0,4,0,0,0,67,0,0,0,115,97,0,0,0,
+ 124,2,0,100,1,0,107,8,0,114,24,0,116,0,0,106,
+ 1,0,125,2,0,110,0,0,124,0,0,106,2,0,124,1,
+ 0,124,2,0,131,2,0,92,2,0,125,3,0,125,4,0,
+ 124,3,0,100,1,0,107,9,0,114,64,0,124,3,0,83,
+ 124,4,0,114,89,0,116,3,0,124,1,0,124,4,0,124,
+ 0,0,106,2,0,131,3,0,83,100,1,0,83,100,1,0,
+ 83,41,2,122,98,70,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,41,4,114,7,0,0,0,114,
+ 35,0,0,0,114,39,1,0,0,114,27,1,0,0,41,5,
+ 114,216,0,0,0,114,179,0,0,0,114,35,0,0,0,114,
+ 161,0,0,0,114,38,1,0,0,114,4,0,0,0,114,4,
+ 0,0,0,114,5,0,0,0,114,218,0,0,0,62,5,0,
+ 0,115,16,0,0,0,0,4,12,1,12,1,24,1,12,1,
+ 4,2,6,3,19,2,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,10,
+ 114,57,0,0,0,114,56,0,0,0,114,58,0,0,0,114,
+ 59,0,0,0,114,222,0,0,0,114,29,1,0,0,114,34,
+ 1,0,0,114,35,1,0,0,114,39,1,0,0,114,218,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,114,28,1,0,0,245,4,0,0,115,
+ 14,0,0,0,12,2,6,2,18,8,18,17,18,17,18,27,
+ 3,1,114,28,1,0,0,99,0,0,0,0,0,0,0,0,
+ 0,0,0,0,3,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,
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,101,10,0,100,10,0,100,
11,0,132,0,0,131,1,0,90,11,0,100,12,0,100,13,
- 0,132,0,0,90,12,0,100,14,0,83,40,15,0,0,0,
- 117,10,0,0,0,70,105,108,101,70,105,110,100,101,114,117,
- 172,0,0,0,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,40,7,0,0,0,117,154,0,0,0,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,40,1,0,
- 0,0,78,40,0,0,0,0,40,2,0,0,0,117,2,0,
- 0,0,46,48,117,6,0,0,0,115,117,102,102,105,120,40,
- 1,0,0,0,117,6,0,0,0,108,111,97,100,101,114,40,
- 0,0,0,0,117,29,0,0,0,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,117,9,0,0,0,60,103,101,110,101,
- 120,112,114,62,56,5,0,0,115,2,0,0,0,6,0,117,
- 38,0,0,0,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,117,1,0,0,0,46,
- 105,1,0,0,0,78,105,255,255,255,255,40,7,0,0,0,
- 117,6,0,0,0,101,120,116,101,110,100,117,8,0,0,0,
- 95,108,111,97,100,101,114,115,117,4,0,0,0,112,97,116,
- 104,117,11,0,0,0,95,112,97,116,104,95,109,116,105,109,
- 101,117,3,0,0,0,115,101,116,117,11,0,0,0,95,112,
- 97,116,104,95,99,97,99,104,101,117,19,0,0,0,95,114,
- 101,108,97,120,101,100,95,112,97,116,104,95,99,97,99,104,
- 101,40,5,0,0,0,117,4,0,0,0,115,101,108,102,117,
- 4,0,0,0,112,97,116,104,117,14,0,0,0,108,111,97,
- 100,101,114,95,100,101,116,97,105,108,115,117,7,0,0,0,
- 108,111,97,100,101,114,115,117,8,0,0,0,115,117,102,102,
- 105,120,101,115,40,0,0,0,0,40,1,0,0,0,117,6,
- 0,0,0,108,111,97,100,101,114,117,29,0,0,0,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,117,8,0,0,0,
- 95,95,105,110,105,116,95,95,50,5,0,0,115,16,0,0,
- 0,0,4,6,1,19,1,36,1,9,2,15,1,9,1,12,
- 1,117,19,0,0,0,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,
- 40,4,0,0,0,117,31,0,0,0,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,105,1,0,0,0,78,105,
- 255,255,255,255,40,1,0,0,0,117,11,0,0,0,95,112,
- 97,116,104,95,109,116,105,109,101,40,1,0,0,0,117,4,
- 0,0,0,115,101,108,102,40,0,0,0,0,40,0,0,0,
- 0,117,29,0,0,0,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,117,17,0,0,0,105,110,118,97,108,105,100,97,
- 116,101,95,99,97,99,104,101,115,64,5,0,0,115,2,0,
- 0,0,0,2,117,28,0,0,0,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,12,0,
- 0,0,13,0,0,0,67,0,0,0,115,216,1,0,0,100,
- 8,0,125,2,0,124,1,0,106,1,0,100,1,0,131,1,
- 0,100,2,0,25,125,3,0,121,25,0,116,2,0,106,3,
- 0,124,0,0,106,4,0,131,1,0,106,5,0,125,4,0,
- 87,110,24,0,4,116,6,0,107,10,0,114,76,0,1,1,
- 1,100,9,0,125,4,0,89,110,1,0,88,124,4,0,124,
- 0,0,106,7,0,107,3,0,114,114,0,124,0,0,106,8,
- 0,131,0,0,1,124,4,0,124,0,0,95,7,0,110,0,
- 0,116,9,0,131,0,0,114,147,0,124,0,0,106,10,0,
- 125,5,0,124,3,0,106,11,0,131,0,0,125,6,0,110,
- 15,0,124,0,0,106,12,0,125,5,0,124,3,0,125,6,
- 0,124,6,0,124,5,0,107,6,0,114,45,1,116,13,0,
- 124,0,0,106,4,0,124,3,0,131,2,0,125,7,0,116,
- 14,0,124,7,0,131,1,0,114,45,1,120,91,0,124,0,
- 0,106,15,0,68,93,71,0,92,2,0,125,8,0,125,9,
- 0,100,4,0,124,8,0,23,125,10,0,116,13,0,124,7,
- 0,124,10,0,131,2,0,125,11,0,116,16,0,124,11,0,
- 131,1,0,114,214,0,124,9,0,124,1,0,124,11,0,131,
- 2,0,124,7,0,103,1,0,102,2,0,83,113,214,0,87,
- 100,10,0,125,2,0,113,45,1,110,0,0,120,120,0,124,
- 0,0,106,15,0,68,93,109,0,92,2,0,125,8,0,125,
- 9,0,116,13,0,124,0,0,106,4,0,124,3,0,124,8,
- 0,23,131,2,0,125,11,0,116,18,0,100,5,0,106,19,
- 0,124,11,0,131,1,0,100,6,0,100,2,0,131,1,1,
- 1,124,6,0,124,8,0,23,124,5,0,107,6,0,114,55,
- 1,116,16,0,124,11,0,131,1,0,114,164,1,124,9,0,
- 124,1,0,124,11,0,131,2,0,103,0,0,102,2,0,83,
- 113,55,1,113,55,1,87,124,2,0,114,206,1,116,18,0,
- 100,7,0,106,19,0,124,7,0,131,1,0,131,1,0,1,
- 100,11,0,124,7,0,103,1,0,102,2,0,83,100,11,0,
- 103,0,0,102,2,0,83,40,12,0,0,0,117,125,0,0,
- 0,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,
+ 0,132,0,0,90,12,0,100,14,0,83,41,15,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,116,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,124,0,0,95,2,0,
+ 100,5,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,4,0,83,41,6,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,10,1,0,0,41,1,114,161,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,144,0,
+ 0,0,95,5,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,29,0,0,0,78,114,124,0,0,0,
+ 41,7,114,208,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,76,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,
+ 113,0,0,0,114,4,0,0,0,41,1,114,161,0,0,0,
+ 114,5,0,0,0,114,77,0,0,0,89,5,0,0,115,16,
+ 0,0,0,0,4,6,1,19,1,36,1,9,2,9,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,124,0,0,0,41,1,114,
+ 42,1,0,0,41,1,114,76,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,29,1,0,0,103,
+ 5,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,12,0,0,0,13,0,0,0,67,0,0,0,115,219,1,
+ 0,0,100,1,0,125,2,0,124,1,0,106,0,0,100,2,
+ 0,131,1,0,100,3,0,25,125,3,0,121,37,0,116,1,
+ 0,106,2,0,124,0,0,106,3,0,112,52,0,116,1,0,
+ 106,4,0,131,0,0,131,1,0,106,5,0,125,4,0,87,
+ 110,24,0,4,116,6,0,107,10,0,114,88,0,1,1,1,
+ 100,10,0,125,4,0,89,110,1,0,88,124,4,0,124,0,
+ 0,106,7,0,107,3,0,114,126,0,124,0,0,106,8,0,
+ 131,0,0,1,124,4,0,124,0,0,95,7,0,110,0,0,
+ 116,9,0,131,0,0,114,159,0,124,0,0,106,10,0,125,
+ 5,0,124,3,0,106,11,0,131,0,0,125,6,0,110,15,
+ 0,124,0,0,106,12,0,125,5,0,124,3,0,125,6,0,
+ 124,6,0,124,5,0,107,6,0,114,48,1,116,13,0,124,
+ 0,0,106,3,0,124,3,0,131,2,0,125,7,0,120,97,
+ 0,124,0,0,106,14,0,68,93,71,0,92,2,0,125,8,
+ 0,125,9,0,100,5,0,124,8,0,23,125,10,0,116,13,
+ 0,124,7,0,124,10,0,131,2,0,125,11,0,116,15,0,
+ 124,11,0,131,1,0,114,214,0,124,9,0,124,1,0,124,
+ 11,0,131,2,0,124,7,0,103,1,0,102,2,0,83,113,
+ 214,0,87,116,16,0,124,7,0,131,1,0,125,2,0,110,
+ 0,0,120,120,0,124,0,0,106,14,0,68,93,109,0,92,
+ 2,0,125,8,0,125,9,0,116,13,0,124,0,0,106,3,
+ 0,124,3,0,124,8,0,23,131,2,0,125,11,0,116,17,
+ 0,100,6,0,106,18,0,124,11,0,131,1,0,100,7,0,
+ 100,3,0,131,1,1,1,124,6,0,124,8,0,23,124,5,
+ 0,107,6,0,114,58,1,116,15,0,124,11,0,131,1,0,
+ 114,167,1,124,9,0,124,1,0,124,11,0,131,2,0,103,
+ 0,0,102,2,0,83,113,58,1,113,58,1,87,124,2,0,
+ 114,209,1,116,17,0,100,8,0,106,18,0,124,7,0,131,
+ 1,0,131,1,0,1,100,9,0,124,7,0,103,1,0,102,
+ 2,0,83,100,9,0,103,0,0,102,2,0,83,41,11,122,
+ 125,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,
111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,
101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,32,
111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,101,
10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,101,
32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,114,
110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,116,
- 45,111,102,45,112,111,114,116,105,111,110,115,41,46,117,1,
- 0,0,0,46,105,2,0,0,0,105,1,0,0,0,117,8,
- 0,0,0,95,95,105,110,105,116,95,95,117,9,0,0,0,
- 116,114,121,105,110,103,32,123,125,117,9,0,0,0,118,101,
- 114,98,111,115,105,116,121,117,25,0,0,0,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,70,105,255,255,255,255,84,78,40,21,0,
- 0,0,117,5,0,0,0,70,97,108,115,101,117,10,0,0,
- 0,114,112,97,114,116,105,116,105,111,110,117,3,0,0,0,
- 95,111,115,117,4,0,0,0,115,116,97,116,117,4,0,0,
- 0,112,97,116,104,117,8,0,0,0,115,116,95,109,116,105,
- 109,101,117,7,0,0,0,79,83,69,114,114,111,114,117,11,
- 0,0,0,95,112,97,116,104,95,109,116,105,109,101,117,11,
- 0,0,0,95,102,105,108,108,95,99,97,99,104,101,117,11,
- 0,0,0,95,114,101,108,97,120,95,99,97,115,101,117,19,
- 0,0,0,95,114,101,108,97,120,101,100,95,112,97,116,104,
- 95,99,97,99,104,101,117,5,0,0,0,108,111,119,101,114,
- 117,11,0,0,0,95,112,97,116,104,95,99,97,99,104,101,
- 117,10,0,0,0,95,112,97,116,104,95,106,111,105,110,117,
- 11,0,0,0,95,112,97,116,104,95,105,115,100,105,114,117,
- 8,0,0,0,95,108,111,97,100,101,114,115,117,12,0,0,
- 0,95,112,97,116,104,95,105,115,102,105,108,101,117,4,0,
- 0,0,84,114,117,101,117,16,0,0,0,95,118,101,114,98,
- 111,115,101,95,109,101,115,115,97,103,101,117,6,0,0,0,
- 102,111,114,109,97,116,117,4,0,0,0,78,111,110,101,40,
- 12,0,0,0,117,4,0,0,0,115,101,108,102,117,8,0,
- 0,0,102,117,108,108,110,97,109,101,117,12,0,0,0,105,
- 115,95,110,97,109,101,115,112,97,99,101,117,11,0,0,0,
- 116,97,105,108,95,109,111,100,117,108,101,117,5,0,0,0,
- 109,116,105,109,101,117,5,0,0,0,99,97,99,104,101,117,
- 12,0,0,0,99,97,99,104,101,95,109,111,100,117,108,101,
- 117,9,0,0,0,98,97,115,101,95,112,97,116,104,117,6,
- 0,0,0,115,117,102,102,105,120,117,6,0,0,0,108,111,
- 97,100,101,114,117,13,0,0,0,105,110,105,116,95,102,105,
- 108,101,110,97,109,101,117,9,0,0,0,102,117,108,108,95,
- 112,97,116,104,40,0,0,0,0,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,11,0,0,0,102,105,110,100,95,108,111,97,100,101,114,
- 70,5,0,0,115,66,0,0,0,0,3,6,1,19,1,3,
- 1,25,1,13,1,11,1,15,1,10,1,12,2,9,1,9,
- 1,15,2,9,1,6,2,12,1,18,1,12,1,22,1,10,
- 1,15,1,12,1,26,4,12,2,22,1,22,1,25,1,16,
- 1,12,1,26,1,6,1,19,1,13,1,117,22,0,0,0,
- 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,
- 108,111,97,100,101,114,99,1,0,0,0,0,0,0,0,9,
- 0,0,0,13,0,0,0,67,0,0,0,115,8,1,0,0,
- 124,0,0,106,0,0,125,1,0,121,19,0,116,1,0,106,
- 2,0,124,1,0,131,1,0,125,2,0,87,110,33,0,4,
- 116,3,0,116,4,0,116,5,0,102,3,0,107,10,0,114,
- 63,0,1,1,1,103,0,0,125,2,0,89,110,1,0,88,
- 116,6,0,106,7,0,106,8,0,100,1,0,131,1,0,115,
- 100,0,116,9,0,124,2,0,131,1,0,124,0,0,95,10,
- 0,110,111,0,116,9,0,131,0,0,125,3,0,120,90,0,
- 124,2,0,68,93,82,0,125,4,0,124,4,0,106,11,0,
- 100,2,0,131,1,0,92,3,0,125,5,0,125,6,0,125,
- 7,0,124,6,0,114,179,0,100,3,0,106,12,0,124,5,
- 0,124,7,0,106,13,0,131,0,0,131,2,0,125,8,0,
- 110,6,0,124,5,0,125,8,0,124,3,0,106,14,0,124,
- 8,0,131,1,0,1,113,116,0,87,124,3,0,124,0,0,
- 95,10,0,116,6,0,106,7,0,106,8,0,116,15,0,131,
- 1,0,114,4,1,116,9,0,100,4,0,100,5,0,132,0,
- 0,124,2,0,68,131,1,0,131,1,0,124,0,0,95,16,
- 0,110,0,0,100,6,0,83,40,7,0,0,0,117,68,0,
- 0,0,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,117,3,0,0,0,119,105,110,117,1,
- 0,0,0,46,117,5,0,0,0,123,125,46,123,125,99,1,
- 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,115,
- 0,0,0,115,27,0,0,0,124,0,0,93,17,0,125,1,
- 0,124,1,0,106,0,0,131,0,0,86,1,113,3,0,100,
- 0,0,83,40,1,0,0,0,78,40,1,0,0,0,117,5,
- 0,0,0,108,111,119,101,114,40,2,0,0,0,117,2,0,
- 0,0,46,48,117,2,0,0,0,102,110,40,0,0,0,0,
- 40,0,0,0,0,117,29,0,0,0,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,117,9,0,0,0,60,103,101,110,
- 101,120,112,114,62,143,5,0,0,115,2,0,0,0,6,0,
- 117,41,0,0,0,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,103,101,110,101,120,112,114,62,78,40,
- 17,0,0,0,117,4,0,0,0,112,97,116,104,117,3,0,
- 0,0,95,111,115,117,7,0,0,0,108,105,115,116,100,105,
- 114,117,17,0,0,0,70,105,108,101,78,111,116,70,111,117,
- 110,100,69,114,114,111,114,117,15,0,0,0,80,101,114,109,
- 105,115,115,105,111,110,69,114,114,111,114,117,18,0,0,0,
- 78,111,116,65,68,105,114,101,99,116,111,114,121,69,114,114,
- 111,114,117,3,0,0,0,115,121,115,117,8,0,0,0,112,
- 108,97,116,102,111,114,109,117,10,0,0,0,115,116,97,114,
- 116,115,119,105,116,104,117,3,0,0,0,115,101,116,117,11,
- 0,0,0,95,112,97,116,104,95,99,97,99,104,101,117,9,
- 0,0,0,112,97,114,116,105,116,105,111,110,117,6,0,0,
- 0,102,111,114,109,97,116,117,5,0,0,0,108,111,119,101,
- 114,117,3,0,0,0,97,100,100,117,27,0,0,0,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,117,19,0,0,0,95,114,
- 101,108,97,120,101,100,95,112,97,116,104,95,99,97,99,104,
- 101,40,9,0,0,0,117,4,0,0,0,115,101,108,102,117,
- 4,0,0,0,112,97,116,104,117,8,0,0,0,99,111,110,
- 116,101,110,116,115,117,21,0,0,0,108,111,119,101,114,95,
- 115,117,102,102,105,120,95,99,111,110,116,101,110,116,115,117,
- 4,0,0,0,105,116,101,109,117,4,0,0,0,110,97,109,
- 101,117,3,0,0,0,100,111,116,117,6,0,0,0,115,117,
- 102,102,105,120,117,8,0,0,0,110,101,119,95,110,97,109,
- 101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,11,0,
- 0,0,95,102,105,108,108,95,99,97,99,104,101,114,5,0,
- 0,115,34,0,0,0,0,2,9,1,3,1,19,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,117,22,0,0,0,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,40,3,0,0,0,117,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,46,0,0,0,116,0,
- 0,124,0,0,131,1,0,115,33,0,116,1,0,100,1,0,
- 100,2,0,124,0,0,131,1,1,130,1,0,110,0,0,136,
- 0,0,124,0,0,136,1,0,140,1,0,83,40,3,0,0,
- 0,117,45,0,0,0,80,97,116,104,32,104,111,111,107,32,
+ 45,111,102,45,112,111,114,116,105,111,110,115,41,46,70,114,
+ 102,0,0,0,114,101,0,0,0,114,29,0,0,0,114,77,
+ 0,0,0,122,9,116,114,121,105,110,103,32,123,125,114,131,
+ 0,0,0,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,78,114,
+ 124,0,0,0,41,19,114,32,0,0,0,114,3,0,0,0,
+ 114,39,0,0,0,114,35,0,0,0,114,45,0,0,0,114,
+ 4,1,0,0,114,40,0,0,0,114,42,1,0,0,218,11,
+ 95,102,105,108,108,95,99,97,99,104,101,114,6,0,0,0,
+ 114,45,1,0,0,114,125,0,0,0,114,44,1,0,0,114,
+ 28,0,0,0,114,41,1,0,0,114,44,0,0,0,114,46,
+ 0,0,0,114,138,0,0,0,114,47,0,0,0,41,12,114,
+ 76,0,0,0,114,179,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,194,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,10,1,0,0,114,161,
+ 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,4,0,
+ 0,0,114,4,0,0,0,114,5,0,0,0,114,185,0,0,
+ 0,109,5,0,0,115,64,0,0,0,0,3,6,1,19,1,
+ 3,1,37,1,13,1,11,1,15,1,10,1,12,2,9,1,
+ 9,1,15,2,9,1,6,2,12,1,18,1,22,1,10,1,
+ 15,1,12,1,26,4,15,2,22,1,22,1,25,1,16,1,
+ 12,1,26,1,6,1,19,1,13,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,1,0,0,0,0,0,0,0,9,0,0,0,13,
+ 0,0,0,67,0,0,0,115,14,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,10,1,100,4,0,
+ 100,5,0,132,0,0,124,2,0,68,131,1,0,124,0,0,
+ 95,17,0,110,0,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,102,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,125,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,181,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,218,17,70,105,108,
+ 101,78,111,116,70,111,117,110,100,69,114,114,111,114,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,43,1,0,0,114,44,1,0,0,114,107,0,0,
+ 0,114,47,0,0,0,114,125,0,0,0,218,3,97,100,100,
+ 114,10,0,0,0,114,45,1,0,0,41,9,114,76,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,25,1,0,0,114,72,0,0,
+ 0,114,19,1,0,0,114,10,1,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,47,1,0,0,152,5,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,
+ 46,0,0,0,116,0,0,124,0,0,131,1,0,115,33,0,
+ 116,1,0,100,1,0,100,2,0,124,0,0,131,1,1,130,
+ 1,0,110,0,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,117,30,0,0,0,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,117,4,0,0,0,112,97,116,104,40,
- 2,0,0,0,117,11,0,0,0,95,112,97,116,104,95,105,
- 115,100,105,114,117,11,0,0,0,73,109,112,111,114,116,69,
- 114,114,111,114,40,1,0,0,0,117,4,0,0,0,112,97,
- 116,104,40,2,0,0,0,117,3,0,0,0,99,108,115,117,
- 14,0,0,0,108,111,97,100,101,114,95,100,101,116,97,105,
- 108,115,40,0,0,0,0,117,29,0,0,0,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,117,24,0,0,0,112,97,
- 116,104,95,104,111,111,107,95,102,111,114,95,70,105,108,101,
- 70,105,110,100,101,114,155,5,0,0,115,6,0,0,0,0,
- 2,12,1,21,1,117,54,0,0,0,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,
- 40,0,0,0,0,40,3,0,0,0,117,3,0,0,0,99,
- 108,115,117,14,0,0,0,108,111,97,100,101,114,95,100,101,
- 116,97,105,108,115,117,24,0,0,0,112,97,116,104,95,104,
+ 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,
+ 158,0,0,0,41,1,114,35,0,0,0,41,2,114,216,0,
+ 0,0,114,46,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,193,5,0,0,115,
+ 6,0,0,0,0,2,12,1,21,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,40,0,0,0,0,40,2,0,0,0,117,3,0,0,
- 0,99,108,115,117,14,0,0,0,108,111,97,100,101,114,95,
- 100,101,116,97,105,108,115,117,29,0,0,0,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,117,9,0,0,0,112,97,
- 116,104,95,104,111,111,107,145,5,0,0,115,4,0,0,0,
- 0,10,21,6,117,20,0,0,0,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,14,0,0,0,100,1,0,124,0,0,106,0,0,
- 102,1,0,22,83,40,2,0,0,0,78,117,14,0,0,0,
- 70,105,108,101,70,105,110,100,101,114,40,37,114,41,40,1,
- 0,0,0,117,4,0,0,0,112,97,116,104,40,1,0,0,
- 0,117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,8,0,0,0,95,95,114,101,112,
- 114,95,95,163,5,0,0,115,2,0,0,0,0,1,117,19,
- 0,0,0,70,105,108,101,70,105,110,100,101,114,46,95,95,
- 114,101,112,114,95,95,78,40,13,0,0,0,117,8,0,0,
- 0,95,95,110,97,109,101,95,95,117,10,0,0,0,95,95,
- 109,111,100,117,108,101,95,95,117,12,0,0,0,95,95,113,
- 117,97,108,110,97,109,101,95,95,117,7,0,0,0,95,95,
- 100,111,99,95,95,117,8,0,0,0,95,95,105,110,105,116,
- 95,95,117,17,0,0,0,105,110,118,97,108,105,100,97,116,
- 101,95,99,97,99,104,101,115,117,17,0,0,0,95,102,105,
- 110,100,95,109,111,100,117,108,101,95,115,104,105,109,117,11,
- 0,0,0,102,105,110,100,95,109,111,100,117,108,101,117,11,
- 0,0,0,102,105,110,100,95,108,111,97,100,101,114,117,11,
- 0,0,0,95,102,105,108,108,95,99,97,99,104,101,117,11,
- 0,0,0,99,108,97,115,115,109,101,116,104,111,100,117,9,
- 0,0,0,112,97,116,104,95,104,111,111,107,117,8,0,0,
- 0,95,95,114,101,112,114,95,95,40,1,0,0,0,117,10,
- 0,0,0,95,95,108,111,99,97,108,115,95,95,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,70,105,
- 108,101,70,105,110,100,101,114,41,5,0,0,115,16,0,0,
- 0,16,7,6,2,12,14,12,4,6,2,12,44,12,31,18,
- 18,117,10,0,0,0,70,105,108,101,70,105,110,100,101,114,
- 99,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,
- 0,66,0,0,0,115,50,0,0,0,124,0,0,69,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,40,7,0,0,
- 0,117,18,0,0,0,95,73,109,112,111,114,116,76,111,99,
- 107,67,111,110,116,101,120,116,117,36,0,0,0,67,111,110,
+ 101,114,114,4,0,0,0,41,3,114,216,0,0,0,114,46,
+ 1,0,0,114,53,1,0,0,114,4,0,0,0,41,2,114,
+ 216,0,0,0,114,46,1,0,0,114,5,0,0,0,218,9,
+ 112,97,116,104,95,104,111,111,107,183,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,76,0,0,0,114,4,
+ 0,0,0,114,4,0,0,0,114,5,0,0,0,114,88,0,
+ 0,0,201,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,78,41,13,114,57,0,0,0,114,56,0,0,0,114,
+ 58,0,0,0,114,59,0,0,0,114,77,0,0,0,114,29,
+ 1,0,0,114,191,0,0,0,114,218,0,0,0,114,185,0,
+ 0,0,114,47,1,0,0,114,222,0,0,0,114,54,1,0,
+ 0,114,88,0,0,0,114,4,0,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,114,40,1,0,0,80,
+ 5,0,0,115,16,0,0,0,12,7,6,2,12,14,12,4,
+ 6,2,12,43,12,31,18,18,114,40,1,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,40,2,0,0,0,117,24,
- 0,0,0,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,40,2,0,0,
- 0,117,4,0,0,0,95,105,109,112,117,12,0,0,0,97,
- 99,113,117,105,114,101,95,108,111,99,107,40,1,0,0,0,
- 117,4,0,0,0,115,101,108,102,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,9,0,0,0,95,95,101,110,116,101,
- 114,95,95,173,5,0,0,115,2,0,0,0,0,2,117,28,
- 0,0,0,95,73,109,112,111,114,116,76,111,99,107,67,111,
+ 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,95,0,0,0,218,12,97,
+ 99,113,117,105,114,101,95,108,111,99,107,41,1,114,76,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,
+ 0,114,143,0,0,0,211,5,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,40,2,0,0,0,117,60,0,0,
- 0,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,40,2,
- 0,0,0,117,4,0,0,0,95,105,109,112,117,12,0,0,
- 0,114,101,108,101,97,115,101,95,108,111,99,107,40,4,0,
- 0,0,117,4,0,0,0,115,101,108,102,117,8,0,0,0,
- 101,120,99,95,116,121,112,101,117,9,0,0,0,101,120,99,
- 95,118,97,108,117,101,117,13,0,0,0,101,120,99,95,116,
- 114,97,99,101,98,97,99,107,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,8,0,0,0,95,95,101,120,105,116,95,
- 95,177,5,0,0,115,2,0,0,0,0,2,117,27,0,0,
- 0,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,40,6,0,
- 0,0,117,8,0,0,0,95,95,110,97,109,101,95,95,117,
- 10,0,0,0,95,95,109,111,100,117,108,101,95,95,117,12,
- 0,0,0,95,95,113,117,97,108,110,97,109,101,95,95,117,
- 7,0,0,0,95,95,100,111,99,95,95,117,9,0,0,0,
- 95,95,101,110,116,101,114,95,95,117,8,0,0,0,95,95,
- 101,120,105,116,95,95,40,1,0,0,0,117,10,0,0,0,
- 95,95,108,111,99,97,108,115,95,95,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,18,0,0,0,95,73,109,112,111,
- 114,116,76,111,99,107,67,111,110,116,101,120,116,169,5,0,
- 0,115,6,0,0,0,16,2,6,2,12,4,117,18,0,0,
- 0,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116,
- 101,120,116,99,3,0,0,0,0,0,0,0,5,0,0,0,
- 4,0,0,0,67,0,0,0,115,91,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,55,0,116,2,0,100,3,0,131,1,0,130,1,
- 0,110,0,0,124,3,0,100,4,0,25,125,4,0,124,0,
- 0,114,87,0,100,5,0,106,3,0,124,4,0,124,0,0,
- 131,2,0,83,124,4,0,83,40,6,0,0,0,117,50,0,
- 0,0,82,101,115,111,108,118,101,32,97,32,114,101,108,97,
+ 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,95,0,0,0,114,
+ 96,0,0,0,41,4,114,76,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,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,146,
+ 0,0,0,215,5,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,57,
+ 0,0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,
+ 0,0,114,143,0,0,0,114,146,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,55,1,0,0,207,5,0,0,115,6,0,0,0,12,2,
+ 6,2,12,4,114,55,1,0,0,99,3,0,0,0,0,0,
+ 0,0,5,0,0,0,4,0,0,0,67,0,0,0,115,91,
+ 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,55,0,116,2,0,100,3,
+ 0,131,1,0,130,1,0,110,0,0,124,3,0,100,4,0,
+ 25,125,4,0,124,0,0,114,87,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,117,1,0,0,0,46,105,1,0,0,0,117,
- 50,0,0,0,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,105,0,0,0,0,117,5,0,0,0,
- 123,125,46,123,125,40,4,0,0,0,117,6,0,0,0,114,
- 115,112,108,105,116,117,3,0,0,0,108,101,110,117,10,0,
- 0,0,86,97,108,117,101,69,114,114,111,114,117,6,0,0,
- 0,102,111,114,109,97,116,40,5,0,0,0,117,4,0,0,
- 0,110,97,109,101,117,7,0,0,0,112,97,99,107,97,103,
- 101,117,5,0,0,0,108,101,118,101,108,117,4,0,0,0,
- 98,105,116,115,117,4,0,0,0,98,97,115,101,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,13,0,0,0,95,114,
- 101,115,111,108,118,101,95,110,97,109,101,182,5,0,0,115,
- 10,0,0,0,0,2,22,1,18,1,15,1,10,1,117,13,
- 0,0,0,95,114,101,115,111,108,118,101,95,110,97,109,101,
- 99,2,0,0,0,0,0,0,0,4,0,0,0,11,0,0,
- 0,67,0,0,0,115,138,0,0,0,116,0,0,106,1,0,
- 115,28,0,116,2,0,106,3,0,100,1,0,116,4,0,131,
- 2,0,1,110,0,0,120,103,0,116,0,0,106,1,0,68,
- 93,88,0,125,2,0,116,5,0,131,0,0,143,23,0,1,
- 124,2,0,106,6,0,124,0,0,124,1,0,131,2,0,125,
- 3,0,87,100,2,0,81,88,124,3,0,100,2,0,107,9,
- 0,114,38,0,124,0,0,116,0,0,106,8,0,107,7,0,
- 114,109,0,124,3,0,83,116,0,0,106,8,0,124,0,0,
- 25,106,9,0,83,113,38,0,113,38,0,87,100,2,0,83,
- 100,2,0,83,40,3,0,0,0,117,23,0,0,0,70,105,
- 110,100,32,97,32,109,111,100,117,108,101,39,115,32,108,111,
- 97,100,101,114,46,117,22,0,0,0,115,121,115,46,109,101,
- 116,97,95,112,97,116,104,32,105,115,32,101,109,112,116,121,
- 78,40,10,0,0,0,117,3,0,0,0,115,121,115,117,9,
- 0,0,0,109,101,116,97,95,112,97,116,104,117,9,0,0,
- 0,95,119,97,114,110,105,110,103,115,117,4,0,0,0,119,
- 97,114,110,117,13,0,0,0,73,109,112,111,114,116,87,97,
- 114,110,105,110,103,117,18,0,0,0,95,73,109,112,111,114,
- 116,76,111,99,107,67,111,110,116,101,120,116,117,11,0,0,
- 0,102,105,110,100,95,109,111,100,117,108,101,117,4,0,0,
- 0,78,111,110,101,117,7,0,0,0,109,111,100,117,108,101,
- 115,117,10,0,0,0,95,95,108,111,97,100,101,114,95,95,
- 40,4,0,0,0,117,4,0,0,0,110,97,109,101,117,4,
- 0,0,0,112,97,116,104,117,6,0,0,0,102,105,110,100,
- 101,114,117,6,0,0,0,108,111,97,100,101,114,40,0,0,
- 0,0,40,0,0,0,0,117,29,0,0,0,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,117,12,0,0,0,95,102,
- 105,110,100,95,109,111,100,117,108,101,191,5,0,0,115,20,
- 0,0,0,0,2,9,1,19,1,16,1,10,1,24,1,12,
- 2,15,1,4,2,21,2,117,12,0,0,0,95,102,105,110,
- 100,95,109,111,100,117,108,101,99,3,0,0,0,0,0,0,
- 0,4,0,0,0,4,0,0,0,67,0,0,0,115,194,0,
- 0,0,116,0,0,124,0,0,116,1,0,131,2,0,115,45,
- 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,110,0,0,124,
- 2,0,100,2,0,107,0,0,114,72,0,116,5,0,100,3,
- 0,131,1,0,130,1,0,110,0,0,124,1,0,114,156,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,113,156,0,124,1,
- 0,116,6,0,106,7,0,107,7,0,114,156,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,113,156,0,110,0,0,124,0,
- 0,12,114,190,0,124,2,0,100,2,0,107,2,0,114,190,
- 0,116,5,0,100,6,0,131,1,0,130,1,0,110,0,0,
- 100,7,0,83,40,8,0,0,0,117,28,0,0,0,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,117,31,0,0,0,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,105,0,
- 0,0,0,117,18,0,0,0,108,101,118,101,108,32,109,117,
- 115,116,32,98,101,32,62,61,32,48,117,31,0,0,0,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,117,61,
- 0,0,0,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,
- 117,17,0,0,0,69,109,112,116,121,32,109,111,100,117,108,
- 101,32,110,97,109,101,78,40,9,0,0,0,117,10,0,0,
- 0,105,115,105,110,115,116,97,110,99,101,117,3,0,0,0,
- 115,116,114,117,9,0,0,0,84,121,112,101,69,114,114,111,
- 114,117,6,0,0,0,102,111,114,109,97,116,117,4,0,0,
- 0,116,121,112,101,117,10,0,0,0,86,97,108,117,101,69,
- 114,114,111,114,117,3,0,0,0,115,121,115,117,7,0,0,
- 0,109,111,100,117,108,101,115,117,11,0,0,0,83,121,115,
- 116,101,109,69,114,114,111,114,40,4,0,0,0,117,4,0,
- 0,0,110,97,109,101,117,7,0,0,0,112,97,99,107,97,
- 103,101,117,5,0,0,0,108,101,118,101,108,117,3,0,0,
- 0,109,115,103,40,0,0,0,0,40,0,0,0,0,117,29,
- 0,0,0,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,
- 117,13,0,0,0,95,115,97,110,105,116,121,95,99,104,101,
- 99,107,208,5,0,0,115,24,0,0,0,0,2,15,1,30,
- 1,12,1,15,1,6,1,15,1,15,1,15,1,6,2,27,
- 1,19,1,117,13,0,0,0,95,115,97,110,105,116,121,95,
- 99,104,101,99,107,117,20,0,0,0,78,111,32,109,111,100,
- 117,108,101,32,110,97,109,101,100,32,123,33,114,125,99,2,
- 0,0,0,0,0,0,0,9,0,0,0,27,0,0,0,67,
- 0,0,0,115,12,2,0,0,100,0,0,125,2,0,124,0,
- 0,106,1,0,100,1,0,131,1,0,100,2,0,25,125,3,
- 0,124,3,0,114,178,0,124,3,0,116,2,0,106,3,0,
- 107,7,0,114,62,0,116,4,0,124,1,0,124,3,0,131,
- 2,0,1,110,0,0,124,0,0,116,2,0,106,3,0,107,
- 6,0,114,88,0,116,2,0,106,3,0,124,0,0,25,83,
- 116,2,0,106,3,0,124,3,0,25,125,4,0,121,13,0,
- 124,4,0,106,5,0,125,2,0,87,113,178,0,4,116,6,
- 0,107,10,0,114,174,0,1,1,1,116,7,0,100,3,0,
- 23,106,8,0,124,0,0,124,3,0,131,2,0,125,5,0,
- 116,9,0,124,5,0,100,4,0,124,0,0,131,1,1,130,
- 1,0,89,113,178,0,88,110,0,0,116,10,0,124,0,0,
- 124,2,0,131,2,0,125,6,0,124,6,0,100,0,0,107,
- 8,0,114,250,0,116,9,0,116,7,0,106,8,0,124,0,
- 0,131,1,0,100,4,0,124,0,0,131,1,1,125,7,0,
- 100,10,0,124,7,0,95,12,0,124,7,0,130,1,0,110,
- 47,0,124,0,0,116,2,0,106,3,0,107,7,0,114,41,
- 1,124,6,0,106,13,0,124,0,0,131,1,0,1,116,14,
- 0,100,5,0,124,0,0,124,6,0,131,3,0,1,110,0,
- 0,116,2,0,106,3,0,124,0,0,25,125,8,0,124,3,
- 0,114,105,1,116,2,0,106,3,0,124,3,0,25,125,4,
- 0,116,15,0,124,4,0,124,0,0,106,1,0,100,1,0,
- 131,1,0,100,6,0,25,124,8,0,131,3,0,1,110,0,
- 0,116,16,0,124,8,0,100,7,0,100,0,0,131,3,0,
- 100,0,0,107,8,0,114,212,1,121,59,0,124,8,0,106,
- 17,0,124,8,0,95,18,0,116,19,0,124,8,0,100,8,
- 0,131,2,0,115,187,1,124,8,0,106,18,0,106,1,0,
- 100,1,0,131,1,0,100,2,0,25,124,8,0,95,18,0,
- 110,0,0,87,113,212,1,4,116,6,0,107,10,0,114,208,
- 1,1,1,1,89,113,212,1,88,110,0,0,116,19,0,124,
- 8,0,100,9,0,131,2,0,115,8,2,121,13,0,124,6,
- 0,124,8,0,95,20,0,87,113,8,2,4,116,6,0,107,
- 10,0,114,4,2,1,1,1,89,113,8,2,88,110,0,0,
- 124,8,0,83,40,11,0,0,0,78,117,1,0,0,0,46,
- 105,0,0,0,0,117,21,0,0,0,59,32,123,125,32,105,
- 115,32,110,111,116,32,97,32,112,97,99,107,97,103,101,117,
- 4,0,0,0,110,97,109,101,117,18,0,0,0,105,109,112,
- 111,114,116,32,123,33,114,125,32,35,32,123,33,114,125,105,
- 2,0,0,0,117,11,0,0,0,95,95,112,97,99,107,97,
- 103,101,95,95,117,8,0,0,0,95,95,112,97,116,104,95,
- 95,117,10,0,0,0,95,95,108,111,97,100,101,114,95,95,
- 84,40,21,0,0,0,117,4,0,0,0,78,111,110,101,117,
- 10,0,0,0,114,112,97,114,116,105,116,105,111,110,117,3,
- 0,0,0,115,121,115,117,7,0,0,0,109,111,100,117,108,
- 101,115,117,25,0,0,0,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,
- 117,8,0,0,0,95,95,112,97,116,104,95,95,117,14,0,
- 0,0,65,116,116,114,105,98,117,116,101,69,114,114,111,114,
- 117,8,0,0,0,95,69,82,82,95,77,83,71,117,6,0,
- 0,0,102,111,114,109,97,116,117,11,0,0,0,73,109,112,
- 111,114,116,69,114,114,111,114,117,12,0,0,0,95,102,105,
- 110,100,95,109,111,100,117,108,101,117,4,0,0,0,84,114,
- 117,101,117,10,0,0,0,95,110,111,116,95,102,111,117,110,
- 100,117,11,0,0,0,108,111,97,100,95,109,111,100,117,108,
- 101,117,16,0,0,0,95,118,101,114,98,111,115,101,95,109,
- 101,115,115,97,103,101,117,7,0,0,0,115,101,116,97,116,
- 116,114,117,7,0,0,0,103,101,116,97,116,116,114,117,8,
- 0,0,0,95,95,110,97,109,101,95,95,117,11,0,0,0,
- 95,95,112,97,99,107,97,103,101,95,95,117,7,0,0,0,
- 104,97,115,97,116,116,114,117,10,0,0,0,95,95,108,111,
- 97,100,101,114,95,95,40,9,0,0,0,117,4,0,0,0,
- 110,97,109,101,117,7,0,0,0,105,109,112,111,114,116,95,
- 117,4,0,0,0,112,97,116,104,117,6,0,0,0,112,97,
- 114,101,110,116,117,13,0,0,0,112,97,114,101,110,116,95,
- 109,111,100,117,108,101,117,3,0,0,0,109,115,103,117,6,
- 0,0,0,108,111,97,100,101,114,117,3,0,0,0,101,120,
- 99,117,6,0,0,0,109,111,100,117,108,101,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,23,0,0,0,95,102,105,
- 110,100,95,97,110,100,95,108,111,97,100,95,117,110,108,111,
- 99,107,101,100,227,5,0,0,115,76,0,0,0,0,1,6,
- 1,19,1,6,1,15,1,16,2,15,1,11,2,13,1,3,
- 1,13,1,13,1,22,1,26,1,15,1,12,1,27,3,9,
- 1,9,1,15,2,13,1,19,2,13,1,6,2,13,1,32,
- 2,24,1,3,1,12,1,15,1,32,1,13,1,8,2,15,
- 1,3,1,13,1,13,1,8,1,117,23,0,0,0,95,102,
- 105,110,100,95,97,110,100,95,108,111,97,100,95,117,110,108,
- 111,99,107,101,100,99,2,0,0,0,0,0,0,0,3,0,
- 0,0,18,0,0,0,67,0,0,0,115,75,0,0,0,122,
- 16,0,116,0,0,124,0,0,131,1,0,125,2,0,87,100,
- 1,0,116,1,0,106,2,0,131,0,0,1,88,124,2,0,
- 106,3,0,131,0,0,1,122,17,0,116,4,0,124,0,0,
- 124,1,0,131,2,0,83,87,100,1,0,124,2,0,106,5,
- 0,131,0,0,1,88,100,1,0,83,40,2,0,0,0,117,
- 54,0,0,0,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,40,6,0,0,0,
- 117,16,0,0,0,95,103,101,116,95,109,111,100,117,108,101,
- 95,108,111,99,107,117,4,0,0,0,95,105,109,112,117,12,
- 0,0,0,114,101,108,101,97,115,101,95,108,111,99,107,117,
- 7,0,0,0,97,99,113,117,105,114,101,117,23,0,0,0,
- 95,102,105,110,100,95,97,110,100,95,108,111,97,100,95,117,
- 110,108,111,99,107,101,100,117,7,0,0,0,114,101,108,101,
- 97,115,101,40,3,0,0,0,117,4,0,0,0,110,97,109,
- 101,117,7,0,0,0,105,109,112,111,114,116,95,117,4,0,
- 0,0,108,111,99,107,40,0,0,0,0,40,0,0,0,0,
- 117,29,0,0,0,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,117,14,0,0,0,95,102,105,110,100,95,97,110,100,
- 95,108,111,97,100,21,6,0,0,115,14,0,0,0,0,2,
- 3,1,16,2,11,1,10,1,3,1,17,2,117,14,0,0,
- 0,95,102,105,110,100,95,97,110,100,95,108,111,97,100,99,
- 3,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,
- 67,0,0,0,115,172,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,49,0,116,1,0,124,0,0,124,1,0,124,2,
- 0,131,3,0,125,0,0,110,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,87,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,4,0,107,8,0,114,158,0,116,2,0,106,9,0,131,
- 0,0,1,100,2,0,106,10,0,124,0,0,131,1,0,125,
- 4,0,116,11,0,124,4,0,100,3,0,124,0,0,131,1,
- 1,130,1,0,110,0,0,116,12,0,124,0,0,131,1,0,
- 1,124,3,0,83,40,5,0,0,0,117,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,105,0,0,0,0,117,40,0,0,0,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,117,4,0,0,0,110,97,109,101,78,40,13,0,
- 0,0,117,13,0,0,0,95,115,97,110,105,116,121,95,99,
- 104,101,99,107,117,13,0,0,0,95,114,101,115,111,108,118,
- 101,95,110,97,109,101,117,4,0,0,0,95,105,109,112,117,
- 12,0,0,0,97,99,113,117,105,114,101,95,108,111,99,107,
- 117,3,0,0,0,115,121,115,117,7,0,0,0,109,111,100,
- 117,108,101,115,117,14,0,0,0,95,102,105,110,100,95,97,
- 110,100,95,108,111,97,100,117,11,0,0,0,95,103,99,100,
- 95,105,109,112,111,114,116,117,4,0,0,0,78,111,110,101,
- 117,12,0,0,0,114,101,108,101,97,115,101,95,108,111,99,
- 107,117,6,0,0,0,102,111,114,109,97,116,117,11,0,0,
- 0,73,109,112,111,114,116,69,114,114,111,114,117,19,0,0,
- 0,95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,
- 100,117,108,101,40,5,0,0,0,117,4,0,0,0,110,97,
- 109,101,117,7,0,0,0,112,97,99,107,97,103,101,117,5,
- 0,0,0,108,101,118,101,108,117,6,0,0,0,109,111,100,
- 117,108,101,117,7,0,0,0,109,101,115,115,97,103,101,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,11,0,0,0,
- 95,103,99,100,95,105,109,112,111,114,116,34,6,0,0,115,
- 28,0,0,0,0,9,16,1,12,1,21,1,10,1,15,1,
- 13,1,13,1,12,1,10,1,6,1,9,1,21,1,10,1,
- 117,11,0,0,0,95,103,99,100,95,105,109,112,111,114,116,
- 99,3,0,0,0,0,0,0,0,6,0,0,0,17,0,0,
- 0,67,0,0,0,115,254,0,0,0,116,0,0,124,0,0,
- 100,1,0,131,2,0,114,250,0,100,2,0,124,1,0,107,
- 6,0,114,89,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,89,0,124,1,0,
- 106,3,0,124,0,0,106,4,0,131,1,0,1,113,89,0,
- 110,0,0,120,158,0,124,1,0,68,93,147,0,125,3,0,
- 116,0,0,124,0,0,124,3,0,131,2,0,115,96,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,243,0,4,116,8,0,107,10,0,114,
- 239,0,1,125,5,0,1,122,50,0,116,9,0,124,5,0,
- 100,5,0,100,7,0,131,3,0,114,218,0,124,5,0,106,
- 11,0,124,4,0,107,2,0,114,218,0,119,96,0,113,218,
- 0,110,0,0,130,0,0,87,89,100,6,0,100,6,0,125,
- 5,0,126,5,0,88,113,243,0,88,113,96,0,113,96,0,
- 87,110,0,0,124,0,0,83,40,8,0,0,0,117,238,0,
- 0,0,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,
- 117,8,0,0,0,95,95,112,97,116,104,95,95,117,1,0,
- 0,0,42,117,7,0,0,0,95,95,97,108,108,95,95,117,
- 5,0,0,0,123,125,46,123,125,117,10,0,0,0,95,110,
- 111,116,95,102,111,117,110,100,78,70,40,12,0,0,0,117,
- 7,0,0,0,104,97,115,97,116,116,114,117,4,0,0,0,
- 108,105,115,116,117,6,0,0,0,114,101,109,111,118,101,117,
- 6,0,0,0,101,120,116,101,110,100,117,7,0,0,0,95,
- 95,97,108,108,95,95,117,6,0,0,0,102,111,114,109,97,
- 116,117,8,0,0,0,95,95,110,97,109,101,95,95,117,25,
- 0,0,0,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,117,11,0,0,
- 0,73,109,112,111,114,116,69,114,114,111,114,117,7,0,0,
- 0,103,101,116,97,116,116,114,117,5,0,0,0,70,97,108,
- 115,101,117,4,0,0,0,110,97,109,101,40,6,0,0,0,
- 117,6,0,0,0,109,111,100,117,108,101,117,8,0,0,0,
- 102,114,111,109,108,105,115,116,117,7,0,0,0,105,109,112,
- 111,114,116,95,117,1,0,0,0,120,117,9,0,0,0,102,
- 114,111,109,95,110,97,109,101,117,3,0,0,0,101,120,99,
- 40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,16,0,0,
- 0,95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,
- 116,58,6,0,0,115,34,0,0,0,0,10,15,1,12,1,
- 12,1,13,1,15,1,22,1,13,1,15,1,21,1,3,1,
- 17,1,18,6,18,1,15,1,9,1,32,1,117,16,0,0,
- 0,95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,
- 116,99,1,0,0,0,0,0,0,0,2,0,0,0,2,0,
- 0,0,67,0,0,0,115,78,0,0,0,124,0,0,106,0,
- 0,100,1,0,131,1,0,125,1,0,124,1,0,100,6,0,
- 107,8,0,114,74,0,124,0,0,100,2,0,25,125,1,0,
- 100,3,0,124,0,0,107,7,0,114,74,0,124,1,0,106,
- 2,0,100,4,0,131,1,0,100,5,0,25,125,1,0,113,
- 74,0,110,0,0,124,1,0,83,40,7,0,0,0,117,167,
- 0,0,0,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,117,11,0,0,0,95,
- 95,112,97,99,107,97,103,101,95,95,117,8,0,0,0,95,
- 95,110,97,109,101,95,95,117,8,0,0,0,95,95,112,97,
- 116,104,95,95,117,1,0,0,0,46,105,0,0,0,0,78,
- 40,3,0,0,0,117,3,0,0,0,103,101,116,117,4,0,
- 0,0,78,111,110,101,117,10,0,0,0,114,112,97,114,116,
- 105,116,105,111,110,40,2,0,0,0,117,7,0,0,0,103,
- 108,111,98,97,108,115,117,7,0,0,0,112,97,99,107,97,
- 103,101,40,0,0,0,0,40,0,0,0,0,117,29,0,0,
- 0,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,117,17,
- 0,0,0,95,99,97,108,99,95,95,95,112,97,99,107,97,
- 103,101,95,95,92,6,0,0,115,12,0,0,0,0,7,15,
- 1,12,1,10,1,12,1,25,1,117,17,0,0,0,95,99,
- 97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,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,
- 40,1,0,0,0,117,95,0,0,0,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,40,7,0,0,0,117,19,
- 0,0,0,69,120,116,101,110,115,105,111,110,70,105,108,101,
- 76,111,97,100,101,114,117,4,0,0,0,95,105,109,112,117,
- 18,0,0,0,101,120,116,101,110,115,105,111,110,95,115,117,
- 102,102,105,120,101,115,117,16,0,0,0,83,111,117,114,99,
- 101,70,105,108,101,76,111,97,100,101,114,117,15,0,0,0,
- 83,79,85,82,67,69,95,83,85,70,70,73,88,69,83,117,
- 20,0,0,0,83,111,117,114,99,101,108,101,115,115,70,105,
- 108,101,76,111,97,100,101,114,117,17,0,0,0,66,89,84,
- 69,67,79,68,69,95,83,85,70,70,73,88,69,83,40,3,
- 0,0,0,117,10,0,0,0,101,120,116,101,110,115,105,111,
- 110,115,117,6,0,0,0,115,111,117,114,99,101,117,8,0,
- 0,0,98,121,116,101,99,111,100,101,40,0,0,0,0,40,
- 0,0,0,0,117,29,0,0,0,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,117,27,0,0,0,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,107,6,0,0,115,8,0,0,0,0,
- 5,18,1,12,1,12,1,117,27,0,0,0,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,99,5,0,0,0,0,0,0,0,
+ 111,110,101,46,114,102,0,0,0,114,29,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,68,0,0,0,122,5,123,125,46,123,125,41,4,
+ 114,34,0,0,0,114,31,0,0,0,114,119,0,0,0,114,
+ 47,0,0,0,41,5,114,72,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,4,0,0,0,114,4,0,0,
+ 0,114,5,0,0,0,218,13,95,114,101,115,111,108,118,101,
+ 95,110,97,109,101,220,5,0,0,115,10,0,0,0,0,2,
+ 22,1,18,1,15,1,10,1,114,59,1,0,0,99,2,0,
+ 0,0,0,0,0,0,4,0,0,0,11,0,0,0,67,0,
+ 0,0,115,138,0,0,0,116,0,0,106,1,0,115,28,0,
+ 116,2,0,106,3,0,100,1,0,116,4,0,131,2,0,1,
+ 110,0,0,120,103,0,116,0,0,106,1,0,68,93,88,0,
+ 125,2,0,116,5,0,131,0,0,143,23,0,1,124,2,0,
+ 106,6,0,124,0,0,124,1,0,131,2,0,125,3,0,87,
+ 100,2,0,81,88,124,3,0,100,2,0,107,9,0,114,38,
+ 0,124,0,0,116,0,0,106,7,0,107,7,0,114,109,0,
+ 124,3,0,83,116,0,0,106,7,0,124,0,0,25,106,8,
+ 0,83,113,38,0,113,38,0,87,100,2,0,83,100,2,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,122,22,115,121,
+ 115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,101,
+ 109,112,116,121,78,41,9,114,7,0,0,0,218,9,109,101,
+ 116,97,95,112,97,116,104,114,186,0,0,0,114,187,0,0,
+ 0,114,188,0,0,0,114,55,1,0,0,114,218,0,0,0,
+ 114,141,0,0,0,114,172,0,0,0,41,4,114,72,0,0,
+ 0,114,35,0,0,0,114,32,1,0,0,114,161,0,0,0,
+ 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,
+ 12,95,102,105,110,100,95,109,111,100,117,108,101,229,5,0,
+ 0,115,20,0,0,0,0,2,9,1,19,1,16,1,10,1,
+ 24,1,12,2,15,1,4,2,21,2,114,61,1,0,0,99,
+ 3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,
+ 67,0,0,0,115,194,0,0,0,116,0,0,124,0,0,116,
+ 1,0,131,2,0,115,45,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,110,0,0,124,2,0,100,2,0,107,0,0,114,
+ 72,0,116,5,0,100,3,0,131,1,0,130,1,0,110,0,
+ 0,124,1,0,114,156,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,113,156,0,124,1,0,116,6,0,106,7,0,107,7,
+ 0,114,156,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,113,
+ 156,0,110,0,0,124,0,0,12,114,190,0,124,2,0,100,
+ 2,0,107,2,0,114,190,0,116,5,0,100,6,0,131,1,
+ 0,130,1,0,110,0,0,100,7,0,83,41,8,122,28,86,
+ 101,114,105,102,121,32,97,114,103,117,109,101,110,116,115,32,
+ 97,114,101,32,34,115,97,110,101,34,46,122,31,109,111,100,
+ 117,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,
+ 32,115,116,114,44,32,110,111,116,32,123,125,114,68,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,114,203,0,0,0,
+ 114,36,1,0,0,218,9,84,121,112,101,69,114,114,111,114,
+ 114,47,0,0,0,114,153,0,0,0,114,119,0,0,0,114,
+ 7,0,0,0,114,141,0,0,0,218,11,83,121,115,116,101,
+ 109,69,114,114,111,114,41,4,114,72,0,0,0,114,57,1,
+ 0,0,114,58,1,0,0,114,190,0,0,0,114,4,0,0,
+ 0,114,4,0,0,0,114,5,0,0,0,218,13,95,115,97,
+ 110,105,116,121,95,99,104,101,99,107,246,5,0,0,115,24,
+ 0,0,0,0,2,15,1,30,1,12,1,15,1,6,1,15,
+ 1,15,1,15,1,6,2,27,1,19,1,114,64,1,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,27,0,0,0,67,0,0,0,115,6,2,
+ 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,178,
+ 0,124,3,0,116,1,0,106,2,0,107,7,0,114,62,0,
+ 116,3,0,124,1,0,124,3,0,131,2,0,1,110,0,0,
+ 124,0,0,116,1,0,106,2,0,107,6,0,114,88,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,113,178,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,130,1,0,89,113,178,0,
+ 88,110,0,0,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,235,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,47,0,124,0,0,
+ 116,1,0,106,2,0,107,7,0,114,26,1,124,6,0,106,
+ 10,0,124,0,0,131,1,0,1,116,11,0,100,5,0,124,
+ 0,0,124,6,0,131,3,0,1,110,0,0,116,1,0,106,
+ 2,0,124,0,0,25,125,7,0,124,3,0,114,90,1,116,
+ 1,0,106,2,0,124,3,0,25,125,4,0,116,12,0,124,
+ 4,0,124,0,0,106,0,0,100,1,0,131,1,0,100,6,
+ 0,25,124,7,0,131,3,0,1,110,0,0,116,13,0,124,
+ 7,0,100,7,0,100,0,0,131,3,0,100,0,0,107,8,
+ 0,114,197,1,121,59,0,124,7,0,106,14,0,124,7,0,
+ 95,15,0,116,16,0,124,7,0,100,8,0,131,2,0,115,
+ 172,1,124,7,0,106,15,0,106,0,0,100,1,0,131,1,
+ 0,100,2,0,25,124,7,0,95,15,0,110,0,0,87,113,
+ 197,1,4,116,5,0,107,10,0,114,193,1,1,1,1,89,
+ 113,197,1,88,110,0,0,116,13,0,124,7,0,100,9,0,
+ 100,0,0,131,3,0,100,0,0,107,8,0,114,2,2,121,
+ 13,0,124,6,0,124,7,0,95,17,0,87,113,2,2,4,
+ 116,5,0,107,10,0,114,254,1,1,1,1,89,113,2,2,
+ 88,110,0,0,124,7,0,83,41,10,78,114,102,0,0,0,
+ 114,68,0,0,0,122,21,59,32,123,125,32,105,115,32,110,
+ 111,116,32,97,32,112,97,99,107,97,103,101,114,72,0,0,
+ 0,122,18,105,109,112,111,114,116,32,123,33,114,125,32,35,
+ 32,123,33,114,125,114,101,0,0,0,114,159,0,0,0,114,
+ 160,0,0,0,114,172,0,0,0,41,18,114,32,0,0,0,
+ 114,7,0,0,0,114,141,0,0,0,114,100,0,0,0,114,
+ 160,0,0,0,114,155,0,0,0,218,8,95,69,82,82,95,
+ 77,83,71,114,47,0,0,0,114,158,0,0,0,114,61,1,
+ 0,0,114,219,0,0,0,114,138,0,0,0,114,61,0,0,
+ 0,114,62,0,0,0,114,57,0,0,0,114,159,0,0,0,
+ 114,60,0,0,0,114,172,0,0,0,41,8,114,72,0,0,
+ 0,218,7,105,109,112,111,114,116,95,114,35,0,0,0,114,
+ 7,1,0,0,90,13,112,97,114,101,110,116,95,109,111,100,
+ 117,108,101,114,190,0,0,0,114,161,0,0,0,114,162,0,
+ 0,0,114,4,0,0,0,114,4,0,0,0,114,5,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,10,6,0,0,115,72,
+ 0,0,0,0,1,6,1,19,1,6,1,15,1,16,2,15,
+ 1,11,2,13,1,3,1,13,1,13,1,22,1,26,1,15,
+ 1,12,1,30,1,15,2,13,1,19,2,13,1,6,2,13,
+ 1,32,2,24,1,3,1,12,1,15,1,32,1,13,1,8,
+ 2,24,1,3,1,13,1,13,1,8,1,114,67,1,0,0,
+ 99,2,0,0,0,0,0,0,0,3,0,0,0,18,0,0,
+ 0,67,0,0,0,115,75,0,0,0,122,16,0,116,0,0,
+ 124,0,0,131,1,0,125,2,0,87,100,1,0,116,1,0,
+ 106,2,0,131,0,0,1,88,124,2,0,106,3,0,131,0,
+ 0,1,122,17,0,116,4,0,124,0,0,124,1,0,131,2,
+ 0,83,87,100,1,0,124,2,0,106,5,0,131,0,0,1,
+ 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,6,114,94,0,0,0,114,95,0,0,0,114,96,0,0,
+ 0,114,84,0,0,0,114,67,1,0,0,114,85,0,0,0,
+ 41,3,114,72,0,0,0,114,66,1,0,0,114,70,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 218,14,95,102,105,110,100,95,97,110,100,95,108,111,97,100,
+ 56,6,0,0,115,14,0,0,0,0,2,3,1,16,2,11,
+ 1,10,1,3,1,17,2,114,68,1,0,0,99,3,0,0,
+ 0,0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,
+ 0,115,172,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,
+ 49,0,116,1,0,124,0,0,124,1,0,124,2,0,131,3,
+ 0,125,0,0,110,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,87,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,158,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,110,0,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,68,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,72,0,0,0,
+ 41,12,114,64,1,0,0,114,59,1,0,0,114,95,0,0,
+ 0,114,56,1,0,0,114,7,0,0,0,114,141,0,0,0,
+ 114,68,1,0,0,218,11,95,103,99,100,95,105,109,112,111,
+ 114,116,114,96,0,0,0,114,47,0,0,0,114,158,0,0,
+ 0,114,97,0,0,0,41,5,114,72,0,0,0,114,57,1,
+ 0,0,114,58,1,0,0,114,162,0,0,0,114,137,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 114,69,1,0,0,69,6,0,0,115,26,0,0,0,0,9,
+ 16,1,12,1,21,1,10,1,15,1,13,1,13,1,12,1,
+ 10,2,15,1,21,1,10,1,114,69,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,1,1,0,0,116,0,0,124,0,0,100,1,0,
+ 131,2,0,114,253,0,100,2,0,124,1,0,107,6,0,114,
+ 89,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,89,0,124,1,0,106,3,0,
+ 124,0,0,106,4,0,131,1,0,1,113,89,0,110,0,0,
+ 120,161,0,124,1,0,68,93,150,0,125,3,0,116,0,0,
+ 124,0,0,124,3,0,131,2,0,115,96,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,246,0,4,116,8,0,107,10,0,114,242,0,1,
+ 125,5,0,1,122,53,0,116,9,0,124,5,0,131,1,0,
+ 106,10,0,116,11,0,131,1,0,114,221,0,124,5,0,106,
+ 12,0,124,4,0,107,2,0,114,221,0,119,96,0,113,221,
+ 0,110,0,0,130,0,0,87,89,100,5,0,100,5,0,125,
+ 5,0,126,5,0,88,113,246,0,88,113,96,0,113,96,0,
+ 87,110,0,0,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,160,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,60,0,0,0,218,4,108,105,115,116,
+ 218,6,114,101,109,111,118,101,114,208,0,0,0,114,71,1,
+ 0,0,114,47,0,0,0,114,57,0,0,0,114,100,0,0,
+ 0,114,158,0,0,0,114,36,1,0,0,114,9,0,0,0,
+ 218,15,95,69,82,82,95,77,83,71,95,80,82,69,70,73,
+ 88,114,72,0,0,0,41,6,114,162,0,0,0,218,8,102,
+ 114,111,109,108,105,115,116,114,66,1,0,0,114,16,0,0,
+ 0,90,9,102,114,111,109,95,110,97,109,101,114,249,0,0,
+ 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 218,16,95,104,97,110,100,108,101,95,102,114,111,109,108,105,
+ 115,116,93,6,0,0,115,34,0,0,0,0,10,15,1,12,
+ 1,12,1,13,1,15,1,22,1,13,1,15,1,21,1,3,
+ 1,17,1,18,4,21,1,15,1,9,1,32,1,114,76,1,
+ 0,0,99,1,0,0,0,0,0,0,0,2,0,0,0,2,
+ 0,0,0,67,0,0,0,115,78,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,74,0,124,0,0,100,3,0,25,125,1,
+ 0,100,4,0,124,0,0,107,7,0,114,74,0,124,1,0,
+ 106,1,0,100,5,0,131,1,0,100,6,0,25,125,1,0,
+ 113,74,0,110,0,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,159,0,0,0,78,114,57,0,0,0,
+ 114,160,0,0,0,114,102,0,0,0,114,68,0,0,0,41,
+ 2,114,80,0,0,0,114,32,0,0,0,41,2,218,7,103,
+ 108,111,98,97,108,115,114,57,1,0,0,114,4,0,0,0,
+ 114,4,0,0,0,114,5,0,0,0,218,17,95,99,97,108,
+ 99,95,95,95,112,97,99,107,97,103,101,95,95,125,6,0,
+ 0,115,12,0,0,0,0,7,15,1,12,1,10,1,12,1,
+ 25,1,114,78,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,9,1,
+ 0,0,114,95,0,0,0,218,18,101,120,116,101,110,115,105,
+ 111,110,95,115,117,102,102,105,120,101,115,114,3,1,0,0,
+ 114,120,0,0,0,114,8,1,0,0,218,17,66,89,84,69,
+ 67,79,68,69,95,83,85,70,70,73,88,69,83,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,235,0,0,
+ 0,140,6,0,0,115,8,0,0,0,0,5,18,1,12,1,
+ 12,1,114,235,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,
- 3,0,107,9,0,114,45,0,124,1,0,110,3,0,105,0,
- 0,125,6,0,116,2,0,124,6,0,131,1,0,125,7,0,
+ 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,3,0,100,2,0,
+ 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,4,0,124,0,0,131,1,0,116,4,
- 0,124,0,0,106,3,0,100,2,0,131,1,0,100,1,0,
- 25,131,1,0,24,125,8,0,116,5,0,106,6,0,124,5,
- 0,106,7,0,100,3,0,116,4,0,124,5,0,106,7,0,
+ 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,8,0,124,5,0,124,3,0,116,0,0,131,3,0,83,
- 100,3,0,83,40,4,0,0,0,117,214,1,0,0,73,109,
- 112,111,114,116,32,97,32,109,111,100,117,108,101,46,10,10,
- 32,32,32,32,84,104,101,32,39,103,108,111,98,97,108,115,
- 39,32,97,114,103,117,109,101,110,116,32,105,115,32,117,115,
- 101,100,32,116,111,32,105,110,102,101,114,32,119,104,101,114,
- 101,32,116,104,101,32,105,109,112,111,114,116,32,105,115,32,
- 111,99,99,117,114,105,110,103,32,102,114,111,109,10,32,32,
- 32,32,116,111,32,104,97,110,100,108,101,32,114,101,108,97,
- 116,105,118,101,32,105,109,112,111,114,116,115,46,32,84,104,
- 101,32,39,108,111,99,97,108,115,39,32,97,114,103,117,109,
- 101,110,116,32,105,115,32,105,103,110,111,114,101,100,46,32,
- 84,104,101,10,32,32,32,32,39,102,114,111,109,108,105,115,
- 116,39,32,97,114,103,117,109,101,110,116,32,115,112,101,99,
- 105,102,105,101,115,32,119,104,97,116,32,115,104,111,117,108,
- 100,32,101,120,105,115,116,32,97,115,32,97,116,116,114,105,
- 98,117,116,101,115,32,111,110,32,116,104,101,32,109,111,100,
- 117,108,101,10,32,32,32,32,98,101,105,110,103,32,105,109,
- 112,111,114,116,101,100,32,40,101,46,103,46,32,96,96,102,
- 114,111,109,32,109,111,100,117,108,101,32,105,109,112,111,114,
- 116,32,60,102,114,111,109,108,105,115,116,62,96,96,41,46,
- 32,32,84,104,101,32,39,108,101,118,101,108,39,10,32,32,
- 32,32,97,114,103,117,109,101,110,116,32,114,101,112,114,101,
- 115,101,110,116,115,32,116,104,101,32,112,97,99,107,97,103,
- 101,32,108,111,99,97,116,105,111,110,32,116,111,32,105,109,
- 112,111,114,116,32,102,114,111,109,32,105,110,32,97,32,114,
- 101,108,97,116,105,118,101,10,32,32,32,32,105,109,112,111,
- 114,116,32,40,101,46,103,46,32,96,96,102,114,111,109,32,
- 46,46,112,107,103,32,105,109,112,111,114,116,32,109,111,100,
- 96,96,32,119,111,117,108,100,32,104,97,118,101,32,97,32,
- 39,108,101,118,101,108,39,32,111,102,32,50,41,46,10,10,
- 32,32,32,32,105,0,0,0,0,117,1,0,0,0,46,78,
- 40,9,0,0,0,117,11,0,0,0,95,103,99,100,95,105,
- 109,112,111,114,116,117,4,0,0,0,78,111,110,101,117,17,
- 0,0,0,95,99,97,108,99,95,95,95,112,97,99,107,97,
- 103,101,95,95,117,9,0,0,0,112,97,114,116,105,116,105,
- 111,110,117,3,0,0,0,108,101,110,117,3,0,0,0,115,
- 121,115,117,7,0,0,0,109,111,100,117,108,101,115,117,8,
- 0,0,0,95,95,110,97,109,101,95,95,117,16,0,0,0,
- 95,104,97,110,100,108,101,95,102,114,111,109,108,105,115,116,
- 40,9,0,0,0,117,4,0,0,0,110,97,109,101,117,7,
- 0,0,0,103,108,111,98,97,108,115,117,6,0,0,0,108,
- 111,99,97,108,115,117,8,0,0,0,102,114,111,109,108,105,
- 115,116,117,5,0,0,0,108,101,118,101,108,117,6,0,0,
- 0,109,111,100,117,108,101,117,8,0,0,0,103,108,111,98,
- 97,108,115,95,117,7,0,0,0,112,97,99,107,97,103,101,
- 117,7,0,0,0,99,117,116,95,111,102,102,40,0,0,0,
- 0,40,0,0,0,0,117,29,0,0,0,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,117,10,0,0,0,95,95,105,
- 109,112,111,114,116,95,95,118,6,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,117,10,0,0,0,95,
- 95,105,109,112,111,114,116,95,95,99,2,0,0,0,0,0,
- 0,0,16,0,0,0,13,0,0,0,67,0,0,0,115,24,
- 3,0,0,124,1,0,97,0,0,124,0,0,97,1,0,116,
- 1,0,106,2,0,106,3,0,114,33,0,116,4,0,97,5,
- 0,110,6,0,116,6,0,97,5,0,116,7,0,116,1,0,
- 131,1,0,125,2,0,120,119,0,116,1,0,106,8,0,106,
- 9,0,131,0,0,68,93,102,0,92,2,0,125,3,0,125,
- 4,0,116,10,0,124,4,0,124,2,0,131,2,0,114,67,
- 0,116,11,0,124,4,0,100,1,0,131,2,0,115,169,0,
- 124,3,0,116,1,0,106,12,0,107,6,0,114,136,0,116,
- 13,0,124,4,0,95,14,0,113,166,0,116,0,0,106,15,
- 0,124,3,0,131,1,0,114,166,0,116,16,0,124,4,0,
- 95,14,0,113,166,0,113,169,0,113,67,0,113,67,0,87,
- 116,1,0,106,8,0,116,17,0,25,125,5,0,120,76,0,
- 100,28,0,68,93,68,0,125,6,0,124,6,0,116,1,0,
- 106,8,0,107,7,0,114,232,0,116,13,0,106,18,0,124,
- 6,0,131,1,0,125,7,0,110,13,0,116,1,0,106,8,
- 0,124,6,0,25,125,7,0,116,19,0,124,5,0,124,6,
- 0,124,7,0,131,3,0,1,113,193,0,87,100,6,0,100,
- 7,0,103,1,0,102,2,0,100,8,0,100,9,0,100,7,
- 0,103,2,0,102,2,0,100,10,0,100,9,0,100,7,0,
- 103,2,0,102,2,0,102,3,0,125,8,0,120,189,0,124,
- 8,0,68,93,169,0,92,2,0,125,9,0,125,10,0,116,
- 20,0,100,11,0,100,12,0,132,0,0,124,10,0,68,131,
- 1,0,131,1,0,115,107,1,116,21,0,130,1,0,124,10,
- 0,100,13,0,25,125,11,0,124,9,0,116,1,0,106,8,
- 0,107,6,0,114,149,1,116,1,0,106,8,0,124,9,0,
- 25,125,12,0,80,113,64,1,121,60,0,116,13,0,106,18,
- 0,124,9,0,131,1,0,125,12,0,124,9,0,100,10,0,
- 107,2,0,114,207,1,100,14,0,116,1,0,106,22,0,107,
- 6,0,114,207,1,124,10,0,100,15,0,25,125,11,0,110,
- 0,0,80,87,113,64,1,4,116,23,0,107,10,0,114,232,
- 1,1,1,1,119,64,1,89,113,64,1,88,113,64,1,87,
- 116,23,0,100,16,0,131,1,0,130,1,0,121,19,0,116,
- 13,0,106,18,0,100,17,0,131,1,0,125,13,0,87,110,
- 24,0,4,116,23,0,107,10,0,114,38,2,1,1,1,100,
- 27,0,125,13,0,89,110,1,0,88,116,13,0,106,18,0,
- 100,18,0,131,1,0,125,14,0,124,9,0,100,8,0,107,
- 2,0,114,100,2,116,13,0,106,18,0,100,19,0,131,1,
- 0,125,15,0,116,19,0,124,5,0,100,20,0,124,15,0,
- 131,3,0,1,110,0,0,116,19,0,124,5,0,100,21,0,
- 124,12,0,131,3,0,1,116,19,0,124,5,0,100,17,0,
- 124,13,0,131,3,0,1,116,19,0,124,5,0,100,18,0,
- 124,14,0,131,3,0,1,116,19,0,124,5,0,100,22,0,
- 124,11,0,131,3,0,1,116,19,0,124,5,0,100,23,0,
- 116,25,0,124,10,0,131,1,0,131,3,0,1,116,19,0,
- 124,5,0,100,24,0,116,26,0,131,0,0,131,3,0,1,
- 116,27,0,106,28,0,116,0,0,106,29,0,131,0,0,131,
- 1,0,1,124,9,0,100,8,0,107,2,0,114,20,3,116,
- 30,0,106,31,0,100,25,0,131,1,0,1,100,26,0,116,
- 27,0,107,6,0,114,20,3,100,29,0,116,33,0,95,34,
- 0,113,20,3,110,0,0,100,27,0,83,40,30,0,0,0,
- 117,250,0,0,0,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,117,
- 10,0,0,0,95,95,108,111,97,100,101,114,95,95,117,3,
- 0,0,0,95,105,111,117,9,0,0,0,95,119,97,114,110,
- 105,110,103,115,117,8,0,0,0,98,117,105,108,116,105,110,
- 115,117,7,0,0,0,109,97,114,115,104,97,108,117,5,0,
- 0,0,112,111,115,105,120,117,1,0,0,0,47,117,2,0,
- 0,0,110,116,117,1,0,0,0,92,117,3,0,0,0,111,
- 115,50,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,40,2,0,
- 0,0,105,1,0,0,0,78,40,1,0,0,0,117,3,0,
- 0,0,108,101,110,40,2,0,0,0,117,2,0,0,0,46,
- 48,117,3,0,0,0,115,101,112,40,0,0,0,0,40,0,
- 0,0,0,117,29,0,0,0,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,117,9,0,0,0,60,103,101,110,101,120,
- 112,114,62,191,6,0,0,115,2,0,0,0,6,0,117,25,
- 0,0,0,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,105,0,0,0,
- 0,117,7,0,0,0,69,77,88,32,71,67,67,105,1,0,
- 0,0,117,30,0,0,0,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,117,7,0,0,0,95,116,104,114,101,97,
- 100,117,8,0,0,0,95,119,101,97,107,114,101,102,117,6,
- 0,0,0,119,105,110,114,101,103,117,7,0,0,0,95,119,
- 105,110,114,101,103,117,3,0,0,0,95,111,115,117,8,0,
- 0,0,112,97,116,104,95,115,101,112,117,15,0,0,0,112,
- 97,116,104,95,115,101,112,97,114,97,116,111,114,115,117,11,
- 0,0,0,95,114,101,108,97,120,95,99,97,115,101,117,4,
- 0,0,0,46,112,121,119,117,6,0,0,0,95,100,46,112,
- 121,100,78,40,4,0,0,0,117,3,0,0,0,95,105,111,
- 117,9,0,0,0,95,119,97,114,110,105,110,103,115,117,8,
- 0,0,0,98,117,105,108,116,105,110,115,117,7,0,0,0,
- 109,97,114,115,104,97,108,84,40,35,0,0,0,117,4,0,
- 0,0,95,105,109,112,117,3,0,0,0,115,121,115,117,5,
- 0,0,0,102,108,97,103,115,117,8,0,0,0,111,112,116,
- 105,109,105,122,101,117,27,0,0,0,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,117,17,0,0,0,66,89,84,69,67,79,
- 68,69,95,83,85,70,70,73,88,69,83,117,23,0,0,0,
- 68,69,66,85,71,95,66,89,84,69,67,79,68,69,95,83,
- 85,70,70,73,88,69,83,117,4,0,0,0,116,121,112,101,
- 117,7,0,0,0,109,111,100,117,108,101,115,117,5,0,0,
- 0,105,116,101,109,115,117,10,0,0,0,105,115,105,110,115,
- 116,97,110,99,101,117,7,0,0,0,104,97,115,97,116,116,
- 114,117,20,0,0,0,98,117,105,108,116,105,110,95,109,111,
- 100,117,108,101,95,110,97,109,101,115,117,15,0,0,0,66,
- 117,105,108,116,105,110,73,109,112,111,114,116,101,114,117,10,
- 0,0,0,95,95,108,111,97,100,101,114,95,95,117,9,0,
- 0,0,105,115,95,102,114,111,122,101,110,117,14,0,0,0,
- 70,114,111,122,101,110,73,109,112,111,114,116,101,114,117,8,
- 0,0,0,95,95,110,97,109,101,95,95,117,11,0,0,0,
- 108,111,97,100,95,109,111,100,117,108,101,117,7,0,0,0,
- 115,101,116,97,116,116,114,117,3,0,0,0,97,108,108,117,
- 14,0,0,0,65,115,115,101,114,116,105,111,110,69,114,114,
- 111,114,117,7,0,0,0,118,101,114,115,105,111,110,117,11,
- 0,0,0,73,109,112,111,114,116,69,114,114,111,114,117,4,
- 0,0,0,78,111,110,101,117,3,0,0,0,115,101,116,117,
- 16,0,0,0,95,109,97,107,101,95,114,101,108,97,120,95,
- 99,97,115,101,117,18,0,0,0,69,88,84,69,78,83,73,
- 79,78,95,83,85,70,70,73,88,69,83,117,6,0,0,0,
- 101,120,116,101,110,100,117,18,0,0,0,101,120,116,101,110,
- 115,105,111,110,95,115,117,102,102,105,120,101,115,117,15,0,
- 0,0,83,79,85,82,67,69,95,83,85,70,70,73,88,69,
- 83,117,6,0,0,0,97,112,112,101,110,100,117,4,0,0,
- 0,84,114,117,101,117,21,0,0,0,87,105,110,100,111,119,
- 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,117,
- 11,0,0,0,68,69,66,85,71,95,66,85,73,76,68,40,
- 16,0,0,0,117,10,0,0,0,115,121,115,95,109,111,100,
- 117,108,101,117,11,0,0,0,95,105,109,112,95,109,111,100,
- 117,108,101,117,11,0,0,0,109,111,100,117,108,101,95,116,
- 121,112,101,117,4,0,0,0,110,97,109,101,117,6,0,0,
- 0,109,111,100,117,108,101,117,11,0,0,0,115,101,108,102,
- 95,109,111,100,117,108,101,117,12,0,0,0,98,117,105,108,
- 116,105,110,95,110,97,109,101,117,14,0,0,0,98,117,105,
- 108,116,105,110,95,109,111,100,117,108,101,117,10,0,0,0,
- 111,115,95,100,101,116,97,105,108,115,117,10,0,0,0,98,
- 117,105,108,116,105,110,95,111,115,117,15,0,0,0,112,97,
- 116,104,95,115,101,112,97,114,97,116,111,114,115,117,8,0,
- 0,0,112,97,116,104,95,115,101,112,117,9,0,0,0,111,
- 115,95,109,111,100,117,108,101,117,13,0,0,0,116,104,114,
- 101,97,100,95,109,111,100,117,108,101,117,14,0,0,0,119,
- 101,97,107,114,101,102,95,109,111,100,117,108,101,117,13,0,
- 0,0,119,105,110,114,101,103,95,109,111,100,117,108,101,40,
- 0,0,0,0,40,0,0,0,0,117,29,0,0,0,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,117,6,0,0,0,
- 95,115,101,116,117,112,154,6,0,0,115,106,0,0,0,0,
- 9,6,1,6,2,12,1,9,2,6,2,12,1,28,1,15,
- 1,15,1,15,1,12,1,15,1,22,2,13,1,13,1,15,
- 1,18,2,13,1,20,2,48,1,19,2,31,1,10,1,15,
- 1,13,1,4,2,3,1,15,2,27,1,13,1,5,1,13,
- 1,12,2,12,2,3,1,19,1,13,2,11,1,15,2,12,
- 1,15,1,19,2,16,1,16,1,16,1,16,1,22,2,19,
- 1,19,1,12,1,13,1,12,1,117,6,0,0,0,95,115,
- 101,116,117,112,99,2,0,0,0,0,0,0,0,3,0,0,
- 0,3,0,0,0,67,0,0,0,115,136,0,0,0,116,0,
- 0,124,0,0,124,1,0,131,2,0,1,116,1,0,131,0,
- 0,125,2,0,116,2,0,106,3,0,106,4,0,116,5,0,
- 106,6,0,124,2,0,140,0,0,103,1,0,131,1,0,1,
- 116,2,0,106,7,0,106,8,0,116,9,0,131,1,0,1,
- 116,2,0,106,7,0,106,8,0,116,10,0,131,1,0,1,
- 116,11,0,106,12,0,100,1,0,107,2,0,114,116,0,116,
- 2,0,106,7,0,106,8,0,116,13,0,131,1,0,1,110,
- 0,0,116,2,0,106,7,0,106,8,0,116,14,0,131,1,
- 0,1,100,2,0,83,40,3,0,0,0,117,50,0,0,0,
- 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,117,2,0,0,0,110,116,78,40,15,0,0,0,117,
- 6,0,0,0,95,115,101,116,117,112,117,27,0,0,0,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,117,3,0,0,0,115,
- 121,115,117,10,0,0,0,112,97,116,104,95,104,111,111,107,
- 115,117,6,0,0,0,101,120,116,101,110,100,117,10,0,0,
- 0,70,105,108,101,70,105,110,100,101,114,117,9,0,0,0,
- 112,97,116,104,95,104,111,111,107,117,9,0,0,0,109,101,
- 116,97,95,112,97,116,104,117,6,0,0,0,97,112,112,101,
- 110,100,117,15,0,0,0,66,117,105,108,116,105,110,73,109,
- 112,111,114,116,101,114,117,14,0,0,0,70,114,111,122,101,
- 110,73,109,112,111,114,116,101,114,117,3,0,0,0,95,111,
- 115,117,8,0,0,0,95,95,110,97,109,101,95,95,117,21,
- 0,0,0,87,105,110,100,111,119,115,82,101,103,105,115,116,
- 114,121,70,105,110,100,101,114,117,10,0,0,0,80,97,116,
- 104,70,105,110,100,101,114,40,3,0,0,0,117,10,0,0,
- 0,115,121,115,95,109,111,100,117,108,101,117,11,0,0,0,
- 95,105,109,112,95,109,111,100,117,108,101,117,17,0,0,0,
- 115,117,112,112,111,114,116,101,100,95,108,111,97,100,101,114,
- 115,40,0,0,0,0,40,0,0,0,0,117,29,0,0,0,
- 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,117,8,0,
- 0,0,95,105,110,115,116,97,108,108,233,6,0,0,115,16,
- 0,0,0,0,2,13,1,9,1,28,1,16,1,16,1,15,
- 1,19,1,117,8,0,0,0,95,105,110,115,116,97,108,108,
- 78,40,3,0,0,0,117,3,0,0,0,119,105,110,117,6,
- 0,0,0,99,121,103,119,105,110,117,6,0,0,0,100,97,
- 114,119,105,110,40,74,0,0,0,117,7,0,0,0,95,95,
- 100,111,99,95,95,117,27,0,0,0,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,117,16,0,0,0,95,109,97,107,101,95,
- 114,101,108,97,120,95,99,97,115,101,117,7,0,0,0,95,
- 119,95,108,111,110,103,117,7,0,0,0,95,114,95,108,111,
- 110,103,117,10,0,0,0,95,112,97,116,104,95,106,111,105,
- 110,117,11,0,0,0,95,112,97,116,104,95,115,112,108,105,
- 116,117,18,0,0,0,95,112,97,116,104,95,105,115,95,109,
- 111,100,101,95,116,121,112,101,117,12,0,0,0,95,112,97,
- 116,104,95,105,115,102,105,108,101,117,11,0,0,0,95,112,
- 97,116,104,95,105,115,100,105,114,117,13,0,0,0,95,119,
- 114,105,116,101,95,97,116,111,109,105,99,117,5,0,0,0,
- 95,119,114,97,112,117,4,0,0,0,116,121,112,101,117,8,
- 0,0,0,95,95,99,111,100,101,95,95,117,10,0,0,0,
- 95,99,111,100,101,95,116,121,112,101,117,10,0,0,0,110,
- 101,119,95,109,111,100,117,108,101,117,13,0,0,0,95,109,
- 111,100,117,108,101,95,108,111,99,107,115,117,12,0,0,0,
- 95,98,108,111,99,107,105,110,103,95,111,110,117,12,0,0,
- 0,82,117,110,116,105,109,101,69,114,114,111,114,117,14,0,
- 0,0,95,68,101,97,100,108,111,99,107,69,114,114,111,114,
- 117,11,0,0,0,95,77,111,100,117,108,101,76,111,99,107,
- 117,16,0,0,0,95,68,117,109,109,121,77,111,100,117,108,
- 101,76,111,99,107,117,16,0,0,0,95,103,101,116,95,109,
- 111,100,117,108,101,95,108,111,99,107,117,19,0,0,0,95,
- 108,111,99,107,95,117,110,108,111,99,107,95,109,111,100,117,
- 108,101,117,25,0,0,0,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,
- 117,3,0,0,0,111,114,100,117,17,0,0,0,95,82,65,
- 87,95,77,65,71,73,67,95,78,85,77,66,69,82,117,5,
- 0,0,0,98,121,116,101,115,117,5,0,0,0,114,97,110,
- 103,101,117,12,0,0,0,95,77,65,71,73,67,95,66,89,
- 84,69,83,117,8,0,0,0,95,80,89,67,65,67,72,69,
- 117,15,0,0,0,83,79,85,82,67,69,95,83,85,70,70,
- 73,88,69,83,117,23,0,0,0,68,69,66,85,71,95,66,
- 89,84,69,67,79,68,69,95,83,85,70,70,73,88,69,83,
- 117,27,0,0,0,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,
- 117,4,0,0,0,78,111,110,101,117,17,0,0,0,99,97,
- 99,104,101,95,102,114,111,109,95,115,111,117,114,99,101,117,
- 17,0,0,0,115,111,117,114,99,101,95,102,114,111,109,95,
- 99,97,99,104,101,117,15,0,0,0,95,103,101,116,95,115,
- 111,117,114,99,101,102,105,108,101,117,16,0,0,0,95,118,
- 101,114,98,111,115,101,95,109,101,115,115,97,103,101,117,11,
- 0,0,0,115,101,116,95,112,97,99,107,97,103,101,117,10,
- 0,0,0,115,101,116,95,108,111,97,100,101,114,117,17,0,
- 0,0,109,111,100,117,108,101,95,102,111,114,95,108,111,97,
- 100,101,114,117,11,0,0,0,95,99,104,101,99,107,95,110,
- 97,109,101,117,17,0,0,0,95,114,101,113,117,105,114,101,
- 115,95,98,117,105,108,116,105,110,117,16,0,0,0,95,114,
- 101,113,117,105,114,101,115,95,102,114,111,122,101,110,117,17,
- 0,0,0,95,102,105,110,100,95,109,111,100,117,108,101,95,
- 115,104,105,109,117,15,0,0,0,66,117,105,108,116,105,110,
- 73,109,112,111,114,116,101,114,117,14,0,0,0,70,114,111,
- 122,101,110,73,109,112,111,114,116,101,114,117,21,0,0,0,
- 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,
- 105,110,100,101,114,117,13,0,0,0,95,76,111,97,100,101,
- 114,66,97,115,105,99,115,117,12,0,0,0,83,111,117,114,
- 99,101,76,111,97,100,101,114,117,10,0,0,0,70,105,108,
- 101,76,111,97,100,101,114,117,16,0,0,0,83,111,117,114,
- 99,101,70,105,108,101,76,111,97,100,101,114,117,20,0,0,
- 0,83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,
- 111,97,100,101,114,117,18,0,0,0,69,88,84,69,78,83,
- 73,79,78,95,83,85,70,70,73,88,69,83,117,19,0,0,
- 0,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111,
- 97,100,101,114,117,14,0,0,0,95,78,97,109,101,115,112,
- 97,99,101,80,97,116,104,117,15,0,0,0,78,97,109,101,
- 115,112,97,99,101,76,111,97,100,101,114,117,10,0,0,0,
- 80,97,116,104,70,105,110,100,101,114,117,10,0,0,0,70,
- 105,108,101,70,105,110,100,101,114,117,18,0,0,0,95,73,
- 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116,
- 117,13,0,0,0,95,114,101,115,111,108,118,101,95,110,97,
- 109,101,117,12,0,0,0,95,102,105,110,100,95,109,111,100,
- 117,108,101,117,13,0,0,0,95,115,97,110,105,116,121,95,
- 99,104,101,99,107,117,8,0,0,0,95,69,82,82,95,77,
- 83,71,117,23,0,0,0,95,102,105,110,100,95,97,110,100,
- 95,108,111,97,100,95,117,110,108,111,99,107,101,100,117,14,
- 0,0,0,95,102,105,110,100,95,97,110,100,95,108,111,97,
- 100,117,11,0,0,0,95,103,99,100,95,105,109,112,111,114,
- 116,117,16,0,0,0,95,104,97,110,100,108,101,95,102,114,
- 111,109,108,105,115,116,117,17,0,0,0,95,99,97,108,99,
- 95,95,95,112,97,99,107,97,103,101,95,95,117,27,0,0,
- 0,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,117,10,0,0,
- 0,95,95,105,109,112,111,114,116,95,95,117,6,0,0,0,
- 95,115,101,116,117,112,117,8,0,0,0,95,105,110,115,116,
- 97,108,108,40,0,0,0,0,40,0,0,0,0,40,0,0,
- 0,0,117,29,0,0,0,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,117,8,0,0,0,60,109,111,100,117,108,101,
- 62,8,0,0,0,115,132,0,0,0,6,21,6,3,12,13,
- 12,16,12,13,12,12,12,12,12,10,12,6,12,7,15,22,
- 12,8,15,3,12,12,6,2,6,3,22,4,19,68,19,23,
- 12,19,12,20,12,100,34,1,37,2,6,2,9,2,9,1,
- 9,2,15,27,12,23,12,19,18,8,12,13,12,11,12,55,
- 12,18,12,11,12,11,12,17,19,57,19,54,19,50,19,83,
- 22,134,19,29,25,49,25,25,6,3,19,45,19,55,19,18,
- 19,91,19,128,19,13,12,9,12,17,12,17,6,2,12,50,
- 12,13,18,24,12,34,12,15,12,11,24,36,12,79,
+ 116,7,0,124,5,0,124,3,0,116,0,0,131,3,0,83,
+ 100,2,0,83,41,4,97,214,1,0,0,73,109,112,111,114,
+ 116,32,97,32,109,111,100,117,108,101,46,10,10,32,32,32,
+ 32,84,104,101,32,39,103,108,111,98,97,108,115,39,32,97,
+ 114,103,117,109,101,110,116,32,105,115,32,117,115,101,100,32,
+ 116,111,32,105,110,102,101,114,32,119,104,101,114,101,32,116,
+ 104,101,32,105,109,112,111,114,116,32,105,115,32,111,99,99,
+ 117,114,105,110,103,32,102,114,111,109,10,32,32,32,32,116,
+ 111,32,104,97,110,100,108,101,32,114,101,108,97,116,105,118,
+ 101,32,105,109,112,111,114,116,115,46,32,84,104,101,32,39,
+ 108,111,99,97,108,115,39,32,97,114,103,117,109,101,110,116,
+ 32,105,115,32,105,103,110,111,114,101,100,46,32,84,104,101,
+ 10,32,32,32,32,39,102,114,111,109,108,105,115,116,39,32,
+ 97,114,103,117,109,101,110,116,32,115,112,101,99,105,102,105,
+ 101,115,32,119,104,97,116,32,115,104,111,117,108,100,32,101,
+ 120,105,115,116,32,97,115,32,97,116,116,114,105,98,117,116,
+ 101,115,32,111,110,32,116,104,101,32,109,111,100,117,108,101,
+ 10,32,32,32,32,98,101,105,110,103,32,105,109,112,111,114,
+ 116,101,100,32,40,101,46,103,46,32,96,96,102,114,111,109,
+ 32,109,111,100,117,108,101,32,105,109,112,111,114,116,32,60,
+ 102,114,111,109,108,105,115,116,62,96,96,41,46,32,32,84,
+ 104,101,32,39,108,101,118,101,108,39,10,32,32,32,32,97,
+ 114,103,117,109,101,110,116,32,114,101,112,114,101,115,101,110,
+ 116,115,32,116,104,101,32,112,97,99,107,97,103,101,32,108,
+ 111,99,97,116,105,111,110,32,116,111,32,105,109,112,111,114,
+ 116,32,102,114,111,109,32,105,110,32,97,32,114,101,108,97,
+ 116,105,118,101,10,32,32,32,32,105,109,112,111,114,116,32,
+ 40,101,46,103,46,32,96,96,102,114,111,109,32,46,46,112,
+ 107,103,32,105,109,112,111,114,116,32,109,111,100,96,96,32,
+ 119,111,117,108,100,32,104,97,118,101,32,97,32,39,108,101,
+ 118,101,108,39,32,111,102,32,50,41,46,10,10,32,32,32,
+ 32,114,68,0,0,0,78,114,102,0,0,0,41,8,114,69,
+ 1,0,0,114,78,1,0,0,114,107,0,0,0,114,31,0,
+ 0,0,114,7,0,0,0,114,141,0,0,0,114,57,0,0,
+ 0,114,76,1,0,0,41,9,114,72,0,0,0,114,77,1,
+ 0,0,218,6,108,111,99,97,108,115,114,75,1,0,0,114,
+ 58,1,0,0,114,162,0,0,0,90,8,103,108,111,98,97,
+ 108,115,95,114,57,1,0,0,90,7,99,117,116,95,111,102,
+ 102,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,
+ 218,10,95,95,105,109,112,111,114,116,95,95,151,6,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,
+ 82,1,0,0,99,2,0,0,0,0,0,0,0,16,0,0,
+ 0,13,0,0,0,67,0,0,0,115,237,2,0,0,124,1,
+ 0,97,0,0,124,0,0,97,1,0,116,1,0,106,2,0,
+ 106,3,0,114,33,0,116,4,0,97,5,0,110,6,0,116,
+ 6,0,97,5,0,116,7,0,116,1,0,131,1,0,125,2,
+ 0,120,128,0,116,1,0,106,8,0,106,9,0,131,0,0,
+ 68,93,111,0,92,2,0,125,3,0,125,4,0,116,10,0,
+ 124,4,0,124,2,0,131,2,0,114,67,0,116,11,0,124,
+ 4,0,100,1,0,100,2,0,131,3,0,100,2,0,107,8,
+ 0,114,178,0,124,3,0,116,1,0,106,12,0,107,6,0,
+ 114,145,0,116,13,0,124,4,0,95,14,0,113,175,0,116,
+ 0,0,106,15,0,124,3,0,131,1,0,114,175,0,116,16,
+ 0,124,4,0,95,14,0,113,175,0,113,178,0,113,67,0,
+ 113,67,0,87,116,1,0,106,8,0,116,17,0,25,125,5,
+ 0,120,76,0,100,27,0,68,93,68,0,125,6,0,124,6,
+ 0,116,1,0,106,8,0,107,7,0,114,241,0,116,13,0,
+ 106,18,0,124,6,0,131,1,0,125,7,0,110,13,0,116,
+ 1,0,106,8,0,124,6,0,25,125,7,0,116,19,0,124,
+ 5,0,124,6,0,124,7,0,131,3,0,1,113,202,0,87,
+ 100,7,0,100,8,0,103,1,0,102,2,0,100,9,0,100,
+ 10,0,100,8,0,103,2,0,102,2,0,102,2,0,125,8,
+ 0,120,149,0,124,8,0,68,93,129,0,92,2,0,125,9,
+ 0,125,10,0,116,20,0,100,11,0,100,12,0,132,0,0,
+ 124,10,0,68,131,1,0,131,1,0,115,101,1,116,21,0,
+ 130,1,0,124,10,0,100,13,0,25,125,11,0,124,9,0,
+ 116,1,0,106,8,0,107,6,0,114,143,1,116,1,0,106,
+ 8,0,124,9,0,25,125,12,0,80,113,58,1,121,20,0,
+ 116,13,0,106,18,0,124,9,0,131,1,0,125,12,0,80,
+ 87,113,58,1,4,116,22,0,107,10,0,114,186,1,1,1,
+ 1,119,58,1,89,113,58,1,88,113,58,1,87,116,22,0,
+ 100,14,0,131,1,0,130,1,0,121,19,0,116,13,0,106,
+ 18,0,100,15,0,131,1,0,125,13,0,87,110,24,0,4,
+ 116,22,0,107,10,0,114,248,1,1,1,1,100,2,0,125,
+ 13,0,89,110,1,0,88,116,13,0,106,18,0,100,16,0,
+ 131,1,0,125,14,0,124,9,0,100,9,0,107,2,0,114,
+ 54,2,116,13,0,106,18,0,100,17,0,131,1,0,125,15,
+ 0,116,19,0,124,5,0,100,18,0,124,15,0,131,3,0,
+ 1,110,0,0,116,19,0,124,5,0,100,19,0,124,12,0,
+ 131,3,0,1,116,19,0,124,5,0,100,15,0,124,13,0,
+ 131,3,0,1,116,19,0,124,5,0,100,16,0,124,14,0,
+ 131,3,0,1,116,19,0,124,5,0,100,20,0,124,11,0,
+ 131,3,0,1,116,19,0,124,5,0,100,21,0,100,22,0,
+ 106,23,0,124,10,0,131,1,0,131,3,0,1,116,19,0,
+ 124,5,0,100,23,0,116,24,0,131,0,0,131,3,0,1,
+ 116,25,0,106,26,0,116,0,0,106,27,0,131,0,0,131,
+ 1,0,1,124,9,0,100,9,0,107,2,0,114,233,2,116,
+ 28,0,106,29,0,100,24,0,131,1,0,1,100,25,0,116,
+ 25,0,107,6,0,114,233,2,100,26,0,116,30,0,95,31,
+ 0,113,233,2,110,0,0,100,2,0,83,41,28,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,172,0,0,0,78,114,
+ 49,0,0,0,114,186,0,0,0,218,8,98,117,105,108,116,
+ 105,110,115,114,202,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,116,0,0,0,114,
+ 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,144,
+ 0,0,0,224,6,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,68,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,69,
+ 0,0,0,114,93,0,0,0,90,6,119,105,110,114,101,103,
+ 114,226,0,0,0,114,3,0,0,0,114,25,0,0,0,114,
+ 21,0,0,0,114,30,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,32,114,95,0,0,0,114,7,0,0,0,114,103,
+ 0,0,0,114,104,0,0,0,114,106,0,0,0,114,80,1,
+ 0,0,114,105,0,0,0,114,153,0,0,0,114,141,0,0,
+ 0,218,5,105,116,101,109,115,114,203,0,0,0,114,62,0,
+ 0,0,114,178,0,0,0,114,215,0,0,0,114,172,0,0,
+ 0,114,182,0,0,0,114,223,0,0,0,114,57,0,0,0,
+ 114,219,0,0,0,114,61,0,0,0,218,3,97,108,108,114,
+ 87,0,0,0,114,158,0,0,0,114,26,0,0,0,114,11,
+ 0,0,0,114,12,1,0,0,114,208,0,0,0,114,79,1,
+ 0,0,114,120,0,0,0,114,166,0,0,0,114,225,0,0,
+ 0,114,229,0,0,0,41,16,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,72,
+ 0,0,0,114,162,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,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,187,6,0,0,115,102,0,0,0,0,9,
+ 6,1,6,2,12,1,9,2,6,2,12,1,28,1,15,1,
+ 24,1,15,1,12,1,15,1,22,2,13,1,13,1,15,1,
+ 18,2,13,1,20,2,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,2,
+ 3,1,19,1,13,2,11,1,15,2,12,1,15,1,19,2,
+ 16,1,16,1,16,1,16,1,25,2,19,1,19,1,12,1,
+ 13,1,12,1,114,91,1,0,0,99,2,0,0,0,0,0,
+ 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,136,
+ 0,0,0,116,0,0,124,0,0,124,1,0,131,2,0,1,
+ 116,1,0,131,0,0,125,2,0,116,2,0,106,3,0,106,
+ 4,0,116,5,0,106,6,0,124,2,0,140,0,0,103,1,
+ 0,131,1,0,1,116,2,0,106,7,0,106,8,0,116,9,
+ 0,131,1,0,1,116,2,0,106,7,0,106,8,0,116,10,
+ 0,131,1,0,1,116,11,0,106,12,0,100,1,0,107,2,
+ 0,114,116,0,116,2,0,106,7,0,106,8,0,116,13,0,
+ 131,1,0,1,110,0,0,116,2,0,106,7,0,106,8,0,
+ 116,14,0,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,85,1,0,0,78,41,15,114,91,1,0,0,114,235,
+ 0,0,0,114,7,0,0,0,114,33,1,0,0,114,208,0,
+ 0,0,114,40,1,0,0,114,54,1,0,0,114,60,1,0,
+ 0,114,166,0,0,0,114,215,0,0,0,114,223,0,0,0,
+ 114,3,0,0,0,114,57,0,0,0,114,225,0,0,0,114,
+ 28,1,0,0,41,3,114,89,1,0,0,114,90,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,7,7,0,0,
+ 115,16,0,0,0,0,2,13,1,9,1,28,1,16,1,16,
+ 1,15,1,19,1,114,92,1,0,0,41,3,122,3,119,105,
+ 110,114,1,0,0,0,114,2,0,0,0,41,82,114,59,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,43,0,0,0,114,44,0,0,0,114,46,0,0,0,114,
+ 55,0,0,0,114,65,0,0,0,114,153,0,0,0,218,8,
+ 95,95,99,111,100,101,95,95,114,204,0,0,0,114,90,0,
+ 0,0,114,79,0,0,0,114,86,0,0,0,114,66,0,0,
+ 0,114,67,0,0,0,114,89,0,0,0,114,94,0,0,0,
+ 114,97,0,0,0,114,100,0,0,0,114,15,0,0,0,114,
+ 196,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,111,0,0,0,114,120,0,0,0,114,105,0,0,0,
+ 114,106,0,0,0,114,118,0,0,0,114,121,0,0,0,114,
+ 128,0,0,0,114,130,0,0,0,114,138,0,0,0,114,139,
+ 0,0,0,114,147,0,0,0,114,156,0,0,0,114,163,0,
+ 0,0,114,167,0,0,0,114,171,0,0,0,114,174,0,0,
+ 0,114,177,0,0,0,114,181,0,0,0,114,184,0,0,0,
+ 114,191,0,0,0,114,201,0,0,0,114,206,0,0,0,114,
+ 209,0,0,0,114,214,0,0,0,114,215,0,0,0,114,223,
+ 0,0,0,114,225,0,0,0,114,238,0,0,0,114,242,0,
+ 0,0,114,1,1,0,0,114,3,1,0,0,114,8,1,0,
+ 0,114,12,1,0,0,114,9,1,0,0,114,13,1,0,0,
+ 114,27,1,0,0,114,28,1,0,0,114,40,1,0,0,114,
+ 55,1,0,0,114,59,1,0,0,114,61,1,0,0,114,64,
+ 1,0,0,114,74,1,0,0,114,65,1,0,0,114,67,1,
+ 0,0,114,68,1,0,0,114,69,1,0,0,114,76,1,0,
+ 0,114,78,1,0,0,114,235,0,0,0,114,82,1,0,0,
+ 114,91,1,0,0,114,92,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,150,0,0,
+ 0,6,17,6,3,12,12,12,5,12,5,12,6,12,12,12,
+ 10,12,6,12,7,15,22,12,8,15,6,6,2,6,3,22,
+ 4,19,68,19,23,12,19,12,20,12,113,22,1,18,2,6,
+ 2,9,2,9,1,9,2,15,27,12,23,12,19,12,12,18,
+ 8,19,17,22,42,18,9,12,15,12,11,12,13,12,11,12,
+ 18,12,11,12,11,12,13,21,55,21,12,18,10,12,14,19,
+ 52,19,49,19,50,19,41,22,110,19,29,25,43,25,20,6,
+ 3,19,45,19,55,19,32,19,91,19,127,19,13,12,9,12,
+ 17,12,17,6,1,10,2,12,46,12,13,18,24,12,32,12,
+ 15,12,11,24,36,12,76,
};
diff --git a/Python/marshal.c b/Python/marshal.c
index cc17329..4401afb 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -1,8 +1,10 @@
/* Write Python objects to files and read them back.
- This is intended for writing and reading compiled Python code only;
- a true persistent storage facility would be much harder, since
- it would have to take circular links and sharing into account. */
+ This is primarily intended for writing and reading compiled Python code,
+ even though dicts, lists, sets and frozensets, not commonly seen in
+ code objects, are supported.
+ Version 3 of this protocol properly supports circular links
+ and sharing. */
#define PY_SSIZE_T_CLEAN
@@ -31,16 +33,14 @@
#define TYPE_STOPITER 'S'
#define TYPE_ELLIPSIS '.'
#define TYPE_INT 'i'
-/* TYPE_INT64 is deprecated. It is not
- generated anymore, and support for reading it
- will be removed in Python 3.4. */
-#define TYPE_INT64 'I'
#define TYPE_FLOAT 'f'
#define TYPE_BINARY_FLOAT 'g'
#define TYPE_COMPLEX 'x'
#define TYPE_BINARY_COMPLEX 'y'
#define TYPE_LONG 'l'
#define TYPE_STRING 's'
+#define TYPE_INTERNED 't'
+#define TYPE_REF 'r'
#define TYPE_TUPLE '('
#define TYPE_LIST '['
#define TYPE_DICT '{'
@@ -49,6 +49,13 @@
#define TYPE_UNKNOWN '?'
#define TYPE_SET '<'
#define TYPE_FROZENSET '>'
+#define FLAG_REF '\x80' /* with a type, add obj to index */
+
+#define TYPE_ASCII 'a'
+#define TYPE_ASCII_INTERNED 'A'
+#define TYPE_SMALL_TUPLE ')'
+#define TYPE_SHORT_ASCII 'z'
+#define TYPE_SHORT_ASCII_INTERNED 'Z'
#define WFERR_OK 0
#define WFERR_UNMARSHALLABLE 1
@@ -65,6 +72,9 @@ typedef struct {
PyObject *current_filename;
char *ptr;
char *end;
+ char *buf;
+ Py_ssize_t buf_size;
+ PyObject *refs; /* dict on marshal, list on unmarshal */
int version;
} WFILE;
@@ -73,7 +83,7 @@ typedef struct {
else w_more(c, p)
static void
-w_more(int c, WFILE *p)
+w_more(char c, WFILE *p)
{
Py_ssize_t size, newsize;
if (p->str == NULL)
@@ -90,7 +100,7 @@ w_more(int c, WFILE *p)
p->ptr = PyBytes_AS_STRING((PyBytesObject *)p->str) + size;
p->end =
PyBytes_AS_STRING((PyBytesObject *)p->str) + newsize;
- *p->ptr++ = Py_SAFE_DOWNCAST(c, int, char);
+ *p->ptr++ = c;
}
}
@@ -146,6 +156,13 @@ w_pstring(const char *s, Py_ssize_t n, WFILE *p)
w_string(s, n, p);
}
+static void
+w_short_pstring(const char *s, Py_ssize_t n, WFILE *p)
+{
+ w_byte(Py_SAFE_DOWNCAST(n, Py_ssize_t, unsigned char), p);
+ w_string(s, n, p);
+}
+
/* We assume that Python ints are stored internally in base some power of
2**15; for the sake of portability we'll always read and write them in base
exactly 2**15. */
@@ -158,13 +175,17 @@ w_pstring(const char *s, Py_ssize_t n, WFILE *p)
#endif
#define PyLong_MARSHAL_RATIO (PyLong_SHIFT / PyLong_MARSHAL_SHIFT)
+#define W_TYPE(t, p) do { \
+ w_byte((t) | flag, (p)); \
+} while(0)
+
static void
-w_PyLong(const PyLongObject *ob, WFILE *p)
+w_PyLong(const PyLongObject *ob, char flag, WFILE *p)
{
Py_ssize_t i, j, n, l;
digit d;
- w_byte(TYPE_LONG, p);
+ W_TYPE(TYPE_LONG, p);
if (Py_SIZE(ob) == 0) {
w_long((long)0, p);
return;
@@ -201,10 +222,64 @@ w_PyLong(const PyLongObject *ob, WFILE *p)
} while (d != 0);
}
+static int
+w_ref(PyObject *v, char *flag, WFILE *p)
+{
+ PyObject *id;
+ PyObject *idx;
+
+ if (p->version < 3 || p->refs == NULL)
+ return 0; /* not writing object references */
+
+ /* if it has only one reference, it definitely isn't shared */
+ if (Py_REFCNT(v) == 1)
+ return 0;
+
+ id = PyLong_FromVoidPtr((void*)v);
+ if (id == NULL)
+ goto err;
+ idx = PyDict_GetItem(p->refs, id);
+ if (idx != NULL) {
+ /* write the reference index to the stream */
+ long w = PyLong_AsLong(idx);
+ Py_DECREF(id);
+ if (w == -1 && PyErr_Occurred()) {
+ goto err;
+ }
+ /* we don't store "long" indices in the dict */
+ assert(0 <= w && w <= 0x7fffffff);
+ w_byte(TYPE_REF, p);
+ w_long(w, p);
+ return 1;
+ } else {
+ int ok;
+ Py_ssize_t s = PyDict_Size(p->refs);
+ /* we don't support long indices */
+ if (s >= 0x7fffffff) {
+ PyErr_SetString(PyExc_ValueError, "too many objects");
+ goto err;
+ }
+ idx = PyLong_FromSsize_t(s);
+ ok = idx && PyDict_SetItem(p->refs, id, idx) == 0;
+ Py_DECREF(id);
+ Py_XDECREF(idx);
+ if (!ok)
+ goto err;
+ *flag |= FLAG_REF;
+ return 0;
+ }
+err:
+ p->error = WFERR_UNMARSHALLABLE;
+ return 1;
+}
+
+static void
+w_complex_object(PyObject *v, char flag, WFILE *p);
+
static void
w_object(PyObject *v, WFILE *p)
{
- Py_ssize_t i, n;
+ char flag = '\0';
p->depth++;
@@ -229,24 +304,35 @@ w_object(PyObject *v, WFILE *p)
else if (v == Py_True) {
w_byte(TYPE_TRUE, p);
}
- else if (PyLong_CheckExact(v)) {
+ else if (!w_ref(v, &flag, p))
+ w_complex_object(v, flag, p);
+
+ p->depth--;
+}
+
+static void
+w_complex_object(PyObject *v, char flag, WFILE *p)
+{
+ Py_ssize_t i, n;
+
+ if (PyLong_CheckExact(v)) {
long x = PyLong_AsLong(v);
if ((x == -1) && PyErr_Occurred()) {
PyLongObject *ob = (PyLongObject *)v;
PyErr_Clear();
- w_PyLong(ob, p);
+ w_PyLong(ob, flag, p);
}
else {
#if SIZEOF_LONG > 4
long y = Py_ARITHMETIC_RIGHT_SHIFT(long, x, 31);
if (y && y != -1) {
/* Too large for TYPE_INT */
- w_PyLong((PyLongObject*)v, p);
+ w_PyLong((PyLongObject*)v, flag, p);
}
else
#endif
{
- w_byte(TYPE_INT, p);
+ W_TYPE(TYPE_INT, p);
w_long(x, p);
}
}
@@ -259,7 +345,7 @@ w_object(PyObject *v, WFILE *p)
p->error = WFERR_UNMARSHALLABLE;
return;
}
- w_byte(TYPE_BINARY_FLOAT, p);
+ W_TYPE(TYPE_BINARY_FLOAT, p);
w_string((char*)buf, 8, p);
}
else {
@@ -270,7 +356,7 @@ w_object(PyObject *v, WFILE *p)
return;
}
n = strlen(buf);
- w_byte(TYPE_FLOAT, p);
+ W_TYPE(TYPE_FLOAT, p);
w_byte((int)n, p);
w_string(buf, n, p);
PyMem_Free(buf);
@@ -284,7 +370,7 @@ w_object(PyObject *v, WFILE *p)
p->error = WFERR_UNMARSHALLABLE;
return;
}
- w_byte(TYPE_BINARY_COMPLEX, p);
+ W_TYPE(TYPE_BINARY_COMPLEX, p);
w_string((char*)buf, 8, p);
if (_PyFloat_Pack8(PyComplex_ImagAsDouble(v),
buf, 1) < 0) {
@@ -295,7 +381,7 @@ w_object(PyObject *v, WFILE *p)
}
else {
char *buf;
- w_byte(TYPE_COMPLEX, p);
+ W_TYPE(TYPE_COMPLEX, p);
buf = PyOS_double_to_string(PyComplex_RealAsDouble(v),
'g', 17, 0, NULL);
if (!buf) {
@@ -319,31 +405,61 @@ w_object(PyObject *v, WFILE *p)
}
}
else if (PyBytes_CheckExact(v)) {
- w_byte(TYPE_STRING, p);
+ W_TYPE(TYPE_STRING, p);
w_pstring(PyBytes_AS_STRING(v), PyBytes_GET_SIZE(v), p);
}
else if (PyUnicode_CheckExact(v)) {
- PyObject *utf8;
- utf8 = PyUnicode_AsEncodedString(v, "utf8", "surrogatepass");
- if (utf8 == NULL) {
- p->depth--;
- p->error = WFERR_UNMARSHALLABLE;
- return;
+ if (p->version >= 4 && PyUnicode_IS_ASCII(v)) {
+ int is_short = PyUnicode_GET_LENGTH(v) < 256;
+ if (is_short) {
+ if (PyUnicode_CHECK_INTERNED(v))
+ W_TYPE(TYPE_SHORT_ASCII_INTERNED, p);
+ else
+ W_TYPE(TYPE_SHORT_ASCII, p);
+ w_short_pstring((char *) PyUnicode_1BYTE_DATA(v),
+ PyUnicode_GET_LENGTH(v), p);
+ }
+ else {
+ if (PyUnicode_CHECK_INTERNED(v))
+ W_TYPE(TYPE_ASCII_INTERNED, p);
+ else
+ W_TYPE(TYPE_ASCII, p);
+ w_pstring((char *) PyUnicode_1BYTE_DATA(v),
+ PyUnicode_GET_LENGTH(v), p);
+ }
+ }
+ else {
+ PyObject *utf8;
+ utf8 = PyUnicode_AsEncodedString(v, "utf8", "surrogatepass");
+ if (utf8 == NULL) {
+ p->depth--;
+ p->error = WFERR_UNMARSHALLABLE;
+ return;
+ }
+ if (p->version >= 3 && PyUnicode_CHECK_INTERNED(v))
+ W_TYPE(TYPE_INTERNED, p);
+ else
+ W_TYPE(TYPE_UNICODE, p);
+ w_pstring(PyBytes_AS_STRING(utf8), PyBytes_GET_SIZE(utf8), p);
+ Py_DECREF(utf8);
}
- w_byte(TYPE_UNICODE, p);
- w_pstring(PyBytes_AS_STRING(utf8), PyBytes_GET_SIZE(utf8), p);
- Py_DECREF(utf8);
}
else if (PyTuple_CheckExact(v)) {
- w_byte(TYPE_TUPLE, p);
n = PyTuple_Size(v);
- W_SIZE(n, p);
+ if (p->version >= 4 && n < 256) {
+ W_TYPE(TYPE_SMALL_TUPLE, p);
+ w_byte(n, p);
+ }
+ else {
+ W_TYPE(TYPE_TUPLE, p);
+ W_SIZE(n, p);
+ }
for (i = 0; i < n; i++) {
w_object(PyTuple_GET_ITEM(v, i), p);
}
}
else if (PyList_CheckExact(v)) {
- w_byte(TYPE_LIST, p);
+ W_TYPE(TYPE_LIST, p);
n = PyList_GET_SIZE(v);
W_SIZE(n, p);
for (i = 0; i < n; i++) {
@@ -353,7 +469,7 @@ w_object(PyObject *v, WFILE *p)
else if (PyDict_CheckExact(v)) {
Py_ssize_t pos;
PyObject *key, *value;
- w_byte(TYPE_DICT, p);
+ W_TYPE(TYPE_DICT, p);
/* This one is NULL object terminated! */
pos = 0;
while (PyDict_Next(v, &pos, &key, &value)) {
@@ -366,9 +482,9 @@ w_object(PyObject *v, WFILE *p)
PyObject *value, *it;
if (PyObject_TypeCheck(v, &PySet_Type))
- w_byte(TYPE_SET, p);
+ W_TYPE(TYPE_SET, p);
else
- w_byte(TYPE_FROZENSET, p);
+ W_TYPE(TYPE_FROZENSET, p);
n = PyObject_Size(v);
if (n == -1) {
p->depth--;
@@ -395,7 +511,7 @@ w_object(PyObject *v, WFILE *p)
}
else if (PyCode_Check(v)) {
PyCodeObject *co = (PyCodeObject *)v;
- w_byte(TYPE_CODE, p);
+ W_TYPE(TYPE_CODE, p);
w_long(co->co_argcount, p);
w_long(co->co_kwonlyargcount, p);
w_long(co->co_nlocals, p);
@@ -421,15 +537,14 @@ w_object(PyObject *v, WFILE *p)
p->error = WFERR_UNMARSHALLABLE;
return;
}
- w_byte(TYPE_STRING, p);
+ W_TYPE(TYPE_STRING, p);
w_pstring(view.buf, view.len, p);
PyBuffer_Release(&view);
}
else {
- w_byte(TYPE_UNKNOWN, p);
+ W_TYPE(TYPE_UNKNOWN, p);
p->error = WFERR_UNMARSHALLABLE;
}
- p->depth--;
}
/* version currently has no effect for writing ints. */
@@ -440,6 +555,7 @@ PyMarshal_WriteLongToFile(long x, FILE *fp, int version)
wf.fp = fp;
wf.error = WFERR_OK;
wf.depth = 0;
+ wf.refs = NULL;
wf.version = version;
w_long(x, &wf);
}
@@ -451,81 +567,106 @@ PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version)
wf.fp = fp;
wf.error = WFERR_OK;
wf.depth = 0;
+ if (version >= 3) {
+ if ((wf.refs = PyDict_New()) == NULL)
+ return; /* caller mush check PyErr_Occurred() */
+ } else
+ wf.refs = NULL;
wf.version = version;
w_object(x, &wf);
+ Py_XDECREF(wf.refs);
}
typedef WFILE RFILE; /* Same struct with different invariants */
-#define rs_byte(p) (((p)->ptr < (p)->end) ? (unsigned char)*(p)->ptr++ : EOF)
-
-static Py_ssize_t
-r_string(char *s, Py_ssize_t n, RFILE *p)
+static char *
+r_string(Py_ssize_t n, RFILE *p)
{
- char *ptr;
- Py_ssize_t read, left;
-
- if (!p->readable) {
- if (p->fp != NULL)
- /* The result fits into int because it must be <=n. */
- read = fread(s, 1, n, p->fp);
- else {
- left = p->end - p->ptr;
- read = (left < n) ? left : n;
- memcpy(s, p->ptr, read);
- p->ptr += read;
+ Py_ssize_t read = -1;
+
+ if (p->ptr != NULL) {
+ /* Fast path for loads() */
+ char *res = p->ptr;
+ Py_ssize_t left = p->end - p->ptr;
+ if (left < n) {
+ PyErr_SetString(PyExc_EOFError,
+ "marshal data too short");
+ return NULL;
+ }
+ p->ptr += n;
+ return res;
+ }
+ if (p->buf == NULL) {
+ p->buf = PyMem_MALLOC(n);
+ if (p->buf == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
+ p->buf_size = n;
+ }
+ else if (p->buf_size < n) {
+ p->buf = PyMem_REALLOC(p->buf, n);
+ if (p->buf == NULL) {
+ PyErr_NoMemory();
+ return NULL;
}
+ p->buf_size = n;
+ }
+ if (!p->readable) {
+ assert(p->fp != NULL);
+ read = fread(p->buf, 1, n, p->fp);
}
else {
- _Py_IDENTIFIER(read);
-
- PyObject *data = _PyObject_CallMethodId(p->readable, &PyId_read, "n", n);
- read = 0;
- if (data != NULL) {
- if (!PyBytes_Check(data)) {
- PyErr_Format(PyExc_TypeError,
- "f.read() returned not bytes but %.100s",
- data->ob_type->tp_name);
- }
- else {
- read = PyBytes_GET_SIZE(data);
- if (read > 0) {
- if (read > n) {
- PyErr_Format(PyExc_ValueError,
- "read() returned too much data: "
- "%zd bytes requested, %zd returned",
- n, read);
- read = -1;
- }
- else {
- ptr = PyBytes_AS_STRING(data);
- memcpy(s, ptr, read);
- }
- }
- }
- Py_DECREF(data);
+ _Py_IDENTIFIER(readinto);
+ PyObject *res, *mview;
+ Py_buffer buf;
+
+ if (PyBuffer_FillInfo(&buf, NULL, p->buf, n, 0, PyBUF_CONTIG) == -1)
+ return NULL;
+ mview = PyMemoryView_FromBuffer(&buf);
+ if (mview == NULL)
+ return NULL;
+
+ res = _PyObject_CallMethodId(p->readable, &PyId_readinto, "N", mview);
+ if (res != NULL) {
+ read = PyNumber_AsSsize_t(res, PyExc_ValueError);
+ Py_DECREF(res);
}
}
- if (!PyErr_Occurred() && (read < n)) {
- PyErr_SetString(PyExc_EOFError, "EOF read where not expected");
+ if (read != n) {
+ if (!PyErr_Occurred()) {
+ if (read > n)
+ PyErr_Format(PyExc_ValueError,
+ "read() returned too much data: "
+ "%zd bytes requested, %zd returned",
+ n, read);
+ else
+ PyErr_SetString(PyExc_EOFError,
+ "EOF read where not expected");
+ }
+ return NULL;
}
- return read;
+ return p->buf;
}
-
static int
r_byte(RFILE *p)
{
int c = EOF;
- unsigned char ch;
- Py_ssize_t n;
- if (!p->readable)
- c = p->fp ? getc(p->fp) : rs_byte(p);
+ if (p->ptr != NULL) {
+ if (p->ptr < p->end)
+ c = (unsigned char) *p->ptr++;
+ return c;
+ }
+ if (!p->readable) {
+ assert(p->fp);
+ c = getc(p->fp);
+ }
else {
- n = r_string((char *) &ch, 1, p);
- if (n > 0)
- c = ch;
+ char *ptr = r_string(1, p);
+ if (ptr != NULL)
+ c = *(unsigned char *) ptr;
}
return c;
}
@@ -533,69 +674,37 @@ r_byte(RFILE *p)
static int
r_short(RFILE *p)
{
- register short x;
- unsigned char buffer[2];
-
- r_string((char *) buffer, 2, p);
- x = buffer[0];
- x |= buffer[1] << 8;
- /* Sign-extension, in case short greater than 16 bits */
- x |= -(x & 0x8000);
+ short x = -1;
+ unsigned char *buffer;
+
+ buffer = (unsigned char *) r_string(2, p);
+ if (buffer != NULL) {
+ x = buffer[0];
+ x |= buffer[1] << 8;
+ /* Sign-extension, in case short greater than 16 bits */
+ x |= -(x & 0x8000);
+ }
return x;
}
static long
r_long(RFILE *p)
{
- register long x;
- unsigned char buffer[4];
-
- r_string((char *) buffer, 4, p);
- x = buffer[0];
- x |= (long)buffer[1] << 8;
- x |= (long)buffer[2] << 16;
- x |= (long)buffer[3] << 24;
-#if SIZEOF_LONG > 4
- /* Sign extension for 64-bit machines */
- x |= -(x & 0x80000000L);
-#endif
- return x;
-}
-
-/* r_long64 deals with the TYPE_INT64 code. On a machine with
- sizeof(long) > 4, it returns a Python int object, else a Python long
- object. Note that w_long64 writes out TYPE_INT if 32 bits is enough,
- so there's no inefficiency here in returning a PyLong on 32-bit boxes
- for everything written via TYPE_INT64 (i.e., if an int is written via
- TYPE_INT64, it *needs* more than 32 bits).
-*/
-static PyObject *
-r_long64(RFILE *p)
-{
- PyObject *result = NULL;
- long lo4 = r_long(p);
- long hi4 = r_long(p);
-
- if (!PyErr_Occurred()) {
+ long x = -1;
+ unsigned char *buffer;
+
+ buffer = (unsigned char *) r_string(4, p);
+ if (buffer != NULL) {
+ x = buffer[0];
+ x |= (long)buffer[1] << 8;
+ x |= (long)buffer[2] << 16;
+ x |= (long)buffer[3] << 24;
#if SIZEOF_LONG > 4
- long x = (hi4 << 32) | (lo4 & 0xFFFFFFFFL);
- result = PyLong_FromLong(x);
-#else
- unsigned char buf[8];
- int one = 1;
- int is_little_endian = (int)*(char*)&one;
- if (is_little_endian) {
- memcpy(buf, &lo4, 4);
- memcpy(buf+4, &hi4, 4);
- }
- else {
- memcpy(buf, &hi4, 4);
- memcpy(buf+4, &lo4, 4);
- }
- result = _PyLong_FromByteArray(buf, 8, is_little_endian, 1);
+ /* Sign extension for 64-bit machines */
+ x |= -(x & 0x80000000L);
#endif
}
- return result;
+ return x;
}
static PyObject *
@@ -667,6 +776,58 @@ r_PyLong(RFILE *p)
return NULL;
}
+/* allocate the reflist index for a new object. Return -1 on failure */
+static Py_ssize_t
+r_ref_reserve(int flag, RFILE *p)
+{
+ if (flag) { /* currently only FLAG_REF is defined */
+ Py_ssize_t idx = PyList_GET_SIZE(p->refs);
+ if (idx >= 0x7ffffffe) {
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (index list too large)");
+ return -1;
+ }
+ if (PyList_Append(p->refs, Py_None) < 0)
+ return -1;
+ return idx;
+ } else
+ return 0;
+}
+
+/* insert the new object 'o' to the reflist at previously
+ * allocated index 'idx'.
+ * 'o' can be NULL, in which case nothing is done.
+ * if 'o' was non-NULL, and the function succeeds, 'o' is returned.
+ * if 'o' was non-NULL, and the function fails, 'o' is released and
+ * NULL returned. This simplifies error checking at the call site since
+ * a single test for NULL for the function result is enough.
+ */
+static PyObject *
+r_ref_insert(PyObject *o, Py_ssize_t idx, int flag, RFILE *p)
+{
+ if (o != NULL && flag) { /* currently only FLAG_REF is defined */
+ PyObject *tmp = PyList_GET_ITEM(p->refs, idx);
+ Py_INCREF(o);
+ PyList_SET_ITEM(p->refs, idx, o);
+ Py_DECREF(tmp);
+ }
+ return o;
+}
+
+/* combination of both above, used when an object can be
+ * created whenever it is seen in the file, as opposed to
+ * after having loaded its sub-objects.
+ */
+static PyObject *
+r_ref(PyObject *o, int flag, RFILE *p)
+{
+ if (o != NULL && flag) { /* currently only FLAG_REF is defined */
+ if (PyList_Append(p->refs, o) < 0) {
+ Py_DECREF(o); /* release the new object */
+ return NULL;
+ }
+ }
+ return o;
+}
static PyObject *
r_object(RFILE *p)
@@ -674,9 +835,17 @@ r_object(RFILE *p)
/* NULL is a valid return value, it does not necessarily means that
an exception is set. */
PyObject *v, *v2;
+ Py_ssize_t idx = 0;
long i, n;
- int type = r_byte(p);
- PyObject *retval;
+ int type, code = r_byte(p);
+ int flag, is_interned = 0;
+ PyObject *retval = NULL;
+
+ if (code == EOF) {
+ PyErr_SetString(PyExc_EOFError,
+ "EOF read where object expected");
+ return NULL;
+ }
p->depth++;
@@ -686,16 +855,17 @@ r_object(RFILE *p)
return NULL;
}
- switch (type) {
+ flag = code & FLAG_REF;
+ type = code & ~FLAG_REF;
- case EOF:
- PyErr_SetString(PyExc_EOFError,
- "EOF read where object expected");
- retval = NULL;
- break;
+#define R_REF(O) do{\
+ if (flag) \
+ O = r_ref(O, flag, p);\
+} while (0)
+
+ switch (type) {
case TYPE_NULL:
- retval = NULL;
break;
case TYPE_NONE:
@@ -726,67 +896,66 @@ r_object(RFILE *p)
case TYPE_INT:
n = r_long(p);
retval = PyErr_Occurred() ? NULL : PyLong_FromLong(n);
- break;
-
- case TYPE_INT64:
- retval = r_long64(p);
+ R_REF(retval);
break;
case TYPE_LONG:
retval = r_PyLong(p);
+ R_REF(retval);
break;
case TYPE_FLOAT:
{
- char buf[256];
+ char buf[256], *ptr;
double dx;
- retval = NULL;
n = r_byte(p);
if (n == EOF) {
PyErr_SetString(PyExc_EOFError,
"EOF read where object expected");
break;
}
- if (r_string(buf, n, p) != n)
+ ptr = r_string(n, p);
+ if (ptr == NULL)
break;
+ memcpy(buf, ptr, n);
buf[n] = '\0';
dx = PyOS_string_to_double(buf, NULL, NULL);
if (dx == -1.0 && PyErr_Occurred())
break;
retval = PyFloat_FromDouble(dx);
+ R_REF(retval);
break;
}
case TYPE_BINARY_FLOAT:
{
- unsigned char buf[8];
+ unsigned char *buf;
double x;
- if (r_string((char*)buf, 8, p) != 8) {
- retval = NULL;
+ buf = (unsigned char *) r_string(8, p);
+ if (buf == NULL)
break;
- }
x = _PyFloat_Unpack8(buf, 1);
- if (x == -1.0 && PyErr_Occurred()) {
- retval = NULL;
+ if (x == -1.0 && PyErr_Occurred())
break;
- }
retval = PyFloat_FromDouble(x);
+ R_REF(retval);
break;
}
case TYPE_COMPLEX:
{
- char buf[256];
+ char buf[256], *ptr;
Py_complex c;
- retval = NULL;
n = r_byte(p);
if (n == EOF) {
PyErr_SetString(PyExc_EOFError,
"EOF read where object expected");
break;
}
- if (r_string(buf, n, p) != n)
+ ptr = r_string(n, p);
+ if (ptr == NULL)
break;
+ memcpy(buf, ptr, n);
buf[n] = '\0';
c.real = PyOS_string_to_double(buf, NULL, NULL);
if (c.real == -1.0 && PyErr_Occurred())
@@ -797,112 +966,148 @@ r_object(RFILE *p)
"EOF read where object expected");
break;
}
- if (r_string(buf, n, p) != n)
+ ptr = r_string(n, p);
+ if (ptr == NULL)
break;
+ memcpy(buf, ptr, n);
buf[n] = '\0';
c.imag = PyOS_string_to_double(buf, NULL, NULL);
if (c.imag == -1.0 && PyErr_Occurred())
break;
retval = PyComplex_FromCComplex(c);
+ R_REF(retval);
break;
}
case TYPE_BINARY_COMPLEX:
{
- unsigned char buf[8];
+ unsigned char *buf;
Py_complex c;
- if (r_string((char*)buf, 8, p) != 8) {
- retval = NULL;
+ buf = (unsigned char *) r_string(8, p);
+ if (buf == NULL)
break;
- }
c.real = _PyFloat_Unpack8(buf, 1);
- if (c.real == -1.0 && PyErr_Occurred()) {
- retval = NULL;
+ if (c.real == -1.0 && PyErr_Occurred())
break;
- }
- if (r_string((char*)buf, 8, p) != 8) {
- retval = NULL;
+ buf = (unsigned char *) r_string(8, p);
+ if (buf == NULL)
break;
- }
c.imag = _PyFloat_Unpack8(buf, 1);
- if (c.imag == -1.0 && PyErr_Occurred()) {
- retval = NULL;
+ if (c.imag == -1.0 && PyErr_Occurred())
break;
- }
retval = PyComplex_FromCComplex(c);
+ R_REF(retval);
break;
}
case TYPE_STRING:
- n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ {
+ char *ptr;
+ n = r_long(p);
+ if (PyErr_Occurred())
+ break;
+ if (n < 0 || n > SIZE32_MAX) {
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (string size out of range)");
+ break;
+ }
+ v = PyBytes_FromStringAndSize((char *)NULL, n);
+ if (v == NULL)
+ break;
+ ptr = r_string(n, p);
+ if (ptr == NULL) {
+ Py_DECREF(v);
+ break;
+ }
+ memcpy(PyBytes_AS_STRING(v), ptr, n);
+ retval = v;
+ R_REF(retval);
break;
}
+
+ case TYPE_ASCII_INTERNED:
+ is_interned = 1;
+ case TYPE_ASCII:
+ n = r_long(p);
+ if (PyErr_Occurred())
+ break;
if (n < 0 || n > SIZE32_MAX) {
- PyErr_SetString(PyExc_ValueError, "bad marshal data (string size out of range)");
- retval = NULL;
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
break;
}
- v = PyBytes_FromStringAndSize((char *)NULL, n);
- if (v == NULL) {
- retval = NULL;
+ goto _read_ascii;
+
+ case TYPE_SHORT_ASCII_INTERNED:
+ is_interned = 1;
+ case TYPE_SHORT_ASCII:
+ n = r_byte(p);
+ if (n == EOF) {
+ PyErr_SetString(PyExc_EOFError,
+ "EOF read where object expected");
break;
}
- if (r_string(PyBytes_AS_STRING(v), n, p) != n) {
- Py_DECREF(v);
- retval = NULL;
+ _read_ascii:
+ {
+ char *ptr;
+ ptr = r_string(n, p);
+ if (ptr == NULL)
+ break;
+ v = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ptr, n);
+ if (v == NULL)
+ break;
+ if (is_interned)
+ PyUnicode_InternInPlace(&v);
+ retval = v;
+ R_REF(retval);
break;
}
- retval = v;
- break;
+ case TYPE_INTERNED:
+ is_interned = 1;
case TYPE_UNICODE:
{
char *buffer;
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (unicode size out of range)");
- retval = NULL;
break;
}
- buffer = PyMem_NEW(char, n);
- if (buffer == NULL) {
- retval = PyErr_NoMemory();
- break;
+ if (n != 0) {
+ buffer = r_string(n, p);
+ if (buffer == NULL)
+ break;
+ v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
}
- if (r_string(buffer, n, p) != n) {
- PyMem_DEL(buffer);
- retval = NULL;
- break;
+ else {
+ v = PyUnicode_New(0, 0);
}
- v = PyUnicode_DecodeUTF8(buffer, n, "surrogatepass");
- PyMem_DEL(buffer);
+ if (v == NULL)
+ break;
+ if (is_interned)
+ PyUnicode_InternInPlace(&v);
retval = v;
+ R_REF(retval);
break;
}
+ case TYPE_SMALL_TUPLE:
+ n = (unsigned char) r_byte(p);
+ goto _read_tuple;
case TYPE_TUPLE:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (tuple size out of range)");
- retval = NULL;
break;
}
+ _read_tuple:
v = PyTuple_New(n);
- if (v == NULL) {
- retval = NULL;
+ R_REF(v);
+ if (v == NULL)
break;
- }
for (i = 0; i < n; i++) {
v2 = r_object(p);
if ( v2 == NULL ) {
@@ -920,20 +1125,16 @@ r_object(RFILE *p)
case TYPE_LIST:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (list size out of range)");
- retval = NULL;
break;
}
v = PyList_New(n);
- if (v == NULL) {
- retval = NULL;
+ R_REF(v);
+ if (v == NULL)
break;
- }
for (i = 0; i < n; i++) {
v2 = r_object(p);
if ( v2 == NULL ) {
@@ -951,10 +1152,9 @@ r_object(RFILE *p)
case TYPE_DICT:
v = PyDict_New();
- if (v == NULL) {
- retval = NULL;
+ R_REF(v);
+ if (v == NULL)
break;
- }
for (;;) {
PyObject *key, *val;
key = r_object(p);
@@ -976,20 +1176,25 @@ r_object(RFILE *p)
case TYPE_SET:
case TYPE_FROZENSET:
n = r_long(p);
- if (PyErr_Occurred()) {
- retval = NULL;
+ if (PyErr_Occurred())
break;
- }
if (n < 0 || n > SIZE32_MAX) {
PyErr_SetString(PyExc_ValueError, "bad marshal data (set size out of range)");
- retval = NULL;
break;
}
v = (type == TYPE_SET) ? PySet_New(NULL) : PyFrozenSet_New(NULL);
- if (v == NULL) {
- retval = NULL;
- break;
+ 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 ) {
@@ -1008,6 +1213,8 @@ r_object(RFILE *p)
}
Py_DECREF(v2);
}
+ if (type != TYPE_SET)
+ v = r_ref_insert(v, idx, flag, p);
retval = v;
break;
@@ -1029,6 +1236,10 @@ r_object(RFILE *p)
int firstlineno;
PyObject *lnotab = NULL;
+ idx = r_ref_reserve(flag, p);
+ if (idx < 0)
+ break;
+
v = NULL;
/* XXX ignore long->int overflows for now */
@@ -1084,6 +1295,8 @@ r_object(RFILE *p)
if (name == NULL)
goto code_error;
firstlineno = (int)r_long(p);
+ if (firstlineno == -1 && PyErr_Occurred())
+ break;
lnotab = r_object(p);
if (lnotab == NULL)
goto code_error;
@@ -1094,6 +1307,7 @@ r_object(RFILE *p)
code, consts, names, varnames,
freevars, cellvars, filename, name,
firstlineno, lnotab);
+ v = r_ref_insert(v, idx, flag, p);
code_error:
Py_XDECREF(code);
@@ -1109,11 +1323,27 @@ r_object(RFILE *p)
retval = v;
break;
+ case TYPE_REF:
+ n = r_long(p);
+ if (n < 0 || n >= PyList_GET_SIZE(p->refs)) {
+ if (n == -1 && PyErr_Occurred())
+ break;
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)");
+ break;
+ }
+ v = PyList_GET_ITEM(p->refs, n);
+ if (v == Py_None) {
+ PyErr_SetString(PyExc_ValueError, "bad marshal data (invalid reference)");
+ break;
+ }
+ Py_INCREF(v);
+ retval = v;
+ break;
+
default:
/* Bogus data got written, which isn't ideal.
This will let you keep working and recover. */
PyErr_SetString(PyExc_ValueError, "bad marshal data (unknown type code)");
- retval = NULL;
break;
}
@@ -1139,23 +1369,33 @@ int
PyMarshal_ReadShortFromFile(FILE *fp)
{
RFILE rf;
+ int res;
assert(fp);
rf.readable = NULL;
rf.fp = fp;
rf.current_filename = NULL;
rf.end = rf.ptr = NULL;
- return r_short(&rf);
+ rf.buf = NULL;
+ res = r_short(&rf);
+ if (rf.buf != NULL)
+ PyMem_FREE(rf.buf);
+ return res;
}
long
PyMarshal_ReadLongFromFile(FILE *fp)
{
RFILE rf;
+ long res;
rf.fp = fp;
rf.readable = NULL;
rf.current_filename = NULL;
rf.ptr = rf.end = NULL;
- return r_long(&rf);
+ rf.buf = NULL;
+ res = r_long(&rf);
+ if (rf.buf != NULL)
+ PyMem_FREE(rf.buf);
+ return res;
}
#ifdef HAVE_FSTAT
@@ -1214,22 +1454,36 @@ PyMarshal_ReadObjectFromFile(FILE *fp)
rf.current_filename = NULL;
rf.depth = 0;
rf.ptr = rf.end = NULL;
+ rf.buf = NULL;
+ rf.refs = PyList_New(0);
+ if (rf.refs == NULL)
+ return NULL;
result = r_object(&rf);
+ Py_DECREF(rf.refs);
+ if (rf.buf != NULL)
+ PyMem_FREE(rf.buf);
return result;
}
PyObject *
-PyMarshal_ReadObjectFromString(char *str, Py_ssize_t len)
+PyMarshal_ReadObjectFromString(const char *str, Py_ssize_t len)
{
RFILE rf;
PyObject *result;
rf.fp = NULL;
rf.readable = NULL;
rf.current_filename = NULL;
- rf.ptr = str;
- rf.end = str + len;
+ rf.ptr = (char *)str;
+ rf.end = (char *)str + len;
+ rf.buf = NULL;
rf.depth = 0;
+ rf.refs = PyList_New(0);
+ if (rf.refs == NULL)
+ return NULL;
result = r_object(&rf);
+ Py_DECREF(rf.refs);
+ if (rf.buf != NULL)
+ PyMem_FREE(rf.buf);
return result;
}
@@ -1248,7 +1502,13 @@ PyMarshal_WriteObjectToString(PyObject *x, int version)
wf.error = WFERR_OK;
wf.depth = 0;
wf.version = version;
+ if (version >= 3) {
+ if ((wf.refs = PyDict_New()) == NULL)
+ return NULL;
+ } else
+ wf.refs = NULL;
w_object(x, &wf);
+ Py_XDECREF(wf.refs);
if (wf.str != NULL) {
char *base = PyBytes_AS_STRING((PyBytesObject *)wf.str);
if (wf.ptr - base > PY_SSIZE_T_MAX) {
@@ -1320,6 +1580,8 @@ marshal_load(PyObject *self, PyObject *f)
* Make a call to the read method, but read zero bytes.
* This is to ensure that the object passed in at least
* has a read method which returns bytes.
+ * This can be removed if we guarantee good error handling
+ * for r_string()
*/
data = _PyObject_CallMethodId(f, &PyId_read, "i", 0);
if (data == NULL)
@@ -1335,7 +1597,15 @@ marshal_load(PyObject *self, PyObject *f)
rf.fp = NULL;
rf.readable = f;
rf.current_filename = NULL;
- result = read_object(&rf);
+ rf.ptr = rf.end = NULL;
+ rf.buf = NULL;
+ if ((rf.refs = PyList_New(0)) != NULL) {
+ result = read_object(&rf);
+ Py_DECREF(rf.refs);
+ if (rf.buf != NULL)
+ PyMem_FREE(rf.buf);
+ } else
+ result = NULL;
}
Py_DECREF(data);
return result;
@@ -1392,8 +1662,11 @@ marshal_loads(PyObject *self, PyObject *args)
rf.ptr = s;
rf.end = s + n;
rf.depth = 0;
+ if ((rf.refs = PyList_New(0)) == NULL)
+ return NULL;
result = read_object(&rf);
PyBuffer_Release(&p);
+ Py_DECREF(rf.refs);
return result;
}
@@ -1433,6 +1706,7 @@ Variables:\n\
version -- indicates the format that the module uses. Version 0 is the\n\
historical format, version 1 shares interned strings and version 2\n\
uses a binary format for floating point numbers.\n\
+ Version 3 shares common object references (New in version 3.4).\n\
\n\
Functions:\n\
\n\
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c
index 8a54cbf..98429d4 100644
--- a/Python/mystrtoul.c
+++ b/Python/mystrtoul.c
@@ -92,11 +92,11 @@ static int digitlimit[] = {
** exceptions - we don't check for them.
*/
unsigned long
-PyOS_strtoul(register char *str, char **ptr, int base)
+PyOS_strtoul(const char *str, char **ptr, int base)
{
- register unsigned long result = 0; /* return value of the function */
- register int c; /* current input character */
- register int ovlimit; /* required digits to overflow */
+ unsigned long result = 0; /* return value of the function */
+ int c; /* current input character */
+ int ovlimit; /* required digits to overflow */
/* skip leading white space */
while (*str && Py_ISSPACE(Py_CHARMASK(*str)))
@@ -111,7 +111,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* there must be at least one digit after 0x */
if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
++str;
@@ -120,7 +120,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* there must be at least one digit after 0o */
if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
++str;
@@ -129,7 +129,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* there must be at least one digit after 0b */
if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
++str;
@@ -141,7 +141,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
while (Py_ISSPACE(Py_CHARMASK(*str)))
++str;
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
}
@@ -157,7 +157,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* there must be at least one digit after 0x */
if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
++str;
@@ -171,7 +171,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* there must be at least one digit after 0o */
if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
++str;
@@ -185,7 +185,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* there must be at least one digit after 0b */
if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
++str;
@@ -197,7 +197,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* catch silly bases */
if (base < 2 || base > 36) {
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return 0;
}
@@ -213,7 +213,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
if (ovlimit > 0) /* no overflow check required */
result = result * base + c;
else { /* requires overflow check */
- register unsigned long temp_result;
+ unsigned long temp_result;
if (ovlimit < 0) /* guaranteed overflow */
goto overflowed;
@@ -239,7 +239,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)
/* set pointer to point to the last character scanned */
if (ptr)
- *ptr = str;
+ *ptr = (char *)str;
return result;
@@ -248,7 +248,7 @@ overflowed:
/* spool through remaining digit characters */
while (_PyLong_DigitValue[Py_CHARMASK(*str)] < base)
++str;
- *ptr = str;
+ *ptr = (char *)str;
}
errno = ERANGE;
return (unsigned long)-1;
@@ -260,7 +260,7 @@ overflowed:
#define PY_ABS_LONG_MIN (0-(unsigned long)LONG_MIN)
long
-PyOS_strtol(char *str, char **ptr, int base)
+PyOS_strtol(const char *str, char **ptr, int base)
{
long result;
unsigned long uresult;
diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h
index 2d6bcda..f90a17a 100644
--- a/Python/opcode_targets.h
+++ b/Python/opcode_targets.h
@@ -68,7 +68,7 @@ static void *opcode_targets[256] = {
&&TARGET_BINARY_OR,
&&TARGET_INPLACE_POWER,
&&TARGET_GET_ITER,
- &&TARGET_STORE_LOCALS,
+ &&_unknown_opcode,
&&TARGET_PRINT_EXPR,
&&TARGET_LOAD_BUILD_CLASS,
&&TARGET_YIELD_FROM,
@@ -147,7 +147,7 @@ static void *opcode_targets[256] = {
&&TARGET_LIST_APPEND,
&&TARGET_SET_ADD,
&&TARGET_MAP_ADD,
- &&_unknown_opcode,
+ &&TARGET_LOAD_CLASSDEREF,
&&_unknown_opcode,
&&_unknown_opcode,
&&_unknown_opcode,
diff --git a/Python/peephole.c b/Python/peephole.c
index 5d53677..a49790a 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -327,37 +327,6 @@ markblocks(unsigned char *code, Py_ssize_t len)
return blocks;
}
-/* Helper to replace LOAD_NAME None/True/False with LOAD_CONST
- Returns: 0 if no change, 1 if change, -1 if error */
-static int
-load_global(unsigned char *codestr, Py_ssize_t i, char *name, PyObject *consts)
-{
- Py_ssize_t j;
- PyObject *obj;
- if (name == NULL)
- return 0;
- if (strcmp(name, "None") == 0)
- obj = Py_None;
- else if (strcmp(name, "True") == 0)
- obj = Py_True;
- else if (strcmp(name, "False") == 0)
- obj = Py_False;
- else
- return 0;
- for (j = 0; j < PyList_GET_SIZE(consts); j++) {
- if (PyList_GET_ITEM(consts, j) == obj)
- break;
- }
- if (j == PyList_GET_SIZE(consts)) {
- if (PyList_Append(consts, obj) < 0)
- return -1;
- }
- assert(PyList_GET_ITEM(consts, j) == obj);
- codestr[i] = LOAD_CONST;
- SETARG(codestr, i, j);
- return 1;
-}
-
/* Perform basic peephole optimizations to components of a code object.
The consts object should still be in list form to allow new constants
to be appended.
@@ -392,7 +361,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
Py_ssize_t const_stack_size = 0;
int in_consts = 0; /* whether we are in a LOAD_CONST sequence */
unsigned int *blocks = NULL;
- char *name;
/* Bail out if an exception is set */
if (PyErr_Occurred())
@@ -413,8 +381,10 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
/* Make a modifiable copy of the code string */
codestr = (unsigned char *)PyMem_Malloc(codelen);
- if (codestr == NULL)
+ if (codestr == NULL) {
+ PyErr_NoMemory();
goto exitError;
+ }
codestr = (unsigned char *)memcpy(codestr,
PyBytes_AS_STRING(code), codelen);
@@ -428,8 +398,10 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
/* Mapping to new jump targets after NOPs are removed */
addrmap = (int *)PyMem_Malloc(codelen * sizeof(int));
- if (addrmap == NULL)
+ if (addrmap == NULL) {
+ PyErr_NoMemory();
goto exitError;
+ }
blocks = markblocks(codestr, codelen);
if (blocks == NULL)
@@ -475,20 +447,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
codestr[i+3] = NOP;
break;
- /* Replace LOAD_GLOBAL/LOAD_NAME None/True/False
- with LOAD_CONST None/True/False */
- case LOAD_NAME:
- case LOAD_GLOBAL:
- j = GETARG(codestr, i);
- name = _PyUnicode_AsString(PyTuple_GET_ITEM(names, j));
- h = load_global(codestr, i, name, consts);
- if (h < 0)
- goto exitError;
- else if (h == 0)
- continue;
- CONST_STACK_PUSH_OP(i);
- break;
-
/* Skip over LOAD_CONST trueconst
POP_JUMP_IF_FALSE xx. This improves
"while 1" performance. */
diff --git a/Python/pyarena.c b/Python/pyarena.c
index 02a31d8..103603f 100644
--- a/Python/pyarena.c
+++ b/Python/pyarena.c
@@ -77,7 +77,7 @@ block_new(size_t size)
{
/* Allocate header and block as one unit.
ab_mem points just past header. */
- block *b = (block *)malloc(sizeof(block) + size);
+ block *b = (block *)PyMem_Malloc(sizeof(block) + size);
if (!b)
return NULL;
b->ab_size = size;
@@ -92,7 +92,7 @@ static void
block_free(block *b) {
while (b) {
block *next = b->ab_next;
- free(b);
+ PyMem_Free(b);
b = next;
}
}
@@ -127,20 +127,20 @@ block_alloc(block *b, size_t size)
PyArena *
PyArena_New()
{
- PyArena* arena = (PyArena *)malloc(sizeof(PyArena));
+ PyArena* arena = (PyArena *)PyMem_Malloc(sizeof(PyArena));
if (!arena)
return (PyArena*)PyErr_NoMemory();
arena->a_head = block_new(DEFAULT_BLOCK_SIZE);
arena->a_cur = arena->a_head;
if (!arena->a_head) {
- free((void *)arena);
+ PyMem_Free((void *)arena);
return (PyArena*)PyErr_NoMemory();
}
arena->a_objects = PyList_New(0);
if (!arena->a_objects) {
block_free(arena->a_head);
- free((void *)arena);
+ PyMem_Free((void *)arena);
return (PyArena*)PyErr_NoMemory();
}
#if defined(Py_DEBUG)
@@ -173,7 +173,7 @@ PyArena_Free(PyArena *arena)
*/
Py_DECREF(arena->a_objects);
- free(arena);
+ PyMem_Free(arena);
}
void *
diff --git a/Python/pystate.c b/Python/pystate.c
index 772aa53..6be71de 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -6,11 +6,11 @@
/* --------------------------------------------------------------------------
CAUTION
-Always use malloc() and free() directly in this file. A number of these
-functions are advertised as safe to call when the GIL isn't held, and in
-a debug build Python redirects (e.g.) PyMem_NEW (etc) to Python's debugging
-obmalloc functions. Those aren't thread-safe (they rely on the GIL to avoid
-the expense of doing their own locking).
+Always use PyMem_RawMalloc() and PyMem_RawFree() directly in this file. A
+number of these functions are advertised as safe to call when the GIL isn't
+held, and in a debug build Python redirects (e.g.) PyMem_NEW (etc) to Python's
+debugging obmalloc functions. Those aren't thread-safe (they rely on the GIL
+to avoid the expense of doing their own locking).
-------------------------------------------------------------------------- */
#ifdef HAVE_DLOPEN
@@ -60,7 +60,7 @@ PyInterpreterState *
PyInterpreterState_New(void)
{
PyInterpreterState *interp = (PyInterpreterState *)
- malloc(sizeof(PyInterpreterState));
+ PyMem_RawMalloc(sizeof(PyInterpreterState));
if (interp != NULL) {
HEAD_INIT();
@@ -148,7 +148,7 @@ PyInterpreterState_Delete(PyInterpreterState *interp)
Py_FatalError("PyInterpreterState_Delete: remaining threads");
*p = interp->next;
HEAD_UNLOCK();
- free(interp);
+ PyMem_RawFree(interp);
#ifdef WITH_THREAD
if (interp_head == NULL && head_mutex != NULL) {
PyThread_free_lock(head_mutex);
@@ -168,7 +168,7 @@ threadstate_getframe(PyThreadState *self)
static PyThreadState *
new_threadstate(PyInterpreterState *interp, int init)
{
- PyThreadState *tstate = (PyThreadState *)malloc(sizeof(PyThreadState));
+ PyThreadState *tstate = (PyThreadState *)PyMem_RawMalloc(sizeof(PyThreadState));
if (_PyThreadState_GetFrame == NULL)
_PyThreadState_GetFrame = threadstate_getframe;
@@ -182,7 +182,6 @@ new_threadstate(PyInterpreterState *interp, int init)
tstate->recursion_critical = 0;
tstate->tracing = 0;
tstate->use_tracing = 0;
- tstate->tick_counter = 0;
tstate->gilstate_counter = 0;
tstate->async_exc = NULL;
#ifdef WITH_THREAD
@@ -208,12 +207,17 @@ new_threadstate(PyInterpreterState *interp, int init)
tstate->trash_delete_nesting = 0;
tstate->trash_delete_later = NULL;
+ tstate->on_delete = NULL;
+ tstate->on_delete_data = NULL;
if (init)
_PyThreadState_Init(tstate);
HEAD_LOCK();
+ tstate->prev = NULL;
tstate->next = interp->tstate_head;
+ if (tstate->next)
+ tstate->next->prev = tstate;
interp->tstate_head = tstate;
HEAD_UNLOCK();
}
@@ -317,6 +321,31 @@ PyState_RemoveModule(struct PyModuleDef* def)
return PyList_SetItem(state->modules_by_index, index, Py_None);
}
+/* used by import.c:PyImport_Cleanup */
+void
+_PyState_ClearModules(void)
+{
+ PyInterpreterState *state = PyThreadState_GET()->interp;
+ if (state->modules_by_index) {
+ Py_ssize_t i;
+ for (i = 0; i < PyList_GET_SIZE(state->modules_by_index); i++) {
+ PyObject *m = PyList_GET_ITEM(state->modules_by_index, i);
+ if (PyModule_Check(m)) {
+ /* cleanup the saved copy of module dicts */
+ PyModuleDef *md = PyModule_GetDef(m);
+ if (md)
+ Py_CLEAR(md->m_base.m_copy);
+ }
+ }
+ /* Setting modules_by_index to NULL could be dangerous, so we
+ clear the list instead. */
+ if (PyList_SetSlice(state->modules_by_index,
+ 0, PyList_GET_SIZE(state->modules_by_index),
+ NULL))
+ PyErr_WriteUnraisable(state->modules_by_index);
+ }
+}
+
void
PyThreadState_Clear(PyThreadState *tstate)
{
@@ -349,37 +378,23 @@ static void
tstate_delete_common(PyThreadState *tstate)
{
PyInterpreterState *interp;
- PyThreadState **p;
- PyThreadState *prev_p = NULL;
if (tstate == NULL)
Py_FatalError("PyThreadState_Delete: NULL tstate");
interp = tstate->interp;
if (interp == NULL)
Py_FatalError("PyThreadState_Delete: NULL interp");
HEAD_LOCK();
- for (p = &interp->tstate_head; ; p = &(*p)->next) {
- if (*p == NULL)
- Py_FatalError(
- "PyThreadState_Delete: invalid tstate");
- if (*p == tstate)
- break;
- /* Sanity check. These states should never happen but if
- * they do we must abort. Otherwise we'll end up spinning in
- * in a tight loop with the lock held. A similar check is done
- * in thread.c find_key(). */
- if (*p == prev_p)
- Py_FatalError(
- "PyThreadState_Delete: small circular list(!)"
- " and tstate not found.");
- prev_p = *p;
- if ((*p)->next == interp->tstate_head)
- Py_FatalError(
- "PyThreadState_Delete: circular list(!) and"
- " tstate not found.");
- }
- *p = tstate->next;
+ if (tstate->prev)
+ tstate->prev->next = tstate->next;
+ else
+ interp->tstate_head = tstate->next;
+ if (tstate->next)
+ tstate->next->prev = tstate->prev;
HEAD_UNLOCK();
- free(tstate);
+ if (tstate->on_delete != NULL) {
+ tstate->on_delete(tstate->on_delete_data);
+ }
+ PyMem_RawFree(tstate);
}
@@ -414,6 +429,43 @@ PyThreadState_DeleteCurrent()
#endif /* WITH_THREAD */
+/*
+ * Delete all thread states except the one passed as argument.
+ * Note that, if there is a current thread state, it *must* be the one
+ * passed as argument. Also, this won't touch any other interpreters
+ * than the current one, since we don't know which thread state should
+ * be kept in those other interpreteres.
+ */
+void
+_PyThreadState_DeleteExcept(PyThreadState *tstate)
+{
+ PyInterpreterState *interp = tstate->interp;
+ PyThreadState *p, *next, *garbage;
+ HEAD_LOCK();
+ /* Remove all thread states, except tstate, from the linked list of
+ thread states. This will allow calling PyThreadState_Clear()
+ without holding the lock. */
+ garbage = interp->tstate_head;
+ if (garbage == tstate)
+ garbage = tstate->next;
+ if (tstate->prev)
+ tstate->prev->next = tstate->next;
+ if (tstate->next)
+ tstate->next->prev = tstate->prev;
+ tstate->prev = tstate->next = NULL;
+ interp->tstate_head = tstate;
+ HEAD_UNLOCK();
+ /* Clear and deallocate all stale thread states. Even if this
+ executes Python code, we should be safe since it executes
+ in the current thread, not one of the stale threads. */
+ for (p = garbage; p; p = next) {
+ next = p->next;
+ PyThreadState_Clear(p);
+ PyMem_RawFree(p);
+ }
+}
+
+
PyThreadState *
PyThreadState_Get(void)
{
@@ -697,6 +749,15 @@ PyGILState_GetThisThreadState(void)
return (PyThreadState *)PyThread_get_key_value(autoTLSkey);
}
+int
+PyGILState_Check(void)
+{
+ /* can't use PyThreadState_Get() since it will assert that it has the GIL */
+ PyThreadState *tstate = (PyThreadState*)_Py_atomic_load_relaxed(
+ &_PyThreadState_Current);
+ return tstate && (tstate == PyGILState_GetThisThreadState());
+}
+
PyGILState_STATE
PyGILState_Ensure(void)
{
diff --git a/Python/pystrtod.c b/Python/pystrtod.c
index 4ab8f08..b8dd919 100644
--- a/Python/pystrtod.c
+++ b/Python/pystrtod.c
@@ -164,7 +164,7 @@ static double
_PyOS_ascii_strtod(const char *nptr, char **endptr)
{
char *fail_pos;
- double val = -1.0;
+ double val;
struct lconv *locale_data;
const char *decimal_point;
size_t decimal_point_len;
@@ -923,7 +923,7 @@ static char *uc_float_strings[] = {
static char *
format_float_short(double d, char format_code,
- int mode, Py_ssize_t precision,
+ int mode, int precision,
int always_add_sign, int add_dot_0_if_integer,
int use_alt_formatting, char **float_strings, int *type)
{
@@ -1059,7 +1059,7 @@ format_float_short(double d, char format_code,
/* if using an exponent, reset decimal point position to 1 and adjust
exponent accordingly.*/
if (use_exp) {
- exp = decpt - 1;
+ exp = (int)decpt - 1;
decpt = 1;
}
/* ensure vdigits_start < decpt <= vdigits_end, or vdigits_start <
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 832df53..15a48f9 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -35,12 +35,30 @@
#define PATH_MAX MAXPATHLEN
#endif
+#ifdef Py_REF_DEBUG
+static
+void _print_total_refs(void) {
+ PyObject *xoptions, *key, *value;
+ xoptions = PySys_GetXOptions();
+ if (xoptions == NULL)
+ return;
+ key = PyUnicode_FromString("showrefcount");
+ if (key == NULL)
+ return;
+ value = PyDict_GetItem(xoptions, key);
+ Py_DECREF(key);
+ if (value == Py_True)
+ fprintf(stderr,
+ "[%" PY_FORMAT_SIZE_T "d refs, "
+ "%" PY_FORMAT_SIZE_T "d blocks]\n",
+ _Py_GetRefTotal(), _Py_GetAllocatedBlocks());
+}
+#endif
+
#ifndef Py_REF_DEBUG
#define PRINT_TOTAL_REFS()
#else /* Py_REF_DEBUG */
-#define PRINT_TOTAL_REFS() fprintf(stderr, \
- "[%" PY_FORMAT_SIZE_T "d refs]\n", \
- _Py_GetRefTotal())
+#define PRINT_TOTAL_REFS() _print_total_refs()
#endif
#ifdef __cplusplus
@@ -68,6 +86,7 @@ static void call_py_exitfuncs(void);
static void wait_for_thread_shutdown(void);
static void call_ll_exitfuncs(void);
extern int _PyUnicode_Init(void);
+extern int _PyStructSequence_Init(void);
extern void _PyUnicode_Fini(void);
extern int _PyLong_Init(void);
extern void PyLong_Fini(void);
@@ -93,6 +112,7 @@ int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */
int Py_NoUserSiteDirectory = 0; /* for -s and site.py */
int Py_UnbufferedStdioFlag = 0; /* Unbuffered binary std{in,out,err} */
int Py_HashRandomizationFlag = 0; /* for -R and PYTHONHASHSEED */
+int Py_IsolatedFlag = 0; /* for -I, isolate from user's env */
PyThreadState *_Py_Finalizing = NULL;
@@ -118,6 +138,45 @@ Py_IsInitialized(void)
return initialized;
}
+/* Helper to allow an embedding application to override the normal
+ * mechanism that attempts to figure out an appropriate IO encoding
+ */
+
+static char *_Py_StandardStreamEncoding = NULL;
+static char *_Py_StandardStreamErrors = NULL;
+
+int
+Py_SetStandardStreamEncoding(const char *encoding, const char *errors)
+{
+ if (Py_IsInitialized()) {
+ /* This is too late to have any effect */
+ return -1;
+ }
+ /* Can't call PyErr_NoMemory() on errors, as Python hasn't been
+ * initialised yet.
+ *
+ * However, the raw memory allocators are initialised appropriately
+ * as C static variables, so _PyMem_RawStrdup is OK even though
+ * Py_Initialize hasn't been called yet.
+ */
+ if (encoding) {
+ _Py_StandardStreamEncoding = _PyMem_RawStrdup(encoding);
+ if (!_Py_StandardStreamEncoding) {
+ return -2;
+ }
+ }
+ if (errors) {
+ _Py_StandardStreamErrors = _PyMem_RawStrdup(errors);
+ if (!_Py_StandardStreamErrors) {
+ if (_Py_StandardStreamEncoding) {
+ PyMem_RawFree(_Py_StandardStreamEncoding);
+ }
+ return -3;
+ }
+ }
+ return 0;
+}
+
/* Global initializations. Can be undone by Py_Finalize(). Don't
call this twice without an intervening Py_Finalize() call. When
initializations fail, a fatal error is issued and the function does
@@ -160,7 +219,7 @@ get_codec_name(const char *encoding)
name_utf8 = _PyUnicode_AsString(name);
if (name_utf8 == NULL)
goto error;
- name_str = strdup(name_utf8);
+ name_str = _PyMem_RawStrdup(name_utf8);
Py_DECREF(name);
if (name_str == NULL) {
PyErr_NoMemory();
@@ -313,7 +372,8 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
if (!PyByteArray_Init())
Py_FatalError("Py_Initialize: can't init bytearray");
- _PyFloat_Init();
+ if (!_PyFloat_Init())
+ Py_FatalError("Py_Initialize: can't init float");
interp->modules = PyDict_New();
if (interp->modules == NULL)
@@ -322,6 +382,8 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
/* Init Unicode implementation; relies on the codec registry */
if (_PyUnicode_Init() < 0)
Py_FatalError("Py_Initialize: can't initialize unicode");
+ if (_PyStructSequence_Init() < 0)
+ Py_FatalError("Py_Initialize: can't initialize structseq");
bimod = _PyBuiltin_Init();
if (bimod == NULL)
@@ -530,10 +592,6 @@ Py_Finalize(void)
while (PyGC_Collect() > 0)
/* nothing */;
#endif
- /* We run this while most interpreter state is still alive, so that
- debug information can be printed out */
- _PyGC_Fini();
-
/* Destroy all modules */
PyImport_Cleanup();
@@ -596,11 +654,6 @@ Py_Finalize(void)
_PyExc_Fini();
- /* Cleanup auto-thread-state */
-#ifdef WITH_THREAD
- _PyGILState_Fini();
-#endif /* WITH_THREAD */
-
/* Sundry finalizers */
PyMethod_Fini();
PyFrame_Fini();
@@ -614,17 +667,15 @@ Py_Finalize(void)
PyFloat_Fini();
PyDict_Fini();
PySlice_Fini();
+ _PyGC_Fini();
+ _PyRandom_Fini();
/* Cleanup Unicode implementation */
_PyUnicode_Fini();
- /* Delete current thread. After this, many C API calls become crashy. */
- PyThreadState_Swap(NULL);
- PyInterpreterState_Delete(interp);
-
/* reset file system default encoding */
if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) {
- free((char*)Py_FileSystemDefaultEncoding);
+ PyMem_RawFree((char*)Py_FileSystemDefaultEncoding);
Py_FileSystemDefaultEncoding = NULL;
}
@@ -636,6 +687,15 @@ Py_Finalize(void)
PyGrammar_RemoveAccelerators(&_PyParser_Grammar);
+ /* Cleanup auto-thread-state */
+#ifdef WITH_THREAD
+ _PyGILState_Fini();
+#endif /* WITH_THREAD */
+
+ /* Delete current thread. After this, many C API calls become crashy. */
+ PyThreadState_Swap(NULL);
+ PyInterpreterState_Delete(interp);
+
#ifdef Py_TRACE_REFS
/* Display addresses (& refcnts) of all objects still alive.
* An address can be used to find the repr of the object, printed
@@ -773,6 +833,9 @@ Py_EndInterpreter(PyThreadState *tstate)
Py_FatalError("Py_EndInterpreter: thread is not current");
if (tstate->frame != NULL)
Py_FatalError("Py_EndInterpreter: thread still has a frame");
+
+ wait_for_thread_shutdown();
+
if (tstate != interp->tstate_head || tstate->next != NULL)
Py_FatalError("Py_EndInterpreter: not the last thread");
@@ -802,7 +865,7 @@ Py_GetProgramName(void)
}
static wchar_t *default_home = NULL;
-static wchar_t env_home[PATH_MAX+1];
+static wchar_t env_home[MAXPATHLEN+1];
void
Py_SetPythonHome(wchar_t *home)
@@ -831,7 +894,7 @@ Py_GetPythonHome(void)
static void
initmain(PyInterpreterState *interp)
{
- PyObject *m, *d;
+ PyObject *m, *d, *loader;
m = PyImport_AddModule("__main__");
if (m == NULL)
Py_FatalError("can't create __main__ module");
@@ -852,7 +915,8 @@ initmain(PyInterpreterState *interp)
* be set if __main__ gets further initialized later in the startup
* process.
*/
- if (PyDict_GetItemString(d, "__loader__") == NULL) {
+ loader = PyDict_GetItemString(d, "__loader__");
+ if (loader == NULL || loader == Py_None) {
PyObject *loader = PyObject_GetAttrString(interp->importlib,
"BuiltinImporter");
if (loader == NULL) {
@@ -902,6 +966,7 @@ initsite(void)
PyObject *m;
m = PyImport_ImportModule("site");
if (m == NULL) {
+ fprintf(stderr, "Failed to import the site module\n");
PyErr_Print();
Py_Finalize();
exit(1);
@@ -1034,7 +1099,7 @@ initstdio(void)
PyObject *std = NULL;
int status = 0, fd;
PyObject * encoding_attr;
- char *encoding = NULL, *errors;
+ char *pythonioencoding = NULL, *encoding, *errors;
/* Hack to avoid a nasty recursion issue when Python is invoked
in verbose mode: pre-import the Latin-1 and UTF-8 codecs */
@@ -1066,14 +1131,28 @@ initstdio(void)
}
Py_DECREF(wrapper);
- encoding = Py_GETENV("PYTHONIOENCODING");
- errors = NULL;
- if (encoding) {
- encoding = strdup(encoding);
- errors = strchr(encoding, ':');
- if (errors) {
- *errors = '\0';
- errors++;
+ encoding = _Py_StandardStreamEncoding;
+ errors = _Py_StandardStreamErrors;
+ if (!encoding || !errors) {
+ pythonioencoding = Py_GETENV("PYTHONIOENCODING");
+ if (pythonioencoding) {
+ char *err;
+ pythonioencoding = _PyMem_Strdup(pythonioencoding);
+ if (pythonioencoding == NULL) {
+ PyErr_NoMemory();
+ goto error;
+ }
+ err = strchr(pythonioencoding, ':');
+ if (err) {
+ *err = '\0';
+ err++;
+ if (*err && !errors) {
+ errors = err;
+ }
+ }
+ if (*pythonioencoding && !encoding) {
+ encoding = pythonioencoding;
+ }
}
}
@@ -1128,18 +1207,24 @@ initstdio(void)
when import.c tries to write to stderr in verbose mode. */
encoding_attr = PyObject_GetAttrString(std, "encoding");
if (encoding_attr != NULL) {
- const char * encoding;
- encoding = _PyUnicode_AsString(encoding_attr);
- if (encoding != NULL) {
- PyObject *codec_info = _PyCodec_Lookup(encoding);
+ const char * std_encoding;
+ std_encoding = _PyUnicode_AsString(encoding_attr);
+ if (std_encoding != NULL) {
+ PyObject *codec_info = _PyCodec_Lookup(std_encoding);
Py_XDECREF(codec_info);
}
Py_DECREF(encoding_attr);
}
PyErr_Clear(); /* Not a fatal error if codec isn't available */
- PySys_SetObject("__stderr__", std);
- PySys_SetObject("stderr", std);
+ if (PySys_SetObject("__stderr__", std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
+ if (PySys_SetObject("stderr", std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
Py_DECREF(std);
#endif
@@ -1148,8 +1233,16 @@ initstdio(void)
status = -1;
}
- if (encoding)
- free(encoding);
+ /* We won't need them anymore. */
+ if (_Py_StandardStreamEncoding) {
+ PyMem_RawFree(_Py_StandardStreamEncoding);
+ _Py_StandardStreamEncoding = NULL;
+ }
+ if (_Py_StandardStreamErrors) {
+ PyMem_RawFree(_Py_StandardStreamErrors);
+ _Py_StandardStreamErrors = NULL;
+ }
+ PyMem_Free(pythonioencoding);
Py_XDECREF(bimod);
Py_XDECREF(iomod);
return status;
@@ -1356,8 +1449,8 @@ maybe_pyc_file(FILE *fp, const char* filename, const char* ext, int closeit)
return 0;
}
-int
-static set_main_loader(PyObject *d, const char *filename, const char *loader_name)
+static int
+set_main_loader(PyObject *d, const char *filename, const char *loader_name)
{
PyInterpreterState *interp;
PyThreadState *tstate;
@@ -1424,7 +1517,7 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit,
/* Try to run a pyc file. First, re-open in binary */
if (closeit)
fclose(fp);
- if ((pyc_fp = fopen(filename, "rb")) == NULL) {
+ if ((pyc_fp = _Py_fopen(filename, "rb")) == NULL) {
fprintf(stderr, "python: Can't reopen .pyc file\n");
goto done;
}
@@ -2031,8 +2124,8 @@ run_pyc_file(FILE *fp, const char *filename, PyObject *globals,
}
PyObject *
-Py_CompileStringExFlags(const char *str, const char *filename, int start,
- PyCompilerFlags *flags, int optimize)
+Py_CompileStringObject(const char *str, PyObject *filename, int start,
+ PyCompilerFlags *flags, int optimize)
{
PyCodeObject *co;
mod_ty mod;
@@ -2040,7 +2133,7 @@ Py_CompileStringExFlags(const char *str, const char *filename, int start,
if (arena == NULL)
return NULL;
- mod = PyParser_ASTFromString(str, filename, start, flags, arena);
+ mod = PyParser_ASTFromStringObject(str, filename, start, flags, arena);
if (mod == NULL) {
PyArena_Free(arena);
return NULL;
@@ -2050,11 +2143,24 @@ Py_CompileStringExFlags(const char *str, const char *filename, int start,
PyArena_Free(arena);
return result;
}
- co = PyAST_CompileEx(mod, filename, flags, optimize, arena);
+ co = PyAST_CompileObject(mod, filename, flags, optimize, arena);
PyArena_Free(arena);
return (PyObject *)co;
}
+PyObject *
+Py_CompileStringExFlags(const char *str, const char *filename_str, int start,
+ PyCompilerFlags *flags, int optimize)
+{
+ PyObject *filename, *co;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ co = Py_CompileStringObject(str, filename, start, flags, optimize);
+ Py_DECREF(filename);
+ return co;
+}
+
/* For use in Py_LIMITED_API */
#undef Py_CompileString
PyObject *
@@ -2064,46 +2170,62 @@ PyCompileString(const char *str, const char *filename, int start)
}
struct symtable *
-Py_SymtableString(const char *str, const char *filename, int start)
+Py_SymtableStringObject(const char *str, PyObject *filename, int start)
{
struct symtable *st;
mod_ty mod;
PyCompilerFlags flags;
- PyArena *arena = PyArena_New();
+ PyArena *arena;
+
+ arena = PyArena_New();
if (arena == NULL)
return NULL;
flags.cf_flags = 0;
- mod = PyParser_ASTFromString(str, filename, start, &flags, arena);
+ mod = PyParser_ASTFromStringObject(str, filename, start, &flags, arena);
if (mod == NULL) {
PyArena_Free(arena);
return NULL;
}
- st = PySymtable_Build(mod, filename, 0);
+ st = PySymtable_BuildObject(mod, filename, 0);
PyArena_Free(arena);
return st;
}
+struct symtable *
+Py_SymtableString(const char *str, const char *filename_str, int start)
+{
+ PyObject *filename;
+ struct symtable *st;
+
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ st = Py_SymtableStringObject(str, filename, start);
+ Py_DECREF(filename);
+ return st;
+}
+
/* Preferred access to parser is through AST. */
mod_ty
-PyParser_ASTFromString(const char *s, const char *filename, int start,
- PyCompilerFlags *flags, PyArena *arena)
+PyParser_ASTFromStringObject(const char *s, PyObject *filename, int start,
+ PyCompilerFlags *flags, PyArena *arena)
{
mod_ty mod;
PyCompilerFlags localflags;
perrdetail err;
int iflags = PARSER_FLAGS(flags);
- node *n = PyParser_ParseStringFlagsFilenameEx(s, filename,
- &_PyParser_Grammar, start, &err,
- &iflags);
+ node *n = PyParser_ParseStringObject(s, filename,
+ &_PyParser_Grammar, start, &err,
+ &iflags);
if (flags == NULL) {
localflags.cf_flags = 0;
flags = &localflags;
}
if (n) {
flags->cf_flags |= iflags & PyCF_MASK;
- mod = PyAST_FromNode(n, flags, filename, arena);
+ mod = PyAST_FromNodeObject(n, flags, filename, arena);
PyNode_Free(n);
}
else {
@@ -2115,26 +2237,40 @@ PyParser_ASTFromString(const char *s, const char *filename, int start,
}
mod_ty
-PyParser_ASTFromFile(FILE *fp, const char *filename, const char* enc,
- int start, char *ps1,
- char *ps2, PyCompilerFlags *flags, int *errcode,
- PyArena *arena)
+PyParser_ASTFromString(const char *s, const char *filename_str, int start,
+ PyCompilerFlags *flags, PyArena *arena)
+{
+ PyObject *filename;
+ mod_ty mod;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ mod = PyParser_ASTFromStringObject(s, filename, start, flags, arena);
+ Py_DECREF(filename);
+ return mod;
+}
+
+mod_ty
+PyParser_ASTFromFileObject(FILE *fp, PyObject *filename, const char* enc,
+ int start, char *ps1,
+ char *ps2, PyCompilerFlags *flags, int *errcode,
+ PyArena *arena)
{
mod_ty mod;
PyCompilerFlags localflags;
perrdetail err;
int iflags = PARSER_FLAGS(flags);
- node *n = PyParser_ParseFileFlagsEx(fp, filename, enc,
- &_PyParser_Grammar,
- start, ps1, ps2, &err, &iflags);
+ node *n = PyParser_ParseFileObject(fp, filename, enc,
+ &_PyParser_Grammar,
+ start, ps1, ps2, &err, &iflags);
if (flags == NULL) {
localflags.cf_flags = 0;
flags = &localflags;
}
if (n) {
flags->cf_flags |= iflags & PyCF_MASK;
- mod = PyAST_FromNode(n, flags, filename, arena);
+ mod = PyAST_FromNodeObject(n, flags, filename, arena);
PyNode_Free(n);
}
else {
@@ -2147,6 +2283,23 @@ PyParser_ASTFromFile(FILE *fp, const char *filename, const char* enc,
return mod;
}
+mod_ty
+PyParser_ASTFromFile(FILE *fp, const char *filename_str, const char* enc,
+ int start, char *ps1,
+ char *ps2, PyCompilerFlags *flags, int *errcode,
+ PyArena *arena)
+{
+ mod_ty mod;
+ PyObject *filename;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ mod = PyParser_ASTFromFileObject(fp, filename, enc, start, ps1, ps2,
+ flags, errcode, arena);
+ Py_DECREF(filename);
+ return mod;
+}
+
/* Simplified interface to parsefile -- return node or set exception */
node *
@@ -2473,6 +2626,9 @@ initsigs(void)
PyOS_setsig(SIGXFSZ, SIG_IGN);
#endif
PyOS_InitInterrupts(); /* May imply initsignal() */
+ if (PyErr_Occurred()) {
+ Py_FatalError("Py_Initialize: can't import signal");
+ }
}
diff --git a/Python/random.c b/Python/random.c
index 337be86..9c9370c 100644
--- a/Python/random.c
+++ b/Python/random.c
@@ -12,13 +12,6 @@ static int _Py_HashSecret_Initialized = 0;
#endif
#ifdef MS_WINDOWS
-typedef BOOL (WINAPI *CRYPTACQUIRECONTEXTA)(HCRYPTPROV *phProv,\
- LPCSTR pszContainer, LPCSTR pszProvider, DWORD dwProvType,\
- DWORD dwFlags );
-typedef BOOL (WINAPI *CRYPTGENRANDOM)(HCRYPTPROV hProv, DWORD dwLen,\
- BYTE *pbBuffer );
-
-static CRYPTGENRANDOM pCryptGenRandom = NULL;
/* This handle is never explicitly released. Instead, the operating
system will release it when the process terminates. */
static HCRYPTPROV hCryptProv = 0;
@@ -26,29 +19,9 @@ static HCRYPTPROV hCryptProv = 0;
static int
win32_urandom_init(int raise)
{
- HINSTANCE hAdvAPI32 = NULL;
- CRYPTACQUIRECONTEXTA pCryptAcquireContext = NULL;
-
- /* Obtain handle to the DLL containing CryptoAPI. This should not fail. */
- hAdvAPI32 = GetModuleHandle("advapi32.dll");
- if(hAdvAPI32 == NULL)
- goto error;
-
- /* Obtain pointers to the CryptoAPI functions. This will fail on some early
- versions of Win95. */
- pCryptAcquireContext = (CRYPTACQUIRECONTEXTA)GetProcAddress(
- hAdvAPI32, "CryptAcquireContextA");
- if (pCryptAcquireContext == NULL)
- goto error;
-
- pCryptGenRandom = (CRYPTGENRANDOM)GetProcAddress(hAdvAPI32,
- "CryptGenRandom");
- if (pCryptGenRandom == NULL)
- goto error;
-
/* Acquire context */
- if (! pCryptAcquireContext(&hCryptProv, NULL, NULL,
- PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
+ if (!CryptAcquireContext(&hCryptProv, NULL, NULL,
+ PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
goto error;
return 0;
@@ -77,7 +50,7 @@ win32_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
while (size > 0)
{
chunk = size > INT_MAX ? INT_MAX : size;
- if (!pCryptGenRandom(hCryptProv, chunk, buffer))
+ if (!CryptGenRandom(hCryptProv, chunk, buffer))
{
/* CryptGenRandom() failed */
if (raise)
@@ -117,6 +90,7 @@ vms_urandom(unsigned char *buffer, Py_ssize_t size, int raise)
#if !defined(MS_WINDOWS) && !defined(__VMS)
+static int urandom_fd = -1;
/* Read size bytes from /dev/urandom into buffer.
Call Py_FatalError() on error. */
@@ -128,7 +102,7 @@ dev_urandom_noraise(char *buffer, Py_ssize_t size)
assert (0 < size);
- fd = open("/dev/urandom", O_RDONLY);
+ fd = _Py_open("/dev/urandom", O_RDONLY);
if (fd < 0)
Py_FatalError("Failed to open /dev/urandom");
@@ -160,18 +134,30 @@ dev_urandom_python(char *buffer, Py_ssize_t size)
if (size <= 0)
return 0;
- Py_BEGIN_ALLOW_THREADS
- fd = open("/dev/urandom", O_RDONLY);
- Py_END_ALLOW_THREADS
- if (fd < 0)
- {
- if (errno == ENOENT || errno == ENXIO ||
- errno == ENODEV || errno == EACCES)
- PyErr_SetString(PyExc_NotImplementedError,
- "/dev/urandom (or equivalent) not found");
+ if (urandom_fd >= 0)
+ fd = urandom_fd;
+ else {
+ Py_BEGIN_ALLOW_THREADS
+ fd = _Py_open("/dev/urandom", O_RDONLY);
+ Py_END_ALLOW_THREADS
+ if (fd < 0)
+ {
+ if (errno == ENOENT || errno == ENXIO ||
+ errno == ENODEV || errno == EACCES)
+ PyErr_SetString(PyExc_NotImplementedError,
+ "/dev/urandom (or equivalent) not found");
+ else
+ PyErr_SetFromErrno(PyExc_OSError);
+ return -1;
+ }
+ if (urandom_fd >= 0) {
+ /* urandom_fd was initialized by another thread while we were
+ not holding the GIL, keep it. */
+ close(fd);
+ fd = urandom_fd;
+ }
else
- PyErr_SetFromErrno(PyExc_OSError);
- return -1;
+ urandom_fd = fd;
}
Py_BEGIN_ALLOW_THREADS
@@ -195,12 +181,20 @@ dev_urandom_python(char *buffer, Py_ssize_t size)
PyErr_Format(PyExc_RuntimeError,
"Failed to read %zi bytes from /dev/urandom",
size);
- close(fd);
return -1;
}
- close(fd);
return 0;
}
+
+static void
+dev_urandom_close(void)
+{
+ if (urandom_fd >= 0) {
+ close(urandom_fd);
+ urandom_fd = -1;
+ }
+}
+
#endif /* !defined(MS_WINDOWS) && !defined(__VMS) */
/* Fill buffer with pseudo-random bytes generated by a linear congruent
@@ -299,3 +293,11 @@ _PyRandom_Init(void)
#endif
}
}
+
+void
+_PyRandom_Fini(void)
+{
+#if !defined(MS_WINDOWS) && !defined(__VMS)
+ dev_urandom_close();
+#endif
+}
diff --git a/Python/strdup.c b/Python/strdup.c
index 20187e0..769d3db 100644
--- a/Python/strdup.c
+++ b/Python/strdup.c
@@ -6,7 +6,7 @@ char *
strdup(const char *str)
{
if (str != NULL) {
- register char *copy = malloc(strlen(str) + 1);
+ char *copy = malloc(strlen(str) + 1);
if (copy != NULL)
return strcpy(copy, str);
}
diff --git a/Python/symtable.c b/Python/symtable.c
index 1e13b790..da164aa 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -37,24 +37,14 @@ ste_new(struct symtable *st, identifier name, _Py_block_ty block,
ste->ste_table = st;
ste->ste_id = k; /* ste owns reference to k */
- ste->ste_name = name;
Py_INCREF(name);
+ ste->ste_name = name;
ste->ste_symbols = NULL;
ste->ste_varnames = NULL;
ste->ste_children = NULL;
- ste->ste_symbols = PyDict_New();
- if (ste->ste_symbols == NULL)
- goto fail;
-
- ste->ste_varnames = PyList_New(0);
- if (ste->ste_varnames == NULL)
- goto fail;
-
- ste->ste_children = PyList_New(0);
- if (ste->ste_children == NULL)
- goto fail;
+ ste->ste_directives = NULL;
ste->ste_type = block;
ste->ste_unoptimized = 0;
@@ -75,6 +65,15 @@ ste_new(struct symtable *st, identifier name, _Py_block_ty block,
ste->ste_child_free = 0;
ste->ste_generator = 0;
ste->ste_returns_value = 0;
+ ste->ste_needs_class_closure = 0;
+
+ ste->ste_symbols = PyDict_New();
+ ste->ste_varnames = PyList_New(0);
+ ste->ste_children = PyList_New(0);
+ if (ste->ste_symbols == NULL
+ || ste->ste_varnames == NULL
+ || ste->ste_children == NULL)
+ goto fail;
if (PyDict_SetItem(st->st_blocks, ste->ste_id, (PyObject *)ste) < 0)
goto fail;
@@ -102,6 +101,7 @@ ste_dealloc(PySTEntryObject *ste)
Py_XDECREF(ste->ste_symbols);
Py_XDECREF(ste->ste_varnames);
Py_XDECREF(ste->ste_children);
+ Py_XDECREF(ste->ste_directives);
PyObject_Del(ste);
}
@@ -188,7 +188,7 @@ static int symtable_visit_withitem(struct symtable *st, withitem_ty item);
static identifier top = NULL, lambda = NULL, genexpr = NULL,
listcomp = NULL, setcomp = NULL, dictcomp = NULL,
- __class__ = NULL, __locals__ = NULL;
+ __class__ = NULL;
#define GET_IDENTIFIER(VAR) \
((VAR) ? (VAR) : ((VAR) = PyUnicode_InternFromString(# VAR)))
@@ -233,7 +233,7 @@ symtable_new(void)
#define COMPILER_STACK_FRAME_SCALE 3
struct symtable *
-PySymtable_Build(mod_ty mod, const char *filename, PyFutureFeatures *future)
+PySymtable_BuildObject(mod_ty mod, PyObject *filename, PyFutureFeatures *future)
{
struct symtable *st = symtable_new();
asdl_seq *seq;
@@ -242,7 +242,12 @@ PySymtable_Build(mod_ty mod, const char *filename, PyFutureFeatures *future)
int recursion_limit = Py_GetRecursionLimit();
if (st == NULL)
- return st;
+ return NULL;
+ if (filename == NULL) {
+ PySymtable_Free(st);
+ return NULL;
+ }
+ Py_INCREF(filename);
st->st_filename = filename;
st->st_future = future;
@@ -306,9 +311,23 @@ PySymtable_Build(mod_ty mod, const char *filename, PyFutureFeatures *future)
return NULL;
}
+struct symtable *
+PySymtable_Build(mod_ty mod, const char *filename_str, PyFutureFeatures *future)
+{
+ PyObject *filename;
+ struct symtable *st;
+ filename = PyUnicode_DecodeFSDefault(filename_str);
+ if (filename == NULL)
+ return NULL;
+ st = PySymtable_BuildObject(mod, filename, future);
+ Py_DECREF(filename);
+ return st;
+}
+
void
PySymtable_Free(struct symtable *st)
{
+ Py_XDECREF(st->st_filename);
Py_XDECREF(st->st_blocks);
Py_XDECREF(st->st_stack);
PyMem_Free((void *)st);
@@ -346,6 +365,24 @@ PyST_GetScope(PySTEntryObject *ste, PyObject *name)
return (PyLong_AS_LONG(v) >> SCOPE_OFFSET) & SCOPE_MASK;
}
+static int
+error_at_directive(PySTEntryObject *ste, PyObject *name)
+{
+ Py_ssize_t i;
+ PyObject *data;
+ assert(ste->ste_directives);
+ for (i = 0; ; i++) {
+ data = PyList_GET_ITEM(ste->ste_directives, i);
+ assert(PyTuple_CheckExact(data));
+ if (PyTuple_GET_ITEM(data, 0) == name)
+ break;
+ }
+ PyErr_SyntaxLocationObject(ste->ste_table->st_filename,
+ PyLong_AsLong(PyTuple_GET_ITEM(data, 1)),
+ PyLong_AsLong(PyTuple_GET_ITEM(data, 2)));
+ return 0;
+}
+
/* Analyze raw symbol information to determine scope of each name.
@@ -420,16 +457,13 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
PyErr_Format(PyExc_SyntaxError,
"name '%U' is parameter and global",
name);
- PyErr_SyntaxLocationEx(ste->ste_table->st_filename,
- ste->ste_lineno, ste->ste_col_offset);
-
- return 0;
+ return error_at_directive(ste, name);
}
if (flags & DEF_NONLOCAL) {
PyErr_Format(PyExc_SyntaxError,
"name '%U' is nonlocal and global",
name);
- return 0;
+ return error_at_directive(ste, name);
}
SET_SCOPE(scopes, name, GLOBAL_EXPLICIT);
if (PySet_Add(global, name) < 0)
@@ -443,19 +477,19 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
PyErr_Format(PyExc_SyntaxError,
"name '%U' is parameter and nonlocal",
name);
- return 0;
+ return error_at_directive(ste, name);
}
if (!bound) {
PyErr_Format(PyExc_SyntaxError,
"nonlocal declaration not allowed at module level");
- return 0;
+ return error_at_directive(ste, name);
}
if (!PySet_Contains(bound, name)) {
PyErr_Format(PyExc_SyntaxError,
"no binding for nonlocal '%U' found",
name);
- return 0;
+ return error_at_directive(ste, name);
}
SET_SCOPE(scopes, name, FREE);
ste->ste_free = 1;
@@ -500,13 +534,10 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags,
Note that the current block's free variables are included in free.
That's safe because no name can be free and local in the same scope.
-
- The 'restricted' argument may be set to a string to restrict the analysis
- to the one variable whose name equals that string (e.g. "__class__").
*/
static int
-analyze_cells(PyObject *scopes, PyObject *free, const char *restricted)
+analyze_cells(PyObject *scopes, PyObject *free)
{
PyObject *name, *v, *v_cell;
int success = 0;
@@ -523,9 +554,6 @@ analyze_cells(PyObject *scopes, PyObject *free, const char *restricted)
continue;
if (!PySet_Contains(free, name))
continue;
- if (restricted != NULL &&
- PyUnicode_CompareWithASCIIString(name, restricted))
- continue;
/* Replace LOCAL with CELL for this name, and remove
from free. It is safe to replace the value of name
in the dict, because it will not cause a resize.
@@ -541,6 +569,20 @@ analyze_cells(PyObject *scopes, PyObject *free, const char *restricted)
return success;
}
+static int
+drop_class_free(PySTEntryObject *ste, PyObject *free)
+{
+ int res;
+ if (!GET_IDENTIFIER(__class__))
+ return 0;
+ res = PySet_Discard(free, __class__);
+ if (res < 0)
+ return 0;
+ if (res)
+ ste->ste_needs_class_closure = 1;
+ return 1;
+}
+
/* Check for illegal statements in unoptimized namespaces */
static int
check_unoptimized(const PySTEntryObject* ste) {
@@ -564,8 +606,9 @@ check_unoptimized(const PySTEntryObject* ste) {
break;
}
- PyErr_SyntaxLocationEx(ste->ste_table->st_filename, ste->ste_opt_lineno,
- ste->ste_opt_col_offset);
+ PyErr_SyntaxLocationObject(ste->ste_table->st_filename,
+ ste->ste_opt_lineno,
+ ste->ste_opt_col_offset);
return 0;
}
@@ -771,7 +814,6 @@ analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free,
/* Special-case __class__ */
if (!GET_IDENTIFIER(__class__))
goto error;
- assert(PySet_Contains(local, __class__) == 1);
if (PySet_Add(newbound, __class__) < 0)
goto error;
}
@@ -804,11 +846,9 @@ analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free,
Py_DECREF(temp);
/* Check if any local variables must be converted to cell variables */
- if (ste->ste_type == FunctionBlock && !analyze_cells(scopes, newfree,
- NULL))
+ if (ste->ste_type == FunctionBlock && !analyze_cells(scopes, newfree))
goto error;
- else if (ste->ste_type == ClassBlock && !analyze_cells(scopes, newfree,
- "__class__"))
+ else if (ste->ste_type == ClassBlock && !drop_class_free(ste, newfree))
goto error;
/* Records the results of the analysis in the symbol table entry */
if (!update_symbols(ste->ste_symbols, scopes, bound, newfree,
@@ -899,15 +939,20 @@ symtable_analyze(struct symtable *st)
static int
symtable_warn(struct symtable *st, char *msg, int lineno)
{
- if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, st->st_filename,
- lineno, NULL, NULL) < 0) {
+ PyObject *message = PyUnicode_FromString(msg);
+ if (message == NULL)
+ return 0;
+ if (PyErr_WarnExplicitObject(PyExc_SyntaxWarning, message, st->st_filename,
+ lineno, NULL, NULL) < 0) {
+ Py_DECREF(message);
if (PyErr_ExceptionMatches(PyExc_SyntaxWarning)) {
PyErr_SetString(PyExc_SyntaxError, msg);
- PyErr_SyntaxLocationEx(st->st_filename, st->st_cur->ste_lineno,
- st->st_cur->ste_col_offset);
+ PyErr_SyntaxLocationObject(st->st_filename, st->st_cur->ste_lineno,
+ st->st_cur->ste_col_offset);
}
return 0;
}
+ Py_DECREF(message);
return 1;
}
@@ -990,9 +1035,9 @@ symtable_add_def(struct symtable *st, PyObject *name, int flag)
if ((flag & DEF_PARAM) && (val & DEF_PARAM)) {
/* Is it better to use 'mangled' or 'name' here? */
PyErr_Format(PyExc_SyntaxError, DUPLICATE_ARGUMENT, name);
- PyErr_SyntaxLocationEx(st->st_filename,
- st->st_cur->ste_lineno,
- st->st_cur->ste_col_offset);
+ PyErr_SyntaxLocationObject(st->st_filename,
+ st->st_cur->ste_lineno,
+ st->st_cur->ste_col_offset);
goto error;
}
val |= flag;
@@ -1102,6 +1147,25 @@ symtable_new_tmpname(struct symtable *st)
static int
+symtable_record_directive(struct symtable *st, identifier name, stmt_ty s)
+{
+ PyObject *data;
+ int res;
+ if (!st->st_cur->ste_directives) {
+ st->st_cur->ste_directives = PyList_New(0);
+ if (!st->st_cur->ste_directives)
+ return 0;
+ }
+ data = Py_BuildValue("(Oii)", name, s->lineno, s->col_offset);
+ if (!data)
+ return 0;
+ res = PyList_Append(st->st_cur->ste_directives, data);
+ Py_DECREF(data);
+ return res == 0;
+}
+
+
+static int
symtable_visit_stmt(struct symtable *st, stmt_ty s)
{
if (++st->recursion_depth > st->recursion_limit) {
@@ -1146,13 +1210,6 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
if (!symtable_enter_block(st, s->v.ClassDef.name, ClassBlock,
(void *)s, s->lineno, s->col_offset))
VISIT_QUIT(st, 0);
- if (!GET_IDENTIFIER(__class__) ||
- !symtable_add_def(st, __class__, DEF_LOCAL) ||
- !GET_IDENTIFIER(__locals__) ||
- !symtable_add_def(st, __locals__, DEF_PARAM)) {
- symtable_exit_block(st, s);
- VISIT_QUIT(st, 0);
- }
tmp = st->st_private;
st->st_private = s->v.ClassDef.name;
VISIT_SEQ(st, stmt, s->v.ClassDef.body);
@@ -1240,14 +1297,7 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
asdl_seq *seq = s->v.Global.names;
for (i = 0; i < asdl_seq_LEN(seq); i++) {
identifier name = (identifier)asdl_seq_GET(seq, i);
- long cur;
- if (st->st_cur->ste_type == ClassBlock &&
- !PyUnicode_CompareWithASCIIString(name, "__class__")) {
- PyErr_SetString(PyExc_SyntaxError, "cannot make __class__ global");
- PyErr_SyntaxLocationEx(st->st_filename, s->lineno, s->col_offset);
- return 0;
- }
- cur = symtable_lookup(st, name);
+ long cur = symtable_lookup(st, name);
if (cur < 0)
VISIT_QUIT(st, 0);
if (cur & (DEF_LOCAL | USE)) {
@@ -1268,6 +1318,8 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
}
if (!symtable_add_def(st, name, DEF_GLOBAL))
VISIT_QUIT(st, 0);
+ if (!symtable_record_directive(st, name, s))
+ VISIT_QUIT(st, 0);
}
break;
}
@@ -1297,6 +1349,8 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s)
}
if (!symtable_add_def(st, name, DEF_NONLOCAL))
VISIT_QUIT(st, 0);
+ if (!symtable_record_directive(st, name, s))
+ VISIT_QUIT(st, 0);
}
break;
}
@@ -1407,6 +1461,7 @@ symtable_visit_expr(struct symtable *st, expr_ty e)
case Str_kind:
case Bytes_kind:
case Ellipsis_kind:
+ case NameConstant_kind:
/* Nothing to do here. */
break;
/* The following exprs can be assignment targets. */
@@ -1499,10 +1554,10 @@ symtable_visit_annotations(struct symtable *st, stmt_ty s)
if (a->args && !symtable_visit_argannotations(st, a->args))
return 0;
- if (a->varargannotation)
- VISIT(st, expr, a->varargannotation);
- if (a->kwargannotation)
- VISIT(st, expr, a->kwargannotation);
+ if (a->vararg && a->vararg->annotation)
+ VISIT(st, expr, a->vararg->annotation);
+ if (a->kwarg && a->kwarg->annotation)
+ VISIT(st, expr, a->kwarg->annotation);
if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs))
return 0;
if (s->v.FunctionDef.returns)
@@ -1521,12 +1576,12 @@ symtable_visit_arguments(struct symtable *st, arguments_ty a)
if (a->kwonlyargs && !symtable_visit_params(st, a->kwonlyargs))
return 0;
if (a->vararg) {
- if (!symtable_add_def(st, a->vararg, DEF_PARAM))
+ if (!symtable_add_def(st, a->vararg->arg, DEF_PARAM))
return 0;
st->st_cur->ste_varargs = 1;
}
if (a->kwarg) {
- if (!symtable_add_def(st, a->kwarg, DEF_PARAM))
+ if (!symtable_add_def(st, a->kwarg->arg, DEF_PARAM))
return 0;
st->st_cur->ste_varkeywords = 1;
}
@@ -1587,7 +1642,7 @@ symtable_visit_alias(struct symtable *st, alias_ty a)
int lineno = st->st_cur->ste_lineno;
int col_offset = st->st_cur->ste_col_offset;
PyErr_SetString(PyExc_SyntaxError, IMPORT_STAR_WARNING);
- PyErr_SyntaxLocationEx(st->st_filename, lineno, col_offset);
+ PyErr_SyntaxLocationObject(st->st_filename, lineno, col_offset);
Py_DECREF(store_name);
return 0;
}
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 1a41d2f..2d7e01b 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -774,7 +774,7 @@ Set the flags used by the interpreter for dlopen calls, such as when the\n\
interpreter loads extension modules. Among other things, this will enable\n\
a lazy resolving of symbols when importing a module, if called as\n\
sys.setdlopenflags(0). To share symbols across extension modules, call as\n\
-sys.setdlopenflags(ctypes.RTLD_GLOBAL). Symbolic names for the flag modules\n\
+sys.setdlopenflags(os.RTLD_GLOBAL). Symbolic names for the flag modules\n\
can be found in the os module (RTLD_xxx constants, e.g. os.RTLD_LAZY).");
static PyObject *
@@ -790,7 +790,7 @@ PyDoc_STRVAR(getdlopenflags_doc,
"getdlopenflags() -> int\n\
\n\
Return the current value of the flags that are used for dlopen calls.\n\
-The flag constants are defined in the ctypes and DLFCN modules.");
+The flag constants are defined in the os module.");
#endif /* HAVE_DLOPEN */
@@ -894,6 +894,19 @@ one higher than you might expect, because it includes the (temporary)\n\
reference as an argument to getrefcount()."
);
+static PyObject *
+sys_getallocatedblocks(PyObject *self)
+{
+ return PyLong_FromSsize_t(_Py_GetAllocatedBlocks());
+}
+
+PyDoc_STRVAR(getallocatedblocks_doc,
+"getallocatedblocks() -> integer\n\
+\n\
+Return the number of memory blocks currently allocated, regardless of their\n\
+size."
+);
+
#ifdef COUNT_ALLOCS
static PyObject *
sys_getcounts(PyObject *self)
@@ -1062,6 +1075,8 @@ static PyMethodDef sys_methods[] = {
{"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS,
getdlopenflags_doc},
#endif
+ {"getallocatedblocks", (PyCFunction)sys_getallocatedblocks, METH_NOARGS,
+ getallocatedblocks_doc},
#ifdef COUNT_ALLOCS
{"getcounts", (PyCFunction)sys_getcounts, METH_NOARGS},
#endif
@@ -1349,14 +1364,12 @@ static PyStructSequence_Field flags_fields[] = {
{"no_site", "-S"},
{"ignore_environment", "-E"},
{"verbose", "-v"},
-#ifdef RISCOS
- {"riscos_wimp", "???"},
-#endif
/* {"unbuffered", "-u"}, */
/* {"skip_first", "-x"}, */
{"bytes_warning", "-b"},
{"quiet", "-q"},
{"hash_randomization", "-R"},
+ {"isolated", "-I"},
{0}
};
@@ -1364,11 +1377,7 @@ static PyStructSequence_Desc flags_desc = {
"sys.flags", /* name */
flags__doc__, /* doc */
flags_fields, /* fields */
-#ifdef RISCOS
13
-#else
- 12
-#endif
};
static PyObject*
@@ -1393,14 +1402,12 @@ make_flags(void)
SetFlag(Py_NoSiteFlag);
SetFlag(Py_IgnoreEnvironmentFlag);
SetFlag(Py_VerboseFlag);
-#ifdef RISCOS
- SetFlag(Py_RISCOSWimpFlag);
-#endif
/* SetFlag(saw_unbuffered_flag); */
/* SetFlag(skipfirstline); */
SetFlag(Py_BytesWarningFlag);
SetFlag(Py_QuietFlag);
SetFlag(Py_HashRandomizationFlag);
+ SetFlag(Py_IsolatedFlag);
#undef SetFlag
if (PyErr_Occurred()) {
@@ -1560,18 +1567,24 @@ static struct PyModuleDef sysmodule = {
PyObject *
_PySys_Init(void)
{
- PyObject *m, *v, *sysdict, *version_info;
- char *s;
+ PyObject *m, *sysdict, *version_info;
m = PyModule_Create(&sysmodule);
if (m == NULL)
return NULL;
sysdict = PyModule_GetDict(m);
-#define SET_SYS_FROM_STRING(key, value) \
- v = value; \
- if (v != NULL) \
- PyDict_SetItemString(sysdict, key, v); \
- Py_XDECREF(v)
+#define SET_SYS_FROM_STRING(key, value) \
+ do { \
+ int res; \
+ PyObject *v = (value); \
+ if (v == NULL) \
+ return NULL; \
+ res = PyDict_SetItemString(sysdict, key, v); \
+ if (res < 0) { \
+ Py_DECREF(v); \
+ return NULL; \
+ } \
+ } while (0)
/* Check that stdin is not a directory
Using shell redirection, you can redirect stdin to a directory,
@@ -1593,10 +1606,10 @@ _PySys_Init(void)
/* stdin/stdout/stderr are now set by pythonrun.c */
- PyDict_SetItemString(sysdict, "__displayhook__",
- PyDict_GetItemString(sysdict, "displayhook"));
- PyDict_SetItemString(sysdict, "__excepthook__",
- PyDict_GetItemString(sysdict, "excepthook"));
+ SET_SYS_FROM_STRING("__displayhook__",
+ PyDict_GetItemString(sysdict, "displayhook"));
+ SET_SYS_FROM_STRING("__excepthook__",
+ PyDict_GetItemString(sysdict, "excepthook"));
SET_SYS_FROM_STRING("version",
PyUnicode_FromString(Py_GetVersion()));
SET_SYS_FROM_STRING("hexversion",
@@ -1630,28 +1643,24 @@ _PySys_Init(void)
SET_SYS_FROM_STRING("int_info",
PyLong_GetInfo());
/* initialize hash_info */
- if (Hash_InfoType.tp_name == 0)
- PyStructSequence_InitType(&Hash_InfoType, &hash_info_desc);
+ if (Hash_InfoType.tp_name == NULL) {
+ if (PyStructSequence_InitType2(&Hash_InfoType, &hash_info_desc) < 0)
+ return NULL;
+ }
SET_SYS_FROM_STRING("hash_info",
get_hash_info());
SET_SYS_FROM_STRING("maxunicode",
PyLong_FromLong(0x10FFFF));
SET_SYS_FROM_STRING("builtin_module_names",
list_builtin_module_names());
- {
- /* Assumes that longs are at least 2 bytes long.
- Should be safe! */
- unsigned long number = 1;
- char *value;
-
- s = (char *) &number;
- if (s[0] == 0)
- value = "big";
- else
- value = "little";
- SET_SYS_FROM_STRING("byteorder",
- PyUnicode_FromString(value));
- }
+#if PY_BIG_ENDIAN
+ SET_SYS_FROM_STRING("byteorder",
+ PyUnicode_FromString("big"));
+#else
+ SET_SYS_FROM_STRING("byteorder",
+ PyUnicode_FromString("little"));
+#endif
+
#ifdef MS_COREDLL
SET_SYS_FROM_STRING("dllhandle",
PyLong_FromVoidPtr(PyWin_DLLhModule));
@@ -1664,22 +1673,22 @@ _PySys_Init(void)
#endif
if (warnoptions == NULL) {
warnoptions = PyList_New(0);
+ if (warnoptions == NULL)
+ return NULL;
}
else {
Py_INCREF(warnoptions);
}
- if (warnoptions != NULL) {
- PyDict_SetItemString(sysdict, "warnoptions", warnoptions);
- }
+ SET_SYS_FROM_STRING("warnoptions", warnoptions);
- v = get_xoptions();
- if (v != NULL) {
- PyDict_SetItemString(sysdict, "_xoptions", v);
- }
+ SET_SYS_FROM_STRING("_xoptions", get_xoptions());
/* version_info */
- if (VersionInfoType.tp_name == 0)
- PyStructSequence_InitType(&VersionInfoType, &version_info_desc);
+ if (VersionInfoType.tp_name == NULL) {
+ if (PyStructSequence_InitType2(&VersionInfoType,
+ &version_info_desc) < 0)
+ return NULL;
+ }
version_info = make_version_info();
SET_SYS_FROM_STRING("version_info", version_info);
/* prevent user from creating new instances */
@@ -1690,8 +1699,10 @@ _PySys_Init(void)
SET_SYS_FROM_STRING("implementation", make_impl_info(version_info));
/* flags */
- if (FlagsType.tp_name == 0)
- PyStructSequence_InitType(&FlagsType, &flags_desc);
+ if (FlagsType.tp_name == 0) {
+ if (PyStructSequence_InitType2(&FlagsType, &flags_desc) < 0)
+ return NULL;
+ }
SET_SYS_FROM_STRING("flags", make_flags());
/* prevent user from creating new instances */
FlagsType.tp_init = NULL;
@@ -1701,7 +1712,9 @@ _PySys_Init(void)
#if defined(MS_WINDOWS)
/* getwindowsversion */
if (WindowsVersionType.tp_name == 0)
- PyStructSequence_InitType(&WindowsVersionType, &windows_version_desc);
+ if (PyStructSequence_InitType2(&WindowsVersionType,
+ &windows_version_desc) < 0)
+ return NULL;
/* prevent user from creating new instances */
WindowsVersionType.tp_init = NULL;
WindowsVersionType.tp_new = NULL;
@@ -1933,7 +1946,7 @@ PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
void
PySys_SetArgv(int argc, wchar_t **argv)
{
- PySys_SetArgvEx(argc, argv, 1);
+ PySys_SetArgvEx(argc, argv, Py_IsolatedFlag == 0);
}
/* Reimplementation of PyFile_WriteString() no calling indirectly
diff --git a/Python/thread.c b/Python/thread.c
index e55d342..8540942 100644
--- a/Python/thread.c
+++ b/Python/thread.c
@@ -91,10 +91,6 @@ static size_t _pythread_stacksize = 0;
#include "thread_nt.h"
#endif
-#ifdef OS2_THREADS
-#define PYTHREAD_NAME "os2"
-#include "thread_os2.h"
-#endif
/*
#ifdef FOOBAR_THREADS
@@ -235,7 +231,7 @@ find_key(int key, void *value)
assert(p == NULL);
goto Done;
}
- p = (struct key *)malloc(sizeof(struct key));
+ p = (struct key *)PyMem_RawMalloc(sizeof(struct key));
if (p != NULL) {
p->id = id;
p->key = key;
@@ -274,7 +270,7 @@ PyThread_delete_key(int key)
while ((p = *q) != NULL) {
if (p->key == key) {
*q = p->next;
- free((void *)p);
+ PyMem_RawFree((void *)p);
/* NB This does *not* free p->value! */
}
else
@@ -328,7 +324,7 @@ PyThread_delete_key_value(int key)
while ((p = *q) != NULL) {
if (p->key == key && p->id == id) {
*q = p->next;
- free((void *)p);
+ PyMem_RawFree((void *)p);
/* NB This does *not* free p->value! */
break;
}
@@ -361,7 +357,7 @@ PyThread_ReInitTLS(void)
while ((p = *q) != NULL) {
if (p->id != id) {
*q = p->next;
- free((void *)p);
+ PyMem_RawFree((void *)p);
/* NB This does *not* free p->value! */
}
else
@@ -403,8 +399,10 @@ PyThread_GetInfo(void)
int len;
#endif
- if (ThreadInfoType.tp_name == 0)
- PyStructSequence_InitType(&ThreadInfoType, &threadinfo_desc);
+ if (ThreadInfoType.tp_name == 0) {
+ if (PyStructSequence_InitType2(&ThreadInfoType, &threadinfo_desc) < 0)
+ return NULL;
+ }
threadinfo = PyStructSequence_New(&ThreadInfoType);
if (threadinfo == NULL)
diff --git a/Python/thread_nt.h b/Python/thread_nt.h
index 938bf1e..ab5a081 100644
--- a/Python/thread_nt.h
+++ b/Python/thread_nt.h
@@ -34,7 +34,7 @@ typedef NRMUTEX *PNRMUTEX;
PNRMUTEX
AllocNonRecursiveMutex()
{
- PNRMUTEX m = (PNRMUTEX)malloc(sizeof(NRMUTEX));
+ PNRMUTEX m = (PNRMUTEX)PyMem_RawMalloc(sizeof(NRMUTEX));
if (!m)
return NULL;
if (PyCOND_INIT(&m->cv))
@@ -46,7 +46,7 @@ AllocNonRecursiveMutex()
m->locked = 0;
return m;
fail:
- free(m);
+ PyMem_RawFree(m);
return NULL;
}
@@ -56,7 +56,7 @@ FreeNonRecursiveMutex(PNRMUTEX mutex)
if (mutex) {
PyCOND_FINI(&mutex->cv);
PyMUTEX_FINI(&mutex->cs);
- free(mutex);
+ PyMem_RawFree(mutex);
}
}
@@ -107,7 +107,7 @@ LeaveNonRecursiveMutex(PNRMUTEX mutex)
result = PyCOND_SIGNAL(&mutex->cv);
result &= PyMUTEX_UNLOCK(&mutex->cs);
return result;
-}
+}
#else /* if ! _PY_USE_CV_LOCKS */
@@ -130,7 +130,7 @@ FreeNonRecursiveMutex(PNRMUTEX mutex)
DWORD
EnterNonRecursiveMutex(PNRMUTEX mutex, DWORD milliseconds)
{
- return WaitForSingleObject(mutex, milliseconds);
+ return WaitForSingleObjectEx(mutex, milliseconds, FALSE);
}
BOOL
diff --git a/Python/thread_os2.h b/Python/thread_os2.h
deleted file mode 100644
index 1b264b5..0000000
--- a/Python/thread_os2.h
+++ /dev/null
@@ -1,267 +0,0 @@
-/* This code implemented by cvale@netcom.com */
-
-#define INCL_DOSPROCESS
-#define INCL_DOSSEMAPHORES
-#include "os2.h"
-#include "limits.h"
-
-#include "process.h"
-
-#if defined(PYCC_GCC)
-#include <sys/builtin.h>
-#include <sys/fmutex.h>
-#else
-long PyThread_get_thread_ident(void);
-#endif
-
-/* default thread stack size of 64kB */
-#if !defined(THREAD_STACK_SIZE)
-#define THREAD_STACK_SIZE 0x10000
-#endif
-
-#define OS2_STACKSIZE(x) (x ? x : THREAD_STACK_SIZE)
-
-/*
- * Initialization of the C package, should not be needed.
- */
-static void
-PyThread__init_thread(void)
-{
-}
-
-/*
- * Thread support.
- */
-long
-PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
- int thread_id;
-
- thread_id = _beginthread(func,
- NULL,
- OS2_STACKSIZE(_pythread_stacksize),
- arg);
-
- if (thread_id == -1) {
- dprintf(("_beginthread failed. return %ld\n", errno));
- }
-
- return thread_id;
-}
-
-long
-PyThread_get_thread_ident(void)
-{
-#if !defined(PYCC_GCC)
- PPIB pib;
- PTIB tib;
-#endif
-
- if (!initialized)
- PyThread_init_thread();
-
-#if defined(PYCC_GCC)
- return _gettid();
-#else
- DosGetInfoBlocks(&tib, &pib);
- return tib->tib_ptib2->tib2_ultid;
-#endif
-}
-
-void
-PyThread_exit_thread(void)
-{
- dprintf(("%ld: PyThread_exit_thread called\n",
- PyThread_get_thread_ident()));
- if (!initialized)
- exit(0);
- _endthread();
-}
-
-/*
- * Lock support. This is implemented with an event semaphore and critical
- * sections to make it behave more like a posix mutex than its OS/2
- * counterparts.
- */
-
-typedef struct os2_lock_t {
- int is_set;
- HEV changed;
-} *type_os2_lock;
-
-PyThread_type_lock
-PyThread_allocate_lock(void)
-{
-#if defined(PYCC_GCC)
- _fmutex *sem = malloc(sizeof(_fmutex));
- if (!initialized)
- PyThread_init_thread();
- dprintf(("%ld: PyThread_allocate_lock() -> %lx\n",
- PyThread_get_thread_ident(),
- (long)sem));
- if (_fmutex_create(sem, 0)) {
- free(sem);
- sem = NULL;
- }
- return (PyThread_type_lock)sem;
-#else
- APIRET rc;
- type_os2_lock lock = (type_os2_lock)malloc(sizeof(struct os2_lock_t));
-
- dprintf(("PyThread_allocate_lock called\n"));
- if (!initialized)
- PyThread_init_thread();
-
- lock->is_set = 0;
-
- DosCreateEventSem(NULL, &lock->changed, 0, 0);
-
- dprintf(("%ld: PyThread_allocate_lock() -> %p\n",
- PyThread_get_thread_ident(),
- lock->changed));
-
- return (PyThread_type_lock)lock;
-#endif
-}
-
-void
-PyThread_free_lock(PyThread_type_lock aLock)
-{
-#if !defined(PYCC_GCC)
- type_os2_lock lock = (type_os2_lock)aLock;
-#endif
-
- dprintf(("%ld: PyThread_free_lock(%p) called\n",
- PyThread_get_thread_ident(),aLock));
-
-#if defined(PYCC_GCC)
- if (aLock) {
- _fmutex_close((_fmutex *)aLock);
- free((_fmutex *)aLock);
- }
-#else
- DosCloseEventSem(lock->changed);
- free(aLock);
-#endif
-}
-
-/*
- * Return 1 on success if the lock was acquired
- *
- * and 0 if the lock was not acquired.
- */
-int
-PyThread_acquire_lock(PyThread_type_lock aLock, int waitflag)
-{
-#if !defined(PYCC_GCC)
- int done = 0;
- ULONG count;
- PID pid = 0;
- TID tid = 0;
- type_os2_lock lock = (type_os2_lock)aLock;
-#endif
-
- dprintf(("%ld: PyThread_acquire_lock(%p, %d) called\n",
- PyThread_get_thread_ident(),
- aLock,
- waitflag));
-
-#if defined(PYCC_GCC)
- /* always successful if the lock doesn't exist */
- if (aLock &&
- _fmutex_request((_fmutex *)aLock, waitflag ? 0 : _FMR_NOWAIT))
- return 0;
-#else
- while (!done) {
- /* if the lock is currently set, we have to wait for
- * the state to change
- */
- if (lock->is_set) {
- if (!waitflag)
- return 0;
- DosWaitEventSem(lock->changed, SEM_INDEFINITE_WAIT);
- }
-
- /* enter a critical section and try to get the semaphore. If
- * it is still locked, we will try again.
- */
- if (DosEnterCritSec())
- return 0;
-
- if (!lock->is_set) {
- lock->is_set = 1;
- DosResetEventSem(lock->changed, &count);
- done = 1;
- }
-
- DosExitCritSec();
- }
-#endif
-
- return 1;
-}
-
-void
-PyThread_release_lock(PyThread_type_lock aLock)
-{
-#if !defined(PYCC_GCC)
- type_os2_lock lock = (type_os2_lock)aLock;
-#endif
-
- dprintf(("%ld: PyThread_release_lock(%p) called\n",
- PyThread_get_thread_ident(),
- aLock));
-
-#if defined(PYCC_GCC)
- if (aLock)
- _fmutex_release((_fmutex *)aLock);
-#else
- if (!lock->is_set) {
- dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n",
- PyThread_get_thread_ident(),
- aLock,
- GetLastError()));
- return;
- }
-
- if (DosEnterCritSec()) {
- dprintf(("%ld: Could not PyThread_release_lock(%p) error: %l\n",
- PyThread_get_thread_ident(),
- aLock,
- GetLastError()));
- return;
- }
-
- lock->is_set = 0;
- DosPostEventSem(lock->changed);
-
- DosExitCritSec();
-#endif
-}
-
-/* minimum/maximum thread stack sizes supported */
-#define THREAD_MIN_STACKSIZE 0x8000 /* 32kB */
-#define THREAD_MAX_STACKSIZE 0x2000000 /* 32MB */
-
-/* set the thread stack size.
- * Return 0 if size is valid, -1 otherwise.
- */
-static int
-_pythread_os2_set_stacksize(size_t size)
-{
- /* set to default */
- if (size == 0) {
- _pythread_stacksize = 0;
- return 0;
- }
-
- /* valid range? */
- if (size >= THREAD_MIN_STACKSIZE && size < THREAD_MAX_STACKSIZE) {
- _pythread_stacksize = size;
- return 0;
- }
-
- return -1;
-}
-
-#define THREAD_SET_STACKSIZE(x) _pythread_os2_set_stacksize(x)
diff --git a/Python/thread_pth.h b/Python/thread_pth.h
deleted file mode 100644
index 5704266..0000000
--- a/Python/thread_pth.h
+++ /dev/null
@@ -1,177 +0,0 @@
-
-/* GNU pth threads interface
- http://www.gnu.org/software/pth
- 2000-05-03 Andy Dustman <andy@dustman.net>
-
- Adapted from Posix threads interface
- 12 May 1997 -- david arnold <davida@pobox.com>
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <pth.h>
-
-/* A pth mutex isn't sufficient to model the Python lock type
- * because pth mutexes can be acquired multiple times by the
- * same thread.
- *
- * The pth_lock struct implements a Python lock as a "locked?" bit
- * and a <condition, mutex> pair. In general, if the bit can be acquired
- * instantly, it is, else the pair is used to block the thread until the
- * bit is cleared.
- */
-
-typedef struct {
- char locked; /* 0=unlocked, 1=locked */
- /* a <cond, mutex> pair to handle an acquire of a locked lock */
- pth_cond_t lock_released;
- pth_mutex_t mut;
-} pth_lock;
-
-#define CHECK_STATUS(name) if (status == -1) { printf("%d ", status); perror(name); error = 1; }
-
-pth_attr_t PyThread_attr;
-
-/*
- * Initialization.
- */
-
-static void PyThread__init_thread(void)
-{
- pth_init();
- PyThread_attr = pth_attr_new();
- pth_attr_set(PyThread_attr, PTH_ATTR_STACK_SIZE, 1<<18);
- pth_attr_set(PyThread_attr, PTH_ATTR_JOINABLE, FALSE);
-}
-
-/*
- * Thread support.
- */
-
-
-long PyThread_start_new_thread(void (*func)(void *), void *arg)
-{
- pth_t th;
- dprintf(("PyThread_start_new_thread called\n"));
- if (!initialized)
- PyThread_init_thread();
-
- th = pth_spawn(PyThread_attr,
- (void* (*)(void *))func,
- (void *)arg
- );
-
- return th;
-}
-
-long PyThread_get_thread_ident(void)
-{
- volatile pth_t threadid;
- if (!initialized)
- PyThread_init_thread();
- threadid = pth_self();
- return (long) threadid;
-}
-
-void PyThread_exit_thread(void)
-{
- dprintf(("PyThread_exit_thread called\n"));
- if (!initialized) {
- exit(0);
- }
-}
-
-/*
- * Lock support.
- */
-PyThread_type_lock PyThread_allocate_lock(void)
-{
- pth_lock *lock;
- int status, error = 0;
-
- dprintf(("PyThread_allocate_lock called\n"));
- if (!initialized)
- PyThread_init_thread();
-
- lock = (pth_lock *) malloc(sizeof(pth_lock));
- memset((void *)lock, '\0', sizeof(pth_lock));
- if (lock) {
- lock->locked = 0;
- status = pth_mutex_init(&lock->mut);
- CHECK_STATUS("pth_mutex_init");
- status = pth_cond_init(&lock->lock_released);
- CHECK_STATUS("pth_cond_init");
- if (error) {
- free((void *)lock);
- lock = NULL;
- }
- }
- dprintf(("PyThread_allocate_lock() -> %p\n", lock));
- return (PyThread_type_lock) lock;
-}
-
-void PyThread_free_lock(PyThread_type_lock lock)
-{
- pth_lock *thelock = (pth_lock *)lock;
-
- dprintf(("PyThread_free_lock(%p) called\n", lock));
-
- free((void *)thelock);
-}
-
-int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
-{
- int success;
- pth_lock *thelock = (pth_lock *)lock;
- int status, error = 0;
-
- dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
-
- status = pth_mutex_acquire(&thelock->mut, !waitflag, NULL);
- CHECK_STATUS("pth_mutex_acquire[1]");
- success = thelock->locked == 0;
- if (success) thelock->locked = 1;
- status = pth_mutex_release( &thelock->mut );
- CHECK_STATUS("pth_mutex_release[1]");
-
- if ( !success && waitflag ) {
- /* continue trying until we get the lock */
-
- /* mut must be locked by me -- part of the condition
- * protocol */
- status = pth_mutex_acquire( &thelock->mut, !waitflag, NULL );
- CHECK_STATUS("pth_mutex_acquire[2]");
- while ( thelock->locked ) {
- status = pth_cond_await(&thelock->lock_released,
- &thelock->mut, NULL);
- CHECK_STATUS("pth_cond_await");
- }
- thelock->locked = 1;
- status = pth_mutex_release( &thelock->mut );
- CHECK_STATUS("pth_mutex_release[2]");
- success = 1;
- }
- if (error) success = 0;
- dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
- return success;
-}
-
-void PyThread_release_lock(PyThread_type_lock lock)
-{
- pth_lock *thelock = (pth_lock *)lock;
- int status, error = 0;
-
- dprintf(("PyThread_release_lock(%p) called\n", lock));
-
- status = pth_mutex_acquire( &thelock->mut, 0, NULL );
- CHECK_STATUS("pth_mutex_acquire[3]");
-
- thelock->locked = 0;
-
- status = pth_mutex_release( &thelock->mut );
- CHECK_STATUS("pth_mutex_release[3]");
-
- /* wake up someone (anyone, if any) waiting on the lock */
- status = pth_cond_notify( &thelock->lock_released, 0 );
- CHECK_STATUS("pth_cond_notify");
-}
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index e90ae7e..20f8535 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -282,14 +282,14 @@ PyThread_allocate_lock(void)
if (!initialized)
PyThread_init_thread();
- lock = (sem_t *)malloc(sizeof(sem_t));
+ lock = (sem_t *)PyMem_RawMalloc(sizeof(sem_t));
if (lock) {
status = sem_init(lock,0,1);
CHECK_STATUS("sem_init");
if (error) {
- free((void *)lock);
+ PyMem_RawFree((void *)lock);
lock = NULL;
}
}
@@ -313,7 +313,7 @@ PyThread_free_lock(PyThread_type_lock lock)
status = sem_destroy(thelock);
CHECK_STATUS("sem_destroy");
- free((void *)thelock);
+ PyMem_RawFree((void *)thelock);
}
/*
@@ -410,7 +410,7 @@ PyThread_allocate_lock(void)
if (!initialized)
PyThread_init_thread();
- lock = (pthread_lock *) malloc(sizeof(pthread_lock));
+ lock = (pthread_lock *) PyMem_RawMalloc(sizeof(pthread_lock));
if (lock) {
memset((void *)lock, '\0', sizeof(pthread_lock));
lock->locked = 0;
@@ -430,7 +430,7 @@ PyThread_allocate_lock(void)
CHECK_STATUS("pthread_cond_init");
if (error) {
- free((void *)lock);
+ PyMem_RawFree((void *)lock);
lock = 0;
}
}
@@ -457,7 +457,7 @@ PyThread_free_lock(PyThread_type_lock lock)
status = pthread_mutex_destroy( &thelock->mut );
CHECK_STATUS("pthread_mutex_destroy");
- free((void *)thelock);
+ PyMem_RawFree((void *)thelock);
}
PyLockStatus
diff --git a/Python/traceback.c b/Python/traceback.c
index 74075c9..01e9473 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -13,7 +13,7 @@
#define OFF(x) offsetof(PyTracebackObject, x)
-#define PUTS(fd, str) write(fd, str, strlen(str))
+#define PUTS(fd, str) write(fd, str, (int)strlen(str))
#define MAX_STRING_LENGTH 500
#define MAX_FRAME_DEPTH 100
#define MAX_NTHREADS 100
@@ -246,10 +246,12 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent)
binary = _PyObject_CallMethodId(io, &PyId_open, "Os", filename, "rb");
if (binary == NULL) {
+ PyErr_Clear();
+
binary = _Py_FindSourceFile(filename, buf, sizeof(buf), io);
if (binary == NULL) {
Py_DECREF(io);
- return 0;
+ return -1;
}
}
@@ -469,13 +471,13 @@ dump_decimal(int fd, int value)
write(fd, buffer, len);
}
-/* Format an integer in range [0; 0xffffffff] to hexdecimal of 'width' digits,
+/* Format an integer in range [0; 0xffffffff] to hexadecimal of 'width' digits,
and write it into the file fd.
This function is signal safe. */
static void
-dump_hexadecimal(int width, unsigned long value, int fd)
+dump_hexadecimal(int fd, unsigned long value, int width)
{
int len;
char buffer[sizeof(unsigned long) * 2 + 1];
@@ -542,15 +544,15 @@ dump_ascii(int fd, PyObject *text)
}
else if (ch < 0xff) {
PUTS(fd, "\\x");
- dump_hexadecimal(2, ch, fd);
+ dump_hexadecimal(fd, ch, 2);
}
else if (ch < 0xffff) {
PUTS(fd, "\\u");
- dump_hexadecimal(4, ch, fd);
+ dump_hexadecimal(fd, ch, 4);
}
else {
PUTS(fd, "\\U");
- dump_hexadecimal(8, ch, fd);
+ dump_hexadecimal(fd, ch, 8);
}
}
if (truncated)
@@ -601,7 +603,7 @@ dump_traceback(int fd, PyThreadState *tstate, int write_header)
unsigned int depth;
if (write_header)
- PUTS(fd, "Traceback (most recent call first):\n");
+ PUTS(fd, "Stack (most recent call first):\n");
frame = _PyThreadState_GetFrame(tstate);
if (frame == NULL)
@@ -639,8 +641,8 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current)
PUTS(fd, "Current thread 0x");
else
PUTS(fd, "Thread 0x");
- dump_hexadecimal(sizeof(long)*2, (unsigned long)tstate->thread_id, fd);
- PUTS(fd, ":\n");
+ dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(long)*2);
+ PUTS(fd, " (most recent call first):\n");
}
const char*