diff options
Diffstat (limited to 'Python')
-rw-r--r-- | Python/Python-ast.c | 24 | ||||
-rw-r--r-- | Python/README | 1 | ||||
-rw-r--r-- | Python/_warnings.c | 13 | ||||
-rw-r--r-- | Python/asdl.c | 16 | ||||
-rw-r--r-- | Python/ast.c | 8 | ||||
-rw-r--r-- | Python/bltinmodule.c | 1567 | ||||
-rw-r--r-- | Python/ceval.c | 76 | ||||
-rw-r--r-- | Python/ceval_gil.h | 4 | ||||
-rw-r--r-- | Python/clinic/import.c.h | 323 | ||||
-rw-r--r-- | Python/codecs.c | 199 | ||||
-rw-r--r-- | Python/compile.c | 14 | ||||
-rw-r--r-- | Python/dynload_win.c | 21 | ||||
-rw-r--r-- | Python/errors.c | 25 | ||||
-rw-r--r-- | Python/fileutils.c | 120 | ||||
-rw-r--r-- | Python/formatter_unicode.c | 7 | ||||
-rw-r--r-- | Python/frozenmain.c | 2 | ||||
-rw-r--r-- | Python/getargs.c | 32 | ||||
-rw-r--r-- | Python/graminit.c | 435 | ||||
-rw-r--r-- | Python/import.c | 349 | ||||
-rw-r--r-- | Python/importlib.h | 7902 | ||||
-rw-r--r-- | Python/marshal.c | 205 | ||||
-rw-r--r-- | Python/opcode_targets.h | 4 | ||||
-rw-r--r-- | Python/pylifecycle.c | 1502 | ||||
-rw-r--r-- | Python/pystate.c | 4 | ||||
-rw-r--r-- | Python/pythonrun.c | 1471 | ||||
-rw-r--r-- | Python/pytime.c | 304 | ||||
-rw-r--r-- | Python/sysmodule.c | 13 | ||||
-rw-r--r-- | Python/thread.c | 2 | ||||
-rw-r--r-- | Python/thread_foobar.h | 63 | ||||
-rw-r--r-- | Python/thread_pthread.h | 10 | ||||
-rw-r--r-- | Python/traceback.c | 11 |
31 files changed, 8079 insertions, 6648 deletions
diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 44fdafc..994e721 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -349,13 +349,14 @@ static PyTypeObject *And_type; static PyTypeObject *Or_type; static PyTypeObject *operator_type; static PyObject *Add_singleton, *Sub_singleton, *Mult_singleton, -*Div_singleton, *Mod_singleton, *Pow_singleton, *LShift_singleton, -*RShift_singleton, *BitOr_singleton, *BitXor_singleton, *BitAnd_singleton, -*FloorDiv_singleton; +*MatMult_singleton, *Div_singleton, *Mod_singleton, *Pow_singleton, +*LShift_singleton, *RShift_singleton, *BitOr_singleton, *BitXor_singleton, +*BitAnd_singleton, *FloorDiv_singleton; static PyObject* ast2obj_operator(operator_ty); static PyTypeObject *Add_type; static PyTypeObject *Sub_type; static PyTypeObject *Mult_type; +static PyTypeObject *MatMult_type; static PyTypeObject *Div_type; static PyTypeObject *Mod_type; static PyTypeObject *Pow_type; @@ -970,6 +971,10 @@ static int init_types(void) if (!Mult_type) return 0; Mult_singleton = PyType_GenericNew(Mult_type, NULL, NULL); if (!Mult_singleton) return 0; + MatMult_type = make_type("MatMult", operator_type, NULL, 0); + if (!MatMult_type) return 0; + MatMult_singleton = PyType_GenericNew(MatMult_type, NULL, NULL); + if (!MatMult_singleton) return 0; Div_type = make_type("Div", operator_type, NULL, 0); if (!Div_type) return 0; Div_singleton = PyType_GenericNew(Div_type, NULL, NULL); @@ -3232,6 +3237,9 @@ PyObject* ast2obj_operator(operator_ty o) case Mult: Py_INCREF(Mult_singleton); return Mult_singleton; + case MatMult: + Py_INCREF(MatMult_singleton); + return MatMult_singleton; case Div: Py_INCREF(Div_singleton); return Div_singleton; @@ -6175,6 +6183,14 @@ obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena) *out = Mult; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject *)MatMult_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + *out = MatMult; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type); if (isinstance == -1) { return 1; @@ -6956,6 +6972,8 @@ PyInit__ast(void) if (PyDict_SetItemString(d, "Add", (PyObject*)Add_type) < 0) return NULL; if (PyDict_SetItemString(d, "Sub", (PyObject*)Sub_type) < 0) return NULL; if (PyDict_SetItemString(d, "Mult", (PyObject*)Mult_type) < 0) return NULL; + if (PyDict_SetItemString(d, "MatMult", (PyObject*)MatMult_type) < 0) return + NULL; if (PyDict_SetItemString(d, "Div", (PyObject*)Div_type) < 0) return NULL; if (PyDict_SetItemString(d, "Mod", (PyObject*)Mod_type) < 0) return NULL; if (PyDict_SetItemString(d, "Pow", (PyObject*)Pow_type) < 0) return NULL; diff --git a/Python/README b/Python/README new file mode 100644 index 0000000..153b628 --- /dev/null +++ b/Python/README @@ -0,0 +1 @@ +Miscellaneous source files for the main Python shared library diff --git a/Python/_warnings.c b/Python/_warnings.c index bef5647..a1f4368 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -637,16 +637,17 @@ get_category(PyObject *message, PyObject *category) if (rc == 1) category = (PyObject*)message->ob_type; - else if (category == NULL) + else if (category == NULL || category == Py_None) category = PyExc_UserWarning; /* Validate category. */ rc = PyObject_IsSubclass(category, PyExc_Warning); - if (rc == -1) - return NULL; - if (rc == 0) { - PyErr_SetString(PyExc_ValueError, - "category is not a subclass of Warning"); + /* category is not a subclass of PyExc_Warning or + PyObject_IsSubclass raised an error */ + if (rc == -1 || rc == 0) { + PyErr_Format(PyExc_TypeError, + "category must be a Warning subclass, not '%s'", + Py_TYPE(category)->tp_name); return NULL; } diff --git a/Python/asdl.c b/Python/asdl.c index 74fa941..df387b2 100644 --- a/Python/asdl.c +++ b/Python/asdl.c @@ -5,21 +5,21 @@ asdl_seq * _Py_asdl_seq_new(Py_ssize_t size, PyArena *arena) { asdl_seq *seq = NULL; - size_t n = (size ? (sizeof(void *) * (size - 1)) : 0); + size_t n; /* check size is sane */ - if (size < 0 || size == INT_MIN || - (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) { + if (size < 0 || + (size && (((size_t)size - 1) > (PY_SIZE_MAX / sizeof(void *))))) { PyErr_NoMemory(); return NULL; } + n = (size ? (sizeof(void *) * (size - 1)) : 0); /* check if size can be added safely */ if (n > PY_SIZE_MAX - sizeof(asdl_seq)) { PyErr_NoMemory(); return NULL; } - n += sizeof(asdl_seq); seq = (asdl_seq *)PyArena_Malloc(arena, n); @@ -36,21 +36,21 @@ asdl_int_seq * _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); + size_t n; /* check size is sane */ - if (size < 0 || size == INT_MIN || - (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) { + if (size < 0 || + (size && (((size_t)size - 1) > (PY_SIZE_MAX / sizeof(void *))))) { PyErr_NoMemory(); return NULL; } + n = (size ? (sizeof(void *) * (size - 1)) : 0); /* check if size can be added safely */ if (n > PY_SIZE_MAX - sizeof(asdl_seq)) { PyErr_NoMemory(); return NULL; } - n += sizeof(asdl_seq); seq = (asdl_int_seq *)PyArena_Malloc(arena, n); diff --git a/Python/ast.c b/Python/ast.c index d50cb80..2f1ae60 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -825,6 +825,8 @@ get_operator(const node *n) return Sub; case STAR: return Mult; + case AT: + return MatMult; case SLASH: return Div; case DOUBLESLASH: @@ -1030,6 +1032,8 @@ ast_for_augassign(struct compiling *c, const node *n) return Pow; else return Mult; + case '@': + return MatMult; default: PyErr_Format(PyExc_SystemError, "invalid augassign: %s", STR(n)); return (operator_ty)0; @@ -2257,7 +2261,7 @@ ast_for_expr(struct compiling *c, const node *n) and_expr: shift_expr ('&' shift_expr)* shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* - term: factor (('*'|'/'|'%'|'//') factor)* + term: factor (('*'|'@'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power power: atom trailer* ('**' factor)* */ @@ -2568,7 +2572,7 @@ ast_for_expr_stmt(struct compiling *c, const node *n) /* expr_stmt: testlist_star_expr (augassign (yield_expr|testlist) | ('=' (yield_expr|testlist))*) testlist_star_expr: (test|star_expr) (',' test|star_expr)* [','] - augassign: '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' + augassign: '+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '**=' | '//=' test: ... here starts the operator precendence dance */ diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index 4b4f979..f9bb388 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -46,6 +46,7 @@ _Py_IDENTIFIER(stdin); _Py_IDENTIFIER(stdout); _Py_IDENTIFIER(stderr); +/* AC: cannot convert yet, waiting for *args support */ static PyObject * builtin___build_class__(PyObject *self, PyObject *args, PyObject *kwds) { @@ -229,25 +230,62 @@ absolute or relative imports. 0 is absolute while a positive number\n\ is the number of parent directories to search relative to the current module."); +/*[clinic input] +abs as builtin_abs + + x: 'O' + / + +Return the absolute value of the argument. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_abs__doc__, +"abs($module, x, /)\n" +"--\n" +"\n" +"Return the absolute value of the argument."); + +#define BUILTIN_ABS_METHODDEF \ + {"abs", (PyCFunction)builtin_abs, METH_O, builtin_abs__doc__}, + static PyObject * -builtin_abs(PyObject *self, PyObject *v) +builtin_abs(PyModuleDef *module, PyObject *x) +/*[clinic end generated code: output=f85095528ce7e2e5 input=aa29cc07869b4732]*/ { - return PyNumber_Absolute(v); + return PyNumber_Absolute(x); } -PyDoc_STRVAR(abs_doc, -"abs(number) -> number\n\ -\n\ -Return the absolute value of the argument."); +/*[clinic input] +all as builtin_all + + iterable: 'O' + / + +Return True if bool(x) is True for all values x in the iterable. + +If the iterable is empty, return True. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_all__doc__, +"all($module, iterable, /)\n" +"--\n" +"\n" +"Return True if bool(x) is True for all values x in the iterable.\n" +"\n" +"If the iterable is empty, return True."); + +#define BUILTIN_ALL_METHODDEF \ + {"all", (PyCFunction)builtin_all, METH_O, builtin_all__doc__}, static PyObject * -builtin_all(PyObject *self, PyObject *v) +builtin_all(PyModuleDef *module, PyObject *iterable) +/*[clinic end generated code: output=d001db739ba83b46 input=dd506dc9998d42bd]*/ { PyObject *it, *item; PyObject *(*iternext)(PyObject *); int cmp; - it = PyObject_GetIter(v); + it = PyObject_GetIter(iterable); if (it == NULL) return NULL; iternext = *Py_TYPE(it)->tp_iternext; @@ -277,20 +315,37 @@ builtin_all(PyObject *self, PyObject *v) Py_RETURN_TRUE; } -PyDoc_STRVAR(all_doc, -"all(iterable) -> bool\n\ -\n\ -Return True if bool(x) is True for all values x in the iterable.\n\ -If the iterable is empty, return True."); +/*[clinic input] +any as builtin_any + + iterable: 'O' + / + +Return True if bool(x) is True for any x in the iterable. + +If the iterable is empty, return False. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_any__doc__, +"any($module, iterable, /)\n" +"--\n" +"\n" +"Return True if bool(x) is True for any x in the iterable.\n" +"\n" +"If the iterable is empty, return False."); + +#define BUILTIN_ANY_METHODDEF \ + {"any", (PyCFunction)builtin_any, METH_O, builtin_any__doc__}, static PyObject * -builtin_any(PyObject *self, PyObject *v) +builtin_any(PyModuleDef *module, PyObject *iterable) +/*[clinic end generated code: output=3a4b6dbe6a0d6f61 input=8fe8460f3fbbced8]*/ { PyObject *it, *item; PyObject *(*iternext)(PyObject *); int cmp; - it = PyObject_GetIter(v); + it = PyObject_GetIter(iterable); if (it == NULL) return NULL; iternext = *Py_TYPE(it)->tp_iternext; @@ -320,56 +375,105 @@ builtin_any(PyObject *self, PyObject *v) Py_RETURN_FALSE; } -PyDoc_STRVAR(any_doc, -"any(iterable) -> bool\n\ -\n\ -Return True if bool(x) is True for any x in the iterable.\n\ -If the iterable is empty, return False."); +/*[clinic input] +ascii as builtin_ascii + + obj: 'O' + / + +Return an ASCII-only representation of an object. + +As repr(), return a string containing a printable representation of an +object, but escape the non-ASCII characters in the string returned by +repr() using \\x, \\u or \\U escapes. This generates a string similar +to that returned by repr() in Python 2. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_ascii__doc__, +"ascii($module, obj, /)\n" +"--\n" +"\n" +"Return an ASCII-only representation of an object.\n" +"\n" +"As repr(), return a string containing a printable representation of an\n" +"object, but escape the non-ASCII characters in the string returned by\n" +"repr() using \\\\x, \\\\u or \\\\U escapes. This generates a string similar\n" +"to that returned by repr() in Python 2."); + +#define BUILTIN_ASCII_METHODDEF \ + {"ascii", (PyCFunction)builtin_ascii, METH_O, builtin_ascii__doc__}, static PyObject * -builtin_ascii(PyObject *self, PyObject *v) +builtin_ascii(PyModuleDef *module, PyObject *obj) +/*[clinic end generated code: output=f0e6754154c2d30b input=0cbdc1420a306325]*/ { - return PyObject_ASCII(v); + return PyObject_ASCII(obj); } -PyDoc_STRVAR(ascii_doc, -"ascii(object) -> string\n\ -\n\ -As repr(), return a string containing a printable representation of an\n\ -object, but escape the non-ASCII characters in the string returned by\n\ -repr() using \\x, \\u or \\U escapes. This generates a string similar\n\ -to that returned by repr() in Python 2."); +/*[clinic input] +bin as builtin_bin + + number: 'O' + / + +Return the binary representation of an integer. + + >>> bin(2796202) + '0b1010101010101010101010' +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_bin__doc__, +"bin($module, number, /)\n" +"--\n" +"\n" +"Return the binary representation of an integer.\n" +"\n" +" >>> bin(2796202)\n" +" \'0b1010101010101010101010\'"); + +#define BUILTIN_BIN_METHODDEF \ + {"bin", (PyCFunction)builtin_bin, METH_O, builtin_bin__doc__}, static PyObject * -builtin_bin(PyObject *self, PyObject *v) +builtin_bin(PyModuleDef *module, PyObject *number) +/*[clinic end generated code: output=18fed0e943650da1 input=2a6362ae9a9c9203]*/ { - return PyNumber_ToBase(v, 2); + return PyNumber_ToBase(number, 2); } -PyDoc_STRVAR(bin_doc, -"bin(number) -> string\n\ -\n\ -Return the binary representation of an integer.\n\ -\n\ - >>> bin(2796202)\n\ - '0b1010101010101010101010'\n\ -"); +/*[clinic input] +callable as builtin_callable + + obj: 'O' + / + +Return whether the object is callable (i.e., some kind of function). + +Note that classes are callable, as are instances of classes with a +__call__() method. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_callable__doc__, +"callable($module, obj, /)\n" +"--\n" +"\n" +"Return whether the object is callable (i.e., some kind of function).\n" +"\n" +"Note that classes are callable, as are instances of classes with a\n" +"__call__() method."); + +#define BUILTIN_CALLABLE_METHODDEF \ + {"callable", (PyCFunction)builtin_callable, METH_O, builtin_callable__doc__}, static PyObject * -builtin_callable(PyObject *self, PyObject *v) +builtin_callable(PyModuleDef *module, PyObject *obj) +/*[clinic end generated code: output=b3a92cbe635f32af input=bb3bb528fffdade4]*/ { - return PyBool_FromLong((long)PyCallable_Check(v)); + return PyBool_FromLong((long)PyCallable_Check(obj)); } -PyDoc_STRVAR(callable_doc, -"callable(object) -> bool\n\ -\n\ -Return whether the object is callable (i.e., some kind of function).\n\ -Note that classes are callable, as are instances of classes with a\n\ -__call__() method."); - typedef struct { PyObject_HEAD @@ -524,39 +628,99 @@ PyTypeObject PyFilter_Type = { }; +/*[clinic input] +format as builtin_format + + value: 'O' + format_spec: unicode(c_default="NULL") = '' + / + +Return value.__format__(format_spec) + +format_spec defaults to the empty string +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_format__doc__, +"format($module, value, format_spec=\'\', /)\n" +"--\n" +"\n" +"Return value.__format__(format_spec)\n" +"\n" +"format_spec defaults to the empty string"); + +#define BUILTIN_FORMAT_METHODDEF \ + {"format", (PyCFunction)builtin_format, METH_VARARGS, builtin_format__doc__}, + +static PyObject * +builtin_format_impl(PyModuleDef *module, PyObject *value, PyObject *format_spec); + static PyObject * -builtin_format(PyObject *self, PyObject *args) +builtin_format(PyModuleDef *module, PyObject *args) { + PyObject *return_value = NULL; PyObject *value; PyObject *format_spec = NULL; - if (!PyArg_ParseTuple(args, "O|U:format", &value, &format_spec)) - return NULL; + if (!PyArg_ParseTuple(args, + "O|U:format", + &value, &format_spec)) + goto exit; + return_value = builtin_format_impl(module, value, format_spec); + +exit: + return return_value; +} +static PyObject * +builtin_format_impl(PyModuleDef *module, PyObject *value, PyObject *format_spec) +/*[clinic end generated code: output=39723a58c72e8871 input=e23f2f11e0098c64]*/ +{ return PyObject_Format(value, format_spec); } -PyDoc_STRVAR(format_doc, -"format(value[, format_spec]) -> string\n\ -\n\ -Returns value.__format__(format_spec)\n\ -format_spec defaults to \"\""); +/*[clinic input] +chr as builtin_chr + + i: 'i' + / + +Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_chr__doc__, +"chr($module, i, /)\n" +"--\n" +"\n" +"Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff."); + +#define BUILTIN_CHR_METHODDEF \ + {"chr", (PyCFunction)builtin_chr, METH_VARARGS, builtin_chr__doc__}, + +static PyObject * +builtin_chr_impl(PyModuleDef *module, int i); static PyObject * -builtin_chr(PyObject *self, PyObject *args) +builtin_chr(PyModuleDef *module, PyObject *args) { - int x; + PyObject *return_value = NULL; + int i; - if (!PyArg_ParseTuple(args, "i:chr", &x)) - return NULL; + if (!PyArg_ParseTuple(args, + "i:chr", + &i)) + goto exit; + return_value = builtin_chr_impl(module, i); - return PyUnicode_FromOrdinal(x); +exit: + return return_value; } -PyDoc_STRVAR(chr_doc, -"chr(i) -> Unicode character\n\ -\n\ -Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff."); +static PyObject * +builtin_chr_impl(PyModuleDef *module, int i) +/*[clinic end generated code: output=4d6bbe948f56e2ae input=9b1ced29615adf66]*/ +{ + return PyUnicode_FromOrdinal(i); +} static const char * @@ -582,8 +746,8 @@ source_as_string(PyObject *cmd, const char *funcname, const char *what, PyCompil return NULL; } - if (strlen(str) != size) { - PyErr_SetString(PyExc_TypeError, + if (strlen(str) != (size_t)size) { + PyErr_SetString(PyExc_ValueError, "source code string cannot contain null bytes"); PyBuffer_Release(view); return NULL; @@ -591,35 +755,91 @@ source_as_string(PyObject *cmd, const char *funcname, const char *what, PyCompil return str; } +/*[clinic input] +compile as builtin_compile + + source: 'O' + filename: object(converter="PyUnicode_FSDecoder") + mode: 's' + flags: 'i' = 0 + dont_inherit: 'i' = 0 + optimize: 'i' = -1 + +Compile source into a code object that can be executed by exec() or eval(). + +The source code may represent a Python module, statement or expression. +The filename will be used for run-time error messages. +The mode must be 'exec' to compile a module, 'single' to compile a +single (interactive) statement, or 'eval' to compile an expression. +The flags argument, if present, controls which future statements influence +the compilation of the code. +The dont_inherit argument, if non-zero, stops the compilation inheriting +the effects of any future statements in effect in the code calling +compile; if absent or zero these statements do influence the compilation, +in addition to any features explicitly specified. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_compile__doc__, +"compile($module, /, source, filename, mode, flags=0, dont_inherit=0,\n" +" optimize=-1)\n" +"--\n" +"\n" +"Compile source into a code object that can be executed by exec() or eval().\n" +"\n" +"The source code may represent a Python module, statement or expression.\n" +"The filename will be used for run-time error messages.\n" +"The mode must be \'exec\' to compile a module, \'single\' to compile a\n" +"single (interactive) statement, or \'eval\' to compile an expression.\n" +"The flags argument, if present, controls which future statements influence\n" +"the compilation of the code.\n" +"The dont_inherit argument, if non-zero, stops the compilation inheriting\n" +"the effects of any future statements in effect in the code calling\n" +"compile; if absent or zero these statements do influence the compilation,\n" +"in addition to any features explicitly specified."); + +#define BUILTIN_COMPILE_METHODDEF \ + {"compile", (PyCFunction)builtin_compile, METH_VARARGS|METH_KEYWORDS, builtin_compile__doc__}, + +static PyObject * +builtin_compile_impl(PyModuleDef *module, PyObject *source, PyObject *filename, const char *mode, int flags, int dont_inherit, int optimize); + static PyObject * -builtin_compile(PyObject *self, PyObject *args, PyObject *kwds) +builtin_compile(PyModuleDef *module, PyObject *args, PyObject *kwargs) { - Py_buffer view = {NULL, NULL}; - const char *str; + PyObject *return_value = NULL; + static char *_keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", NULL}; + PyObject *source; PyObject *filename; - char *startstr; - int mode = -1; + const char *mode; + int flags = 0; int dont_inherit = 0; - int supplied_flags = 0; int optimize = -1; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "OO&s|iii:compile", _keywords, + &source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize)) + goto exit; + return_value = builtin_compile_impl(module, source, filename, mode, flags, dont_inherit, optimize); + +exit: + return return_value; +} + +static PyObject * +builtin_compile_impl(PyModuleDef *module, PyObject *source, PyObject *filename, const char *mode, int flags, int dont_inherit, int optimize) +/*[clinic end generated code: output=c72d197809d178fc input=c6212a9d21472f7e]*/ +{ + Py_buffer view = {NULL, NULL}; + const char *str; + int compile_mode = -1; int is_ast; PyCompilerFlags cf; - PyObject *cmd; - static char *kwlist[] = {"source", "filename", "mode", "flags", - "dont_inherit", "optimize", NULL}; int start[] = {Py_file_input, Py_eval_input, Py_single_input}; PyObject *result; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO&s|iii:compile", kwlist, - &cmd, - PyUnicode_FSDecoder, &filename, - &startstr, &supplied_flags, - &dont_inherit, &optimize)) - return NULL; - - cf.cf_flags = supplied_flags | PyCF_SOURCE_IS_UTF8; + cf.cf_flags = flags | PyCF_SOURCE_IS_UTF8; - if (supplied_flags & + if (flags & ~(PyCF_MASK | PyCF_MASK_OBSOLETE | PyCF_DONT_IMPLY_DEDENT | PyCF_ONLY_AST)) { PyErr_SetString(PyExc_ValueError, @@ -638,25 +858,25 @@ builtin_compile(PyObject *self, PyObject *args, PyObject *kwds) PyEval_MergeCompilerFlags(&cf); } - if (strcmp(startstr, "exec") == 0) - mode = 0; - else if (strcmp(startstr, "eval") == 0) - mode = 1; - else if (strcmp(startstr, "single") == 0) - mode = 2; + if (strcmp(mode, "exec") == 0) + compile_mode = 0; + else if (strcmp(mode, "eval") == 0) + compile_mode = 1; + else if (strcmp(mode, "single") == 0) + compile_mode = 2; else { PyErr_SetString(PyExc_ValueError, - "compile() arg 3 must be 'exec', 'eval' or 'single'"); + "compile() mode must be 'exec', 'eval' or 'single'"); goto error; } - is_ast = PyAST_Check(cmd); + is_ast = PyAST_Check(source); if (is_ast == -1) goto error; if (is_ast) { - if (supplied_flags & PyCF_ONLY_AST) { - Py_INCREF(cmd); - result = cmd; + if (flags & PyCF_ONLY_AST) { + Py_INCREF(source); + result = source; } else { PyArena *arena; @@ -665,7 +885,7 @@ builtin_compile(PyObject *self, PyObject *args, PyObject *kwds) arena = PyArena_New(); if (arena == NULL) goto error; - mod = PyAST_obj2mod(cmd, arena, mode); + mod = PyAST_obj2mod(source, arena, compile_mode); if (mod == NULL) { PyArena_Free(arena); goto error; @@ -681,11 +901,11 @@ builtin_compile(PyObject *self, PyObject *args, PyObject *kwds) goto finally; } - str = source_as_string(cmd, "compile", "string, bytes or AST", &cf, &view); + str = source_as_string(source, "compile", "string, bytes or AST", &cf, &view); if (str == NULL) goto error; - result = Py_CompileStringObject(str, filename, start[mode], &cf, optimize); + result = Py_CompileStringObject(str, filename, start[compile_mode], &cf, optimize); PyBuffer_Release(&view); goto finally; @@ -696,21 +916,7 @@ finally: return result; } -PyDoc_STRVAR(compile_doc, -"compile(source, filename, mode[, flags[, dont_inherit]]) -> code object\n\ -\n\ -Compile the source (a Python module, statement or expression)\n\ -into a code object that can be executed by exec() or eval().\n\ -The filename will be used for run-time error messages.\n\ -The mode must be 'exec' to compile a module, 'single' to compile a\n\ -single (interactive) statement, or 'eval' to compile an expression.\n\ -The flags argument, if present, controls which future statements influence\n\ -the compilation of the code.\n\ -The dont_inherit argument, if non-zero, stops the compilation inheriting\n\ -the effects of any future statements in effect in the code calling\n\ -compile; if absent or zero these statements do influence the compilation,\n\ -in addition to any features explicitly specified."); - +/* AC: cannot convert yet, as needs PEP 457 group support in inspect */ static PyObject * builtin_dir(PyObject *self, PyObject *args) { @@ -735,33 +941,115 @@ PyDoc_STRVAR(dir_doc, " for any other object: its attributes, its class's attributes, and\n" " recursively the attributes of its class's base classes."); +/*[clinic input] +divmod as builtin_divmod + + x: 'O' + y: 'O' + / + +Return the tuple ((x-x%y)/y, x%y). Invariant: div*y + mod == x. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_divmod__doc__, +"divmod($module, x, y, /)\n" +"--\n" +"\n" +"Return the tuple ((x-x%y)/y, x%y). Invariant: div*y + mod == x."); + +#define BUILTIN_DIVMOD_METHODDEF \ + {"divmod", (PyCFunction)builtin_divmod, METH_VARARGS, builtin_divmod__doc__}, + +static PyObject * +builtin_divmod_impl(PyModuleDef *module, PyObject *x, PyObject *y); + static PyObject * -builtin_divmod(PyObject *self, PyObject *args) +builtin_divmod(PyModuleDef *module, PyObject *args) { - PyObject *v, *w; + PyObject *return_value = NULL; + PyObject *x; + PyObject *y; + + if (!PyArg_UnpackTuple(args, "divmod", + 2, 2, + &x, &y)) + goto exit; + return_value = builtin_divmod_impl(module, x, y); + +exit: + return return_value; +} - if (!PyArg_UnpackTuple(args, "divmod", 2, 2, &v, &w)) - return NULL; - return PyNumber_Divmod(v, w); +static PyObject * +builtin_divmod_impl(PyModuleDef *module, PyObject *x, PyObject *y) +/*[clinic end generated code: output=77e8d408b1338886 input=c9c617b7bb74c615]*/ +{ + return PyNumber_Divmod(x, y); } -PyDoc_STRVAR(divmod_doc, -"divmod(x, y) -> (div, mod)\n\ -\n\ -Return the tuple ((x-x%y)/y, x%y). Invariant: div*y + mod == x."); +/*[clinic input] +eval as builtin_eval + + source: 'O' + globals: 'O' = None + locals: 'O' = None + / + +Evaluate the given source in the context of globals and locals. + +The source may be a string representing a Python expression +or a code object as returned by compile(). +The globals must be a dictionary and locals can be any mapping, +defaulting to the current globals and locals. +If only globals is given, locals defaults to it. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_eval__doc__, +"eval($module, source, globals=None, locals=None, /)\n" +"--\n" +"\n" +"Evaluate the given source in the context of globals and locals.\n" +"\n" +"The source may be a string representing a Python expression\n" +"or a code object as returned by compile().\n" +"The globals must be a dictionary and locals can be any mapping,\n" +"defaulting to the current globals and locals.\n" +"If only globals is given, locals defaults to it."); + +#define BUILTIN_EVAL_METHODDEF \ + {"eval", (PyCFunction)builtin_eval, METH_VARARGS, builtin_eval__doc__}, + +static PyObject * +builtin_eval_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals); static PyObject * -builtin_eval(PyObject *self, PyObject *args) +builtin_eval(PyModuleDef *module, PyObject *args) { - PyObject *cmd, *result, *tmp = NULL; - PyObject *globals = Py_None, *locals = Py_None; + PyObject *return_value = NULL; + PyObject *source; + PyObject *globals = Py_None; + PyObject *locals = Py_None; + + if (!PyArg_UnpackTuple(args, "eval", + 1, 3, + &source, &globals, &locals)) + goto exit; + return_value = builtin_eval_impl(module, source, globals, locals); + +exit: + return return_value; +} + +static PyObject * +builtin_eval_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals) +/*[clinic end generated code: output=644fd59012538ce6 input=31e42c1d2125b50b]*/ +{ + PyObject *result, *tmp = NULL; Py_buffer view = {NULL, NULL}; const char *str; PyCompilerFlags cf; - if (!PyArg_UnpackTuple(args, "eval", 1, 3, &cmd, &globals, &locals)) - return NULL; if (locals != Py_None && !PyMapping_Check(locals)) { PyErr_SetString(PyExc_TypeError, "locals must be a mapping"); return NULL; @@ -796,17 +1084,17 @@ builtin_eval(PyObject *self, PyObject *args) return NULL; } - if (PyCode_Check(cmd)) { - if (PyCode_GetNumFree((PyCodeObject *)cmd) > 0) { + if (PyCode_Check(source)) { + if (PyCode_GetNumFree((PyCodeObject *)source) > 0) { PyErr_SetString(PyExc_TypeError, "code object passed to eval() may not contain free variables"); return NULL; } - return PyEval_EvalCode(cmd, globals, locals); + return PyEval_EvalCode(source, globals, locals); } cf.cf_flags = PyCF_SOURCE_IS_UTF8; - str = source_as_string(cmd, "eval", "string, bytes or code", &cf, &view); + str = source_as_string(source, "eval", "string, bytes or code", &cf, &view); if (str == NULL) return NULL; @@ -820,24 +1108,64 @@ builtin_eval(PyObject *self, PyObject *args) return result; } -PyDoc_STRVAR(eval_doc, -"eval(source[, globals[, locals]]) -> value\n\ -\n\ -Evaluate the source in the context of globals and locals.\n\ -The source may be a string representing a Python expression\n\ -or a code object as returned by compile().\n\ -The globals must be a dictionary and locals can be any mapping,\n\ -defaulting to the current globals and locals.\n\ -If only globals is given, locals defaults to it.\n"); +/*[clinic input] +exec as builtin_exec + + source: 'O' + globals: 'O' = None + locals: 'O' = None + / + +Execute the given source in the context of globals and locals. + +The source may be a string representing one or more Python statements +or a code object as returned by compile(). +The globals must be a dictionary and locals can be any mapping, +defaulting to the current globals and locals. +If only globals is given, locals defaults to it. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_exec__doc__, +"exec($module, source, globals=None, locals=None, /)\n" +"--\n" +"\n" +"Execute the given source in the context of globals and locals.\n" +"\n" +"The source may be a string representing one or more Python statements\n" +"or a code object as returned by compile().\n" +"The globals must be a dictionary and locals can be any mapping,\n" +"defaulting to the current globals and locals.\n" +"If only globals is given, locals defaults to it."); + +#define BUILTIN_EXEC_METHODDEF \ + {"exec", (PyCFunction)builtin_exec, METH_VARARGS, builtin_exec__doc__}, + +static PyObject * +builtin_exec_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals); static PyObject * -builtin_exec(PyObject *self, PyObject *args) +builtin_exec(PyModuleDef *module, PyObject *args) { - PyObject *v; - PyObject *prog, *globals = Py_None, *locals = Py_None; + PyObject *return_value = NULL; + PyObject *source; + PyObject *globals = Py_None; + PyObject *locals = Py_None; + + if (!PyArg_UnpackTuple(args, "exec", + 1, 3, + &source, &globals, &locals)) + goto exit; + return_value = builtin_exec_impl(module, source, globals, locals); + +exit: + return return_value; +} - if (!PyArg_UnpackTuple(args, "exec", 1, 3, &prog, &globals, &locals)) - return NULL; +static PyObject * +builtin_exec_impl(PyModuleDef *module, PyObject *source, PyObject *globals, PyObject *locals) +/*[clinic end generated code: output=0281b48bfa8e3c87 input=536e057b5e00d89e]*/ +{ + PyObject *v; if (globals == Py_None) { globals = PyEval_GetGlobals(); @@ -856,13 +1184,13 @@ builtin_exec(PyObject *self, PyObject *args) locals = globals; if (!PyDict_Check(globals)) { - PyErr_Format(PyExc_TypeError, "exec() arg 2 must be a dict, not %.100s", + PyErr_Format(PyExc_TypeError, "exec() globals must be a dict, not %.100s", globals->ob_type->tp_name); return NULL; } if (!PyMapping_Check(locals)) { PyErr_Format(PyExc_TypeError, - "arg 3 must be a mapping or None, not %.100s", + "locals must be a mapping or None, not %.100s", locals->ob_type->tp_name); return NULL; } @@ -872,22 +1200,22 @@ builtin_exec(PyObject *self, PyObject *args) return NULL; } - if (PyCode_Check(prog)) { - if (PyCode_GetNumFree((PyCodeObject *)prog) > 0) { + if (PyCode_Check(source)) { + if (PyCode_GetNumFree((PyCodeObject *)source) > 0) { PyErr_SetString(PyExc_TypeError, "code object passed to exec() may not " "contain free variables"); return NULL; } - v = PyEval_EvalCode(prog, globals, locals); + v = PyEval_EvalCode(source, globals, locals); } else { Py_buffer view = {NULL, NULL}; const char *str; PyCompilerFlags cf; cf.cf_flags = PyCF_SOURCE_IS_UTF8; - str = source_as_string(prog, "exec", - "string, bytes or code", &cf, &view); + str = source_as_string(source, "exec", + "string, bytes or code", &cf, &view); if (str == NULL) return NULL; if (PyEval_MergeCompilerFlags(&cf)) @@ -903,15 +1231,8 @@ builtin_exec(PyObject *self, PyObject *args) Py_RETURN_NONE; } -PyDoc_STRVAR(exec_doc, -"exec(object[, globals[, locals]])\n\ -\n\ -Read and execute code from an object, which can be a string or a code\n\ -object.\n\ -The globals and locals are dictionaries, defaulting to the current\n\ -globals and locals. If only globals is given, locals defaults to it."); - +/* AC: cannot convert yet, as needs PEP 457 group support in inspect */ static PyObject * builtin_getattr(PyObject *self, PyObject *args) { @@ -945,8 +1266,39 @@ When a default argument is given, it is returned when the attribute doesn't\n\ exist; without it, an exception is raised in that case."); +/*[clinic input] +globals as builtin_globals + +Return the dictionary containing the current scope's global variables. + +NOTE: Updates to this dictionary *will* affect name lookups in the current +global scope and vice-versa. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_globals__doc__, +"globals($module, /)\n" +"--\n" +"\n" +"Return the dictionary containing the current scope\'s global variables.\n" +"\n" +"NOTE: Updates to this dictionary *will* affect name lookups in the current\n" +"global scope and vice-versa."); + +#define BUILTIN_GLOBALS_METHODDEF \ + {"globals", (PyCFunction)builtin_globals, METH_NOARGS, builtin_globals__doc__}, + +static PyObject * +builtin_globals_impl(PyModuleDef *module); + +static PyObject * +builtin_globals(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) +{ + return builtin_globals_impl(module); +} + static PyObject * -builtin_globals(PyObject *self) +builtin_globals_impl(PyModuleDef *module) +/*[clinic end generated code: output=048640f58b1f20ad input=9327576f92bb48ba]*/ { PyObject *d; @@ -955,26 +1307,62 @@ builtin_globals(PyObject *self) return d; } -PyDoc_STRVAR(globals_doc, -"globals() -> dictionary\n\ -\n\ -Return the dictionary containing the current scope's global variables."); +/*[clinic input] +hasattr as builtin_hasattr + + obj: 'O' + name: 'O' + / + +Return whether the object has an attribute with the given name. + +This is done by calling getattr(obj, name) and catching AttributeError. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_hasattr__doc__, +"hasattr($module, obj, name, /)\n" +"--\n" +"\n" +"Return whether the object has an attribute with the given name.\n" +"\n" +"This is done by calling getattr(obj, name) and catching AttributeError."); + +#define BUILTIN_HASATTR_METHODDEF \ + {"hasattr", (PyCFunction)builtin_hasattr, METH_VARARGS, builtin_hasattr__doc__}, + +static PyObject * +builtin_hasattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name); static PyObject * -builtin_hasattr(PyObject *self, PyObject *args) +builtin_hasattr(PyModuleDef *module, PyObject *args) { - PyObject *v; + PyObject *return_value = NULL; + PyObject *obj; PyObject *name; - if (!PyArg_UnpackTuple(args, "hasattr", 2, 2, &v, &name)) - return NULL; + if (!PyArg_UnpackTuple(args, "hasattr", + 2, 2, + &obj, &name)) + goto exit; + return_value = builtin_hasattr_impl(module, obj, name); + +exit: + return return_value; +} + +static PyObject * +builtin_hasattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name) +/*[clinic end generated code: output=e0bd996ef73d1217 input=b50bad5f739ea10d]*/ +{ + PyObject *v; + if (!PyUnicode_Check(name)) { PyErr_SetString(PyExc_TypeError, "hasattr(): attribute name must be string"); return NULL; } - v = PyObject_GetAttr(v, name); + v = PyObject_GetAttr(obj, name); if (v == NULL) { if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); @@ -986,25 +1374,43 @@ builtin_hasattr(PyObject *self, PyObject *args) Py_RETURN_TRUE; } -PyDoc_STRVAR(hasattr_doc, -"hasattr(object, name) -> bool\n\ -\n\ -Return whether the object has an attribute with the given name.\n\ -(This is done by calling getattr(object, name) and catching AttributeError.)"); +/* AC: gdb's integration with CPython relies on builtin_id having + * the *exact* parameter names of "self" and "v", so we ensure we + * preserve those name rather than using the AC defaults. + */ +/*[clinic input] +id as builtin_id + + self: self(type="PyModuleDef *") + obj as v: 'O' + / + +Return the identity of an object. + +This is guaranteed to be unique among simultaneously existing objects. +(CPython uses the object's memory address.) +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_id__doc__, +"id($module, obj, /)\n" +"--\n" +"\n" +"Return the identity of an object.\n" +"\n" +"This is guaranteed to be unique among simultaneously existing objects.\n" +"(CPython uses the object\'s memory address.)"); + +#define BUILTIN_ID_METHODDEF \ + {"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__}, static PyObject * -builtin_id(PyObject *self, PyObject *v) +builtin_id(PyModuleDef *self, PyObject *v) +/*[clinic end generated code: output=f54da09c91992e63 input=a1f988d98357341d]*/ { return PyLong_FromVoidPtr(v); } -PyDoc_STRVAR(id_doc, -"id(object) -> integer\n\ -\n\ -Return the identity of an object. This is guaranteed to be unique among\n\ -simultaneously existing objects. (Hint: it's the object's memory address.)"); - /* map object ************************************************************/ @@ -1177,6 +1583,8 @@ PyTypeObject PyMap_Type = { PyObject_GC_Del, /* tp_free */ }; + +/* AC: cannot convert yet, as needs PEP 457 group support in inspect */ static PyObject * builtin_next(PyObject *self, PyObject *args) { @@ -1218,83 +1626,186 @@ Return the next item from the iterator. If default is given and the iterator\n\ is exhausted, it is returned instead of raising StopIteration."); +/*[clinic input] +setattr as builtin_setattr + + obj: 'O' + name: 'O' + value: 'O' + / + +Sets the named attribute on the given object to the specified value. + +setattr(x, 'y', v) is equivalent to ``x.y = v'' +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_setattr__doc__, +"setattr($module, obj, name, value, /)\n" +"--\n" +"\n" +"Sets the named attribute on the given object to the specified value.\n" +"\n" +"setattr(x, \'y\', v) is equivalent to ``x.y = v\'\'"); + +#define BUILTIN_SETATTR_METHODDEF \ + {"setattr", (PyCFunction)builtin_setattr, METH_VARARGS, builtin_setattr__doc__}, + +static PyObject * +builtin_setattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name, PyObject *value); + static PyObject * -builtin_setattr(PyObject *self, PyObject *args) +builtin_setattr(PyModuleDef *module, PyObject *args) { - PyObject *v; + PyObject *return_value = NULL; + PyObject *obj; PyObject *name; PyObject *value; - if (!PyArg_UnpackTuple(args, "setattr", 3, 3, &v, &name, &value)) - return NULL; - if (PyObject_SetAttr(v, name, value) != 0) + if (!PyArg_UnpackTuple(args, "setattr", + 3, 3, + &obj, &name, &value)) + goto exit; + return_value = builtin_setattr_impl(module, obj, name, value); + +exit: + return return_value; +} + +static PyObject * +builtin_setattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name, PyObject *value) +/*[clinic end generated code: output=4336dcbbf7691d2d input=fbe7e53403116b93]*/ +{ + if (PyObject_SetAttr(obj, name, value) != 0) return NULL; Py_INCREF(Py_None); return Py_None; } -PyDoc_STRVAR(setattr_doc, -"setattr(object, name, value)\n\ -\n\ -Set a named attribute on an object; setattr(x, 'y', v) is equivalent to\n\ -``x.y = v''."); +/*[clinic input] +delattr as builtin_delattr + + obj: 'O' + name: 'O' + / + +Deletes the named attribute from the given object. + +delattr(x, 'y') is equivalent to ``del x.y'' +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_delattr__doc__, +"delattr($module, obj, name, /)\n" +"--\n" +"\n" +"Deletes the named attribute from the given object.\n" +"\n" +"delattr(x, \'y\') is equivalent to ``del x.y\'\'"); + +#define BUILTIN_DELATTR_METHODDEF \ + {"delattr", (PyCFunction)builtin_delattr, METH_VARARGS, builtin_delattr__doc__}, static PyObject * -builtin_delattr(PyObject *self, PyObject *args) +builtin_delattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name); + +static PyObject * +builtin_delattr(PyModuleDef *module, PyObject *args) { - PyObject *v; + PyObject *return_value = NULL; + PyObject *obj; PyObject *name; - if (!PyArg_UnpackTuple(args, "delattr", 2, 2, &v, &name)) - return NULL; - if (PyObject_SetAttr(v, name, (PyObject *)NULL) != 0) + if (!PyArg_UnpackTuple(args, "delattr", + 2, 2, + &obj, &name)) + goto exit; + return_value = builtin_delattr_impl(module, obj, name); + +exit: + return return_value; +} + +static PyObject * +builtin_delattr_impl(PyModuleDef *module, PyObject *obj, PyObject *name) +/*[clinic end generated code: output=319c2d884aa769cf input=647af2ce9183a823]*/ +{ + if (PyObject_SetAttr(obj, name, (PyObject *)NULL) != 0) return NULL; Py_INCREF(Py_None); return Py_None; } -PyDoc_STRVAR(delattr_doc, -"delattr(object, name)\n\ -\n\ -Delete a named attribute on an object; delattr(x, 'y') is equivalent to\n\ -``del x.y''."); +/*[clinic input] +hash as builtin_hash + + obj: 'O' + / + +Return the hash value for the given object. + +Two objects that compare equal must also have the same hash value, but the +reverse is not necessarily true. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_hash__doc__, +"hash($module, obj, /)\n" +"--\n" +"\n" +"Return the hash value for the given object.\n" +"\n" +"Two objects that compare equal must also have the same hash value, but the\n" +"reverse is not necessarily true."); + +#define BUILTIN_HASH_METHODDEF \ + {"hash", (PyCFunction)builtin_hash, METH_O, builtin_hash__doc__}, static PyObject * -builtin_hash(PyObject *self, PyObject *v) +builtin_hash(PyModuleDef *module, PyObject *obj) +/*[clinic end generated code: output=1ec467611c13468b input=ccc4d2b9a351df4e]*/ { Py_hash_t x; - x = PyObject_Hash(v); + x = PyObject_Hash(obj); if (x == -1) return NULL; return PyLong_FromSsize_t(x); } -PyDoc_STRVAR(hash_doc, -"hash(object) -> integer\n\ -\n\ -Return a hash value for the object. Two objects with the same value have\n\ -the same hash value. The reverse is not necessarily true, but likely."); +/*[clinic input] +hex as builtin_hex + + number: 'O' + / + +Return the hexadecimal representation of an integer. + + >>> hex(12648430) + '0xc0ffee' +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_hex__doc__, +"hex($module, number, /)\n" +"--\n" +"\n" +"Return the hexadecimal representation of an integer.\n" +"\n" +" >>> hex(12648430)\n" +" \'0xc0ffee\'"); + +#define BUILTIN_HEX_METHODDEF \ + {"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__}, static PyObject * -builtin_hex(PyObject *self, PyObject *v) +builtin_hex(PyModuleDef *module, PyObject *number) +/*[clinic end generated code: output=f18e9439aeaa2c6c input=e816200b0a728ebe]*/ { - return PyNumber_ToBase(v, 16); + return PyNumber_ToBase(number, 16); } -PyDoc_STRVAR(hex_doc, -"hex(number) -> string\n\ -\n\ -Return the hexadecimal representation of an integer.\n\ -\n\ - >>> hex(3735928559)\n\ - '0xdeadbeef'\n\ -"); - +/* AC: cannot convert yet, as needs PEP 457 group support in inspect */ static PyObject * builtin_iter(PyObject *self, PyObject *args) { @@ -1321,25 +1832,72 @@ supply its own iterator, or be a sequence.\n\ In the second form, the callable is called until it returns the sentinel."); +/*[clinic input] +len as builtin_len + + obj: 'O' + / + +Return the number of items in a container. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_len__doc__, +"len($module, obj, /)\n" +"--\n" +"\n" +"Return the number of items in a container."); + +#define BUILTIN_LEN_METHODDEF \ + {"len", (PyCFunction)builtin_len, METH_O, builtin_len__doc__}, + static PyObject * -builtin_len(PyObject *self, PyObject *v) +builtin_len(PyModuleDef *module, PyObject *obj) +/*[clinic end generated code: output=5a38b0db40761705 input=2e5ff15db9a2de22]*/ { Py_ssize_t res; - res = PyObject_Size(v); + res = PyObject_Size(obj); if (res < 0 && PyErr_Occurred()) return NULL; return PyLong_FromSsize_t(res); } -PyDoc_STRVAR(len_doc, -"len(object)\n\ -\n\ -Return the number of items of a sequence or collection."); +/*[clinic input] +locals as builtin_locals + +Return a dictionary containing the current scope's local variables. + +NOTE: Whether or not updates to this dictionary will affect name lookups in +the local scope and vice-versa is *implementation dependent* and not +covered by any backwards compatibility guarantees. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_locals__doc__, +"locals($module, /)\n" +"--\n" +"\n" +"Return a dictionary containing the current scope\'s local variables.\n" +"\n" +"NOTE: Whether or not updates to this dictionary will affect name lookups in\n" +"the local scope and vice-versa is *implementation dependent* and not\n" +"covered by any backwards compatibility guarantees."); + +#define BUILTIN_LOCALS_METHODDEF \ + {"locals", (PyCFunction)builtin_locals, METH_NOARGS, builtin_locals__doc__}, + +static PyObject * +builtin_locals_impl(PyModuleDef *module); + +static PyObject * +builtin_locals(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) +{ + return builtin_locals_impl(module); +} static PyObject * -builtin_locals(PyObject *self) +builtin_locals_impl(PyModuleDef *module) +/*[clinic end generated code: output=8ac52522924346e2 input=7874018d478d5c4b]*/ { PyObject *d; @@ -1348,11 +1906,6 @@ builtin_locals(PyObject *self) return d; } -PyDoc_STRVAR(locals_doc, -"locals() -> dictionary\n\ -\n\ -Update and return a dictionary containing the current scope's local variables."); - static PyObject * min_max(PyObject *args, PyObject *kwds, int op) @@ -1455,6 +2008,7 @@ Fail_it: return NULL; } +/* AC: cannot convert yet, waiting for *args support */ static PyObject * builtin_min(PyObject *self, PyObject *args, PyObject *kwds) { @@ -1471,6 +2025,7 @@ the provided iterable is empty.\n\ With two or more arguments, return the smallest argument."); +/* AC: cannot convert yet, waiting for *args support */ static PyObject * builtin_max(PyObject *self, PyObject *args, PyObject *kwds) { @@ -1487,56 +2042,91 @@ the provided iterable is empty.\n\ With two or more arguments, return the largest argument."); +/*[clinic input] +oct as builtin_oct + + number: 'O' + / + +Return the octal representation of an integer. + + >>> oct(342391) + '0o1234567' +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_oct__doc__, +"oct($module, number, /)\n" +"--\n" +"\n" +"Return the octal representation of an integer.\n" +"\n" +" >>> oct(342391)\n" +" \'0o1234567\'"); + +#define BUILTIN_OCT_METHODDEF \ + {"oct", (PyCFunction)builtin_oct, METH_O, builtin_oct__doc__}, + static PyObject * -builtin_oct(PyObject *self, PyObject *v) +builtin_oct(PyModuleDef *module, PyObject *number) +/*[clinic end generated code: output=b99234d1d70a6673 input=a3a372b521b3dd13]*/ { - return PyNumber_ToBase(v, 8); + return PyNumber_ToBase(number, 8); } -PyDoc_STRVAR(oct_doc, -"oct(number) -> string\n\ -\n\ -Return the octal representation of an integer.\n\ -\n\ - >>> oct(342391)\n\ - '0o1234567'\n\ -"); +/*[clinic input] +ord as builtin_ord + + c: 'O' + / + +Return the Unicode code point for a one-character string. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_ord__doc__, +"ord($module, c, /)\n" +"--\n" +"\n" +"Return the Unicode code point for a one-character string."); + +#define BUILTIN_ORD_METHODDEF \ + {"ord", (PyCFunction)builtin_ord, METH_O, builtin_ord__doc__}, static PyObject * -builtin_ord(PyObject *self, PyObject* obj) +builtin_ord(PyModuleDef *module, PyObject *c) +/*[clinic end generated code: output=a8466d23bd76db3f input=762355f87451efa3]*/ { long ord; Py_ssize_t size; - if (PyBytes_Check(obj)) { - size = PyBytes_GET_SIZE(obj); + if (PyBytes_Check(c)) { + size = PyBytes_GET_SIZE(c); if (size == 1) { - ord = (long)((unsigned char)*PyBytes_AS_STRING(obj)); + ord = (long)((unsigned char)*PyBytes_AS_STRING(c)); return PyLong_FromLong(ord); } } - else if (PyUnicode_Check(obj)) { - if (PyUnicode_READY(obj) == -1) + else if (PyUnicode_Check(c)) { + if (PyUnicode_READY(c) == -1) return NULL; - size = PyUnicode_GET_LENGTH(obj); + size = PyUnicode_GET_LENGTH(c); if (size == 1) { - ord = (long)PyUnicode_READ_CHAR(obj, 0); + ord = (long)PyUnicode_READ_CHAR(c, 0); return PyLong_FromLong(ord); } } - else if (PyByteArray_Check(obj)) { + else if (PyByteArray_Check(c)) { /* XXX Hopefully this is temporary */ - size = PyByteArray_GET_SIZE(obj); + size = PyByteArray_GET_SIZE(c); if (size == 1) { - ord = (long)((unsigned char)*PyByteArray_AS_STRING(obj)); + ord = (long)((unsigned char)*PyByteArray_AS_STRING(c)); return PyLong_FromLong(ord); } } else { PyErr_Format(PyExc_TypeError, "ord() expected string of length 1, but " \ - "%.200s found", obj->ob_type->tp_name); + "%.200s found", c->ob_type->tp_name); return NULL; } @@ -1547,31 +2137,63 @@ builtin_ord(PyObject *self, PyObject* obj) return NULL; } -PyDoc_VAR(ord_doc) = PyDoc_STR( -"ord(c) -> integer\n\ -\n\ -Return the integer ordinal of a one-character string." -); +/*[clinic input] +pow as builtin_pow + + x: 'O' + y: 'O' + z: 'O' = None + / + +Equivalent to x**y (with two arguments) or x**y % z (with three arguments) + +Some types, such as ints, are able to use a more efficient algorithm when +invoked using the three argument form. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_pow__doc__, +"pow($module, x, y, z=None, /)\n" +"--\n" +"\n" +"Equivalent to x**y (with two arguments) or x**y % z (with three arguments)\n" +"\n" +"Some types, such as ints, are able to use a more efficient algorithm when\n" +"invoked using the three argument form."); + +#define BUILTIN_POW_METHODDEF \ + {"pow", (PyCFunction)builtin_pow, METH_VARARGS, builtin_pow__doc__}, static PyObject * -builtin_pow(PyObject *self, PyObject *args) -{ - PyObject *v, *w, *z = Py_None; +builtin_pow_impl(PyModuleDef *module, PyObject *x, PyObject *y, PyObject *z); - if (!PyArg_UnpackTuple(args, "pow", 2, 3, &v, &w, &z)) - return NULL; - return PyNumber_Power(v, w, z); +static PyObject * +builtin_pow(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *x; + PyObject *y; + PyObject *z = Py_None; + + if (!PyArg_UnpackTuple(args, "pow", + 2, 3, + &x, &y, &z)) + goto exit; + return_value = builtin_pow_impl(module, x, y, z); + +exit: + return return_value; } -PyDoc_STRVAR(pow_doc, -"pow(x, y[, z]) -> number\n\ -\n\ -With two arguments, equivalent to x**y. With three arguments,\n\ -equivalent to (x**y) % z, but may be more efficient (e.g. for ints)."); - +static PyObject * +builtin_pow_impl(PyModuleDef *module, PyObject *x, PyObject *y, PyObject *z) +/*[clinic end generated code: output=d0cdf314311dedba input=561a942d5f5c1899]*/ +{ + return PyNumber_Power(x, y, z); +} +/* AC: cannot convert yet, waiting for *args support */ static PyObject * builtin_print(PyObject *self, PyObject *args, PyObject *kwds) { @@ -1667,10 +2289,59 @@ end: string appended after the last value, default a newline.\n\ flush: whether to forcibly flush the stream."); +/*[clinic input] +input as builtin_input + + prompt: object(c_default="NULL") = None + / + +Read a string from standard input. The trailing newline is stripped. + +The prompt string, if given, is printed to standard output without a +trailing newline before reading input. + +If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. +On *nix systems, readline is used if available. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_input__doc__, +"input($module, prompt=None, /)\n" +"--\n" +"\n" +"Read a string from standard input. The trailing newline is stripped.\n" +"\n" +"The prompt string, if given, is printed to standard output without a\n" +"trailing newline before reading input.\n" +"\n" +"If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.\n" +"On *nix systems, readline is used if available."); + +#define BUILTIN_INPUT_METHODDEF \ + {"input", (PyCFunction)builtin_input, METH_VARARGS, builtin_input__doc__}, + static PyObject * -builtin_input(PyObject *self, PyObject *args) +builtin_input_impl(PyModuleDef *module, PyObject *prompt); + +static PyObject * +builtin_input(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *prompt = NULL; + + if (!PyArg_UnpackTuple(args, "input", + 0, 1, + &prompt)) + goto exit; + return_value = builtin_input_impl(module, prompt); + +exit: + return return_value; +} + +static PyObject * +builtin_input_impl(PyModuleDef *module, PyObject *prompt) +/*[clinic end generated code: output=69323bf5695f7c9c input=5e8bb70c2908fe3c]*/ { - PyObject *promptarg = NULL; PyObject *fin = _PySys_GetObjectId(&PyId_stdin); PyObject *fout = _PySys_GetObjectId(&PyId_stdout); PyObject *ferr = _PySys_GetObjectId(&PyId_stderr); @@ -1678,10 +2349,6 @@ builtin_input(PyObject *self, PyObject *args) long fd; int tty; - /* Parse arguments */ - if (!PyArg_UnpackTuple(args, "input", 0, 1, &promptarg)) - return NULL; - /* Check that stdin/out/err are intact */ if (fin == NULL || fin == Py_None) { PyErr_SetString(PyExc_RuntimeError, @@ -1737,7 +2404,7 @@ builtin_input(PyObject *self, PyObject *args) /* If we're interactive, use (GNU) readline */ if (tty) { PyObject *po = NULL; - char *prompt; + char *promptstr; char *s = NULL; PyObject *stdin_encoding = NULL, *stdin_errors = NULL; PyObject *stdout_encoding = NULL, *stdout_errors = NULL; @@ -1760,7 +2427,7 @@ builtin_input(PyObject *self, PyObject *args) PyErr_Clear(); else Py_DECREF(tmp); - if (promptarg != NULL) { + if (prompt != NULL) { /* We have a prompt, encode it as stdout would */ char *stdout_encoding_str, *stdout_errors_str; PyObject *stringpo; @@ -1772,7 +2439,7 @@ builtin_input(PyObject *self, PyObject *args) stdout_errors_str = _PyUnicode_AsString(stdout_errors); if (!stdout_encoding_str || !stdout_errors_str) goto _readline_errors; - stringpo = PyObject_Str(promptarg); + stringpo = PyObject_Str(prompt); if (stringpo == NULL) goto _readline_errors; po = PyUnicode_AsEncodedString(stringpo, @@ -1782,15 +2449,15 @@ builtin_input(PyObject *self, PyObject *args) Py_CLEAR(stringpo); if (po == NULL) goto _readline_errors; - prompt = PyBytes_AsString(po); - if (prompt == NULL) + promptstr = PyBytes_AsString(po); + if (promptstr == NULL) goto _readline_errors; } else { po = NULL; - prompt = ""; + promptstr = ""; } - s = PyOS_Readline(stdin, stdout, prompt); + s = PyOS_Readline(stdin, stdout, promptstr); if (s == NULL) { PyErr_CheckSignals(); if (!PyErr_Occurred()) @@ -1832,8 +2499,8 @@ builtin_input(PyObject *self, PyObject *args) } /* Fallback if we're not interactive */ - if (promptarg != NULL) { - if (PyFile_WriteObject(promptarg, fout, Py_PRINT_RAW) != 0) + if (prompt != NULL) { + if (PyFile_WriteObject(prompt, fout, Py_PRINT_RAW) != 0) return NULL; } tmp = _PyObject_CallMethodId(fout, &PyId_flush, ""); @@ -1844,28 +2511,40 @@ builtin_input(PyObject *self, PyObject *args) return PyFile_GetLine(fin, -1); } -PyDoc_STRVAR(input_doc, -"input([prompt]) -> string\n\ -\n\ -Read a string from standard input. The trailing newline is stripped.\n\ -If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.\n\ -On Unix, GNU readline is used if enabled. The prompt string, if given,\n\ -is printed without a trailing newline before reading."); +/*[clinic input] +repr as builtin_repr + + obj: 'O' + / + +Return the canonical string representation of the object. + +For many object types, including most builtins, eval(repr(obj)) == obj. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_repr__doc__, +"repr($module, obj, /)\n" +"--\n" +"\n" +"Return the canonical string representation of the object.\n" +"\n" +"For many object types, including most builtins, eval(repr(obj)) == obj."); + +#define BUILTIN_REPR_METHODDEF \ + {"repr", (PyCFunction)builtin_repr, METH_O, builtin_repr__doc__}, static PyObject * -builtin_repr(PyObject *self, PyObject *v) +builtin_repr(PyModuleDef *module, PyObject *obj) +/*[clinic end generated code: output=988980120f39e2fa input=a2bca0f38a5a924d]*/ { - return PyObject_Repr(v); + return PyObject_Repr(obj); } -PyDoc_STRVAR(repr_doc, -"repr(object) -> string\n\ -\n\ -Return the canonical string representation of the object.\n\ -For most object types, eval(repr(object)) == object."); - +/* AC: cannot convert yet, as needs PEP 457 group support in inspect + * or a semantic change to accept None for "ndigits" + */ static PyObject * builtin_round(PyObject *self, PyObject *args, PyObject *kwds) { @@ -1907,6 +2586,35 @@ This returns an int when called with one argument, otherwise the\n\ same type as the number. ndigits may be negative."); +/*AC: we need to keep the kwds dict intact to easily call into the + * list.sort method, which isn't currently supported in AC. So we just use + * the initially generated signature with a custom implementation. + */ +/* [disabled clinic input] +sorted as builtin_sorted + + iterable as seq: 'O' + key as keyfunc: 'O' = None + reverse: 'O' = False + +Return a new list containing all items from the iterable in ascending order. + +A custom key function can be supplied to customise the sort order, and the +reverse flag can be set to request the result in descending order. +[end disabled clinic input]*/ + +PyDoc_STRVAR(builtin_sorted__doc__, +"sorted($module, iterable, key=None, reverse=False)\n" +"--\n" +"\n" +"Return a new list containing all items from the iterable in ascending order.\n" +"\n" +"A custom key function can be supplied to customise the sort order, and the\n" +"reverse flag can be set to request the result in descending order."); + +#define BUILTIN_SORTED_METHODDEF \ + {"sorted", (PyCFunction)builtin_sorted, METH_VARARGS|METH_KEYWORDS, builtin_sorted__doc__}, + static PyObject * builtin_sorted(PyObject *self, PyObject *args, PyObject *kwds) { @@ -1948,9 +2656,8 @@ builtin_sorted(PyObject *self, PyObject *args, PyObject *kwds) return newlist; } -PyDoc_STRVAR(sorted_doc, -"sorted(iterable, key=None, reverse=False) --> new sorted list"); +/* AC: cannot convert yet, as needs PEP 457 group support in inspect */ static PyObject * builtin_vars(PyObject *self, PyObject *args) { @@ -1982,17 +2689,62 @@ PyDoc_STRVAR(vars_doc, Without arguments, equivalent to locals().\n\ With an argument, equivalent to object.__dict__."); -static PyObject* -builtin_sum(PyObject *self, PyObject *args) + +/*[clinic input] +sum as builtin_sum + + iterable: 'O' + start: object(c_default="NULL") = 0 + / + +Return the sum of a 'start' value (default: 0) plus an iterable of numbers + +When the iterable is empty, return the start value. +This function is intended specifically for use with numeric values and may +reject non-numeric types. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_sum__doc__, +"sum($module, iterable, start=0, /)\n" +"--\n" +"\n" +"Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n" +"\n" +"When the iterable is empty, return the start value.\n" +"This function is intended specifically for use with numeric values and may\n" +"reject non-numeric types."); + +#define BUILTIN_SUM_METHODDEF \ + {"sum", (PyCFunction)builtin_sum, METH_VARARGS, builtin_sum__doc__}, + +static PyObject * +builtin_sum_impl(PyModuleDef *module, PyObject *iterable, PyObject *start); + +static PyObject * +builtin_sum(PyModuleDef *module, PyObject *args) { - PyObject *seq; - PyObject *result = NULL; - PyObject *temp, *item, *iter; + PyObject *return_value = NULL; + PyObject *iterable; + PyObject *start = NULL; + + if (!PyArg_UnpackTuple(args, "sum", + 1, 2, + &iterable, &start)) + goto exit; + return_value = builtin_sum_impl(module, iterable, start); + +exit: + return return_value; +} - if (!PyArg_UnpackTuple(args, "sum", 1, 2, &seq, &result)) - return NULL; +static PyObject * +builtin_sum_impl(PyModuleDef *module, PyObject *iterable, PyObject *start) +/*[clinic end generated code: output=b42652a0d5f64f6b input=90ae7a242cfcf025]*/ +{ + PyObject *result = start; + PyObject *temp, *item, *iter; - iter = PyObject_GetIter(seq); + iter = PyObject_GetIter(iterable); if (iter == NULL) return NULL; @@ -2022,7 +2774,6 @@ builtin_sum(PyObject *self, PyObject *args) Py_DECREF(iter); return NULL; } - Py_INCREF(result); } @@ -2148,62 +2899,126 @@ builtin_sum(PyObject *self, PyObject *args) return result; } -PyDoc_STRVAR(sum_doc, -"sum(iterable[, start]) -> value\n\ -\n\ -Return the sum of an iterable of numbers (NOT strings) plus the value\n\ -of parameter 'start' (which defaults to 0). When the iterable is\n\ -empty, return start."); +/*[clinic input] +isinstance as builtin_isinstance + + obj: 'O' + class_or_tuple: 'O' + / + +Return whether an object is an instance of a class or of a subclass thereof. + +A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to +check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B) +or ...`` etc. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_isinstance__doc__, +"isinstance($module, obj, class_or_tuple, /)\n" +"--\n" +"\n" +"Return whether an object is an instance of a class or of a subclass thereof.\n" +"\n" +"A tuple, as in ``isinstance(x, (A, B, ...))``, may be given as the target to\n" +"check against. This is equivalent to ``isinstance(x, A) or isinstance(x, B)\n" +"or ...`` etc."); + +#define BUILTIN_ISINSTANCE_METHODDEF \ + {"isinstance", (PyCFunction)builtin_isinstance, METH_VARARGS, builtin_isinstance__doc__}, + +static PyObject * +builtin_isinstance_impl(PyModuleDef *module, PyObject *obj, PyObject *class_or_tuple); static PyObject * -builtin_isinstance(PyObject *self, PyObject *args) +builtin_isinstance(PyModuleDef *module, PyObject *args) { - PyObject *inst; - PyObject *cls; - int retval; + PyObject *return_value = NULL; + PyObject *obj; + PyObject *class_or_tuple; + + if (!PyArg_UnpackTuple(args, "isinstance", + 2, 2, + &obj, &class_or_tuple)) + goto exit; + return_value = builtin_isinstance_impl(module, obj, class_or_tuple); + +exit: + return return_value; +} - if (!PyArg_UnpackTuple(args, "isinstance", 2, 2, &inst, &cls)) - return NULL; +static PyObject * +builtin_isinstance_impl(PyModuleDef *module, PyObject *obj, PyObject *class_or_tuple) +/*[clinic end generated code: output=847df57fef8ddea7 input=cf9eb0ad6bb9bad6]*/ +{ + int retval; - retval = PyObject_IsInstance(inst, cls); + retval = PyObject_IsInstance(obj, class_or_tuple); if (retval < 0) return NULL; return PyBool_FromLong(retval); } -PyDoc_STRVAR(isinstance_doc, -"isinstance(object, class-or-type-or-tuple) -> bool\n\ -\n\ -Return whether an object is an instance of a class or of a subclass thereof.\n\ -With a type as second argument, return whether that is the object's type.\n\ -The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for\n\ -isinstance(x, A) or isinstance(x, B) or ... (etc.)."); +/*[clinic input] +issubclass as builtin_issubclass + + cls: 'O' + class_or_tuple: 'O' + / + +Return whether 'cls' is a derived from another class or is the same class. + +A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to +check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B) +or ...`` etc. +[clinic start generated code]*/ + +PyDoc_STRVAR(builtin_issubclass__doc__, +"issubclass($module, cls, class_or_tuple, /)\n" +"--\n" +"\n" +"Return whether \'cls\' is a derived from another class or is the same class.\n" +"\n" +"A tuple, as in ``issubclass(x, (A, B, ...))``, may be given as the target to\n" +"check against. This is equivalent to ``issubclass(x, A) or issubclass(x, B)\n" +"or ...`` etc."); + +#define BUILTIN_ISSUBCLASS_METHODDEF \ + {"issubclass", (PyCFunction)builtin_issubclass, METH_VARARGS, builtin_issubclass__doc__}, static PyObject * -builtin_issubclass(PyObject *self, PyObject *args) +builtin_issubclass_impl(PyModuleDef *module, PyObject *cls, PyObject *class_or_tuple); + +static PyObject * +builtin_issubclass(PyModuleDef *module, PyObject *args) { - PyObject *derived; + PyObject *return_value = NULL; PyObject *cls; - int retval; + PyObject *class_or_tuple; - if (!PyArg_UnpackTuple(args, "issubclass", 2, 2, &derived, &cls)) - return NULL; + if (!PyArg_UnpackTuple(args, "issubclass", + 2, 2, + &cls, &class_or_tuple)) + goto exit; + return_value = builtin_issubclass_impl(module, cls, class_or_tuple); + +exit: + return return_value; +} - retval = PyObject_IsSubclass(derived, cls); +static PyObject * +builtin_issubclass_impl(PyModuleDef *module, PyObject *cls, PyObject *class_or_tuple) +/*[clinic end generated code: output=a0f8c03692e35474 input=923d03fa41fc352a]*/ +{ + int retval; + + retval = PyObject_IsSubclass(cls, class_or_tuple); if (retval < 0) return NULL; return PyBool_FromLong(retval); } -PyDoc_STRVAR(issubclass_doc, -"issubclass(C, B) -> bool\n\ -\n\ -Return whether class C is a subclass (i.e., a derived class) of class B.\n\ -When using a tuple as the second argument issubclass(X, (A, B, ...)),\n\ -is a shortcut for issubclass(X, A) or issubclass(X, B) or ... (etc.)."); - typedef struct { PyObject_HEAD @@ -2398,44 +3213,44 @@ static PyMethodDef builtin_methods[] = { {"__build_class__", (PyCFunction)builtin___build_class__, METH_VARARGS | METH_KEYWORDS, build_class_doc}, {"__import__", (PyCFunction)builtin___import__, METH_VARARGS | METH_KEYWORDS, import_doc}, - {"abs", builtin_abs, METH_O, abs_doc}, - {"all", builtin_all, METH_O, all_doc}, - {"any", builtin_any, METH_O, any_doc}, - {"ascii", builtin_ascii, METH_O, ascii_doc}, - {"bin", builtin_bin, METH_O, bin_doc}, - {"callable", builtin_callable, METH_O, callable_doc}, - {"chr", builtin_chr, METH_VARARGS, chr_doc}, - {"compile", (PyCFunction)builtin_compile, METH_VARARGS | METH_KEYWORDS, compile_doc}, - {"delattr", builtin_delattr, METH_VARARGS, delattr_doc}, + BUILTIN_ABS_METHODDEF + BUILTIN_ALL_METHODDEF + BUILTIN_ANY_METHODDEF + BUILTIN_ASCII_METHODDEF + BUILTIN_BIN_METHODDEF + BUILTIN_CALLABLE_METHODDEF + BUILTIN_CHR_METHODDEF + BUILTIN_COMPILE_METHODDEF + BUILTIN_DELATTR_METHODDEF {"dir", builtin_dir, METH_VARARGS, dir_doc}, - {"divmod", builtin_divmod, METH_VARARGS, divmod_doc}, - {"eval", builtin_eval, METH_VARARGS, eval_doc}, - {"exec", builtin_exec, METH_VARARGS, exec_doc}, - {"format", builtin_format, METH_VARARGS, format_doc}, + BUILTIN_DIVMOD_METHODDEF + BUILTIN_EVAL_METHODDEF + BUILTIN_EXEC_METHODDEF + BUILTIN_FORMAT_METHODDEF {"getattr", builtin_getattr, METH_VARARGS, getattr_doc}, - {"globals", (PyCFunction)builtin_globals, METH_NOARGS, globals_doc}, - {"hasattr", builtin_hasattr, METH_VARARGS, hasattr_doc}, - {"hash", builtin_hash, METH_O, hash_doc}, - {"hex", builtin_hex, METH_O, hex_doc}, - {"id", builtin_id, METH_O, id_doc}, - {"input", builtin_input, METH_VARARGS, input_doc}, - {"isinstance", builtin_isinstance, METH_VARARGS, isinstance_doc}, - {"issubclass", builtin_issubclass, METH_VARARGS, issubclass_doc}, + BUILTIN_GLOBALS_METHODDEF + BUILTIN_HASATTR_METHODDEF + BUILTIN_HASH_METHODDEF + BUILTIN_HEX_METHODDEF + BUILTIN_ID_METHODDEF + BUILTIN_INPUT_METHODDEF + BUILTIN_ISINSTANCE_METHODDEF + BUILTIN_ISSUBCLASS_METHODDEF {"iter", builtin_iter, METH_VARARGS, iter_doc}, - {"len", builtin_len, METH_O, len_doc}, - {"locals", (PyCFunction)builtin_locals, METH_NOARGS, locals_doc}, + BUILTIN_LEN_METHODDEF + BUILTIN_LOCALS_METHODDEF {"max", (PyCFunction)builtin_max, METH_VARARGS | METH_KEYWORDS, max_doc}, {"min", (PyCFunction)builtin_min, METH_VARARGS | METH_KEYWORDS, min_doc}, {"next", (PyCFunction)builtin_next, METH_VARARGS, next_doc}, - {"oct", builtin_oct, METH_O, oct_doc}, - {"ord", builtin_ord, METH_O, ord_doc}, - {"pow", builtin_pow, METH_VARARGS, pow_doc}, + BUILTIN_OCT_METHODDEF + BUILTIN_ORD_METHODDEF + BUILTIN_POW_METHODDEF {"print", (PyCFunction)builtin_print, METH_VARARGS | METH_KEYWORDS, print_doc}, - {"repr", builtin_repr, METH_O, repr_doc}, + BUILTIN_REPR_METHODDEF {"round", (PyCFunction)builtin_round, METH_VARARGS | METH_KEYWORDS, round_doc}, - {"setattr", builtin_setattr, METH_VARARGS, setattr_doc}, - {"sorted", (PyCFunction)builtin_sorted, METH_VARARGS | METH_KEYWORDS, sorted_doc}, - {"sum", builtin_sum, METH_VARARGS, sum_doc}, + BUILTIN_SETATTR_METHODDEF + BUILTIN_SORTED_METHODDEF + BUILTIN_SUM_METHODDEF {"vars", builtin_vars, METH_VARARGS, vars_doc}, {NULL, NULL}, }; diff --git a/Python/ceval.c b/Python/ceval.c index 7656b8e..e09ff34 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1504,6 +1504,18 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) DISPATCH(); } + TARGET(BINARY_MATRIX_MULTIPLY) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_MatrixMultiply(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } + TARGET(BINARY_TRUE_DIVIDE) { PyObject *divisor = POP(); PyObject *dividend = TOP(); @@ -1694,6 +1706,18 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) DISPATCH(); } + TARGET(INPLACE_MATRIX_MULTIPLY) { + PyObject *right = POP(); + PyObject *left = TOP(); + PyObject *res = PyNumber_InPlaceMatrixMultiply(left, right); + Py_DECREF(left); + Py_DECREF(right); + SET_TOP(res); + if (res == NULL) + goto error; + DISPATCH(); + } + TARGET(INPLACE_TRUE_DIVIDE) { PyObject *divisor = POP(); PyObject *dividend = TOP(); @@ -3387,10 +3411,11 @@ too_many_positional(PyCodeObject *co, int given, int defcount, PyObject **fastlo PyEval_EvalFrame() and PyEval_EvalCodeEx() you will need to adjust the test in the if statements in Misc/gdbinit (pystack and pystackv). */ -PyObject * -PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals, +static PyObject * +_PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals, PyObject **args, int argcount, PyObject **kws, int kwcount, - PyObject **defs, int defcount, PyObject *kwdefs, PyObject *closure) + PyObject **defs, int defcount, PyObject *kwdefs, PyObject *closure, + PyObject *name, PyObject *qualname) { PyCodeObject* co = (PyCodeObject*)_co; PyFrameObject *f; @@ -3582,7 +3607,7 @@ PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals, /* Create a new generator that owns the ready to run frame * and return that as the value. */ - return PyGen_New(f); + return PyGen_NewWithQualName(f, name, qualname); } retval = PyEval_EvalFrameEx(f,0); @@ -3601,6 +3626,16 @@ fail: /* Jump here from prelude on failure */ return retval; } +PyObject * +PyEval_EvalCodeEx(PyObject *_co, PyObject *globals, PyObject *locals, + PyObject **args, int argcount, PyObject **kws, int kwcount, + PyObject **defs, int defcount, PyObject *kwdefs, PyObject *closure) +{ + return _PyEval_EvalCodeWithName(_co, globals, locals, + args, argcount, kws, kwcount, + defs, defcount, kwdefs, closure, + NULL, NULL); +} static PyObject * special_lookup(PyObject *o, _Py_Identifier *id) @@ -4299,6 +4334,8 @@ fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk) PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *kwdefs = PyFunction_GET_KW_DEFAULTS(func); + PyObject *name = ((PyFunctionObject *)func) -> func_name; + PyObject *qualname = ((PyFunctionObject *)func) -> func_qualname; PyObject **d = NULL; int nd = 0; @@ -4341,10 +4378,11 @@ fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk) d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } - return PyEval_EvalCodeEx((PyObject*)co, globals, - (PyObject *)NULL, (*pp_stack)-n, na, - (*pp_stack)-2*nk, nk, d, nd, kwdefs, - PyFunction_GET_CLOSURE(func)); + return _PyEval_EvalCodeWithName((PyObject*)co, globals, + (PyObject *)NULL, (*pp_stack)-n, na, + (*pp_stack)-2*nk, nk, d, nd, kwdefs, + PyFunction_GET_CLOSURE(func), + name, qualname); } static PyObject * @@ -4658,11 +4696,29 @@ static PyObject * import_from(PyObject *v, PyObject *name) { PyObject *x; + _Py_IDENTIFIER(__name__); + PyObject *fullmodname, *pkgname; x = PyObject_GetAttr(v, name); - if (x == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) { + if (x != NULL || !PyErr_ExceptionMatches(PyExc_AttributeError)) + return x; + /* Issue #17636: in case this failed because of a circular relative + import, try to fallback on reading the module directly from + sys.modules. */ + PyErr_Clear(); + pkgname = _PyObject_GetAttrId(v, &PyId___name__); + if (pkgname == NULL) + return NULL; + fullmodname = PyUnicode_FromFormat("%U.%U", pkgname, name); + Py_DECREF(pkgname); + if (fullmodname == NULL) + return NULL; + x = PyDict_GetItem(PyImport_GetModuleDict(), fullmodname); + if (x == NULL) PyErr_Format(PyExc_ImportError, "cannot import name %R", name); - } + else + Py_INCREF(x); + Py_DECREF(fullmodname); return x; } diff --git a/Python/ceval_gil.h b/Python/ceval_gil.h index 2702d5c..4db56b6 100644 --- a/Python/ceval_gil.h +++ b/Python/ceval_gil.h @@ -191,7 +191,7 @@ static void drop_gil(PyThreadState *tstate) if (_Py_atomic_load_relaxed(&gil_drop_request) && tstate != NULL) { MUTEX_LOCK(switch_mutex); /* Not switched yet => wait */ - if (_Py_atomic_load_relaxed(&gil_last_holder) == tstate) { + if ((PyThreadState*)_Py_atomic_load_relaxed(&gil_last_holder) == tstate) { RESET_GIL_DROP_REQUEST(); /* NOTE: if COND_WAIT does not atomically start waiting when releasing the mutex, another thread can run through, take @@ -239,7 +239,7 @@ _ready: _Py_atomic_store_relaxed(&gil_locked, 1); _Py_ANNOTATE_RWLOCK_ACQUIRED(&gil_locked, /*is_write=*/1); - if (tstate != _Py_atomic_load_relaxed(&gil_last_holder)) { + if (tstate != (PyThreadState*)_Py_atomic_load_relaxed(&gil_last_holder)) { _Py_atomic_store_relaxed(&gil_last_holder, tstate); ++gil_switch_number; } diff --git a/Python/clinic/import.c.h b/Python/clinic/import.c.h new file mode 100644 index 0000000..7618577 --- /dev/null +++ b/Python/clinic/import.c.h @@ -0,0 +1,323 @@ +/*[clinic input] +preserve +[clinic start generated code]*/ + +PyDoc_STRVAR(_imp_lock_held__doc__, +"lock_held($module, /)\n" +"--\n" +"\n" +"Return True if the import lock is currently held, else False.\n" +"\n" +"On platforms without threads, return False."); + +#define _IMP_LOCK_HELD_METHODDEF \ + {"lock_held", (PyCFunction)_imp_lock_held, METH_NOARGS, _imp_lock_held__doc__}, + +static PyObject * +_imp_lock_held_impl(PyModuleDef *module); + +static PyObject * +_imp_lock_held(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) +{ + return _imp_lock_held_impl(module); +} + +PyDoc_STRVAR(_imp_acquire_lock__doc__, +"acquire_lock($module, /)\n" +"--\n" +"\n" +"Acquires the interpreter\'s import lock for the current thread.\n" +"\n" +"This lock should be used by import hooks to ensure thread-safety when importing\n" +"modules. On platforms without threads, this function does nothing."); + +#define _IMP_ACQUIRE_LOCK_METHODDEF \ + {"acquire_lock", (PyCFunction)_imp_acquire_lock, METH_NOARGS, _imp_acquire_lock__doc__}, + +static PyObject * +_imp_acquire_lock_impl(PyModuleDef *module); + +static PyObject * +_imp_acquire_lock(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) +{ + return _imp_acquire_lock_impl(module); +} + +PyDoc_STRVAR(_imp_release_lock__doc__, +"release_lock($module, /)\n" +"--\n" +"\n" +"Release the interpreter\'s import lock.\n" +"\n" +"On platforms without threads, this function does nothing."); + +#define _IMP_RELEASE_LOCK_METHODDEF \ + {"release_lock", (PyCFunction)_imp_release_lock, METH_NOARGS, _imp_release_lock__doc__}, + +static PyObject * +_imp_release_lock_impl(PyModuleDef *module); + +static PyObject * +_imp_release_lock(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) +{ + return _imp_release_lock_impl(module); +} + +PyDoc_STRVAR(_imp__fix_co_filename__doc__, +"_fix_co_filename($module, code, path, /)\n" +"--\n" +"\n" +"Changes code.co_filename to specify the passed-in file path.\n" +"\n" +" code\n" +" Code object to change.\n" +" path\n" +" File path to use."); + +#define _IMP__FIX_CO_FILENAME_METHODDEF \ + {"_fix_co_filename", (PyCFunction)_imp__fix_co_filename, METH_VARARGS, _imp__fix_co_filename__doc__}, + +static PyObject * +_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code, PyObject *path); + +static PyObject * +_imp__fix_co_filename(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyCodeObject *code; + PyObject *path; + + if (!PyArg_ParseTuple(args, + "O!U:_fix_co_filename", + &PyCode_Type, &code, &path)) + goto exit; + return_value = _imp__fix_co_filename_impl(module, code, path); + +exit: + return return_value; +} + +PyDoc_STRVAR(_imp_extension_suffixes__doc__, +"extension_suffixes($module, /)\n" +"--\n" +"\n" +"Returns the list of file suffixes used to identify extension modules."); + +#define _IMP_EXTENSION_SUFFIXES_METHODDEF \ + {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__}, + +static PyObject * +_imp_extension_suffixes_impl(PyModuleDef *module); + +static PyObject * +_imp_extension_suffixes(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) +{ + return _imp_extension_suffixes_impl(module); +} + +PyDoc_STRVAR(_imp_init_builtin__doc__, +"init_builtin($module, name, /)\n" +"--\n" +"\n" +"Initializes a built-in module."); + +#define _IMP_INIT_BUILTIN_METHODDEF \ + {"init_builtin", (PyCFunction)_imp_init_builtin, METH_VARARGS, _imp_init_builtin__doc__}, + +static PyObject * +_imp_init_builtin_impl(PyModuleDef *module, PyObject *name); + +static PyObject * +_imp_init_builtin(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + + if (!PyArg_ParseTuple(args, + "U:init_builtin", + &name)) + goto exit; + return_value = _imp_init_builtin_impl(module, name); + +exit: + return return_value; +} + +PyDoc_STRVAR(_imp_init_frozen__doc__, +"init_frozen($module, name, /)\n" +"--\n" +"\n" +"Initializes a frozen module."); + +#define _IMP_INIT_FROZEN_METHODDEF \ + {"init_frozen", (PyCFunction)_imp_init_frozen, METH_VARARGS, _imp_init_frozen__doc__}, + +static PyObject * +_imp_init_frozen_impl(PyModuleDef *module, PyObject *name); + +static PyObject * +_imp_init_frozen(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + + if (!PyArg_ParseTuple(args, + "U:init_frozen", + &name)) + goto exit; + return_value = _imp_init_frozen_impl(module, name); + +exit: + return return_value; +} + +PyDoc_STRVAR(_imp_get_frozen_object__doc__, +"get_frozen_object($module, name, /)\n" +"--\n" +"\n" +"Create a code object for a frozen module."); + +#define _IMP_GET_FROZEN_OBJECT_METHODDEF \ + {"get_frozen_object", (PyCFunction)_imp_get_frozen_object, METH_VARARGS, _imp_get_frozen_object__doc__}, + +static PyObject * +_imp_get_frozen_object_impl(PyModuleDef *module, PyObject *name); + +static PyObject * +_imp_get_frozen_object(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + + if (!PyArg_ParseTuple(args, + "U:get_frozen_object", + &name)) + goto exit; + return_value = _imp_get_frozen_object_impl(module, name); + +exit: + return return_value; +} + +PyDoc_STRVAR(_imp_is_frozen_package__doc__, +"is_frozen_package($module, name, /)\n" +"--\n" +"\n" +"Returns True if the module name is of a frozen package."); + +#define _IMP_IS_FROZEN_PACKAGE_METHODDEF \ + {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_VARARGS, _imp_is_frozen_package__doc__}, + +static PyObject * +_imp_is_frozen_package_impl(PyModuleDef *module, PyObject *name); + +static PyObject * +_imp_is_frozen_package(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + + if (!PyArg_ParseTuple(args, + "U:is_frozen_package", + &name)) + goto exit; + return_value = _imp_is_frozen_package_impl(module, name); + +exit: + return return_value; +} + +PyDoc_STRVAR(_imp_is_builtin__doc__, +"is_builtin($module, name, /)\n" +"--\n" +"\n" +"Returns True if the module name corresponds to a built-in module."); + +#define _IMP_IS_BUILTIN_METHODDEF \ + {"is_builtin", (PyCFunction)_imp_is_builtin, METH_VARARGS, _imp_is_builtin__doc__}, + +static PyObject * +_imp_is_builtin_impl(PyModuleDef *module, PyObject *name); + +static PyObject * +_imp_is_builtin(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + + if (!PyArg_ParseTuple(args, + "U:is_builtin", + &name)) + goto exit; + return_value = _imp_is_builtin_impl(module, name); + +exit: + return return_value; +} + +PyDoc_STRVAR(_imp_is_frozen__doc__, +"is_frozen($module, name, /)\n" +"--\n" +"\n" +"Returns True if the module name corresponds to a frozen module."); + +#define _IMP_IS_FROZEN_METHODDEF \ + {"is_frozen", (PyCFunction)_imp_is_frozen, METH_VARARGS, _imp_is_frozen__doc__}, + +static PyObject * +_imp_is_frozen_impl(PyModuleDef *module, PyObject *name); + +static PyObject * +_imp_is_frozen(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + + if (!PyArg_ParseTuple(args, + "U:is_frozen", + &name)) + goto exit; + return_value = _imp_is_frozen_impl(module, name); + +exit: + return return_value; +} + +#if defined(HAVE_DYNAMIC_LOADING) + +PyDoc_STRVAR(_imp_load_dynamic__doc__, +"load_dynamic($module, name, path, file=None, /)\n" +"--\n" +"\n" +"Loads an extension module."); + +#define _IMP_LOAD_DYNAMIC_METHODDEF \ + {"load_dynamic", (PyCFunction)_imp_load_dynamic, METH_VARARGS, _imp_load_dynamic__doc__}, + +static PyObject * +_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path, PyObject *file); + +static PyObject * +_imp_load_dynamic(PyModuleDef *module, PyObject *args) +{ + PyObject *return_value = NULL; + PyObject *name; + PyObject *path; + PyObject *file = NULL; + + if (!PyArg_ParseTuple(args, + "UO&|O:load_dynamic", + &name, PyUnicode_FSDecoder, &path, &file)) + goto exit; + return_value = _imp_load_dynamic_impl(module, name, path, file); + +exit: + return return_value; +} + +#endif /* defined(HAVE_DYNAMIC_LOADING) */ + +#ifndef _IMP_LOAD_DYNAMIC_METHODDEF + #define _IMP_LOAD_DYNAMIC_METHODDEF +#endif /* !defined(_IMP_LOAD_DYNAMIC_METHODDEF) */ +/*[clinic end generated code: output=087a1f22e9febcc7 input=a9049054013a1b77]*/ diff --git a/Python/codecs.c b/Python/codecs.c index 6849c0f..a558859 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -9,6 +9,7 @@ Copyright (c) Corporation for National Research Initiatives. ------------------------------------------------------------------------ */ #include "Python.h" +#include "ucnhash.h" #include <ctype.h> const char *Py_hexdigits = "0123456789abcdef"; @@ -863,6 +864,119 @@ PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc) PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc) { + PyObject *object; + Py_ssize_t i; + Py_ssize_t start; + Py_ssize_t end; + PyObject *res; + unsigned char *outp; + int ressize; + Py_UCS4 c; + + if (PyObject_IsInstance(exc, PyExc_UnicodeDecodeError)) { + unsigned char *p; + if (PyUnicodeDecodeError_GetStart(exc, &start)) + return NULL; + if (PyUnicodeDecodeError_GetEnd(exc, &end)) + return NULL; + if (!(object = PyUnicodeDecodeError_GetObject(exc))) + return NULL; + if (!(p = (unsigned char*)PyBytes_AsString(object))) { + Py_DECREF(object); + return NULL; + } + res = PyUnicode_New(4 * (end - start), 127); + if (res == NULL) { + Py_DECREF(object); + return NULL; + } + outp = PyUnicode_1BYTE_DATA(res); + for (i = start; i < end; i++, outp += 4) { + unsigned char c = p[i]; + outp[0] = '\\'; + outp[1] = 'x'; + outp[2] = Py_hexdigits[(c>>4)&0xf]; + outp[3] = Py_hexdigits[c&0xf]; + } + + assert(_PyUnicode_CheckConsistency(res, 1)); + Py_DECREF(object); + return Py_BuildValue("(Nn)", res, end); + } + if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) { + if (PyUnicodeEncodeError_GetStart(exc, &start)) + return NULL; + if (PyUnicodeEncodeError_GetEnd(exc, &end)) + return NULL; + if (!(object = PyUnicodeEncodeError_GetObject(exc))) + return NULL; + } + else if (PyObject_IsInstance(exc, PyExc_UnicodeTranslateError)) { + if (PyUnicodeTranslateError_GetStart(exc, &start)) + return NULL; + if (PyUnicodeTranslateError_GetEnd(exc, &end)) + return NULL; + if (!(object = PyUnicodeTranslateError_GetObject(exc))) + return NULL; + } + else { + wrong_exception_type(exc); + return NULL; + } + + if (end - start > PY_SSIZE_T_MAX / (1+1+8)) + end = start + PY_SSIZE_T_MAX / (1+1+8); + for (i = start, ressize = 0; i < end; ++i) { + /* object is guaranteed to be "ready" */ + c = PyUnicode_READ_CHAR(object, i); + if (c >= 0x10000) { + ressize += 1+1+8; + } + else if (c >= 0x100) { + ressize += 1+1+4; + } + else + ressize += 1+1+2; + } + res = PyUnicode_New(ressize, 127); + if (res == NULL) { + Py_DECREF(object); + return NULL; + } + outp = PyUnicode_1BYTE_DATA(res); + for (i = start; i < end; ++i) { + c = PyUnicode_READ_CHAR(object, i); + *outp++ = '\\'; + if (c >= 0x00010000) { + *outp++ = 'U'; + *outp++ = Py_hexdigits[(c>>28)&0xf]; + *outp++ = Py_hexdigits[(c>>24)&0xf]; + *outp++ = Py_hexdigits[(c>>20)&0xf]; + *outp++ = Py_hexdigits[(c>>16)&0xf]; + *outp++ = Py_hexdigits[(c>>12)&0xf]; + *outp++ = Py_hexdigits[(c>>8)&0xf]; + } + else if (c >= 0x100) { + *outp++ = 'u'; + *outp++ = Py_hexdigits[(c>>12)&0xf]; + *outp++ = Py_hexdigits[(c>>8)&0xf]; + } + else + *outp++ = 'x'; + *outp++ = Py_hexdigits[(c>>4)&0xf]; + *outp++ = Py_hexdigits[c&0xf]; + } + + assert(_PyUnicode_CheckConsistency(res, 1)); + Py_DECREF(object); + return Py_BuildValue("(Nn)", res, end); +} + +static _PyUnicode_Name_CAPI *ucnhash_CAPI = NULL; +static int ucnhash_initialized = 0; + +PyObject *PyCodec_NameReplaceErrors(PyObject *exc) +{ if (PyObject_IsInstance(exc, PyExc_UnicodeEncodeError)) { PyObject *restuple; PyObject *object; @@ -872,36 +986,57 @@ PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc) PyObject *res; unsigned char *outp; Py_ssize_t ressize; + int replsize; Py_UCS4 c; + char buffer[256]; /* NAME_MAXLEN */ if (PyUnicodeEncodeError_GetStart(exc, &start)) return NULL; if (PyUnicodeEncodeError_GetEnd(exc, &end)) return NULL; if (!(object = PyUnicodeEncodeError_GetObject(exc))) return NULL; - if (end - start > PY_SSIZE_T_MAX / (1+1+8)) - end = start + PY_SSIZE_T_MAX / (1+1+8); + if (!ucnhash_initialized) { + /* load the unicode data module */ + ucnhash_CAPI = (_PyUnicode_Name_CAPI *)PyCapsule_Import( + PyUnicodeData_CAPSULE_NAME, 1); + ucnhash_initialized = 1; + } for (i = start, ressize = 0; i < end; ++i) { /* object is guaranteed to be "ready" */ c = PyUnicode_READ_CHAR(object, i); - if (c >= 0x10000) { - ressize += 1+1+8; + if (ucnhash_CAPI && + ucnhash_CAPI->getname(NULL, c, buffer, sizeof(buffer), 1)) { + replsize = 1+1+1+strlen(buffer)+1; + } + else if (c >= 0x10000) { + replsize = 1+1+8; } else if (c >= 0x100) { - ressize += 1+1+4; + replsize = 1+1+4; } else - ressize += 1+1+2; + replsize = 1+1+2; + if (ressize > PY_SSIZE_T_MAX - replsize) + break; + ressize += replsize; } + end = i; res = PyUnicode_New(ressize, 127); - if (res == NULL) { - Py_DECREF(object); + if (res==NULL) return NULL; - } for (i = start, outp = PyUnicode_1BYTE_DATA(res); i < end; ++i) { c = PyUnicode_READ_CHAR(object, i); *outp++ = '\\'; + if (ucnhash_CAPI && + ucnhash_CAPI->getname(NULL, c, buffer, sizeof(buffer), 1)) { + *outp++ = 'N'; + *outp++ = '{'; + strcpy((char *)outp, buffer); + outp += strlen(buffer); + *outp++ = '}'; + continue; + } if (c >= 0x00010000) { *outp++ = 'U'; *outp++ = Py_hexdigits[(c>>28)&0xf]; @@ -922,6 +1057,7 @@ PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc) *outp++ = Py_hexdigits[c&0xf]; } + assert(outp == PyUnicode_1BYTE_DATA(res) + ressize); assert(_PyUnicode_CheckConsistency(res, 1)); restuple = Py_BuildValue("(Nn)", res, end); Py_DECREF(object); @@ -933,6 +1069,7 @@ PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc) } } +#define ENC_UNKNOWN -1 #define ENC_UTF8 0 #define ENC_UTF16BE 1 #define ENC_UTF16LE 2 @@ -948,7 +1085,11 @@ get_standard_encoding(const char *encoding, int *bytelength) encoding += 3; if (*encoding == '-' || *encoding == '_' ) encoding++; - if (encoding[0] == '1' && encoding[1] == '6') { + if (encoding[0] == '8' && encoding[1] == '\0') { + *bytelength = 3; + return ENC_UTF8; + } + else if (encoding[0] == '1' && encoding[1] == '6') { encoding += 2; *bytelength = 2; if (*encoding == '\0') { @@ -987,9 +1128,11 @@ get_standard_encoding(const char *encoding, int *bytelength) } } } - /* utf-8 */ - *bytelength = 3; - return ENC_UTF8; + else if (strcmp(encoding, "CP_UTF8") == 0) { + *bytelength = 3; + return ENC_UTF8; + } + return ENC_UNKNOWN; } /* This handler is declared static until someone demonstrates @@ -1026,6 +1169,12 @@ PyCodec_SurrogatePassErrors(PyObject *exc) } code = get_standard_encoding(encoding, &bytelength); Py_DECREF(encode); + if (code == ENC_UNKNOWN) { + /* Not supported, fail with original exception */ + PyErr_SetObject(PyExceptionInstance_Class(exc), exc); + Py_DECREF(object); + return NULL; + } if (end - start > PY_SSIZE_T_MAX / bytelength) end = start + PY_SSIZE_T_MAX / bytelength; @@ -1102,6 +1251,12 @@ PyCodec_SurrogatePassErrors(PyObject *exc) } code = get_standard_encoding(encoding, &bytelength); Py_DECREF(encode); + if (code == ENC_UNKNOWN) { + /* Not supported, fail with original exception */ + PyErr_SetObject(PyExceptionInstance_Class(exc), exc); + Py_DECREF(object); + return NULL; + } /* Try decoding a single surrogate character. If there are more, let the codec call us again. */ @@ -1257,6 +1412,11 @@ static PyObject *backslashreplace_errors(PyObject *self, PyObject *exc) return PyCodec_BackslashReplaceErrors(exc); } +static PyObject *namereplace_errors(PyObject *self, PyObject *exc) +{ + return PyCodec_NameReplaceErrors(exc); +} + static PyObject *surrogatepass_errors(PyObject *self, PyObject *exc) { return PyCodec_SurrogatePassErrors(exc); @@ -1322,8 +1482,19 @@ static int _PyCodecRegistry_Init(void) backslashreplace_errors, METH_O, PyDoc_STR("Implements the 'backslashreplace' error handling, " + "which replaces malformed data with a backslashed " + "escape sequence.") + } + }, + { + "namereplace", + { + "namereplace_errors", + namereplace_errors, + METH_O, + PyDoc_STR("Implements the 'namereplace' error handling, " "which replaces an unencodable character with a " - "backslashed escape sequence.") + "\\N{...} escape sequence.") } }, { diff --git a/Python/compile.c b/Python/compile.c index b07c156..97fe5c2 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -30,8 +30,6 @@ #include "symtable.h" #include "opcode.h" -int Py_OptimizeFlag = 0; - #define DEFAULT_BLOCK_SIZE 16 #define DEFAULT_BLOCKS 8 #define DEFAULT_CODE_SIZE 128 @@ -881,6 +879,7 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg) case BINARY_POWER: case BINARY_MULTIPLY: + case BINARY_MATRIX_MULTIPLY: case BINARY_MODULO: case BINARY_ADD: case BINARY_SUBTRACT: @@ -895,6 +894,7 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg) case INPLACE_ADD: case INPLACE_SUBTRACT: case INPLACE_MULTIPLY: + case INPLACE_MATRIX_MULTIPLY: case INPLACE_MODULO: return -1; case STORE_SUBSCR: @@ -1938,7 +1938,7 @@ compiler_if(struct compiler *c, stmt_ty s) } else if (constant == 1) { VISIT_SEQ(c, stmt, s->v.If.body); } else { - if (s->v.If.orelse) { + if (asdl_seq_LEN(s->v.If.orelse)) { next = compiler_new_block(c); if (next == NULL) return 0; @@ -1948,8 +1948,8 @@ compiler_if(struct compiler *c, stmt_ty s) VISIT(c, expr, s->v.If.test); ADDOP_JABS(c, POP_JUMP_IF_FALSE, next); VISIT_SEQ(c, stmt, s->v.If.body); - ADDOP_JREL(c, JUMP_FORWARD, end); - if (s->v.If.orelse) { + if (asdl_seq_LEN(s->v.If.orelse)) { + ADDOP_JREL(c, JUMP_FORWARD, end); compiler_use_next_block(c, next); VISIT_SEQ(c, stmt, s->v.If.orelse); } @@ -2624,6 +2624,8 @@ binop(struct compiler *c, operator_ty op) return BINARY_SUBTRACT; case Mult: return BINARY_MULTIPLY; + case MatMult: + return BINARY_MATRIX_MULTIPLY; case Div: return BINARY_TRUE_DIVIDE; case Mod: @@ -2688,6 +2690,8 @@ inplace_binop(struct compiler *c, operator_ty op) return INPLACE_SUBTRACT; case Mult: return INPLACE_MULTIPLY; + case MatMult: + return INPLACE_MATRIX_MULTIPLY; case Div: return INPLACE_TRUE_DIVIDE; case Mod: diff --git a/Python/dynload_win.c b/Python/dynload_win.c index ffcf0ee..9ed9eea 100644 --- a/Python/dynload_win.c +++ b/Python/dynload_win.c @@ -9,6 +9,7 @@ #include <ctype.h> #include "importdl.h" +#include "patchlevel.h" #include <windows.h> // "activation context" magic - see dl_nt.c... @@ -17,16 +18,28 @@ extern ULONG_PTR _Py_ActivateActCtx(); void _Py_DeactivateActCtx(ULONG_PTR cookie); #endif -const char *_PyImport_DynLoadFiletab[] = { #ifdef _DEBUG - "_d.pyd", +#define PYD_DEBUG_SUFFIX "_d" +#else +#define PYD_DEBUG_SUFFIX "" +#endif + +#define STRINGIZE2(x) #x +#define STRINGIZE(x) STRINGIZE2(x) +#ifdef PYD_PLATFORM_TAG +#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) "-" PYD_PLATFORM_TAG ".pyd" #else - ".pyd", +#define PYD_TAGGED_SUFFIX PYD_DEBUG_SUFFIX ".cp" STRINGIZE(PY_MAJOR_VERSION) STRINGIZE(PY_MINOR_VERSION) ".pyd" #endif + +#define PYD_UNTAGGED_SUFFIX PYD_DEBUG_SUFFIX ".pyd" + +const char *_PyImport_DynLoadFiletab[] = { + PYD_TAGGED_SUFFIX, + PYD_UNTAGGED_SUFFIX, NULL }; - /* Case insensitive string compare, to avoid any dependencies on particular C RTL implementations */ diff --git a/Python/errors.c b/Python/errors.c index a980481..940aef3 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -773,19 +773,11 @@ PyErr_BadInternalCall(void) #define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__) - PyObject * -PyErr_Format(PyObject *exception, const char *format, ...) +PyErr_FormatV(PyObject *exception, const char *format, va_list vargs) { - va_list vargs; PyObject* string; -#ifdef HAVE_STDARG_PROTOTYPES - va_start(vargs, format); -#else - 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 */ @@ -795,11 +787,24 @@ PyErr_Format(PyObject *exception, const char *format, ...) string = PyUnicode_FromFormatV(format, vargs); PyErr_SetObject(exception, string); Py_XDECREF(string); - va_end(vargs); return NULL; } +PyObject * +PyErr_Format(PyObject *exception, const char *format, ...) +{ + va_list vargs; +#ifdef HAVE_STDARG_PROTOTYPES + va_start(vargs, format); +#else + va_start(vargs); +#endif + PyErr_FormatV(exception, format, vargs); + va_end(vargs); + return NULL; +} + PyObject * PyErr_NewException(const char *name, PyObject *base, PyObject *dict) diff --git a/Python/fileutils.c b/Python/fileutils.c index 901a746..c5c8d4e 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -82,11 +82,11 @@ extern int _Py_normalize_encoding(const char *, char *, size_t); Values of force_ascii: - 1: the workaround is used: _Py_wchar2char() uses - encode_ascii_surrogateescape() and _Py_char2wchar() uses + 1: the workaround is used: Py_EncodeLocale() uses + encode_ascii_surrogateescape() and Py_DecodeLocale() uses decode_ascii_surrogateescape() - 0: the workaround is not used: _Py_wchar2char() uses wcstombs() and - _Py_char2wchar() uses mbstowcs() + 0: the workaround is not used: Py_EncodeLocale() uses wcstombs() and + Py_DecodeLocale() uses mbstowcs() -1: unknown, need to call check_force_ascii() to get the value */ static int force_ascii = -1; @@ -244,24 +244,26 @@ decode_ascii_surrogateescape(const char *arg, size_t *size) /* Decode a byte string from the locale encoding with the - surrogateescape error handler (undecodable bytes are decoded as characters - in range U+DC80..U+DCFF). If a byte sequence can be decoded as a surrogate + surrogateescape error handler: undecodable bytes are decoded as characters + in range U+DC80..U+DCFF. If a byte sequence can be decoded as a surrogate character, escape the bytes using the surrogateescape error handler instead of decoding them. - 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_RawFree() to free the memory. If size is not NULL, write the number of + wide characters excluding the null character into *size - Return a pointer to a newly allocated wide character string (use - 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 - error. + Return NULL on decoding error or memory allocation error. If *size* is not + NULL, *size is set to (size_t)-1 on memory error or set to (size_t)-2 on + decoding error. - Conversion errors should never happen, unless there is a bug in the C - library. */ + Decoding errors should never happen, unless there is a bug in the C + library. + + Use the Py_EncodeLocale() function to encode the character string back to a + byte string. */ wchar_t* -_Py_char2wchar(const char* arg, size_t *size) +Py_DecodeLocale(const char* arg, size_t *size) { #ifdef __APPLE__ wchar_t *wstr; @@ -399,19 +401,20 @@ oom: #endif /* __APPLE__ */ } -/* Encode a (wide) character string to the locale encoding with the - surrogateescape error handler (characters in range U+DC80..U+DCFF are - converted to bytes 0x80..0xFF). +/* Encode a wide character string to the locale encoding with the + surrogateescape error handler: surrogate characters in the range + U+DC80..U+DCFF are converted to bytes 0x80..0xFF. - This function is the reverse of _Py_char2wchar(). + Return a pointer to a newly allocated byte string, use PyMem_Free() to free + the memory. Return NULL on encoding or memory allocation error. - Return a pointer to a newly allocated byte string (use PyMem_Free() to free - the memory), or NULL on encoding or memory allocation error. + If error_pos is not NULL, *error_pos is set to the index of the invalid + character on encoding error, or set to (size_t)-1 otherwise. - If error_pos is not NULL: *error_pos is the index of the invalid character - on encoding error, or (size_t)-1 otherwise. */ + Use the Py_DecodeLocale() function to decode the bytes string back to a wide + character string. */ char* -_Py_wchar2char(const wchar_t *text, size_t *error_pos) +Py_EncodeLocale(const wchar_t *text, size_t *error_pos) { #ifdef __APPLE__ Py_ssize_t len; @@ -530,7 +533,7 @@ _Py_wstat(const wchar_t* path, struct stat *buf) { int err; char *fname; - fname = _Py_wchar2char(path, NULL); + fname = Py_EncodeLocale(path, NULL); if (fname == NULL) { errno = EINVAL; return -1; @@ -814,7 +817,7 @@ _Py_wfopen(const wchar_t *path, const wchar_t *mode) errno = EINVAL; return NULL; } - cpath = _Py_wchar2char(path, NULL); + cpath = Py_EncodeLocale(path, NULL); if (cpath == NULL) return NULL; f = fopen(cpath, cmode); @@ -905,7 +908,7 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz) int res; size_t r1; - cpath = _Py_wchar2char(path, NULL); + cpath = Py_EncodeLocale(path, NULL); if (cpath == NULL) { errno = EINVAL; return -1; @@ -919,7 +922,7 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz) return -1; } cbuf[res] = '\0'; /* buf will be null terminated */ - wbuf = _Py_char2wchar(cbuf, &r1); + wbuf = Py_DecodeLocale(cbuf, &r1); if (wbuf == NULL) { errno = EINVAL; return -1; @@ -950,7 +953,7 @@ _Py_wrealpath(const wchar_t *path, wchar_t *wresolved_path; char *res; size_t r; - cpath = _Py_wchar2char(path, NULL); + cpath = Py_EncodeLocale(path, NULL); if (cpath == NULL) { errno = EINVAL; return NULL; @@ -960,7 +963,7 @@ _Py_wrealpath(const wchar_t *path, if (res == NULL) return NULL; - wresolved_path = _Py_char2wchar(cresolved_path, &r); + wresolved_path = Py_DecodeLocale(cresolved_path, &r); if (wresolved_path == NULL) { errno = EINVAL; return NULL; @@ -993,7 +996,7 @@ _Py_wgetcwd(wchar_t *buf, size_t size) if (getcwd(fname, Py_ARRAY_LENGTH(fname)) == NULL) return NULL; - wname = _Py_char2wchar(fname, &len); + wname = Py_DecodeLocale(fname, &len); if (wname == NULL) return NULL; if (size <= len) { @@ -1075,3 +1078,56 @@ _Py_dup(int fd) return fd; } +#ifndef MS_WINDOWS +/* Get the blocking mode of the file descriptor. + Return 0 if the O_NONBLOCK flag is set, 1 if the flag is cleared, + raise an exception and return -1 on error. */ +int +_Py_get_blocking(int fd) +{ + int flags = fcntl(fd, F_GETFL, 0); + if (flags < 0) { + PyErr_SetFromErrno(PyExc_OSError); + return -1; + } + + return !(flags & O_NONBLOCK); +} + +/* Set the blocking mode of the specified file descriptor. + + Set the O_NONBLOCK flag if blocking is False, clear the O_NONBLOCK flag + otherwise. + + Return 0 on success, raise an exception and return -1 on error. */ +int +_Py_set_blocking(int fd, int blocking) +{ +#if defined(HAVE_SYS_IOCTL_H) && defined(FIONBIO) + int arg = !blocking; + if (ioctl(fd, FIONBIO, &arg) < 0) + goto error; +#else + int flags, res; + + flags = fcntl(fd, F_GETFL, 0); + if (flags < 0) + goto error; + + if (blocking) + flags = flags & (~O_NONBLOCK); + else + flags = flags | O_NONBLOCK; + + res = fcntl(fd, F_SETFL, flags); + if (res < 0) + goto error; +#endif + return 0; + +error: + PyErr_SetFromErrno(PyExc_OSError); + return -1; +} +#endif + diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c index e3a8149..056bb76 100644 --- a/Python/formatter_unicode.c +++ b/Python/formatter_unicode.c @@ -846,6 +846,13 @@ format_long_internal(PyObject *value, const InternalFormatSpec *format, " format specifier 'c'"); goto done; } + /* error to request alternate format */ + if (format->alternate) { + PyErr_SetString(PyExc_ValueError, + "Alternate form (#) not allowed with integer" + " format specifier 'c'"); + goto done; + } /* taken from unicodeobject.c formatchar() */ /* Integer input truncated to a character */ diff --git a/Python/frozenmain.c b/Python/frozenmain.c index b05c94a..de8bd35 100644 --- a/Python/frozenmain.c +++ b/Python/frozenmain.c @@ -54,7 +54,7 @@ Py_FrozenMain(int argc, char **argv) setlocale(LC_ALL, ""); for (i = 0; i < argc; i++) { - argv_copy[i] = _Py_char2wchar(argv[i], NULL); + argv_copy[i] = Py_DecodeLocale(argv[i], NULL); argv_copy2[i] = argv_copy[i]; if (!argv_copy[i]) { fprintf(stderr, "Unable to decode the command line argument #%i\n", diff --git a/Python/getargs.c b/Python/getargs.c index 3f47b21..f0f8e39 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -872,10 +872,10 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, STORE_SIZE(count); format++; } else { - if (strlen(*p) != count) - return converterr( - "bytes without null bytes", - arg, msgbuf, bufsize); + if (strlen(*p) != (size_t)count) { + PyErr_SetString(PyExc_ValueError, "embedded null byte"); + RETURN_ERR_OCCURRED; + } } break; } @@ -948,16 +948,15 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, if (sarg == NULL) return converterr(CONV_UNICODE, arg, msgbuf, bufsize); + if (strlen(sarg) != (size_t)len) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + RETURN_ERR_OCCURRED; + } *p = sarg; } else return converterr(c == 'z' ? "str or None" : "str", arg, msgbuf, bufsize); - if (*p != NULL && sarg != NULL && (Py_ssize_t) strlen(*p) != len) - return converterr( - c == 'z' ? "str without null characters or None" - : "str without null characters", - arg, msgbuf, bufsize); } break; } @@ -994,10 +993,10 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, *p = PyUnicode_AsUnicodeAndSize(arg, &len); if (*p == NULL) RETURN_ERR_OCCURRED; - if (Py_UNICODE_strlen(*p) != len) - return converterr( - "str without null characters or None", - arg, msgbuf, bufsize); + if (Py_UNICODE_strlen(*p) != (size_t)len) { + PyErr_SetString(PyExc_ValueError, "embedded null character"); + RETURN_ERR_OCCURRED; + } } else return converterr(c == 'Z' ? "str or None" : "str", arg, msgbuf, bufsize); @@ -1245,7 +1244,8 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, supports it directly. */ if (PyObject_GetBuffer(arg, (Py_buffer*)p, PyBUF_WRITABLE) < 0) { PyErr_Clear(); - return converterr("read-write buffer", arg, msgbuf, bufsize); + return converterr("read-write bytes-like object", + arg, msgbuf, bufsize); } if (!PyBuffer_IsContiguous((Py_buffer*)p, 'C')) { PyBuffer_Release((Py_buffer*)p); @@ -1283,7 +1283,7 @@ convertbuffer(PyObject *arg, void **p, char **errmsg) *errmsg = NULL; *p = NULL; if (pb != NULL && pb->bf_releasebuffer != NULL) { - *errmsg = "read-only pinned buffer"; + *errmsg = "read-only bytes-like object"; return -1; } @@ -1299,7 +1299,7 @@ static int getbuffer(PyObject *arg, Py_buffer *view, char **errmsg) { if (PyObject_GetBuffer(arg, view, PyBUF_SIMPLE) != 0) { - *errmsg = "bytes or buffer"; + *errmsg = "bytes-like object"; return -1; } if (!PyBuffer_IsContiguous(view, 'C')) { diff --git a/Python/graminit.c b/Python/graminit.c index e04999b..9f79d59 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -476,7 +476,7 @@ static state states_16[3] = { {2, arcs_16_1}, {3, arcs_16_2}, }; -static arc arcs_17_0[12] = { +static arc arcs_17_0[13] = { {49, 1}, {50, 1}, {51, 1}, @@ -489,19 +489,20 @@ static arc arcs_17_0[12] = { {58, 1}, {59, 1}, {60, 1}, + {61, 1}, }; static arc arcs_17_1[1] = { {0, 1}, }; static state states_17[2] = { - {12, arcs_17_0}, + {13, arcs_17_0}, {1, arcs_17_1}, }; static arc arcs_18_0[1] = { - {61, 1}, + {62, 1}, }; static arc arcs_18_1[1] = { - {62, 2}, + {63, 2}, }; static arc arcs_18_2[1] = { {0, 2}, @@ -512,7 +513,7 @@ static state states_18[3] = { {1, arcs_18_2}, }; static arc arcs_19_0[1] = { - {63, 1}, + {64, 1}, }; static arc arcs_19_1[1] = { {0, 1}, @@ -522,11 +523,11 @@ static state states_19[2] = { {1, arcs_19_1}, }; static arc arcs_20_0[5] = { - {64, 1}, {65, 1}, {66, 1}, {67, 1}, {68, 1}, + {69, 1}, }; static arc arcs_20_1[1] = { {0, 1}, @@ -536,7 +537,7 @@ static state states_20[2] = { {1, arcs_20_1}, }; static arc arcs_21_0[1] = { - {69, 1}, + {70, 1}, }; static arc arcs_21_1[1] = { {0, 1}, @@ -546,7 +547,7 @@ static state states_21[2] = { {1, arcs_21_1}, }; static arc arcs_22_0[1] = { - {70, 1}, + {71, 1}, }; static arc arcs_22_1[1] = { {0, 1}, @@ -556,7 +557,7 @@ static state states_22[2] = { {1, arcs_22_1}, }; static arc arcs_23_0[1] = { - {71, 1}, + {72, 1}, }; static arc arcs_23_1[2] = { {9, 2}, @@ -581,14 +582,14 @@ static state states_24[2] = { {1, arcs_24_1}, }; static arc arcs_25_0[1] = { - {72, 1}, + {73, 1}, }; static arc arcs_25_1[2] = { {24, 2}, {0, 1}, }; static arc arcs_25_2[2] = { - {73, 3}, + {74, 3}, {0, 2}, }; static arc arcs_25_3[1] = { @@ -605,8 +606,8 @@ static state states_25[5] = { {1, arcs_25_4}, }; static arc arcs_26_0[2] = { - {74, 1}, {75, 1}, + {76, 1}, }; static arc arcs_26_1[1] = { {0, 1}, @@ -616,10 +617,10 @@ static state states_26[2] = { {1, arcs_26_1}, }; static arc arcs_27_0[1] = { - {76, 1}, + {77, 1}, }; static arc arcs_27_1[1] = { - {77, 2}, + {78, 2}, }; static arc arcs_27_2[1] = { {0, 2}, @@ -630,32 +631,32 @@ static state states_27[3] = { {1, arcs_27_2}, }; static arc arcs_28_0[1] = { - {73, 1}, + {74, 1}, }; static arc arcs_28_1[3] = { - {78, 2}, {79, 2}, + {80, 2}, {12, 3}, }; static arc arcs_28_2[4] = { - {78, 2}, {79, 2}, + {80, 2}, {12, 3}, - {76, 4}, + {77, 4}, }; static arc arcs_28_3[1] = { - {76, 4}, + {77, 4}, }; static arc arcs_28_4[3] = { {31, 5}, {13, 6}, - {80, 5}, + {81, 5}, }; static arc arcs_28_5[1] = { {0, 5}, }; static arc arcs_28_6[1] = { - {80, 7}, + {81, 7}, }; static arc arcs_28_7[1] = { {15, 5}, @@ -674,7 +675,7 @@ static arc arcs_29_0[1] = { {21, 1}, }; static arc arcs_29_1[2] = { - {82, 2}, + {83, 2}, {0, 1}, }; static arc arcs_29_2[1] = { @@ -693,7 +694,7 @@ static arc arcs_30_0[1] = { {12, 1}, }; static arc arcs_30_1[2] = { - {82, 2}, + {83, 2}, {0, 1}, }; static arc arcs_30_2[1] = { @@ -709,14 +710,14 @@ static state states_30[4] = { {1, arcs_30_3}, }; static arc arcs_31_0[1] = { - {81, 1}, + {82, 1}, }; static arc arcs_31_1[2] = { {30, 2}, {0, 1}, }; static arc arcs_31_2[2] = { - {81, 1}, + {82, 1}, {0, 2}, }; static state states_31[3] = { @@ -725,7 +726,7 @@ static state states_31[3] = { {2, arcs_31_2}, }; static arc arcs_32_0[1] = { - {83, 1}, + {84, 1}, }; static arc arcs_32_1[2] = { {30, 0}, @@ -739,7 +740,7 @@ static arc arcs_33_0[1] = { {21, 1}, }; static arc arcs_33_1[2] = { - {78, 0}, + {79, 0}, {0, 1}, }; static state states_33[2] = { @@ -747,7 +748,7 @@ static state states_33[2] = { {2, arcs_33_1}, }; static arc arcs_34_0[1] = { - {84, 1}, + {85, 1}, }; static arc arcs_34_1[1] = { {21, 2}, @@ -762,7 +763,7 @@ static state states_34[3] = { {2, arcs_34_2}, }; static arc arcs_35_0[1] = { - {85, 1}, + {86, 1}, }; static arc arcs_35_1[1] = { {21, 2}, @@ -777,7 +778,7 @@ static state states_35[3] = { {2, arcs_35_2}, }; static arc arcs_36_0[1] = { - {86, 1}, + {87, 1}, }; static arc arcs_36_1[1] = { {24, 2}, @@ -800,11 +801,11 @@ static state states_36[5] = { {1, arcs_36_4}, }; static arc arcs_37_0[8] = { - {87, 1}, {88, 1}, {89, 1}, {90, 1}, {91, 1}, + {92, 1}, {19, 1}, {18, 1}, {17, 1}, @@ -817,7 +818,7 @@ static state states_37[2] = { {1, arcs_37_1}, }; static arc arcs_38_0[1] = { - {92, 1}, + {93, 1}, }; static arc arcs_38_1[1] = { {24, 2}, @@ -829,8 +830,8 @@ static arc arcs_38_3[1] = { {26, 4}, }; static arc arcs_38_4[3] = { - {93, 1}, - {94, 5}, + {94, 1}, + {95, 5}, {0, 4}, }; static arc arcs_38_5[1] = { @@ -853,7 +854,7 @@ static state states_38[8] = { {1, arcs_38_7}, }; static arc arcs_39_0[1] = { - {95, 1}, + {96, 1}, }; static arc arcs_39_1[1] = { {24, 2}, @@ -865,7 +866,7 @@ static arc arcs_39_3[1] = { {26, 4}, }; static arc arcs_39_4[2] = { - {94, 5}, + {95, 5}, {0, 4}, }; static arc arcs_39_5[1] = { @@ -888,13 +889,13 @@ static state states_39[8] = { {1, arcs_39_7}, }; static arc arcs_40_0[1] = { - {96, 1}, + {97, 1}, }; static arc arcs_40_1[1] = { - {62, 2}, + {63, 2}, }; static arc arcs_40_2[1] = { - {97, 3}, + {98, 3}, }; static arc arcs_40_3[1] = { {9, 4}, @@ -906,7 +907,7 @@ static arc arcs_40_5[1] = { {26, 6}, }; static arc arcs_40_6[2] = { - {94, 7}, + {95, 7}, {0, 6}, }; static arc arcs_40_7[1] = { @@ -931,7 +932,7 @@ static state states_40[10] = { {1, arcs_40_9}, }; static arc arcs_41_0[1] = { - {98, 1}, + {99, 1}, }; static arc arcs_41_1[1] = { {25, 2}, @@ -940,8 +941,8 @@ static arc arcs_41_2[1] = { {26, 3}, }; static arc arcs_41_3[2] = { - {99, 4}, - {100, 5}, + {100, 4}, + {101, 5}, }; static arc arcs_41_4[1] = { {25, 6}, @@ -956,9 +957,9 @@ static arc arcs_41_7[1] = { {26, 9}, }; static arc arcs_41_8[4] = { - {99, 4}, - {94, 10}, - {100, 5}, + {100, 4}, + {95, 10}, + {101, 5}, {0, 8}, }; static arc arcs_41_9[1] = { @@ -971,7 +972,7 @@ static arc arcs_41_11[1] = { {26, 12}, }; static arc arcs_41_12[2] = { - {100, 5}, + {101, 5}, {0, 12}, }; static state states_41[13] = { @@ -990,10 +991,10 @@ static state states_41[13] = { {2, arcs_41_12}, }; static arc arcs_42_0[1] = { - {101, 1}, + {102, 1}, }; static arc arcs_42_1[1] = { - {102, 2}, + {103, 2}, }; static arc arcs_42_2[2] = { {30, 1}, @@ -1016,11 +1017,11 @@ static arc arcs_43_0[1] = { {24, 1}, }; static arc arcs_43_1[2] = { - {82, 2}, + {83, 2}, {0, 1}, }; static arc arcs_43_2[1] = { - {103, 3}, + {104, 3}, }; static arc arcs_43_3[1] = { {0, 3}, @@ -1032,14 +1033,14 @@ static state states_43[4] = { {1, arcs_43_3}, }; static arc arcs_44_0[1] = { - {104, 1}, + {105, 1}, }; static arc arcs_44_1[2] = { {24, 2}, {0, 1}, }; static arc arcs_44_2[2] = { - {82, 3}, + {83, 3}, {0, 2}, }; static arc arcs_44_3[1] = { @@ -1063,14 +1064,14 @@ static arc arcs_45_1[1] = { {0, 1}, }; static arc arcs_45_2[1] = { - {105, 3}, + {106, 3}, }; static arc arcs_45_3[1] = { {6, 4}, }; static arc arcs_45_4[2] = { {6, 4}, - {106, 1}, + {107, 1}, }; static state states_45[5] = { {2, arcs_45_0}, @@ -1080,21 +1081,21 @@ static state states_45[5] = { {2, arcs_45_4}, }; static arc arcs_46_0[2] = { - {107, 1}, - {108, 2}, + {108, 1}, + {109, 2}, }; static arc arcs_46_1[2] = { - {92, 3}, + {93, 3}, {0, 1}, }; static arc arcs_46_2[1] = { {0, 2}, }; static arc arcs_46_3[1] = { - {107, 4}, + {108, 4}, }; static arc arcs_46_4[1] = { - {94, 5}, + {95, 5}, }; static arc arcs_46_5[1] = { {24, 2}, @@ -1108,8 +1109,8 @@ static state states_46[6] = { {1, arcs_46_5}, }; static arc arcs_47_0[2] = { - {107, 1}, - {110, 1}, + {108, 1}, + {111, 1}, }; static arc arcs_47_1[1] = { {0, 1}, @@ -1119,7 +1120,7 @@ static state states_47[2] = { {1, arcs_47_1}, }; static arc arcs_48_0[1] = { - {111, 1}, + {112, 1}, }; static arc arcs_48_1[2] = { {33, 2}, @@ -1142,7 +1143,7 @@ static state states_48[5] = { {1, arcs_48_4}, }; static arc arcs_49_0[1] = { - {111, 1}, + {112, 1}, }; static arc arcs_49_1[2] = { {33, 2}, @@ -1152,7 +1153,7 @@ static arc arcs_49_2[1] = { {25, 3}, }; static arc arcs_49_3[1] = { - {109, 4}, + {110, 4}, }; static arc arcs_49_4[1] = { {0, 4}, @@ -1165,10 +1166,10 @@ static state states_49[5] = { {1, arcs_49_4}, }; static arc arcs_50_0[1] = { - {112, 1}, + {113, 1}, }; static arc arcs_50_1[2] = { - {113, 0}, + {114, 0}, {0, 1}, }; static state states_50[2] = { @@ -1176,10 +1177,10 @@ static state states_50[2] = { {2, arcs_50_1}, }; static arc arcs_51_0[1] = { - {114, 1}, + {115, 1}, }; static arc arcs_51_1[2] = { - {115, 0}, + {116, 0}, {0, 1}, }; static state states_51[2] = { @@ -1187,11 +1188,11 @@ static state states_51[2] = { {2, arcs_51_1}, }; static arc arcs_52_0[2] = { - {116, 1}, - {117, 2}, + {117, 1}, + {118, 2}, }; static arc arcs_52_1[1] = { - {114, 2}, + {115, 2}, }; static arc arcs_52_2[1] = { {0, 2}, @@ -1202,10 +1203,10 @@ static state states_52[3] = { {1, arcs_52_2}, }; static arc arcs_53_0[1] = { - {103, 1}, + {104, 1}, }; static arc arcs_53_1[2] = { - {118, 0}, + {119, 0}, {0, 1}, }; static state states_53[2] = { @@ -1213,25 +1214,25 @@ static state states_53[2] = { {2, arcs_53_1}, }; static arc arcs_54_0[10] = { - {119, 1}, {120, 1}, {121, 1}, {122, 1}, {123, 1}, {124, 1}, {125, 1}, - {97, 1}, - {116, 2}, - {126, 3}, + {126, 1}, + {98, 1}, + {117, 2}, + {127, 3}, }; static arc arcs_54_1[1] = { {0, 1}, }; static arc arcs_54_2[1] = { - {97, 1}, + {98, 1}, }; static arc arcs_54_3[2] = { - {116, 1}, + {117, 1}, {0, 3}, }; static state states_54[4] = { @@ -1244,7 +1245,7 @@ static arc arcs_55_0[1] = { {31, 1}, }; static arc arcs_55_1[1] = { - {103, 2}, + {104, 2}, }; static arc arcs_55_2[1] = { {0, 2}, @@ -1255,10 +1256,10 @@ static state states_55[3] = { {1, arcs_55_2}, }; static arc arcs_56_0[1] = { - {127, 1}, + {128, 1}, }; static arc arcs_56_1[2] = { - {128, 0}, + {129, 0}, {0, 1}, }; static state states_56[2] = { @@ -1266,10 +1267,10 @@ static state states_56[2] = { {2, arcs_56_1}, }; static arc arcs_57_0[1] = { - {129, 1}, + {130, 1}, }; static arc arcs_57_1[2] = { - {130, 0}, + {131, 0}, {0, 1}, }; static state states_57[2] = { @@ -1277,10 +1278,10 @@ static state states_57[2] = { {2, arcs_57_1}, }; static arc arcs_58_0[1] = { - {131, 1}, + {132, 1}, }; static arc arcs_58_1[2] = { - {132, 0}, + {133, 0}, {0, 1}, }; static state states_58[2] = { @@ -1288,11 +1289,11 @@ static state states_58[2] = { {2, arcs_58_1}, }; static arc arcs_59_0[1] = { - {133, 1}, + {134, 1}, }; static arc arcs_59_1[3] = { - {134, 0}, {135, 0}, + {136, 0}, {0, 1}, }; static state states_59[2] = { @@ -1300,11 +1301,11 @@ static state states_59[2] = { {3, arcs_59_1}, }; static arc arcs_60_0[1] = { - {136, 1}, + {137, 1}, }; static arc arcs_60_1[3] = { - {137, 0}, {138, 0}, + {139, 0}, {0, 1}, }; static state states_60[2] = { @@ -1312,27 +1313,28 @@ static state states_60[2] = { {3, arcs_60_1}, }; static arc arcs_61_0[1] = { - {139, 1}, + {140, 1}, }; -static arc arcs_61_1[5] = { +static arc arcs_61_1[6] = { {31, 0}, - {140, 0}, + {11, 0}, {141, 0}, {142, 0}, + {143, 0}, {0, 1}, }; static state states_61[2] = { {1, arcs_61_0}, - {5, arcs_61_1}, + {6, arcs_61_1}, }; static arc arcs_62_0[4] = { - {137, 1}, {138, 1}, - {143, 1}, - {144, 2}, + {139, 1}, + {144, 1}, + {145, 2}, }; static arc arcs_62_1[1] = { - {139, 2}, + {140, 2}, }; static arc arcs_62_2[1] = { {0, 2}, @@ -1343,15 +1345,15 @@ static state states_62[3] = { {1, arcs_62_2}, }; static arc arcs_63_0[1] = { - {145, 1}, + {146, 1}, }; static arc arcs_63_1[3] = { - {146, 1}, + {147, 1}, {32, 2}, {0, 1}, }; static arc arcs_63_2[1] = { - {139, 3}, + {140, 3}, }; static arc arcs_63_3[1] = { {0, 3}, @@ -1364,44 +1366,44 @@ static state states_63[4] = { }; static arc arcs_64_0[10] = { {13, 1}, - {148, 2}, - {150, 3}, + {149, 2}, + {151, 3}, {21, 4}, - {153, 4}, - {154, 5}, - {79, 4}, - {155, 4}, + {154, 4}, + {155, 5}, + {80, 4}, {156, 4}, {157, 4}, + {158, 4}, }; static arc arcs_64_1[3] = { {47, 6}, - {147, 6}, + {148, 6}, {15, 4}, }; static arc arcs_64_2[2] = { - {147, 7}, - {149, 4}, + {148, 7}, + {150, 4}, }; static arc arcs_64_3[2] = { - {151, 8}, - {152, 4}, + {152, 8}, + {153, 4}, }; static arc arcs_64_4[1] = { {0, 4}, }; static arc arcs_64_5[2] = { - {154, 5}, + {155, 5}, {0, 5}, }; static arc arcs_64_6[1] = { {15, 4}, }; static arc arcs_64_7[1] = { - {149, 4}, + {150, 4}, }; static arc arcs_64_8[1] = { - {152, 4}, + {153, 4}, }; static state states_64[9] = { {10, arcs_64_0}, @@ -1419,7 +1421,7 @@ static arc arcs_65_0[2] = { {48, 1}, }; static arc arcs_65_1[3] = { - {158, 2}, + {159, 2}, {30, 3}, {0, 1}, }; @@ -1444,15 +1446,15 @@ static state states_65[5] = { }; static arc arcs_66_0[3] = { {13, 1}, - {148, 2}, - {78, 3}, + {149, 2}, + {79, 3}, }; static arc arcs_66_1[2] = { {14, 4}, {15, 5}, }; static arc arcs_66_2[1] = { - {159, 6}, + {160, 6}, }; static arc arcs_66_3[1] = { {21, 5}, @@ -1464,7 +1466,7 @@ static arc arcs_66_5[1] = { {0, 5}, }; static arc arcs_66_6[1] = { - {149, 5}, + {150, 5}, }; static state states_66[7] = { {3, arcs_66_0}, @@ -1476,14 +1478,14 @@ static state states_66[7] = { {1, arcs_66_6}, }; static arc arcs_67_0[1] = { - {160, 1}, + {161, 1}, }; static arc arcs_67_1[2] = { {30, 2}, {0, 1}, }; static arc arcs_67_2[2] = { - {160, 1}, + {161, 1}, {0, 2}, }; static state states_67[3] = { @@ -1501,11 +1503,11 @@ static arc arcs_68_1[2] = { }; static arc arcs_68_2[3] = { {24, 3}, - {161, 4}, + {162, 4}, {0, 2}, }; static arc arcs_68_3[2] = { - {161, 4}, + {162, 4}, {0, 3}, }; static arc arcs_68_4[1] = { @@ -1534,7 +1536,7 @@ static state states_69[3] = { {1, arcs_69_2}, }; static arc arcs_70_0[2] = { - {103, 1}, + {104, 1}, {48, 1}, }; static arc arcs_70_1[2] = { @@ -1542,7 +1544,7 @@ static arc arcs_70_1[2] = { {0, 1}, }; static arc arcs_70_2[3] = { - {103, 1}, + {104, 1}, {48, 1}, {0, 2}, }; @@ -1572,7 +1574,7 @@ static arc arcs_72_0[1] = { }; static arc arcs_72_1[4] = { {25, 2}, - {158, 3}, + {159, 3}, {30, 4}, {0, 1}, }; @@ -1587,7 +1589,7 @@ static arc arcs_72_4[2] = { {0, 4}, }; static arc arcs_72_5[3] = { - {158, 3}, + {159, 3}, {30, 7}, {0, 5}, }; @@ -1623,7 +1625,7 @@ static state states_72[11] = { {2, arcs_72_10}, }; static arc arcs_73_0[1] = { - {162, 1}, + {163, 1}, }; static arc arcs_73_1[1] = { {21, 2}, @@ -1659,7 +1661,7 @@ static state states_73[8] = { {1, arcs_73_7}, }; static arc arcs_74_0[3] = { - {163, 1}, + {164, 1}, {31, 2}, {32, 3}, }; @@ -1674,7 +1676,7 @@ static arc arcs_74_3[1] = { {24, 6}, }; static arc arcs_74_4[4] = { - {163, 1}, + {164, 1}, {31, 2}, {32, 3}, {0, 4}, @@ -1687,7 +1689,7 @@ static arc arcs_74_6[1] = { {0, 6}, }; static arc arcs_74_7[2] = { - {163, 5}, + {164, 5}, {32, 3}, }; static state states_74[8] = { @@ -1704,7 +1706,7 @@ static arc arcs_75_0[1] = { {24, 1}, }; static arc arcs_75_1[3] = { - {158, 2}, + {159, 2}, {29, 3}, {0, 1}, }; @@ -1721,8 +1723,8 @@ static state states_75[4] = { {1, arcs_75_3}, }; static arc arcs_76_0[2] = { - {158, 1}, - {165, 1}, + {159, 1}, + {166, 1}, }; static arc arcs_76_1[1] = { {0, 1}, @@ -1732,19 +1734,19 @@ static state states_76[2] = { {1, arcs_76_1}, }; static arc arcs_77_0[1] = { - {96, 1}, + {97, 1}, }; static arc arcs_77_1[1] = { - {62, 2}, + {63, 2}, }; static arc arcs_77_2[1] = { - {97, 3}, + {98, 3}, }; static arc arcs_77_3[1] = { - {107, 4}, + {108, 4}, }; static arc arcs_77_4[2] = { - {164, 5}, + {165, 5}, {0, 4}, }; static arc arcs_77_5[1] = { @@ -1759,13 +1761,13 @@ static state states_77[6] = { {1, arcs_77_5}, }; static arc arcs_78_0[1] = { - {92, 1}, + {93, 1}, }; static arc arcs_78_1[1] = { - {109, 2}, + {110, 2}, }; static arc arcs_78_2[2] = { - {164, 3}, + {165, 3}, {0, 2}, }; static arc arcs_78_3[1] = { @@ -1788,10 +1790,10 @@ static state states_79[2] = { {1, arcs_79_1}, }; static arc arcs_80_0[1] = { - {167, 1}, + {168, 1}, }; static arc arcs_80_1[2] = { - {168, 2}, + {169, 2}, {0, 1}, }; static arc arcs_80_2[1] = { @@ -1803,7 +1805,7 @@ static state states_80[3] = { {1, arcs_80_2}, }; static arc arcs_81_0[2] = { - {73, 1}, + {74, 1}, {9, 2}, }; static arc arcs_81_1[1] = { @@ -1819,11 +1821,11 @@ static state states_81[3] = { }; static dfa dfas[82] = { {256, "single_input", 0, 3, states_0, - "\004\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\120\076\204\000"}, + "\004\050\060\200\000\000\000\100\301\047\341\040\113\000\041\000\000\014\241\174\010\001"}, {257, "file_input", 0, 2, states_1, - "\204\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\120\076\204\000"}, + "\204\050\060\200\000\000\000\100\301\047\341\040\113\000\041\000\000\014\241\174\010\001"}, {258, "eval_input", 0, 3, states_2, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {259, "decorator", 0, 7, states_3, "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "decorators", 0, 2, states_4, @@ -1843,39 +1845,39 @@ static dfa dfas[82] = { {267, "vfpdef", 0, 2, states_11, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {268, "stmt", 0, 2, states_12, - "\000\050\060\200\000\000\000\240\340\223\160\220\045\200\020\000\000\206\120\076\204\000"}, + "\000\050\060\200\000\000\000\100\301\047\341\040\113\000\041\000\000\014\241\174\010\001"}, {269, "simple_stmt", 0, 4, states_13, - "\000\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\120\076\200\000"}, + "\000\040\040\200\000\000\000\100\301\047\341\000\000\000\041\000\000\014\241\174\000\001"}, {270, "small_stmt", 0, 2, states_14, - "\000\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\120\076\200\000"}, + "\000\040\040\200\000\000\000\100\301\047\341\000\000\000\041\000\000\014\241\174\000\001"}, {271, "expr_stmt", 0, 6, states_15, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {272, "testlist_star_expr", 0, 3, states_16, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {273, "augassign", 0, 2, states_17, - "\000\000\000\000\000\000\376\037\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\376\077\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {274, "del_stmt", 0, 3, states_18, - "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {275, "pass_stmt", 0, 2, states_19, - "\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {276, "flow_stmt", 0, 2, states_20, - "\000\000\000\000\000\000\000\000\340\001\000\000\000\000\000\000\000\000\000\000\200\000"}, + "\000\000\000\000\000\000\000\000\300\003\000\000\000\000\000\000\000\000\000\000\000\001"}, {277, "break_stmt", 0, 2, states_21, - "\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {278, "continue_stmt", 0, 2, states_22, "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {279, "return_stmt", 0, 3, states_23, + {278, "continue_stmt", 0, 2, states_22, "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {279, "return_stmt", 0, 3, states_23, + "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"}, {280, "yield_stmt", 0, 2, states_24, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, {281, "raise_stmt", 0, 5, states_25, - "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"}, {282, "import_stmt", 0, 2, states_26, - "\000\000\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\044\000\000\000\000\000\000\000\000\000\000\000\000"}, {283, "import_name", 0, 3, states_27, - "\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, {284, "import_from", 0, 8, states_28, - "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, {285, "import_as_name", 0, 4, states_29, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {286, "dotted_as_name", 0, 4, states_30, @@ -1887,103 +1889,103 @@ static dfa dfas[82] = { {289, "dotted_name", 0, 2, states_33, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {290, "global_stmt", 0, 3, states_34, - "\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000"}, - {291, "nonlocal_stmt", 0, 3, states_35, "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, - {292, "assert_stmt", 0, 5, states_36, + {291, "nonlocal_stmt", 0, 3, states_35, "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, + {292, "assert_stmt", 0, 5, states_36, + "\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000"}, {293, "compound_stmt", 0, 2, states_37, - "\000\010\020\000\000\000\000\000\000\000\000\220\045\000\000\000\000\000\000\000\004\000"}, + "\000\010\020\000\000\000\000\000\000\000\000\040\113\000\000\000\000\000\000\000\010\000"}, {294, "if_stmt", 0, 8, states_38, - "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"}, {295, "while_stmt", 0, 8, states_39, - "\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"}, - {296, "for_stmt", 0, 10, states_40, "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {296, "for_stmt", 0, 10, states_40, + "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, {297, "try_stmt", 0, 13, states_41, - "\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, {298, "with_stmt", 0, 5, states_42, - "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, {299, "with_item", 0, 4, states_43, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {300, "except_clause", 0, 5, states_44, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, {301, "suite", 0, 5, states_45, - "\004\040\040\200\000\000\000\240\340\223\160\000\000\200\020\000\000\206\120\076\200\000"}, + "\004\040\040\200\000\000\000\100\301\047\341\000\000\000\041\000\000\014\241\174\000\001"}, {302, "test", 0, 6, states_46, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {303, "test_nocond", 0, 2, states_47, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {304, "lambdef", 0, 5, states_48, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"}, {305, "lambdef_nocond", 0, 5, states_49, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"}, {306, "or_test", 0, 2, states_50, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\040\000\000\014\241\174\000\000"}, {307, "and_test", 0, 2, states_51, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\040\000\000\014\241\174\000\000"}, {308, "not_test", 0, 3, states_52, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\040\000\000\014\241\174\000\000"}, {309, "comparison", 0, 2, states_53, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {310, "comp_op", 0, 4, states_54, - "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\220\177\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\004\000\040\377\000\000\000\000\000\000"}, {311, "star_expr", 0, 3, states_55, "\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {312, "expr", 0, 2, states_56, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {313, "xor_expr", 0, 2, states_57, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {314, "and_expr", 0, 2, states_58, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {315, "shift_expr", 0, 2, states_59, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {316, "arith_expr", 0, 2, states_60, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {317, "term", 0, 2, states_61, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {318, "factor", 0, 3, states_62, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {319, "power", 0, 4, states_63, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\240\174\000\000"}, {320, "atom", 0, 9, states_64, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\240\174\000\000"}, {321, "testlist_comp", 0, 5, states_65, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {322, "trailer", 0, 7, states_66, - "\000\040\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\020\000\000\000"}, + "\000\040\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\040\000\000\000"}, {323, "subscriptlist", 0, 3, states_67, - "\000\040\040\002\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\002\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {324, "subscript", 0, 5, states_68, - "\000\040\040\002\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\002\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {325, "sliceop", 0, 3, states_69, "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {326, "exprlist", 0, 3, states_70, - "\000\040\040\200\000\000\000\000\000\200\000\000\000\000\000\000\000\206\120\076\000\000"}, + "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, {327, "testlist", 0, 3, states_71, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {328, "dictorsetmaker", 0, 11, states_72, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {329, "classdef", 0, 8, states_73, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000"}, {330, "arglist", 0, 8, states_74, - "\000\040\040\200\001\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {331, "argument", 0, 4, states_75, - "\000\040\040\000\000\000\000\000\000\200\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, {332, "comp_iter", 0, 2, states_76, - "\000\000\000\000\000\000\000\000\000\000\000\020\001\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\040\002\000\000\000\000\000\000\000\000\000"}, {333, "comp_for", 0, 6, states_77, - "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, {334, "comp_if", 0, 4, states_78, - "\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"}, {335, "encoding_decl", 0, 2, states_79, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {336, "yield_expr", 0, 3, states_80, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000"}, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, {337, "yield_arg", 0, 3, states_81, - "\000\040\040\000\000\000\000\000\000\202\000\000\000\200\020\000\000\206\120\076\000\000"}, + "\000\040\040\000\000\000\000\000\000\004\001\000\000\000\041\000\000\014\241\174\000\000"}, }; -static label labels[169] = { +static label labels[170] = { {0, "EMPTY"}, {256, 0}, {4, 0}, @@ -2007,7 +2009,7 @@ static label labels[169] = { {1, "def"}, {1, 0}, {263, 0}, - {50, 0}, + {51, 0}, {302, 0}, {11, 0}, {301, 0}, @@ -2036,6 +2038,7 @@ static label labels[169] = { {36, 0}, {37, 0}, {38, 0}, + {50, 0}, {39, 0}, {40, 0}, {41, 0}, @@ -2063,7 +2066,7 @@ static label labels[169] = { {1, "import"}, {288, 0}, {23, 0}, - {51, 0}, + {52, 0}, {287, 0}, {285, 0}, {1, "as"}, @@ -2157,6 +2160,6 @@ static label labels[169] = { grammar _PyParser_Grammar = { 82, dfas, - {169, labels}, + {170, labels}, 256 }; diff --git a/Python/import.c b/Python/import.c index 7ee7ed9..c3b9e12 100644 --- a/Python/import.c +++ b/Python/import.c @@ -32,9 +32,12 @@ struct _inittab *PyImport_Inittab = _PyImport_Inittab; static PyObject *initstr = NULL; /*[clinic input] +output preset file module _imp [clinic start generated code]*/ -/*[clinic end generated code: output=da39a3ee5e6b4b0d input=9c332475d8686284]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=98c38221164579d5]*/ + +#include "clinic/import.c.h" /*[python input] class fs_unicode_converter(CConverter): @@ -235,29 +238,9 @@ Return True if the import lock is currently held, else False. On platforms without threads, return False. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_lock_held__doc__, -"lock_held($module, /)\n" -"--\n" -"\n" -"Return True if the import lock is currently held, else False.\n" -"\n" -"On platforms without threads, return False."); - -#define _IMP_LOCK_HELD_METHODDEF \ - {"lock_held", (PyCFunction)_imp_lock_held, METH_NOARGS, _imp_lock_held__doc__}, - -static PyObject * -_imp_lock_held_impl(PyModuleDef *module); - -static PyObject * -_imp_lock_held(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) -{ - return _imp_lock_held_impl(module); -} - static PyObject * _imp_lock_held_impl(PyModuleDef *module) -/*[clinic end generated code: output=dae65674966baa65 input=9b088f9b217d9bdf]*/ +/*[clinic end generated code: output=d7a8cc3a5169081a input=9b088f9b217d9bdf]*/ { #ifdef WITH_THREAD return PyBool_FromLong(import_lock_thread != -1); @@ -275,30 +258,9 @@ This lock should be used by import hooks to ensure thread-safety when importing modules. On platforms without threads, this function does nothing. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_acquire_lock__doc__, -"acquire_lock($module, /)\n" -"--\n" -"\n" -"Acquires the interpreter\'s import lock for the current thread.\n" -"\n" -"This lock should be used by import hooks to ensure thread-safety when importing\n" -"modules. On platforms without threads, this function does nothing."); - -#define _IMP_ACQUIRE_LOCK_METHODDEF \ - {"acquire_lock", (PyCFunction)_imp_acquire_lock, METH_NOARGS, _imp_acquire_lock__doc__}, - -static PyObject * -_imp_acquire_lock_impl(PyModuleDef *module); - -static PyObject * -_imp_acquire_lock(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) -{ - return _imp_acquire_lock_impl(module); -} - static PyObject * _imp_acquire_lock_impl(PyModuleDef *module) -/*[clinic end generated code: output=478f1fa089fdb9a4 input=4a2d4381866d5fdc]*/ +/*[clinic end generated code: output=cc143b1d16422cae input=4a2d4381866d5fdc]*/ { #ifdef WITH_THREAD _PyImport_AcquireLock(); @@ -315,29 +277,9 @@ Release the interpreter's import lock. On platforms without threads, this function does nothing. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_release_lock__doc__, -"release_lock($module, /)\n" -"--\n" -"\n" -"Release the interpreter\'s import lock.\n" -"\n" -"On platforms without threads, this function does nothing."); - -#define _IMP_RELEASE_LOCK_METHODDEF \ - {"release_lock", (PyCFunction)_imp_release_lock, METH_NOARGS, _imp_release_lock__doc__}, - -static PyObject * -_imp_release_lock_impl(PyModuleDef *module); - -static PyObject * -_imp_release_lock(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) -{ - return _imp_release_lock_impl(module); -} - static PyObject * _imp_release_lock_impl(PyModuleDef *module) -/*[clinic end generated code: output=36c77a6832fdafd4 input=934fb11516dd778b]*/ +/*[clinic end generated code: output=74d28e38ebe2b224 input=934fb11516dd778b]*/ { #ifdef WITH_THREAD if (_PyImport_ReleaseLock() < 0) { @@ -962,43 +904,9 @@ _imp._fix_co_filename Changes code.co_filename to specify the passed-in file path. [clinic start generated code]*/ -PyDoc_STRVAR(_imp__fix_co_filename__doc__, -"_fix_co_filename($module, code, path, /)\n" -"--\n" -"\n" -"Changes code.co_filename to specify the passed-in file path.\n" -"\n" -" code\n" -" Code object to change.\n" -" path\n" -" File path to use."); - -#define _IMP__FIX_CO_FILENAME_METHODDEF \ - {"_fix_co_filename", (PyCFunction)_imp__fix_co_filename, METH_VARARGS, _imp__fix_co_filename__doc__}, - -static PyObject * -_imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code, PyObject *path); - -static PyObject * -_imp__fix_co_filename(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyCodeObject *code; - PyObject *path; - - if (!PyArg_ParseTuple(args, - "O!U:_fix_co_filename", - &PyCode_Type, &code, &path)) - goto exit; - return_value = _imp__fix_co_filename_impl(module, code, path); - -exit: - return return_value; -} - static PyObject * _imp__fix_co_filename_impl(PyModuleDef *module, PyCodeObject *code, PyObject *path) -/*[clinic end generated code: output=6b4b1edeb0d55c5d input=895ba50e78b82f05]*/ +/*[clinic end generated code: output=7afe5ba6b9d383e4 input=895ba50e78b82f05]*/ { update_compiled_module(code, path); @@ -1860,27 +1768,9 @@ _imp.extension_suffixes Returns the list of file suffixes used to identify extension modules. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_extension_suffixes__doc__, -"extension_suffixes($module, /)\n" -"--\n" -"\n" -"Returns the list of file suffixes used to identify extension modules."); - -#define _IMP_EXTENSION_SUFFIXES_METHODDEF \ - {"extension_suffixes", (PyCFunction)_imp_extension_suffixes, METH_NOARGS, _imp_extension_suffixes__doc__}, - -static PyObject * -_imp_extension_suffixes_impl(PyModuleDef *module); - -static PyObject * -_imp_extension_suffixes(PyModuleDef *module, PyObject *Py_UNUSED(ignored)) -{ - return _imp_extension_suffixes_impl(module); -} - static PyObject * _imp_extension_suffixes_impl(PyModuleDef *module) -/*[clinic end generated code: output=bb30a2438167798c input=ecdeeecfcb6f839e]*/ +/*[clinic end generated code: output=d44c1566ef362229 input=ecdeeecfcb6f839e]*/ { PyObject *list; const char *suffix; @@ -1917,37 +1807,9 @@ _imp.init_builtin Initializes a built-in module. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_init_builtin__doc__, -"init_builtin($module, name, /)\n" -"--\n" -"\n" -"Initializes a built-in module."); - -#define _IMP_INIT_BUILTIN_METHODDEF \ - {"init_builtin", (PyCFunction)_imp_init_builtin, METH_VARARGS, _imp_init_builtin__doc__}, - -static PyObject * -_imp_init_builtin_impl(PyModuleDef *module, PyObject *name); - -static PyObject * -_imp_init_builtin(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - - if (!PyArg_ParseTuple(args, - "U:init_builtin", - &name)) - goto exit; - return_value = _imp_init_builtin_impl(module, name); - -exit: - return return_value; -} - static PyObject * _imp_init_builtin_impl(PyModuleDef *module, PyObject *name) -/*[clinic end generated code: output=a0244948a43f8e26 input=f934d2231ec52a2e]*/ +/*[clinic end generated code: output=1868f473685f6d67 input=f934d2231ec52a2e]*/ { int ret; PyObject *m; @@ -1973,37 +1835,9 @@ _imp.init_frozen Initializes a frozen module. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_init_frozen__doc__, -"init_frozen($module, name, /)\n" -"--\n" -"\n" -"Initializes a frozen module."); - -#define _IMP_INIT_FROZEN_METHODDEF \ - {"init_frozen", (PyCFunction)_imp_init_frozen, METH_VARARGS, _imp_init_frozen__doc__}, - -static PyObject * -_imp_init_frozen_impl(PyModuleDef *module, PyObject *name); - -static PyObject * -_imp_init_frozen(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - - if (!PyArg_ParseTuple(args, - "U:init_frozen", - &name)) - goto exit; - return_value = _imp_init_frozen_impl(module, name); - -exit: - return return_value; -} - static PyObject * _imp_init_frozen_impl(PyModuleDef *module, PyObject *name) -/*[clinic end generated code: output=e4bc2bff296f8f22 input=13019adfc04f3fb3]*/ +/*[clinic end generated code: output=a9de493bdd711878 input=13019adfc04f3fb3]*/ { int ret; PyObject *m; @@ -2029,37 +1863,9 @@ _imp.get_frozen_object Create a code object for a frozen module. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_get_frozen_object__doc__, -"get_frozen_object($module, name, /)\n" -"--\n" -"\n" -"Create a code object for a frozen module."); - -#define _IMP_GET_FROZEN_OBJECT_METHODDEF \ - {"get_frozen_object", (PyCFunction)_imp_get_frozen_object, METH_VARARGS, _imp_get_frozen_object__doc__}, - -static PyObject * -_imp_get_frozen_object_impl(PyModuleDef *module, PyObject *name); - -static PyObject * -_imp_get_frozen_object(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - - if (!PyArg_ParseTuple(args, - "U:get_frozen_object", - &name)) - goto exit; - return_value = _imp_get_frozen_object_impl(module, name); - -exit: - return return_value; -} - static PyObject * _imp_get_frozen_object_impl(PyModuleDef *module, PyObject *name) -/*[clinic end generated code: output=4089ec702a9d70c5 input=ed689bc05358fdbd]*/ +/*[clinic end generated code: output=3114c970a47f2e3c input=ed689bc05358fdbd]*/ { return get_frozen_object(name); } @@ -2073,37 +1879,9 @@ _imp.is_frozen_package Returns True if the module name is of a frozen package. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_is_frozen_package__doc__, -"is_frozen_package($module, name, /)\n" -"--\n" -"\n" -"Returns True if the module name is of a frozen package."); - -#define _IMP_IS_FROZEN_PACKAGE_METHODDEF \ - {"is_frozen_package", (PyCFunction)_imp_is_frozen_package, METH_VARARGS, _imp_is_frozen_package__doc__}, - -static PyObject * -_imp_is_frozen_package_impl(PyModuleDef *module, PyObject *name); - -static PyObject * -_imp_is_frozen_package(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - - if (!PyArg_ParseTuple(args, - "U:is_frozen_package", - &name)) - goto exit; - return_value = _imp_is_frozen_package_impl(module, name); - -exit: - return return_value; -} - static PyObject * _imp_is_frozen_package_impl(PyModuleDef *module, PyObject *name) -/*[clinic end generated code: output=86aab14dcd4b959b input=81b6cdecd080fbb8]*/ +/*[clinic end generated code: output=3e4cab802b56d649 input=81b6cdecd080fbb8]*/ { return is_frozen_package(name); } @@ -2117,37 +1895,9 @@ _imp.is_builtin Returns True if the module name corresponds to a built-in module. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_is_builtin__doc__, -"is_builtin($module, name, /)\n" -"--\n" -"\n" -"Returns True if the module name corresponds to a built-in module."); - -#define _IMP_IS_BUILTIN_METHODDEF \ - {"is_builtin", (PyCFunction)_imp_is_builtin, METH_VARARGS, _imp_is_builtin__doc__}, - -static PyObject * -_imp_is_builtin_impl(PyModuleDef *module, PyObject *name); - -static PyObject * -_imp_is_builtin(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - - if (!PyArg_ParseTuple(args, - "U:is_builtin", - &name)) - goto exit; - return_value = _imp_is_builtin_impl(module, name); - -exit: - return return_value; -} - static PyObject * _imp_is_builtin_impl(PyModuleDef *module, PyObject *name) -/*[clinic end generated code: output=d5847f8cac50946e input=86befdac021dd1c7]*/ +/*[clinic end generated code: output=2deec9cac6fb9a7e input=86befdac021dd1c7]*/ { return PyLong_FromLong(is_builtin(name)); } @@ -2161,37 +1911,9 @@ _imp.is_frozen Returns True if the module name corresponds to a frozen module. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_is_frozen__doc__, -"is_frozen($module, name, /)\n" -"--\n" -"\n" -"Returns True if the module name corresponds to a frozen module."); - -#define _IMP_IS_FROZEN_METHODDEF \ - {"is_frozen", (PyCFunction)_imp_is_frozen, METH_VARARGS, _imp_is_frozen__doc__}, - -static PyObject * -_imp_is_frozen_impl(PyModuleDef *module, PyObject *name); - -static PyObject * -_imp_is_frozen(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - - if (!PyArg_ParseTuple(args, - "U:is_frozen", - &name)) - goto exit; - return_value = _imp_is_frozen_impl(module, name); - -exit: - return return_value; -} - static PyObject * _imp_is_frozen_impl(PyModuleDef *module, PyObject *name) -/*[clinic end generated code: output=6691af884ba4987d input=7301dbca1897d66b]*/ +/*[clinic end generated code: output=7de8e260c8e36aed input=7301dbca1897d66b]*/ { const struct _frozen *p; @@ -2212,39 +1934,9 @@ _imp.load_dynamic Loads an extension module. [clinic start generated code]*/ -PyDoc_STRVAR(_imp_load_dynamic__doc__, -"load_dynamic($module, name, path, file=None, /)\n" -"--\n" -"\n" -"Loads an extension module."); - -#define _IMP_LOAD_DYNAMIC_METHODDEF \ - {"load_dynamic", (PyCFunction)_imp_load_dynamic, METH_VARARGS, _imp_load_dynamic__doc__}, - -static PyObject * -_imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path, PyObject *file); - -static PyObject * -_imp_load_dynamic(PyModuleDef *module, PyObject *args) -{ - PyObject *return_value = NULL; - PyObject *name; - PyObject *path; - PyObject *file = NULL; - - if (!PyArg_ParseTuple(args, - "UO&|O:load_dynamic", - &name, PyUnicode_FSDecoder, &path, &file)) - goto exit; - return_value = _imp_load_dynamic_impl(module, name, path, file); - -exit: - return return_value; -} - static PyObject * _imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path, PyObject *file) -/*[clinic end generated code: output=81d11a1fbd1ea0a8 input=af64f06e4bad3526]*/ +/*[clinic end generated code: output=8b7ae431d795e1ba input=af64f06e4bad3526]*/ { PyObject *mod; FILE *fp; @@ -2272,11 +1964,7 @@ _imp_load_dynamic_impl(PyModuleDef *module, PyObject *name, PyObject *path, PyOb /*[clinic input] dump buffer [clinic start generated code]*/ - -#ifndef _IMP_LOAD_DYNAMIC_METHODDEF - #define _IMP_LOAD_DYNAMIC_METHODDEF -#endif /* !defined(_IMP_LOAD_DYNAMIC_METHODDEF) */ -/*[clinic end generated code: output=d07c1d4a343a9579 input=524ce2e021e4eba6]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=524ce2e021e4eba6]*/ PyDoc_STRVAR(doc_imp, @@ -2376,7 +2064,7 @@ PyImport_AppendInittab(const char *name, PyObject* (*initfunc)(void)) memset(newtab, '\0', sizeof newtab); - newtab[0].name = (char *)name; + newtab[0].name = name; newtab[0].initfunc = initfunc; return PyImport_ExtendInittab(newtab); @@ -2385,4 +2073,3 @@ PyImport_AppendInittab(const char *name, PyObject* (*initfunc)(void)) #ifdef __cplusplus } #endif - diff --git a/Python/importlib.h b/Python/importlib.h index ef8bf27..0154a78 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1,8 +1,8 @@ -/* Auto-generated by Modules/_freeze_importlib.c */ +/* Auto-generated by Programs/_freeze_importlib.c */ const unsigned char _Py_M__importlib[] = { 99,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0, - 0,64,0,0,0,115,228,4,0,0,100,0,0,90,0,0, - 100,163,0,90,1,0,100,4,0,100,5,0,132,0,0,90, + 0,64,0,0,0,115,43,5,0,0,100,0,0,90,0,0, + 100,177,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, @@ -46,1223 +46,1221 @@ const unsigned char _Py_M__importlib[] = { 132,0,2,90,54,0,101,55,0,131,0,0,90,56,0,100, 53,0,100,95,0,100,53,0,100,96,0,101,56,0,100,97, 0,100,98,0,132,1,2,90,57,0,100,53,0,100,53,0, - 100,99,0,100,100,0,132,2,0,90,58,0,71,100,101,0, - 100,102,0,132,0,0,100,102,0,131,2,0,90,59,0,100, - 53,0,100,103,0,100,104,0,132,1,0,90,60,0,71,100, - 105,0,100,106,0,132,0,0,100,106,0,131,2,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,101,64,0,131,3,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, - 101,66,0,101,65,0,131,4,0,90,67,0,71,100,119,0, - 100,120,0,132,0,0,100,120,0,101,66,0,101,64,0,131, - 4,0,90,68,0,103,0,0,90,69,0,71,100,121,0,100, - 122,0,132,0,0,100,122,0,131,2,0,90,70,0,71,100, - 123,0,100,124,0,132,0,0,100,124,0,131,2,0,90,71, - 0,71,100,125,0,100,126,0,132,0,0,100,126,0,131,2, - 0,90,72,0,71,100,127,0,100,128,0,132,0,0,100,128, - 0,131,2,0,90,73,0,71,100,129,0,100,130,0,132,0, - 0,100,130,0,131,2,0,90,74,0,71,100,131,0,100,132, - 0,132,0,0,100,132,0,131,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,53,0,100,137,0,100,138,0,132,1, - 0,90,78,0,100,139,0,100,140,0,132,0,0,90,79,0, - 100,141,0,90,80,0,101,80,0,100,142,0,23,90,81,0, - 100,143,0,100,144,0,132,0,0,90,82,0,100,145,0,100, - 146,0,132,0,0,90,83,0,100,53,0,100,80,0,100,147, - 0,100,148,0,132,2,0,90,84,0,100,149,0,100,150,0, - 132,0,0,90,85,0,100,151,0,100,152,0,132,0,0,90, - 86,0,100,153,0,100,154,0,132,0,0,90,87,0,100,53, - 0,100,53,0,102,0,0,100,80,0,100,155,0,100,156,0, - 132,4,0,90,88,0,100,157,0,100,158,0,132,0,0,90, - 89,0,100,159,0,100,160,0,132,0,0,90,90,0,100,161, - 0,100,162,0,132,0,0,90,91,0,100,53,0,83,41,164, - 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,41,2,122,53,84,114,117,101,32,105,102,32, - 102,105,108,101,110,97,109,101,115,32,109,117,115,116,32,98, - 101,32,99,104,101,99,107,101,100,32,99,97,115,101,45,105, - 110,115,101,110,115,105,116,105,118,101,108,121,46,70,114,4, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,6,0,0,0,34,0,0,0, - 115,2,0,0,0,0,2,41,4,218,3,115,121,115,218,8, - 112,108,97,116,102,111,114,109,218,10,115,116,97,114,116,115, - 119,105,116,104,218,27,95,67,65,83,69,95,73,78,83,69, - 78,83,73,84,73,86,69,95,80,76,65,84,70,79,82,77, - 83,41,1,114,6,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,16,95,109,97,107,101,95,114, - 101,108,97,120,95,99,97,115,101,28,0,0,0,115,8,0, - 0,0,0,1,18,1,15,4,12,3,114,11,0,0,0,99, - 1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,26,0,0,0,116,0,0,124,0,0,131, - 1,0,100,1,0,64,106,1,0,100,2,0,100,3,0,131, - 2,0,83,41,4,122,42,67,111,110,118,101,114,116,32,97, - 32,51,50,45,98,105,116,32,105,110,116,101,103,101,114,32, - 116,111,32,108,105,116,116,108,101,45,101,110,100,105,97,110, - 46,108,3,0,0,0,255,127,255,127,3,0,233,4,0,0, - 0,218,6,108,105,116,116,108,101,41,2,218,3,105,110,116, - 218,8,116,111,95,98,121,116,101,115,41,1,218,1,120,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,7, - 95,119,95,108,111,110,103,40,0,0,0,115,2,0,0,0, - 0,2,114,17,0,0,0,99,1,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,0,106,1,0,124,0,0,100,1,0,131,2,0, - 83,41,2,122,47,67,111,110,118,101,114,116,32,52,32,98, - 121,116,101,115,32,105,110,32,108,105,116,116,108,101,45,101, - 110,100,105,97,110,32,116,111,32,97,110,32,105,110,116,101, - 103,101,114,46,114,13,0,0,0,41,2,114,14,0,0,0, - 218,10,102,114,111,109,95,98,121,116,101,115,41,1,90,9, - 105,110,116,95,98,121,116,101,115,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,7,95,114,95,108,111,110, - 103,45,0,0,0,115,2,0,0,0,0,2,114,19,0,0, - 0,99,0,0,0,0,0,0,0,0,1,0,0,0,3,0, - 0,0,71,0,0,0,115,26,0,0,0,116,0,0,106,1, - 0,100,1,0,100,2,0,132,0,0,124,0,0,68,131,1, - 0,131,1,0,83,41,3,122,31,82,101,112,108,97,99,101, - 109,101,110,116,32,102,111,114,32,111,115,46,112,97,116,104, - 46,106,111,105,110,40,41,46,99,1,0,0,0,0,0,0, - 0,2,0,0,0,4,0,0,0,83,0,0,0,115,37,0, - 0,0,103,0,0,124,0,0,93,27,0,125,1,0,124,1, - 0,114,6,0,124,1,0,106,0,0,116,1,0,131,1,0, - 145,2,0,113,6,0,83,114,4,0,0,0,41,2,218,6, - 114,115,116,114,105,112,218,15,112,97,116,104,95,115,101,112, - 97,114,97,116,111,114,115,41,2,218,2,46,48,218,4,112, - 97,114,116,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,250,10,60,108,105,115,116,99,111,109,112,62,52,0, - 0,0,115,2,0,0,0,9,1,122,30,95,112,97,116,104, - 95,106,111,105,110,46,60,108,111,99,97,108,115,62,46,60, - 108,105,115,116,99,111,109,112,62,41,2,218,8,112,97,116, - 104,95,115,101,112,218,4,106,111,105,110,41,1,218,10,112, - 97,116,104,95,112,97,114,116,115,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,10,95,112,97,116,104,95, - 106,111,105,110,50,0,0,0,115,4,0,0,0,0,2,15, - 1,114,28,0,0,0,99,1,0,0,0,0,0,0,0,5, - 0,0,0,5,0,0,0,67,0,0,0,115,134,0,0,0, - 116,0,0,116,1,0,131,1,0,100,1,0,107,2,0,114, - 52,0,124,0,0,106,2,0,116,3,0,131,1,0,92,3, - 0,125,1,0,125,2,0,125,3,0,124,1,0,124,3,0, - 102,2,0,83,120,69,0,116,4,0,124,0,0,131,1,0, - 68,93,55,0,125,4,0,124,4,0,116,1,0,107,6,0, - 114,65,0,124,0,0,106,5,0,124,4,0,100,2,0,100, - 1,0,131,1,1,92,2,0,125,1,0,125,3,0,124,1, - 0,124,3,0,102,2,0,83,113,65,0,87,100,3,0,124, - 0,0,102,2,0,83,41,4,122,32,82,101,112,108,97,99, - 101,109,101,110,116,32,102,111,114,32,111,115,46,112,97,116, - 104,46,115,112,108,105,116,40,41,46,233,1,0,0,0,90, - 8,109,97,120,115,112,108,105,116,218,0,41,6,218,3,108, - 101,110,114,21,0,0,0,218,10,114,112,97,114,116,105,116, - 105,111,110,114,25,0,0,0,218,8,114,101,118,101,114,115, - 101,100,218,6,114,115,112,108,105,116,41,5,218,4,112,97, - 116,104,90,5,102,114,111,110,116,218,1,95,218,4,116,97, - 105,108,114,16,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,218,11,95,112,97,116,104,95,115,112, - 108,105,116,56,0,0,0,115,16,0,0,0,0,2,18,1, - 24,1,10,1,19,1,12,1,27,1,14,1,114,38,0,0, - 0,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0, - 0,0,67,0,0,0,115,13,0,0,0,116,0,0,106,1, - 0,124,0,0,131,1,0,83,41,1,122,126,83,116,97,116, - 32,116,104,101,32,112,97,116,104,46,10,10,32,32,32,32, - 77,97,100,101,32,97,32,115,101,112,97,114,97,116,101,32, - 102,117,110,99,116,105,111,110,32,116,111,32,109,97,107,101, - 32,105,116,32,101,97,115,105,101,114,32,116,111,32,111,118, - 101,114,114,105,100,101,32,105,110,32,101,120,112,101,114,105, - 109,101,110,116,115,10,32,32,32,32,40,101,46,103,46,32, - 99,97,99,104,101,32,115,116,97,116,32,114,101,115,117,108, - 116,115,41,46,10,10,32,32,32,32,41,2,114,3,0,0, - 0,90,4,115,116,97,116,41,1,114,35,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,10,95, - 112,97,116,104,95,115,116,97,116,68,0,0,0,115,2,0, - 0,0,0,7,114,39,0,0,0,99,2,0,0,0,0,0, - 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,58, - 0,0,0,121,16,0,116,0,0,124,0,0,131,1,0,125, - 2,0,87,110,22,0,4,116,1,0,107,10,0,114,40,0, - 1,1,1,100,1,0,83,89,110,1,0,88,124,2,0,106, - 2,0,100,2,0,64,124,1,0,107,2,0,83,41,3,122, - 49,84,101,115,116,32,119,104,101,116,104,101,114,32,116,104, - 101,32,112,97,116,104,32,105,115,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,101,32,116,121,112, - 101,46,70,105,0,240,0,0,41,3,114,39,0,0,0,218, - 7,79,83,69,114,114,111,114,218,7,115,116,95,109,111,100, - 101,41,3,114,35,0,0,0,218,4,109,111,100,101,90,9, - 115,116,97,116,95,105,110,102,111,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,18,95,112,97,116,104,95, - 105,115,95,109,111,100,101,95,116,121,112,101,78,0,0,0, - 115,10,0,0,0,0,2,3,1,16,1,13,1,9,1,114, - 43,0,0,0,99,1,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,13,0,0,0,116,0, - 0,124,0,0,100,1,0,131,2,0,83,41,2,122,31,82, - 101,112,108,97,99,101,109,101,110,116,32,102,111,114,32,111, - 115,46,112,97,116,104,46,105,115,102,105,108,101,46,105,0, - 128,0,0,41,1,114,43,0,0,0,41,1,114,35,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,12,95,112,97,116,104,95,105,115,102,105,108,101,87,0, - 0,0,115,2,0,0,0,0,2,114,44,0,0,0,99,1, + 100,99,0,100,100,0,132,2,0,90,58,0,100,101,0,100, + 102,0,100,103,0,100,104,0,132,0,1,90,59,0,100,105, + 0,100,106,0,132,0,0,90,60,0,100,107,0,100,108,0, + 132,0,0,90,61,0,100,109,0,100,110,0,132,0,0,90, + 62,0,100,111,0,100,112,0,132,0,0,90,63,0,100,113, + 0,100,114,0,132,0,0,90,64,0,100,115,0,100,116,0, + 132,0,0,90,65,0,100,53,0,100,117,0,100,118,0,132, + 1,0,90,66,0,71,100,119,0,100,120,0,132,0,0,100, + 120,0,131,2,0,90,67,0,71,100,121,0,100,122,0,132, + 0,0,100,122,0,131,2,0,90,68,0,71,100,123,0,100, + 124,0,132,0,0,100,124,0,131,2,0,90,69,0,71,100, + 125,0,100,126,0,132,0,0,100,126,0,131,2,0,90,70, + 0,71,100,127,0,100,128,0,132,0,0,100,128,0,101,70, + 0,131,3,0,90,71,0,71,100,129,0,100,130,0,132,0, + 0,100,130,0,131,2,0,90,72,0,71,100,131,0,100,132, + 0,132,0,0,100,132,0,101,72,0,101,71,0,131,4,0, + 90,73,0,71,100,133,0,100,134,0,132,0,0,100,134,0, + 101,72,0,101,70,0,131,4,0,90,74,0,103,0,0,90, + 75,0,71,100,135,0,100,136,0,132,0,0,100,136,0,131, + 2,0,90,76,0,71,100,137,0,100,138,0,132,0,0,100, + 138,0,131,2,0,90,77,0,71,100,139,0,100,140,0,132, + 0,0,100,140,0,131,2,0,90,78,0,71,100,141,0,100, + 142,0,132,0,0,100,142,0,131,2,0,90,79,0,71,100, + 143,0,100,144,0,132,0,0,100,144,0,131,2,0,90,80, + 0,71,100,145,0,100,146,0,132,0,0,100,146,0,131,2, + 0,90,81,0,100,147,0,100,148,0,132,0,0,90,82,0, + 100,149,0,100,150,0,132,0,0,90,83,0,100,53,0,100, + 151,0,100,152,0,132,1,0,90,84,0,100,153,0,100,154, + 0,132,0,0,90,85,0,100,155,0,90,86,0,101,86,0, + 100,156,0,23,90,87,0,100,157,0,100,158,0,132,0,0, + 90,88,0,100,159,0,100,160,0,132,0,0,90,89,0,100, + 53,0,100,80,0,100,161,0,100,162,0,132,2,0,90,90, + 0,100,163,0,100,164,0,132,0,0,90,91,0,100,165,0, + 100,166,0,132,0,0,90,92,0,100,167,0,100,168,0,132, + 0,0,90,93,0,100,53,0,100,53,0,102,0,0,100,80, + 0,100,169,0,100,170,0,132,4,0,90,94,0,100,171,0, + 100,172,0,132,0,0,90,95,0,100,173,0,100,174,0,132, + 0,0,90,96,0,100,175,0,100,176,0,132,0,0,90,97, + 0,100,53,0,83,41,178,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,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,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,92,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,99,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,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,121,0,0,0, - 115,8,0,0,0,0,2,25,1,15,1,32,1,114,65,0, - 0,0,99,1,0,0,0,0,0,0,0,1,0,0,0,2, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,0,116, - 1,0,131,1,0,124,0,0,131,1,0,83,41,1,78,41, - 2,218,4,116,121,112,101,114,7,0,0,0,41,1,218,4, - 110,97,109,101,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,11,95,110,101,119,95,109,111,100,117,108,101, - 129,0,0,0,115,2,0,0,0,0,1,114,68,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, - 0,64,0,0,0,115,58,0,0,0,101,0,0,90,1,0, - 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, - 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, - 0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,0, - 100,8,0,83,41,9,218,13,95,77,97,110,97,103,101,82, - 101,108,111,97,100,122,63,77,97,110,97,103,101,115,32,116, - 104,101,32,112,111,115,115,105,98,108,101,32,99,108,101,97, - 110,45,117,112,32,111,102,32,115,121,115,46,109,111,100,117, - 108,101,115,32,102,111,114,32,108,111,97,100,95,109,111,100, - 117,108,101,40,41,46,99,2,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,13,0,0,0, - 124,1,0,124,0,0,95,0,0,100,0,0,83,41,1,78, - 41,1,218,5,95,110,97,109,101,41,2,218,4,115,101,108, - 102,114,67,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,141, - 0,0,0,115,2,0,0,0,0,1,122,22,95,77,97,110, - 97,103,101,82,101,108,111,97,100,46,95,95,105,110,105,116, - 95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,2, - 0,0,0,67,0,0,0,115,25,0,0,0,124,0,0,106, - 0,0,116,1,0,106,2,0,107,6,0,124,0,0,95,3, - 0,100,0,0,83,41,1,78,41,4,114,70,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,71,0,0,0, + 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, - 9,95,95,101,110,116,101,114,95,95,144,0,0,0,115,2, - 0,0,0,0,1,122,23,95,77,97,110,97,103,101,82,101, - 108,111,97,100,46,95,95,101,110,116,101,114,95,95,99,1, - 0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,71, - 0,0,0,115,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,218, - 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,148,0, - 0,0,115,2,0,0,0,6,0,122,41,95,77,97,110,97, - 103,101,82,101,108,111,97,100,46,95,95,101,120,105,116,95, - 95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, - 120,112,114,62,41,6,218,3,97,110,121,114,74,0,0,0, - 114,7,0,0,0,114,73,0,0,0,114,70,0,0,0,218, - 8,75,101,121,69,114,114,111,114,41,2,114,71,0,0,0, - 218,4,97,114,103,115,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,8,95,95,101,120,105,116,95,95,147, - 0,0,0,115,10,0,0,0,0,1,35,1,3,1,17,1, - 13,1,122,22,95,77,97,110,97,103,101,82,101,108,111,97, - 100,46,95,95,101,120,105,116,95,95,78,41,7,114,57,0, - 0,0,114,56,0,0,0,114,58,0,0,0,114,59,0,0, - 0,114,72,0,0,0,114,75,0,0,0,114,81,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,69,0,0,0,137,0,0,0,115,8,0, - 0,0,12,2,6,2,12,3,12,3,114,69,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, + 7,95,114,95,108,111,110,103,45,0,0,0,115,2,0,0, + 0,0,2,114,19,0,0,0,99,0,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,71,0,0,0,115,26,0, + 0,0,116,0,0,106,1,0,100,1,0,100,2,0,132,0, + 0,124,0,0,68,131,1,0,131,1,0,83,41,3,122,31, + 82,101,112,108,97,99,101,109,101,110,116,32,102,111,114,32, + 111,115,46,112,97,116,104,46,106,111,105,110,40,41,46,99, + 1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 83,0,0,0,115,37,0,0,0,103,0,0,124,0,0,93, + 27,0,125,1,0,124,1,0,114,6,0,124,1,0,106,0, + 0,116,1,0,131,1,0,145,2,0,113,6,0,83,114,4, + 0,0,0,41,2,218,6,114,115,116,114,105,112,218,15,112, + 97,116,104,95,115,101,112,97,114,97,116,111,114,115,41,2, + 218,2,46,48,218,4,112,97,114,116,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,250,10,60,108,105,115,116, + 99,111,109,112,62,52,0,0,0,115,2,0,0,0,9,1, + 122,30,95,112,97,116,104,95,106,111,105,110,46,60,108,111, + 99,97,108,115,62,46,60,108,105,115,116,99,111,109,112,62, + 41,2,218,8,112,97,116,104,95,115,101,112,218,4,106,111, + 105,110,41,1,218,10,112,97,116,104,95,112,97,114,116,115, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 10,95,112,97,116,104,95,106,111,105,110,50,0,0,0,115, + 4,0,0,0,0,2,15,1,114,28,0,0,0,99,1,0, + 0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,0, + 0,0,115,134,0,0,0,116,0,0,116,1,0,131,1,0, + 100,1,0,107,2,0,114,52,0,124,0,0,106,2,0,116, + 3,0,131,1,0,92,3,0,125,1,0,125,2,0,125,3, + 0,124,1,0,124,3,0,102,2,0,83,120,69,0,116,4, + 0,124,0,0,131,1,0,68,93,55,0,125,4,0,124,4, + 0,116,1,0,107,6,0,114,65,0,124,0,0,106,5,0, + 124,4,0,100,2,0,100,1,0,131,1,1,92,2,0,125, + 1,0,125,3,0,124,1,0,124,3,0,102,2,0,83,113, + 65,0,87,100,3,0,124,0,0,102,2,0,83,41,4,122, + 32,82,101,112,108,97,99,101,109,101,110,116,32,102,111,114, + 32,111,115,46,112,97,116,104,46,115,112,108,105,116,40,41, + 46,233,1,0,0,0,90,8,109,97,120,115,112,108,105,116, + 218,0,41,6,218,3,108,101,110,114,21,0,0,0,218,10, + 114,112,97,114,116,105,116,105,111,110,114,25,0,0,0,218, + 8,114,101,118,101,114,115,101,100,218,6,114,115,112,108,105, + 116,41,5,218,4,112,97,116,104,90,5,102,114,111,110,116, + 218,1,95,218,4,116,97,105,108,114,16,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,11,95, + 112,97,116,104,95,115,112,108,105,116,56,0,0,0,115,16, + 0,0,0,0,2,18,1,24,1,10,1,19,1,12,1,27, + 1,14,1,114,38,0,0,0,99,1,0,0,0,0,0,0, + 0,1,0,0,0,2,0,0,0,67,0,0,0,115,13,0, + 0,0,116,0,0,106,1,0,124,0,0,131,1,0,83,41, + 1,122,126,83,116,97,116,32,116,104,101,32,112,97,116,104, + 46,10,10,32,32,32,32,77,97,100,101,32,97,32,115,101, + 112,97,114,97,116,101,32,102,117,110,99,116,105,111,110,32, + 116,111,32,109,97,107,101,32,105,116,32,101,97,115,105,101, + 114,32,116,111,32,111,118,101,114,114,105,100,101,32,105,110, + 32,101,120,112,101,114,105,109,101,110,116,115,10,32,32,32, + 32,40,101,46,103,46,32,99,97,99,104,101,32,115,116,97, + 116,32,114,101,115,117,108,116,115,41,46,10,10,32,32,32, + 32,41,2,114,3,0,0,0,90,4,115,116,97,116,41,1, + 114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,10,95,112,97,116,104,95,115,116,97,116, + 68,0,0,0,115,2,0,0,0,0,7,114,39,0,0,0, + 99,2,0,0,0,0,0,0,0,3,0,0,0,11,0,0, + 0,67,0,0,0,115,58,0,0,0,121,16,0,116,0,0, + 124,0,0,131,1,0,125,2,0,87,110,22,0,4,116,1, + 0,107,10,0,114,40,0,1,1,1,100,1,0,83,89,110, + 1,0,88,124,2,0,106,2,0,100,2,0,64,124,1,0, + 107,2,0,83,41,3,122,49,84,101,115,116,32,119,104,101, + 116,104,101,114,32,116,104,101,32,112,97,116,104,32,105,115, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, + 111,100,101,32,116,121,112,101,46,70,105,0,240,0,0,41, + 3,114,39,0,0,0,218,7,79,83,69,114,114,111,114,218, + 7,115,116,95,109,111,100,101,41,3,114,35,0,0,0,218, + 4,109,111,100,101,90,9,115,116,97,116,95,105,110,102,111, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 18,95,112,97,116,104,95,105,115,95,109,111,100,101,95,116, + 121,112,101,78,0,0,0,115,10,0,0,0,0,2,3,1, + 16,1,13,1,9,1,114,43,0,0,0,99,1,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, + 115,13,0,0,0,116,0,0,124,0,0,100,1,0,131,2, + 0,83,41,2,122,31,82,101,112,108,97,99,101,109,101,110, + 116,32,102,111,114,32,111,115,46,112,97,116,104,46,105,115, + 102,105,108,101,46,105,0,128,0,0,41,1,114,43,0,0, + 0,41,1,114,35,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,12,95,112,97,116,104,95,105, + 115,102,105,108,101,87,0,0,0,115,2,0,0,0,0,2, + 114,44,0,0,0,99,1,0,0,0,0,0,0,0,1,0, + 0,0,3,0,0,0,67,0,0,0,115,31,0,0,0,124, + 0,0,115,18,0,116,0,0,106,1,0,131,0,0,125,0, + 0,116,2,0,124,0,0,100,1,0,131,2,0,83,41,2, + 122,30,82,101,112,108,97,99,101,109,101,110,116,32,102,111, + 114,32,111,115,46,112,97,116,104,46,105,115,100,105,114,46, + 105,0,64,0,0,41,3,114,3,0,0,0,218,6,103,101, + 116,99,119,100,114,43,0,0,0,41,1,114,35,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 11,95,112,97,116,104,95,105,115,100,105,114,92,0,0,0, + 115,6,0,0,0,0,2,6,1,12,1,114,46,0,0,0, + 105,182,1,0,0,99,3,0,0,0,0,0,0,0,6,0, + 0,0,17,0,0,0,67,0,0,0,115,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,99,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,92,0,0,0,120,66,0,100,1,0, + 100,2,0,100,3,0,100,4,0,103,4,0,68,93,46,0, + 125,2,0,116,0,0,124,1,0,124,2,0,131,2,0,114, + 19,0,116,1,0,124,0,0,124,2,0,116,2,0,124,1, + 0,124,2,0,131,2,0,131,3,0,1,113,19,0,87,124, + 0,0,106,3,0,106,4,0,124,1,0,106,3,0,131,1, + 0,1,100,5,0,83,41,6,122,47,83,105,109,112,108,101, + 32,115,117,98,115,116,105,116,117,116,101,32,102,111,114,32, + 102,117,110,99,116,111,111,108,115,46,117,112,100,97,116,101, + 95,119,114,97,112,112,101,114,46,218,10,95,95,109,111,100, + 117,108,101,95,95,218,8,95,95,110,97,109,101,95,95,218, + 12,95,95,113,117,97,108,110,97,109,101,95,95,218,7,95, + 95,100,111,99,95,95,78,41,5,218,7,104,97,115,97,116, + 116,114,218,7,115,101,116,97,116,116,114,218,7,103,101,116, + 97,116,116,114,218,8,95,95,100,105,99,116,95,95,218,6, + 117,112,100,97,116,101,41,3,90,3,110,101,119,90,3,111, + 108,100,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,121,0,0, + 0,115,8,0,0,0,0,2,25,1,15,1,29,1,114,65, + 0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0, + 2,0,0,0,67,0,0,0,115,16,0,0,0,116,0,0, + 116,1,0,131,1,0,124,0,0,131,1,0,83,41,1,78, + 41,2,218,4,116,121,112,101,114,7,0,0,0,41,1,218, + 4,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,11,95,110,101,119,95,109,111,100,117,108, + 101,129,0,0,0,115,2,0,0,0,0,1,114,68,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, + 0,0,64,0,0,0,115,58,0,0,0,101,0,0,90,1, + 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, + 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, + 0,0,90,5,0,100,6,0,100,7,0,132,0,0,90,6, + 0,100,8,0,83,41,9,218,13,95,77,97,110,97,103,101, + 82,101,108,111,97,100,122,63,77,97,110,97,103,101,115,32, + 116,104,101,32,112,111,115,115,105,98,108,101,32,99,108,101, + 97,110,45,117,112,32,111,102,32,115,121,115,46,109,111,100, + 117,108,101,115,32,102,111,114,32,108,111,97,100,95,109,111, + 100,117,108,101,40,41,46,99,2,0,0,0,0,0,0,0, + 2,0,0,0,2,0,0,0,67,0,0,0,115,13,0,0, + 0,124,1,0,124,0,0,95,0,0,100,0,0,83,41,1, + 78,41,1,218,5,95,110,97,109,101,41,2,218,4,115,101, + 108,102,114,67,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, + 141,0,0,0,115,2,0,0,0,0,1,122,22,95,77,97, + 110,97,103,101,82,101,108,111,97,100,46,95,95,105,110,105, + 116,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0, + 2,0,0,0,67,0,0,0,115,25,0,0,0,124,0,0, + 106,0,0,116,1,0,106,2,0,107,6,0,124,0,0,95, + 3,0,100,0,0,83,41,1,78,41,4,114,70,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,71,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,144,0,0,0,115, + 2,0,0,0,0,1,122,23,95,77,97,110,97,103,101,82, + 101,108,111,97,100,46,95,95,101,110,116,101,114,95,95,99, + 1,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0, + 71,0,0,0,115,77,0,0,0,116,0,0,100,1,0,100, + 2,0,132,0,0,124,1,0,68,131,1,0,131,1,0,114, + 73,0,124,0,0,106,1,0,12,114,73,0,121,17,0,116, + 2,0,106,3,0,124,0,0,106,4,0,61,87,110,18,0, + 4,116,5,0,107,10,0,114,72,0,1,1,1,89,110,1, + 0,88,100,0,0,83,41,3,78,99,1,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,115,0,0,0,115,27, + 0,0,0,124,0,0,93,17,0,125,1,0,124,1,0,100, + 0,0,107,9,0,86,1,113,3,0,100,0,0,83,41,1, + 78,114,4,0,0,0,41,2,114,22,0,0,0,218,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,148,0,0,0, + 115,2,0,0,0,6,0,122,41,95,77,97,110,97,103,101, + 82,101,108,111,97,100,46,95,95,101,120,105,116,95,95,46, + 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, + 114,62,41,6,218,3,97,110,121,114,74,0,0,0,114,7, + 0,0,0,114,73,0,0,0,114,70,0,0,0,218,8,75, + 101,121,69,114,114,111,114,41,2,114,71,0,0,0,218,4, + 97,114,103,115,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,218,8,95,95,101,120,105,116,95,95,147,0,0, + 0,115,10,0,0,0,0,1,35,1,3,1,17,1,13,1, + 122,22,95,77,97,110,97,103,101,82,101,108,111,97,100,46, + 95,95,101,120,105,116,95,95,78,41,7,114,57,0,0,0, + 114,56,0,0,0,114,58,0,0,0,114,59,0,0,0,114, + 72,0,0,0,114,75,0,0,0,114,81,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,69,0,0,0,137,0,0,0,115,8,0,0,0, + 12,2,6,2,12,3,12,3,114,69,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, + 82,0,0,0,162,0,0,0,115,2,0,0,0,12,1,114, + 82,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,114,67,0,0,0,218, + 5,111,119,110,101,114,218,5,99,111,117,110,116,218,7,119, + 97,105,116,101,114,115,41,2,114,71,0,0,0,114,67,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,82,0,0,0,162,0,0,0,115,2,0,0,0,12, - 1,114,82,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,114,67,0,0, - 0,218,5,111,119,110,101,114,218,5,99,111,117,110,116,218, - 7,119,97,105,116,101,114,115,41,2,114,71,0,0,0,114, - 67,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,72,0,0,0,172,0,0,0,115,12,0,0, - 0,0,1,15,1,15,1,9,1,9,1,9,1,122,20,95, - 77,111,100,117,108,101,76,111,99,107,46,95,95,105,110,105, - 116,95,95,99,1,0,0,0,0,0,0,0,4,0,0,0, - 2,0,0,0,67,0,0,0,115,88,0,0,0,116,0,0, - 106,1,0,131,0,0,125,1,0,124,0,0,106,2,0,125, - 2,0,120,60,0,116,3,0,106,4,0,124,2,0,131,1, - 0,125,3,0,124,3,0,100,0,0,107,8,0,114,55,0, - 100,1,0,83,124,3,0,106,2,0,125,2,0,124,2,0, - 124,1,0,107,2,0,114,24,0,100,2,0,83,113,24,0, - 87,100,0,0,83,41,3,78,70,84,41,5,114,85,0,0, - 0,218,9,103,101,116,95,105,100,101,110,116,114,88,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,71,0,0,0,218,2,109,101,218, - 3,116,105,100,114,86,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,180,0,0,0,115,18,0,0,0,0, - 2,12,1,9,1,3,1,15,1,12,1,4,1,9,1,12, - 1,122,24,95,77,111,100,117,108,101,76,111,99,107,46,104, - 97,115,95,100,101,97,100,108,111,99,107,99,1,0,0,0, - 0,0,0,0,2,0,0,0,16,0,0,0,67,0,0,0, - 115,215,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,178,0,120,171, - 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,87,100,6,0, - 116,2,0,124,1,0,61,88,100,6,0,83,41,7,122,185, - 10,32,32,32,32,32,32,32,32,65,99,113,117,105,114,101, - 32,116,104,101,32,109,111,100,117,108,101,32,108,111,99,107, - 46,32,32,73,102,32,97,32,112,111,116,101,110,116,105,97, - 108,32,100,101,97,100,108,111,99,107,32,105,115,32,100,101, - 116,101,99,116,101,100,44,10,32,32,32,32,32,32,32,32, - 97,32,95,68,101,97,100,108,111,99,107,69,114,114,111,114, - 32,105,115,32,114,97,105,115,101,100,46,10,32,32,32,32, - 32,32,32,32,79,116,104,101,114,119,105,115,101,44,32,116, - 104,101,32,108,111,99,107,32,105,115,32,97,108,119,97,121, - 115,32,97,99,113,117,105,114,101,100,32,97,110,100,32,84, - 114,117,101,32,105,115,32,114,101,116,117,114,110,101,100,46, - 10,32,32,32,32,32,32,32,32,114,84,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,85,0,0,0,114,91,0,0,0,114,92,0,0,0, - 114,86,0,0,0,114,89,0,0,0,114,88,0,0,0,114, - 96,0,0,0,114,82,0,0,0,114,87,0,0,0,218,7, - 97,99,113,117,105,114,101,114,90,0,0,0,218,7,114,101, - 108,101,97,115,101,41,2,114,71,0,0,0,114,95,0,0, + 0,114,72,0,0,0,172,0,0,0,115,12,0,0,0,0, + 1,15,1,15,1,9,1,9,1,9,1,122,20,95,77,111, + 100,117,108,101,76,111,99,107,46,95,95,105,110,105,116,95, + 95,99,1,0,0,0,0,0,0,0,4,0,0,0,2,0, + 0,0,67,0,0,0,115,88,0,0,0,116,0,0,106,1, + 0,131,0,0,125,1,0,124,0,0,106,2,0,125,2,0, + 120,60,0,116,3,0,106,4,0,124,2,0,131,1,0,125, + 3,0,124,3,0,100,0,0,107,8,0,114,55,0,100,1, + 0,83,124,3,0,106,2,0,125,2,0,124,2,0,124,1, + 0,107,2,0,114,24,0,100,2,0,83,113,24,0,87,100, + 0,0,83,41,3,78,70,84,41,5,114,85,0,0,0,218, + 9,103,101,116,95,105,100,101,110,116,114,88,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,71,0,0,0,218,2,109,101,218,3,116, + 105,100,114,86,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,180,0,0,0,115,18,0,0,0,0,2,12, + 1,9,1,3,1,15,1,12,1,4,1,9,1,12,1,122, + 24,95,77,111,100,117,108,101,76,111,99,107,46,104,97,115, + 95,100,101,97,100,108,111,99,107,99,1,0,0,0,0,0, + 0,0,2,0,0,0,16,0,0,0,67,0,0,0,115,209, + 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,172,0,120,165,0,124, + 0,0,106,3,0,143,124,0,1,124,0,0,106,4,0,100, + 1,0,107,2,0,115,68,0,124,0,0,106,5,0,124,1, + 0,107,2,0,114,96,0,124,1,0,124,0,0,95,5,0, + 124,0,0,4,106,4,0,100,2,0,55,2,95,4,0,100, + 3,0,83,124,0,0,106,6,0,131,0,0,114,124,0,116, + 7,0,100,4,0,124,0,0,22,131,1,0,130,1,0,124, + 0,0,106,8,0,106,9,0,100,5,0,131,1,0,114,157, + 0,124,0,0,4,106,10,0,100,2,0,55,2,95,10,0, + 87,100,6,0,81,88,124,0,0,106,8,0,106,9,0,131, + 0,0,1,124,0,0,106,8,0,106,11,0,131,0,0,1, + 113,28,0,87,87,100,6,0,116,2,0,124,1,0,61,88, + 100,6,0,83,41,7,122,185,10,32,32,32,32,32,32,32, + 32,65,99,113,117,105,114,101,32,116,104,101,32,109,111,100, + 117,108,101,32,108,111,99,107,46,32,32,73,102,32,97,32, + 112,111,116,101,110,116,105,97,108,32,100,101,97,100,108,111, + 99,107,32,105,115,32,100,101,116,101,99,116,101,100,44,10, + 32,32,32,32,32,32,32,32,97,32,95,68,101,97,100,108, + 111,99,107,69,114,114,111,114,32,105,115,32,114,97,105,115, + 101,100,46,10,32,32,32,32,32,32,32,32,79,116,104,101, + 114,119,105,115,101,44,32,116,104,101,32,108,111,99,107,32, + 105,115,32,97,108,119,97,121,115,32,97,99,113,117,105,114, + 101,100,32,97,110,100,32,84,114,117,101,32,105,115,32,114, + 101,116,117,114,110,101,100,46,10,32,32,32,32,32,32,32, + 32,114,84,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,85,0,0,0,114,91, + 0,0,0,114,92,0,0,0,114,86,0,0,0,114,89,0, + 0,0,114,88,0,0,0,114,96,0,0,0,114,82,0,0, + 0,114,87,0,0,0,218,7,97,99,113,117,105,114,101,114, + 90,0,0,0,218,7,114,101,108,101,97,115,101,41,2,114, + 71,0,0,0,114,95,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,97,0,0,0,192,0,0, + 0,115,32,0,0,0,0,6,12,1,10,1,3,1,3,1, + 10,1,30,1,9,1,15,1,4,1,12,1,16,1,18,1, + 21,2,13,1,21,2,122,19,95,77,111,100,117,108,101,76, + 111,99,107,46,97,99,113,117,105,114,101,99,1,0,0,0, + 0,0,0,0,2,0,0,0,10,0,0,0,67,0,0,0, + 115,156,0,0,0,116,0,0,106,1,0,131,0,0,125,1, + 0,124,0,0,106,2,0,143,129,0,1,124,0,0,106,3, + 0,124,1,0,107,3,0,114,49,0,116,4,0,100,1,0, + 131,1,0,130,1,0,124,0,0,106,5,0,100,2,0,107, + 4,0,115,70,0,116,6,0,130,1,0,124,0,0,4,106, + 5,0,100,3,0,56,2,95,5,0,124,0,0,106,5,0, + 100,2,0,107,2,0,114,146,0,100,0,0,124,0,0,95, + 3,0,124,0,0,106,7,0,114,146,0,124,0,0,4,106, + 7,0,100,3,0,56,2,95,7,0,124,0,0,106,8,0, + 106,9,0,131,0,0,1,87,100,0,0,81,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,84,0,0,0,114,29,0,0,0,41, + 10,114,85,0,0,0,114,91,0,0,0,114,86,0,0,0, + 114,88,0,0,0,218,12,82,117,110,116,105,109,101,69,114, + 114,111,114,114,89,0,0,0,218,14,65,115,115,101,114,116, + 105,111,110,69,114,114,111,114,114,90,0,0,0,114,87,0, + 0,0,114,98,0,0,0,41,2,114,71,0,0,0,114,95, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,98,0,0,0,217,0,0,0,115,22,0,0,0, + 0,1,12,1,10,1,15,1,12,1,21,1,15,1,15,1, + 9,1,9,1,15,1,122,19,95,77,111,100,117,108,101,76, + 111,99,107,46,114,101,108,101,97,115,101,99,1,0,0,0, + 0,0,0,0,1,0,0,0,4,0,0,0,67,0,0,0, + 115,25,0,0,0,100,1,0,106,0,0,124,0,0,106,1, + 0,116,2,0,124,0,0,131,1,0,131,2,0,83,41,2, + 78,122,23,95,77,111,100,117,108,101,76,111,99,107,40,123, + 33,114,125,41,32,97,116,32,123,125,41,3,114,47,0,0, + 0,114,67,0,0,0,114,48,0,0,0,41,1,114,71,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,230,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,72,0,0,0,114,96,0,0,0,114,97,0, + 0,0,114,98,0,0,0,114,101,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,97,0,0,0,192,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,21,2,122,19, - 95,77,111,100,117,108,101,76,111,99,107,46,97,99,113,117, - 105,114,101,99,1,0,0,0,0,0,0,0,2,0,0,0, - 10,0,0,0,67,0,0,0,115,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,84,0,0,0,114,29,0,0,0, - 41,10,114,85,0,0,0,114,91,0,0,0,114,86,0,0, - 0,114,88,0,0,0,218,12,82,117,110,116,105,109,101,69, - 114,114,111,114,114,89,0,0,0,218,14,65,115,115,101,114, - 116,105,111,110,69,114,114,111,114,114,90,0,0,0,114,87, - 0,0,0,114,98,0,0,0,41,2,114,71,0,0,0,114, - 95,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,98,0,0,0,217,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, + 114,83,0,0,0,166,0,0,0,115,12,0,0,0,12,4, + 6,2,12,8,12,12,12,25,12,13,114,83,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,84, + 0,0,0,41,2,114,67,0,0,0,114,89,0,0,0,41, + 2,114,71,0,0,0,114,67,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,72,0,0,0,238, + 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, + 89,0,0,0,41,1,114,71,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,97,0,0,0,242, + 0,0,0,115,4,0,0,0,0,1,15,1,122,24,95,68, + 117,109,109,121,77,111,100,117,108,101,76,111,99,107,46,97, + 99,113,117,105,114,101,99,1,0,0,0,0,0,0,0,1, + 0,0,0,3,0,0,0,67,0,0,0,115,46,0,0,0, + 124,0,0,106,0,0,100,1,0,107,2,0,114,27,0,116, + 1,0,100,2,0,131,1,0,130,1,0,124,0,0,4,106, + 0,0,100,3,0,56,2,95,0,0,100,0,0,83,41,4, + 78,114,84,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,89, + 0,0,0,114,99,0,0,0,41,1,114,71,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,98, + 0,0,0,246,0,0,0,115,6,0,0,0,0,1,15,1, + 12,1,122,24,95,68,117,109,109,121,77,111,100,117,108,101, 76,111,99,107,46,114,101,108,101,97,115,101,99,1,0,0, 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, 0,115,25,0,0,0,100,1,0,106,0,0,124,0,0,106, 1,0,116,2,0,124,0,0,131,1,0,131,2,0,83,41, - 2,78,122,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,67,0,0,0,114,48,0,0,0,41,1,114,71, - 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,230,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,72,0,0,0,114,96,0,0,0,114,97, + 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,67,0,0,0,114,48,0,0, + 0,41,1,114,71,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,101,0,0,0,251,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,72,0,0,0,114,97, 0,0,0,114,98,0,0,0,114,101,0,0,0,114,4,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,83,0,0,0,166,0,0,0,115,12,0,0,0,12, - 4,6,2,12,8,12,12,12,25,12,13,114,83,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, - 84,0,0,0,41,2,114,67,0,0,0,114,89,0,0,0, - 41,2,114,71,0,0,0,114,67,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,72,0,0,0, - 238,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,89,0,0,0,41,1,114,71,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,97,0,0,0, - 242,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,84,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,89,0,0,0,114,99,0,0,0,41,1,114,71, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,98,0,0,0,246,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,67,0,0,0, - 114,48,0,0,0,41,1,114,71,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,101,0,0,0, - 251,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,72,0, - 0,0,114,97,0,0,0,114,98,0,0,0,114,101,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,102,0,0,0,234,0,0,0,115,10, - 0,0,0,12,2,6,2,12,4,12,4,12,5,114,102,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,64,0,0,0,115,52,0,0,0,101,0,0,90, - 1,0,100,0,0,90,2,0,100,1,0,100,2,0,132,0, - 0,90,3,0,100,3,0,100,4,0,132,0,0,90,4,0, - 100,5,0,100,6,0,132,0,0,90,5,0,100,7,0,83, - 41,8,218,18,95,77,111,100,117,108,101,76,111,99,107,77, - 97,110,97,103,101,114,99,2,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,0, - 124,1,0,124,0,0,95,0,0,100,0,0,124,0,0,95, - 1,0,100,0,0,83,41,1,78,41,2,114,70,0,0,0, - 218,5,95,108,111,99,107,41,2,114,71,0,0,0,114,67, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,72,0,0,0,1,1,0,0,115,4,0,0,0, - 0,1,9,1,122,27,95,77,111,100,117,108,101,76,111,99, - 107,77,97,110,97,103,101,114,46,95,95,105,110,105,116,95, - 95,99,1,0,0,0,0,0,0,0,1,0,0,0,10,0, - 0,0,67,0,0,0,115,53,0,0,0,122,22,0,116,0, - 0,124,0,0,106,1,0,131,1,0,124,0,0,95,2,0, - 87,100,0,0,116,3,0,106,4,0,131,0,0,1,88,124, - 0,0,106,2,0,106,5,0,131,0,0,1,100,0,0,83, - 41,1,78,41,6,218,16,95,103,101,116,95,109,111,100,117, - 108,101,95,108,111,99,107,114,70,0,0,0,114,104,0,0, - 0,218,4,95,105,109,112,218,12,114,101,108,101,97,115,101, - 95,108,111,99,107,114,97,0,0,0,41,1,114,71,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,75,0,0,0,5,1,0,0,115,8,0,0,0,0,1, - 3,1,22,2,11,1,122,28,95,77,111,100,117,108,101,76, - 111,99,107,77,97,110,97,103,101,114,46,95,95,101,110,116, - 101,114,95,95,99,1,0,0,0,0,0,0,0,3,0,0, - 0,1,0,0,0,79,0,0,0,115,17,0,0,0,124,0, - 0,106,0,0,106,1,0,131,0,0,1,100,0,0,83,41, - 1,78,41,2,114,104,0,0,0,114,98,0,0,0,41,3, - 114,71,0,0,0,114,80,0,0,0,218,6,107,119,97,114, - 103,115,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,81,0,0,0,12,1,0,0,115,2,0,0,0,0, - 1,122,27,95,77,111,100,117,108,101,76,111,99,107,77,97, - 110,97,103,101,114,46,95,95,101,120,105,116,95,95,78,41, - 6,114,57,0,0,0,114,56,0,0,0,114,58,0,0,0, - 114,72,0,0,0,114,75,0,0,0,114,81,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,103,0,0,0,255,0,0,0,115,6,0,0, - 0,12,2,12,4,12,7,114,103,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,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,67,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,2,99,98,32,1,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,109,0,0,0,114,79,0,0,0, - 114,85,0,0,0,114,102,0,0,0,114,83,0,0,0,218, - 8,95,119,101,97,107,114,101,102,90,3,114,101,102,41,3, - 114,67,0,0,0,114,86,0,0,0,114,110,0,0,0,114, - 4,0,0,0,41,1,114,67,0,0,0,114,5,0,0,0, - 114,105,0,0,0,18,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,114,105,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,105,0,0,0, - 114,106,0,0,0,114,107,0,0,0,114,97,0,0,0,114, - 82,0,0,0,114,98,0,0,0,41,2,114,67,0,0,0, - 114,86,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,37,1,0,0,115,14,0, - 0,0,0,7,12,1,10,1,3,1,14,1,13,3,5,2, - 114,112,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,114,80,0,0,0, - 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, - 57,1,0,0,115,2,0,0,0,0,8,114,114,0,0,0, - 105,238,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,192,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,114,151,0, - 124,6,0,110,3,0,124,8,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, - 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,84,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,114,32,0,0,0,218,14,105,109,112,108,101,109,101,110, - 116,97,116,105,111,110,218,9,99,97,99,104,101,95,116,97, - 103,218,19,78,111,116,73,109,112,108,101,109,101,110,116,101, - 100,69,114,114,111,114,114,26,0,0,0,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,4,98, - 97,115,101,218,3,115,101,112,218,4,114,101,115,116,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,181, - 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,43,1,114,132, - 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, + 0,114,102,0,0,0,234,0,0,0,115,10,0,0,0,12, + 2,6,2,12,4,12,4,12,5,114,102,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64, + 0,0,0,115,52,0,0,0,101,0,0,90,1,0,100,0, + 0,90,2,0,100,1,0,100,2,0,132,0,0,90,3,0, + 100,3,0,100,4,0,132,0,0,90,4,0,100,5,0,100, + 6,0,132,0,0,90,5,0,100,7,0,83,41,8,218,18, + 95,77,111,100,117,108,101,76,111,99,107,77,97,110,97,103, + 101,114,99,2,0,0,0,0,0,0,0,2,0,0,0,2, + 0,0,0,67,0,0,0,115,22,0,0,0,124,1,0,124, + 0,0,95,0,0,100,0,0,124,0,0,95,1,0,100,0, + 0,83,41,1,78,41,2,114,70,0,0,0,218,5,95,108, + 111,99,107,41,2,114,71,0,0,0,114,67,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,72, + 0,0,0,1,1,0,0,115,4,0,0,0,0,1,9,1, + 122,27,95,77,111,100,117,108,101,76,111,99,107,77,97,110, + 97,103,101,114,46,95,95,105,110,105,116,95,95,99,1,0, + 0,0,0,0,0,0,1,0,0,0,10,0,0,0,67,0, + 0,0,115,53,0,0,0,122,22,0,116,0,0,124,0,0, + 106,1,0,131,1,0,124,0,0,95,2,0,87,100,0,0, + 116,3,0,106,4,0,131,0,0,1,88,124,0,0,106,2, + 0,106,5,0,131,0,0,1,100,0,0,83,41,1,78,41, + 6,218,16,95,103,101,116,95,109,111,100,117,108,101,95,108, + 111,99,107,114,70,0,0,0,114,104,0,0,0,218,4,95, + 105,109,112,218,12,114,101,108,101,97,115,101,95,108,111,99, + 107,114,97,0,0,0,41,1,114,71,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,75,0,0, + 0,5,1,0,0,115,8,0,0,0,0,1,3,1,22,2, + 11,1,122,28,95,77,111,100,117,108,101,76,111,99,107,77, + 97,110,97,103,101,114,46,95,95,101,110,116,101,114,95,95, + 99,1,0,0,0,0,0,0,0,3,0,0,0,1,0,0, + 0,79,0,0,0,115,17,0,0,0,124,0,0,106,0,0, + 106,1,0,131,0,0,1,100,0,0,83,41,1,78,41,2, + 114,104,0,0,0,114,98,0,0,0,41,3,114,71,0,0, + 0,114,80,0,0,0,218,6,107,119,97,114,103,115,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,81,0, + 0,0,12,1,0,0,115,2,0,0,0,0,1,122,27,95, + 77,111,100,117,108,101,76,111,99,107,77,97,110,97,103,101, + 114,46,95,95,101,120,105,116,95,95,78,41,6,114,57,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,72,0,0, + 0,114,75,0,0,0,114,81,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 103,0,0,0,255,0,0,0,115,6,0,0,0,12,2,12, + 4,12,7,114,103,0,0,0,99,1,0,0,0,0,0,0, + 0,3,0,0,0,11,0,0,0,3,0,0,0,115,139,0, + 0,0,100,1,0,125,1,0,121,17,0,116,0,0,136,0, + 0,25,131,0,0,125,1,0,87,110,18,0,4,116,1,0, + 107,10,0,114,43,0,1,1,1,89,110,1,0,88,124,1, + 0,100,1,0,107,8,0,114,135,0,116,2,0,100,1,0, + 107,8,0,114,83,0,116,3,0,136,0,0,131,1,0,125, + 1,0,110,12,0,116,4,0,136,0,0,131,1,0,125,1, + 0,135,0,0,102,1,0,100,2,0,100,3,0,134,0,0, + 125,2,0,116,5,0,106,6,0,124,1,0,124,2,0,131, + 2,0,116,0,0,136,0,0,60,124,1,0,83,41,4,122, + 109,71,101,116,32,111,114,32,99,114,101,97,116,101,32,116, + 104,101,32,109,111,100,117,108,101,32,108,111,99,107,32,102, + 111,114,32,97,32,103,105,118,101,110,32,109,111,100,117,108, + 101,32,110,97,109,101,46,10,10,32,32,32,32,83,104,111, + 117,108,100,32,111,110,108,121,32,98,101,32,99,97,108,108, + 101,100,32,119,105,116,104,32,116,104,101,32,105,109,112,111, + 114,116,32,108,111,99,107,32,116,97,107,101,110,46,78,99, + 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 19,0,0,0,115,11,0,0,0,116,0,0,136,0,0,61, + 100,0,0,83,41,1,78,41,1,218,13,95,109,111,100,117, + 108,101,95,108,111,99,107,115,41,1,114,36,0,0,0,41, + 1,114,67,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,2,99,98,32,1,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, + 109,0,0,0,114,79,0,0,0,114,85,0,0,0,114,102, + 0,0,0,114,83,0,0,0,218,8,95,119,101,97,107,114, + 101,102,90,3,114,101,102,41,3,114,67,0,0,0,114,86, + 0,0,0,114,110,0,0,0,114,4,0,0,0,41,1,114, + 67,0,0,0,114,5,0,0,0,114,105,0,0,0,18,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,22,1,114, + 105,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,105,0,0,0,114,106,0,0,0,114,107, + 0,0,0,114,97,0,0,0,114,82,0,0,0,114,98,0, + 0,0,41,2,114,67,0,0,0,114,86,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,37,1,0,0,115,14,0,0,0,0,7,12,1,10, + 1,3,1,14,1,13,3,5,2,114,112,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,114,80,0,0,0,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,57,1,0,0,115,2,0, + 0,0,0,8,114,114,0,0,0,105,248,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,189,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,130,0,116,9, + 0,100,3,0,131,1,0,130,1,0,100,4,0,106,10,0, + 124,6,0,114,148,0,124,6,0,110,3,0,124,8,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,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, + 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,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,116,0,0, - 0,114,115,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,84,0,0,0,41,12,114,7,0,0,0, - 114,121,0,0,0,114,122,0,0,0,114,123,0,0,0,114, - 38,0,0,0,114,124,0,0,0,218,10,86,97,108,117,101, - 69,114,114,111,114,114,47,0,0,0,114,89,0,0,0,218, - 9,112,97,114,116,105,116,105,111,110,114,28,0,0,0,218, - 15,83,79,85,82,67,69,95,83,85,70,70,73,88,69,83, - 41,5,114,35,0,0,0,114,127,0,0,0,90,16,112,121, - 99,97,99,104,101,95,102,105,108,101,110,97,109,101,90,7, - 112,121,99,97,99,104,101,90,13,98,97,115,101,95,102,105, - 108,101,110,97,109,101,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,17,115,111,117,114,99,101,95,102,114, - 111,109,95,99,97,99,104,101,208,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,114,136,0,0,0,99,1, - 0,0,0,0,0,0,0,5,0,0,0,12,0,0,0,67, - 0,0,0,115,164,0,0,0,116,0,0,124,0,0,131,1, - 0,100,1,0,107,2,0,114,22,0,100,2,0,83,124,0, - 0,106,1,0,100,3,0,131,1,0,92,3,0,125,1,0, - 125,2,0,125,3,0,124,1,0,12,115,81,0,124,3,0, - 106,2,0,131,0,0,100,7,0,100,8,0,133,2,0,25, - 100,6,0,107,3,0,114,85,0,124,0,0,83,121,16,0, - 116,3,0,124,0,0,131,1,0,125,4,0,87,110,40,0, - 4,116,4,0,116,5,0,102,2,0,107,10,0,114,143,0, - 1,1,1,124,0,0,100,2,0,100,9,0,133,2,0,25, - 125,4,0,89,110,1,0,88,116,6,0,124,4,0,131,1, - 0,114,160,0,124,4,0,83,124,0,0,83,41,10,122,188, - 67,111,110,118,101,114,116,32,97,32,98,121,116,101,99,111, - 100,101,32,102,105,108,101,32,112,97,116,104,32,116,111,32, - 97,32,115,111,117,114,99,101,32,112,97,116,104,32,40,105, - 102,32,112,111,115,115,105,98,108,101,41,46,10,10,32,32, - 32,32,84,104,105,115,32,102,117,110,99,116,105,111,110,32, - 101,120,105,115,116,115,32,112,117,114,101,108,121,32,102,111, - 114,32,98,97,99,107,119,97,114,100,115,45,99,111,109,112, - 97,116,105,98,105,108,105,116,121,32,102,111,114,10,32,32, - 32,32,80,121,73,109,112,111,114,116,95,69,120,101,99,67, - 111,100,101,77,111,100,117,108,101,87,105,116,104,70,105,108, - 101,110,97,109,101,115,40,41,32,105,110,32,116,104,101,32, - 67,32,65,80,73,46,10,10,32,32,32,32,114,84,0,0, - 0,78,114,116,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, - 139,0,0,0,41,7,114,31,0,0,0,114,32,0,0,0, - 218,5,108,111,119,101,114,114,136,0,0,0,114,123,0,0, - 0,114,133,0,0,0,114,44,0,0,0,41,5,218,13,98, - 121,116,101,99,111,100,101,95,112,97,116,104,114,130,0,0, - 0,114,36,0,0,0,90,9,101,120,116,101,110,115,105,111, - 110,218,11,115,111,117,114,99,101,95,112,97,116,104,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,15,95, - 103,101,116,95,115,111,117,114,99,101,102,105,108,101,231,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,143,0,0,0, - 99,1,0,0,0,0,0,0,0,2,0,0,0,11,0,0, - 0,67,0,0,0,115,60,0,0,0,121,19,0,116,0,0, - 124,0,0,131,1,0,106,1,0,125,1,0,87,110,24,0, - 4,116,2,0,107,10,0,114,45,0,1,1,1,100,1,0, - 125,1,0,89,110,1,0,88,124,1,0,100,2,0,79,125, - 1,0,124,1,0,83,41,3,122,51,67,97,108,99,117,108, - 97,116,101,32,116,104,101,32,109,111,100,101,32,112,101,114, - 109,105,115,115,105,111,110,115,32,102,111,114,32,97,32,98, - 121,116,101,99,111,100,101,32,102,105,108,101,46,105,182,1, - 0,0,233,128,0,0,0,41,3,114,39,0,0,0,114,41, - 0,0,0,114,40,0,0,0,41,2,114,35,0,0,0,114, - 42,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,10,95,99,97,108,99,95,109,111,100,101,250, - 1,0,0,115,12,0,0,0,0,2,3,1,19,1,13,1, - 11,3,10,1,114,145,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,147,0, - 0,0,114,148,0,0,0,41,7,114,7,0,0,0,114,117, - 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,146,0,0,0,114,80,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,6,2,0,0,115, - 8,0,0,0,0,2,18,1,15,1,13,1,114,153,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,67,0,0,0, - 41,2,114,67,0,0,0,218,11,73,109,112,111,114,116,69, - 114,114,111,114,41,4,114,71,0,0,0,114,67,0,0,0, - 114,80,0,0,0,114,108,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,22,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,155,0,0,0,114,156, - 0,0,0,114,4,0,0,0,41,1,114,155,0,0,0,114, - 5,0,0,0,218,11,95,99,104,101,99,107,95,110,97,109, - 101,14,2,0,0,115,6,0,0,0,0,8,21,6,13,1, - 114,157,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,29, - 123,33,114,125,32,105,115,32,110,111,116,32,97,32,98,117, - 105,108,116,45,105,110,32,109,111,100,117,108,101,114,67,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, - 154,0,0,0,114,47,0,0,0,41,2,114,71,0,0,0, - 218,8,102,117,108,108,110,97,109,101,41,1,218,3,102,120, - 110,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,34,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,160,0,0,0,114,161,0,0,0, - 114,4,0,0,0,41,1,114,160,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,32,2,0,0,115,6,0,0,0,0,2,18, - 5,13,1,114,162,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, + 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, + 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, + 84,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,114,32,0,0,0,218,14,105,109, + 112,108,101,109,101,110,116,97,116,105,111,110,218,9,99,97, + 99,104,101,95,116,97,103,218,19,78,111,116,73,109,112,108, + 101,109,101,110,116,101,100,69,114,114,111,114,114,26,0,0, + 0,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,4,98,97,115,101,218,3,115,101,112,218,4, + 114,101,115,116,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,182,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, + 12,1,43,1,114,132,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,184, + 0,0,0,116,0,0,106,1,0,106,2,0,100,1,0,107, + 8,0,114,30,0,116,3,0,100,2,0,131,1,0,130,1, + 0,116,4,0,124,0,0,131,1,0,92,2,0,125,1,0, + 125,2,0,116,4,0,124,1,0,131,1,0,92,2,0,125, + 1,0,125,3,0,124,3,0,116,5,0,107,3,0,114,102, + 0,116,6,0,100,3,0,106,7,0,116,5,0,124,0,0, + 131,2,0,131,1,0,130,1,0,124,2,0,106,8,0,100, + 4,0,131,1,0,100,5,0,107,3,0,114,144,0,116,6, + 0,100,6,0,106,7,0,124,2,0,131,1,0,131,1,0, + 130,1,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,116,0,0,0,114,115, + 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,84,0,0,0,41,12,114,7,0,0,0,114,121,0, + 0,0,114,122,0,0,0,114,123,0,0,0,114,38,0,0, + 0,114,124,0,0,0,218,10,86,97,108,117,101,69,114,114, + 111,114,114,47,0,0,0,114,89,0,0,0,218,9,112,97, + 114,116,105,116,105,111,110,114,28,0,0,0,218,15,83,79, + 85,82,67,69,95,83,85,70,70,73,88,69,83,41,5,114, + 35,0,0,0,114,127,0,0,0,90,16,112,121,99,97,99, + 104,101,95,102,105,108,101,110,97,109,101,90,7,112,121,99, + 97,99,104,101,90,13,98,97,115,101,95,102,105,108,101,110, + 97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,17,115,111,117,114,99,101,95,102,114,111,109,95, + 99,97,99,104,101,209,1,0,0,115,24,0,0,0,0,9, + 18,1,12,1,18,1,18,1,12,1,9,1,15,1,21,1, + 9,1,12,1,19,1,114,136,0,0,0,99,1,0,0,0, + 0,0,0,0,5,0,0,0,12,0,0,0,67,0,0,0, + 115,164,0,0,0,116,0,0,124,0,0,131,1,0,100,1, + 0,107,2,0,114,22,0,100,2,0,83,124,0,0,106,1, + 0,100,3,0,131,1,0,92,3,0,125,1,0,125,2,0, + 125,3,0,124,1,0,12,115,81,0,124,3,0,106,2,0, + 131,0,0,100,7,0,100,8,0,133,2,0,25,100,6,0, + 107,3,0,114,85,0,124,0,0,83,121,16,0,116,3,0, + 124,0,0,131,1,0,125,4,0,87,110,40,0,4,116,4, + 0,116,5,0,102,2,0,107,10,0,114,143,0,1,1,1, + 124,0,0,100,2,0,100,9,0,133,2,0,25,125,4,0, + 89,110,1,0,88,116,6,0,124,4,0,131,1,0,114,160, + 0,124,4,0,83,124,0,0,83,41,10,122,188,67,111,110, + 118,101,114,116,32,97,32,98,121,116,101,99,111,100,101,32, + 102,105,108,101,32,112,97,116,104,32,116,111,32,97,32,115, + 111,117,114,99,101,32,112,97,116,104,32,40,105,102,32,112, + 111,115,115,105,98,108,101,41,46,10,10,32,32,32,32,84, + 104,105,115,32,102,117,110,99,116,105,111,110,32,101,120,105, + 115,116,115,32,112,117,114,101,108,121,32,102,111,114,32,98, + 97,99,107,119,97,114,100,115,45,99,111,109,112,97,116,105, + 98,105,108,105,116,121,32,102,111,114,10,32,32,32,32,80, + 121,73,109,112,111,114,116,95,69,120,101,99,67,111,100,101, + 77,111,100,117,108,101,87,105,116,104,70,105,108,101,110,97, + 109,101,115,40,41,32,105,110,32,116,104,101,32,67,32,65, + 80,73,46,10,10,32,32,32,32,114,84,0,0,0,78,114, + 116,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,139,0,0, + 0,41,7,114,31,0,0,0,114,32,0,0,0,218,5,108, + 111,119,101,114,114,136,0,0,0,114,123,0,0,0,114,133, + 0,0,0,114,44,0,0,0,41,5,218,13,98,121,116,101, + 99,111,100,101,95,112,97,116,104,114,130,0,0,0,114,36, + 0,0,0,90,9,101,120,116,101,110,115,105,111,110,218,11, + 115,111,117,114,99,101,95,112,97,116,104,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,15,95,103,101,116, + 95,115,111,117,114,99,101,102,105,108,101,232,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,143,0,0,0,99,1,0, + 0,0,0,0,0,0,2,0,0,0,11,0,0,0,67,0, + 0,0,115,60,0,0,0,121,19,0,116,0,0,124,0,0, + 131,1,0,106,1,0,125,1,0,87,110,24,0,4,116,2, + 0,107,10,0,114,45,0,1,1,1,100,1,0,125,1,0, + 89,110,1,0,88,124,1,0,100,2,0,79,125,1,0,124, + 1,0,83,41,3,122,51,67,97,108,99,117,108,97,116,101, + 32,116,104,101,32,109,111,100,101,32,112,101,114,109,105,115, + 115,105,111,110,115,32,102,111,114,32,97,32,98,121,116,101, + 99,111,100,101,32,102,105,108,101,46,105,182,1,0,0,233, + 128,0,0,0,41,3,114,39,0,0,0,114,41,0,0,0, + 114,40,0,0,0,41,2,114,35,0,0,0,114,42,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,10,95,99,97,108,99,95,109,111,100,101,251,1,0,0, + 115,12,0,0,0,0,2,3,1,19,1,13,1,11,3,10, + 1,114,145,0,0,0,218,9,118,101,114,98,111,115,105,116, + 121,114,29,0,0,0,99,1,0,0,0,1,0,0,0,3, + 0,0,0,4,0,0,0,71,0,0,0,115,75,0,0,0, + 116,0,0,106,1,0,106,2,0,124,1,0,107,5,0,114, + 71,0,124,0,0,106,3,0,100,6,0,131,1,0,115,43, + 0,100,3,0,124,0,0,23,125,0,0,116,4,0,124,0, + 0,106,5,0,124,2,0,140,0,0,100,4,0,116,0,0, + 106,6,0,131,1,1,1,100,5,0,83,41,7,122,61,80, + 114,105,110,116,32,116,104,101,32,109,101,115,115,97,103,101, + 32,116,111,32,115,116,100,101,114,114,32,105,102,32,45,118, + 47,80,89,84,72,79,78,86,69,82,66,79,83,69,32,105, + 115,32,116,117,114,110,101,100,32,111,110,46,250,1,35,250, + 7,105,109,112,111,114,116,32,122,2,35,32,114,54,0,0, + 0,78,41,2,114,147,0,0,0,114,148,0,0,0,41,7, + 114,7,0,0,0,114,117,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,146,0,0,0,114,80,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,7,2,0,0,115,8,0,0,0,0,2,18,1,15, + 1,10,1,114,153,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,80, + 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,37,0,124,0,0,106,0, + 0,124,1,0,107,3,0,114,61,0,116,1,0,100,1,0, + 124,1,0,22,100,2,0,124,1,0,131,1,1,130,1,0, + 136,0,0,124,0,0,124,1,0,124,2,0,124,3,0,142, + 2,0,83,41,3,78,122,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, + 67,0,0,0,41,2,114,67,0,0,0,218,11,73,109,112, + 111,114,116,69,114,114,111,114,41,4,114,71,0,0,0,114, + 67,0,0,0,114,80,0,0,0,114,108,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,23,2,0,0,115,10,0,0,0, + 0,1,12,1,12,1,15,1,22,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,155,0, + 0,0,114,156,0,0,0,114,4,0,0,0,41,1,114,155, + 0,0,0,114,5,0,0,0,218,11,95,99,104,101,99,107, + 95,110,97,109,101,15,2,0,0,115,6,0,0,0,0,8, + 21,6,13,1,114,157,0,0,0,99,1,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,3,0,0,0,115,35, + 0,0,0,135,0,0,102,1,0,100,1,0,100,2,0,134, + 0,0,125,1,0,116,0,0,124,1,0,136,0,0,131,2, + 0,1,124,1,0,83,41,3,122,49,68,101,99,111,114,97, + 116,111,114,32,116,111,32,118,101,114,105,102,121,32,116,104, + 101,32,110,97,109,101,100,32,109,111,100,117,108,101,32,105, + 115,32,98,117,105,108,116,45,105,110,46,99,2,0,0,0, + 0,0,0,0,2,0,0,0,4,0,0,0,19,0,0,0, + 115,55,0,0,0,124,1,0,116,0,0,106,1,0,107,7, + 0,114,42,0,116,2,0,100,1,0,106,3,0,124,1,0, + 131,1,0,100,2,0,124,1,0,131,1,1,130,1,0,136, 0,0,124,0,0,124,1,0,131,2,0,83,41,3,78,122, - 27,123,33,114,125,32,105,115,32,110,111,116,32,97,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,114,67,0,0, - 0,41,4,114,106,0,0,0,218,9,105,115,95,102,114,111, - 122,101,110,114,154,0,0,0,114,47,0,0,0,41,2,114, - 71,0,0,0,114,159,0,0,0,41,1,114,160,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,45,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,160,0,0,0,114,164,0,0,0,114,4,0,0, - 0,41,1,114,160,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,43, - 2,0,0,115,6,0,0,0,0,2,18,5,13,1,114,165, - 0,0,0,99,2,0,0,0,0,0,0,0,5,0,0,0, - 4,0,0,0,67,0,0,0,115,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,155,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, - 111,100,117,108,101,32,98,121,32,100,101,108,101,103,97,116, - 105,110,103,32,116,111,10,32,32,32,32,115,101,108,102,46, - 102,105,110,100,95,108,111,97,100,101,114,40,41,46,10,10, - 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,105,110, - 32,102,97,118,111,114,32,111,102,32,102,105,110,100,101,114, - 46,102,105,110,100,95,115,112,101,99,40,41,46,10,10,32, - 32,32,32,78,122,44,78,111,116,32,105,109,112,111,114,116, - 105,110,103,32,100,105,114,101,99,116,111,114,121,32,123,125, - 58,32,109,105,115,115,105,110,103,32,95,95,105,110,105,116, - 95,95,114,84,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,71,0,0,0,114,159,0,0,0,218,6,108,111, - 97,100,101,114,218,8,112,111,114,116,105,111,110,115,218,3, - 109,115,103,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,17,95,102,105,110,100,95,109,111,100,117,108,101, - 95,115,104,105,109,54,2,0,0,115,10,0,0,0,0,10, - 21,1,24,1,6,1,32,1,114,173,0,0,0,99,2,0, - 0,0,0,0,0,0,5,0,0,0,3,0,0,0,67,0, - 0,0,115,93,0,0,0,116,0,0,124,1,0,124,0,0, - 131,2,0,125,2,0,116,1,0,124,2,0,131,1,0,125, - 3,0,124,1,0,116,2,0,106,3,0,107,6,0,114,79, - 0,116,2,0,106,3,0,124,1,0,25,125,4,0,124,3, - 0,106,4,0,124,4,0,131,1,0,1,116,2,0,106,3, - 0,124,1,0,25,83,124,3,0,106,5,0,131,0,0,83, - 100,1,0,83,41,2,122,128,76,111,97,100,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,32,109,111,100,117,108, - 101,32,105,110,116,111,32,115,121,115,46,109,111,100,117,108, - 101,115,32,97,110,100,32,114,101,116,117,114,110,32,105,116, - 46,10,10,32,32,32,32,84,104,105,115,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,32,85,115,101,32,108,111,97,100,101,114,46,101,120, - 101,99,95,109,111,100,117,108,101,32,105,110,115,116,101,97, - 100,46,10,10,32,32,32,32,78,41,6,218,16,115,112,101, - 99,95,102,114,111,109,95,108,111,97,100,101,114,218,12,95, - 83,112,101,99,77,101,116,104,111,100,115,114,7,0,0,0, - 114,73,0,0,0,218,4,101,120,101,99,218,4,108,111,97, - 100,41,5,114,71,0,0,0,114,159,0,0,0,218,4,115, - 112,101,99,218,7,109,101,116,104,111,100,115,218,6,109,111, - 100,117,108,101,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,17,95,108,111,97,100,95,109,111,100,117,108, - 101,95,115,104,105,109,71,2,0,0,115,14,0,0,0,0, - 6,15,1,12,1,15,1,13,1,13,1,11,2,114,181,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,67,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,153, - 0,0,0,114,154,0,0,0,114,31,0,0,0,218,8,69, - 79,70,69,114,114,111,114,114,14,0,0,0,114,79,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,67,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,152,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,87,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,191,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,67,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,153,0,0,0,114,106,0, - 0,0,90,16,95,102,105,120,95,99,111,95,102,105,108,101, - 110,97,109,101,114,154,0,0,0,114,47,0,0,0,41,5, - 114,53,0,0,0,114,67,0,0,0,114,141,0,0,0,114, - 142,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,142,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,196,0,0,0,114,84,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,186,0,0,0,218,6,101,120,116, - 101,110,100,114,17,0,0,0,114,192,0,0,0,90,5,100, - 117,109,112,115,41,4,114,195,0,0,0,114,184,0,0,0, - 114,190,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,154,2,0,0, - 115,10,0,0,0,0,3,12,1,19,1,19,1,22,1,114, - 199,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,84,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,200,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,164,2,0,0,115,10,0,0, - 0,0,5,12,1,18,1,15,1,18,1,114,204,0,0,0, - 99,1,0,0,0,0,0,0,0,5,0,0,0,35,0,0, - 0,67,0,0,0,115,15,1,0,0,116,0,0,124,0,0, - 100,1,0,100,0,0,131,3,0,125,1,0,116,1,0,124, - 1,0,100,2,0,131,2,0,114,74,0,121,17,0,124,1, - 0,106,2,0,124,0,0,131,1,0,83,87,113,74,0,4, - 116,3,0,107,10,0,114,70,0,1,1,1,89,113,74,0, - 88,110,0,0,121,13,0,124,0,0,106,4,0,125,2,0, - 87,110,18,0,4,116,5,0,107,10,0,114,107,0,1,1, - 1,89,110,29,0,88,124,2,0,100,0,0,107,9,0,114, - 136,0,116,6,0,124,2,0,131,1,0,106,2,0,131,0, - 0,83,121,13,0,124,0,0,106,7,0,125,3,0,87,110, - 24,0,4,116,5,0,107,10,0,114,175,0,1,1,1,100, - 3,0,125,3,0,89,110,1,0,88,121,13,0,124,0,0, - 106,8,0,125,4,0,87,110,59,0,4,116,5,0,107,10, - 0,114,250,0,1,1,1,124,1,0,100,0,0,107,8,0, - 114,230,0,100,4,0,106,9,0,124,3,0,131,1,0,83, - 100,5,0,106,9,0,124,3,0,124,1,0,131,2,0,83, - 89,110,17,0,88,100,6,0,106,9,0,124,3,0,124,4, - 0,131,2,0,83,100,0,0,83,41,7,78,218,10,95,95, - 108,111,97,100,101,114,95,95,218,11,109,111,100,117,108,101, - 95,114,101,112,114,250,1,63,122,13,60,109,111,100,117,108, - 101,32,123,33,114,125,62,122,20,60,109,111,100,117,108,101, - 32,123,33,114,125,32,40,123,33,114,125,41,62,122,23,60, - 109,111,100,117,108,101,32,123,33,114,125,32,102,114,111,109, - 32,123,33,114,125,62,41,10,114,62,0,0,0,114,60,0, - 0,0,114,206,0,0,0,218,9,69,120,99,101,112,116,105, - 111,110,218,8,95,95,115,112,101,99,95,95,218,14,65,116, - 116,114,105,98,117,116,101,69,114,114,111,114,114,175,0,0, - 0,114,57,0,0,0,218,8,95,95,102,105,108,101,95,95, - 114,47,0,0,0,41,5,114,180,0,0,0,114,170,0,0, - 0,114,178,0,0,0,114,67,0,0,0,114,131,0,0,0, + 29,123,33,114,125,32,105,115,32,110,111,116,32,97,32,98, + 117,105,108,116,45,105,110,32,109,111,100,117,108,101,114,67, + 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,154,0,0,0,114,47,0,0,0,41,2,114,71,0,0, + 0,218,8,102,117,108,108,110,97,109,101,41,1,218,3,102, + 120,110,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,35,2,0,0,115,8,0,0,0, + 0,1,15,1,18,1,9,1,122,52,95,114,101,113,117,105, + 114,101,115,95,98,117,105,108,116,105,110,46,60,108,111,99, + 97,108,115,62,46,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,95,119,114,97,112,112,101,114,41,1, + 114,65,0,0,0,41,2,114,160,0,0,0,114,161,0,0, + 0,114,4,0,0,0,41,1,114,160,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,33,2,0,0,115,6,0,0,0,0,2, + 18,5,13,1,114,162,0,0,0,99,1,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,3,0,0,0,115,35, + 0,0,0,135,0,0,102,1,0,100,1,0,100,2,0,134, + 0,0,125,1,0,116,0,0,124,1,0,136,0,0,131,2, + 0,1,124,1,0,83,41,3,122,47,68,101,99,111,114,97, + 116,111,114,32,116,111,32,118,101,114,105,102,121,32,116,104, + 101,32,110,97,109,101,100,32,109,111,100,117,108,101,32,105, + 115,32,102,114,111,122,101,110,46,99,2,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,19,0,0,0,115,55, + 0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,115, + 42,0,116,2,0,100,1,0,106,3,0,124,1,0,131,1, + 0,100,2,0,124,1,0,131,1,1,130,1,0,136,0,0, + 124,0,0,124,1,0,131,2,0,83,41,3,78,122,27,123, + 33,114,125,32,105,115,32,110,111,116,32,97,32,102,114,111, + 122,101,110,32,109,111,100,117,108,101,114,67,0,0,0,41, + 4,114,106,0,0,0,218,9,105,115,95,102,114,111,122,101, + 110,114,154,0,0,0,114,47,0,0,0,41,2,114,71,0, + 0,0,114,159,0,0,0,41,1,114,160,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,46,2,0,0,115,8,0,0,0,0,1,15,1,18, + 1,9,1,122,50,95,114,101,113,117,105,114,101,115,95,102, + 114,111,122,101,110,46,60,108,111,99,97,108,115,62,46,95, + 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, + 119,114,97,112,112,101,114,41,1,114,65,0,0,0,41,2, + 114,160,0,0,0,114,164,0,0,0,114,4,0,0,0,41, + 1,114,160,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,44,2,0, + 0,115,6,0,0,0,0,2,18,5,13,1,114,165,0,0, + 0,99,2,0,0,0,0,0,0,0,5,0,0,0,4,0, + 0,0,67,0,0,0,115,84,0,0,0,124,0,0,106,0, + 0,124,1,0,131,1,0,92,2,0,125,2,0,125,3,0, + 124,2,0,100,1,0,107,8,0,114,80,0,116,1,0,124, + 3,0,131,1,0,114,80,0,100,2,0,125,4,0,116,2, + 0,106,3,0,124,4,0,106,4,0,124,3,0,100,3,0, + 25,131,1,0,116,5,0,131,2,0,1,124,2,0,83,41, + 4,122,155,84,114,121,32,116,111,32,102,105,110,100,32,97, + 32,108,111,97,100,101,114,32,102,111,114,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, + 32,98,121,32,100,101,108,101,103,97,116,105,110,103,32,116, + 111,10,32,32,32,32,115,101,108,102,46,102,105,110,100,95, + 108,111,97,100,101,114,40,41,46,10,10,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,32,105,110,32,102,97,118,111, + 114,32,111,102,32,102,105,110,100,101,114,46,102,105,110,100, + 95,115,112,101,99,40,41,46,10,10,32,32,32,32,78,122, + 44,78,111,116,32,105,109,112,111,114,116,105,110,103,32,100, + 105,114,101,99,116,111,114,121,32,123,125,58,32,109,105,115, + 115,105,110,103,32,95,95,105,110,105,116,95,95,114,84,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,71,0, + 0,0,114,159,0,0,0,218,6,108,111,97,100,101,114,218, + 8,112,111,114,116,105,111,110,115,218,3,109,115,103,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,17,95, + 102,105,110,100,95,109,111,100,117,108,101,95,115,104,105,109, + 55,2,0,0,115,10,0,0,0,0,10,21,1,24,1,6, + 1,29,1,114,173,0,0,0,99,2,0,0,0,0,0,0, + 0,4,0,0,0,3,0,0,0,67,0,0,0,115,81,0, + 0,0,116,0,0,124,1,0,124,0,0,131,2,0,125,2, + 0,124,1,0,116,1,0,106,2,0,107,6,0,114,67,0, + 116,1,0,106,2,0,124,1,0,25,125,3,0,116,3,0, + 124,2,0,124,3,0,131,2,0,1,116,1,0,106,2,0, + 124,1,0,25,83,116,4,0,124,2,0,131,1,0,83,100, + 1,0,83,41,2,122,128,76,111,97,100,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, + 32,105,110,116,111,32,115,121,115,46,109,111,100,117,108,101, + 115,32,97,110,100,32,114,101,116,117,114,110,32,105,116,46, + 10,10,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, + 32,32,85,115,101,32,108,111,97,100,101,114,46,101,120,101, + 99,95,109,111,100,117,108,101,32,105,110,115,116,101,97,100, + 46,10,10,32,32,32,32,78,41,5,218,16,115,112,101,99, + 95,102,114,111,109,95,108,111,97,100,101,114,114,7,0,0, + 0,114,73,0,0,0,218,5,95,101,120,101,99,218,5,95, + 108,111,97,100,41,4,114,71,0,0,0,114,159,0,0,0, + 218,4,115,112,101,99,218,6,109,111,100,117,108,101,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,17,95, + 108,111,97,100,95,109,111,100,117,108,101,95,115,104,105,109, + 73,2,0,0,115,12,0,0,0,0,6,15,1,15,1,13, + 1,13,1,11,2,114,179,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, + 228,1,0,0,105,0,0,125,4,0,124,2,0,100,1,0, + 107,9,0,114,31,0,124,2,0,124,4,0,100,2,0,60, + 110,6,0,100,3,0,125,2,0,124,3,0,100,1,0,107, + 9,0,114,59,0,124,3,0,124,4,0,100,4,0,60,124, + 0,0,100,1,0,100,5,0,133,2,0,25,125,5,0,124, + 0,0,100,5,0,100,6,0,133,2,0,25,125,6,0,124, + 0,0,100,6,0,100,7,0,133,2,0,25,125,7,0,124, + 5,0,116,0,0,107,3,0,114,165,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,113,0,116,4,0,124,6,0,131, + 1,0,100,5,0,107,3,0,114,223,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,55,0,116,4,0,124,7,0,131,1,0,100,5,0,107, + 3,0,114,22,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,124,1,0,100,1,0, + 107,9,0,114,214,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,74,1,1,1,1,89,110,59,0,88,116, + 8,0,124,6,0,131,1,0,124,9,0,107,3,0,114,133, + 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,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,171,1,1,1,1,89,110,43,0,88, + 116,8,0,124,7,0,131,1,0,124,10,0,107,3,0,114, + 214,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,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,67,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,153,0,0,0,114,154,0,0, + 0,114,31,0,0,0,218,8,69,79,70,69,114,114,111,114, + 114,14,0,0,0,114,79,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,67,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,152,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,88,2,0,0,115,76,0,0,0,0,11, + 6,1,12,1,13,3,6,1,12,1,10,1,16,1,16,1, + 16,1,12,1,18,1,10,1,18,1,18,1,15,1,10,1, + 15,1,18,1,15,1,10,1,12,1,12,1,3,1,20,1, + 13,1,5,2,18,1,15,1,10,1,15,1,3,1,18,1, + 13,1,5,2,18,1,15,1,9,1,114,189,0,0,0,99, + 4,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, + 67,0,0,0,115,112,0,0,0,116,0,0,106,1,0,124, + 0,0,131,1,0,125,4,0,116,2,0,124,4,0,116,3, + 0,131,2,0,114,75,0,116,4,0,100,1,0,124,2,0, + 131,2,0,1,124,3,0,100,2,0,107,9,0,114,71,0, + 116,5,0,106,6,0,124,4,0,124,3,0,131,2,0,1, + 124,4,0,83,116,7,0,100,3,0,106,8,0,124,2,0, + 131,1,0,100,4,0,124,1,0,100,5,0,124,2,0,131, + 1,2,130,1,0,100,2,0,83,41,6,122,60,67,111,109, + 112,105,108,101,32,98,121,116,101,99,111,100,101,32,97,115, + 32,114,101,116,117,114,110,101,100,32,98,121,32,95,118,97, + 108,105,100,97,116,101,95,98,121,116,101,99,111,100,101,95, + 104,101,97,100,101,114,40,41,46,122,21,99,111,100,101,32, + 111,98,106,101,99,116,32,102,114,111,109,32,123,33,114,125, + 78,122,23,78,111,110,45,99,111,100,101,32,111,98,106,101, + 99,116,32,105,110,32,123,33,114,125,114,67,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,153, + 0,0,0,114,106,0,0,0,90,16,95,102,105,120,95,99, + 111,95,102,105,108,101,110,97,109,101,114,154,0,0,0,114, + 47,0,0,0,41,5,114,53,0,0,0,114,67,0,0,0, + 114,141,0,0,0,114,142,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,143,2,0,0,115,16,0,0,0,0,2,15,1,15, + 1,13,1,12,1,16,1,4,2,18,1,114,194,0,0,0, + 114,84,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,184,0,0, + 0,218,6,101,120,116,101,110,100,114,17,0,0,0,114,190, + 0,0,0,90,5,100,117,109,112,115,41,4,114,193,0,0, + 0,114,182,0,0,0,114,188,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,155,2,0,0,115,10,0,0,0,0,3,12,1,19, + 1,19,1,22,1,114,197,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,84,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,198,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, - 12,95,109,111,100,117,108,101,95,114,101,112,114,178,2,0, + 13,100,101,99,111,100,101,95,115,111,117,114,99,101,165,2, + 0,0,115,10,0,0,0,0,5,12,1,18,1,15,1,18, + 1,114,202,0,0,0,99,1,0,0,0,0,0,0,0,5, + 0,0,0,35,0,0,0,67,0,0,0,115,6,1,0,0, + 116,0,0,124,0,0,100,1,0,100,0,0,131,3,0,125, + 1,0,116,1,0,124,1,0,100,2,0,131,2,0,114,71, + 0,121,17,0,124,1,0,106,2,0,124,0,0,131,1,0, + 83,87,110,18,0,4,116,3,0,107,10,0,114,70,0,1, + 1,1,89,110,1,0,88,121,13,0,124,0,0,106,4,0, + 125,2,0,87,110,18,0,4,116,5,0,107,10,0,114,104, + 0,1,1,1,89,110,23,0,88,124,2,0,100,0,0,107, + 9,0,114,127,0,116,6,0,124,2,0,131,1,0,83,121, + 13,0,124,0,0,106,7,0,125,3,0,87,110,24,0,4, + 116,5,0,107,10,0,114,166,0,1,1,1,100,3,0,125, + 3,0,89,110,1,0,88,121,13,0,124,0,0,106,8,0, + 125,4,0,87,110,59,0,4,116,5,0,107,10,0,114,241, + 0,1,1,1,124,1,0,100,0,0,107,8,0,114,221,0, + 100,4,0,106,9,0,124,3,0,131,1,0,83,100,5,0, + 106,9,0,124,3,0,124,1,0,131,2,0,83,89,110,17, + 0,88,100,6,0,106,9,0,124,3,0,124,4,0,131,2, + 0,83,100,0,0,83,41,7,78,218,10,95,95,108,111,97, + 100,101,114,95,95,218,11,109,111,100,117,108,101,95,114,101, + 112,114,250,1,63,122,13,60,109,111,100,117,108,101,32,123, + 33,114,125,62,122,20,60,109,111,100,117,108,101,32,123,33, + 114,125,32,40,123,33,114,125,41,62,122,23,60,109,111,100, + 117,108,101,32,123,33,114,125,32,102,114,111,109,32,123,33, + 114,125,62,41,10,114,62,0,0,0,114,60,0,0,0,114, + 204,0,0,0,218,9,69,120,99,101,112,116,105,111,110,218, + 8,95,95,115,112,101,99,95,95,218,14,65,116,116,114,105, + 98,117,116,101,69,114,114,111,114,218,22,95,109,111,100,117, + 108,101,95,114,101,112,114,95,102,114,111,109,95,115,112,101, + 99,114,57,0,0,0,218,8,95,95,102,105,108,101,95,95, + 114,47,0,0,0,41,5,114,178,0,0,0,114,170,0,0, + 0,114,177,0,0,0,114,67,0,0,0,114,131,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 12,95,109,111,100,117,108,101,95,114,101,112,114,179,2,0, 0,115,46,0,0,0,0,2,18,1,15,4,3,1,17,1, - 13,1,8,1,3,1,13,1,13,1,5,2,12,1,16,4, + 13,1,5,1,3,1,13,1,13,1,5,2,12,1,10,4, 3,1,13,1,13,1,11,1,3,1,13,1,13,1,12,1, - 13,2,21,2,114,212,0,0,0,99,0,0,0,0,0,0, + 13,2,21,2,114,211,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, @@ -1272,21 +1270,21 @@ const unsigned char _Py_M__importlib[] = { 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, 0,115,25,0,0,0,124,1,0,124,0,0,95,0,0,124, 1,0,106,1,0,124,0,0,95,2,0,100,0,0,83,41, - 1,78,41,3,218,7,95,109,111,100,117,108,101,114,209,0, + 1,78,41,3,218,7,95,109,111,100,117,108,101,114,207,0, 0,0,218,5,95,115,112,101,99,41,2,114,71,0,0,0, - 114,180,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,72,0,0,0,216,2,0,0,115,4,0, + 114,178,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,72,0,0,0,217,2,0,0,115,4,0, 0,0,0,1,9,1,122,26,95,105,110,115,116,97,108,108, 101,100,95,115,97,102,101,108,121,46,95,95,105,110,105,116, 95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,3, 0,0,0,67,0,0,0,115,38,0,0,0,100,1,0,124, 0,0,106,0,0,95,1,0,124,0,0,106,2,0,116,3, 0,106,4,0,124,0,0,106,0,0,106,5,0,60,100,0, - 0,83,41,2,78,84,41,6,114,215,0,0,0,218,13,95, - 105,110,105,116,105,97,108,105,122,105,110,103,114,214,0,0, + 0,83,41,2,78,84,41,6,114,214,0,0,0,218,13,95, + 105,110,105,116,105,97,108,105,122,105,110,103,114,213,0,0, 0,114,7,0,0,0,114,73,0,0,0,114,67,0,0,0, 41,1,114,71,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,75,0,0,0,220,2,0,0,115, + 0,114,5,0,0,0,114,75,0,0,0,221,2,0,0,115, 4,0,0,0,0,4,12,1,122,27,95,105,110,115,116,97, 108,108,101,100,95,115,97,102,101,108,121,46,95,95,101,110, 116,101,114,95,95,99,1,0,0,0,0,0,0,0,3,0, @@ -1304,25 +1302,25 @@ const unsigned char _Py_M__importlib[] = { 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,114, 76,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,77,0,0,0,230,2,0,0,115,2,0,0, + 0,0,0,114,77,0,0,0,231,2,0,0,115,2,0,0, 0,6,0,122,45,95,105,110,115,116,97,108,108,101,100,95, 115,97,102,101,108,121,46,95,95,101,120,105,116,95,95,46, 60,108,111,99,97,108,115,62,46,60,103,101,110,101,120,112, 114,62,122,18,105,109,112,111,114,116,32,123,33,114,125,32, - 35,32,123,33,114,125,70,41,9,114,215,0,0,0,114,78, + 35,32,123,33,114,125,70,41,9,114,214,0,0,0,114,78, 0,0,0,114,7,0,0,0,114,73,0,0,0,114,67,0, 0,0,114,79,0,0,0,114,153,0,0,0,114,170,0,0, - 0,114,216,0,0,0,41,3,114,71,0,0,0,114,80,0, - 0,0,114,178,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,81,0,0,0,227,2,0,0,115, + 0,114,215,0,0,0,41,3,114,71,0,0,0,114,80,0, + 0,0,114,177,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,81,0,0,0,228,2,0,0,115, 18,0,0,0,0,1,3,1,9,1,25,1,3,1,17,1, 13,1,8,2,26,2,122,26,95,105,110,115,116,97,108,108, 101,100,95,115,97,102,101,108,121,46,95,95,101,120,105,116, 95,95,78,41,6,114,57,0,0,0,114,56,0,0,0,114, 58,0,0,0,114,72,0,0,0,114,75,0,0,0,114,81, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,213,0,0,0,214,2,0,0, - 115,6,0,0,0,12,2,12,4,12,7,114,213,0,0,0, + 0,0,114,5,0,0,0,114,212,0,0,0,215,2,0,0, + 115,6,0,0,0,12,2,12,4,12,7,114,212,0,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0, 0,64,0,0,0,115,172,0,0,0,101,0,0,90,1,0, 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, @@ -1439,2319 +1437,2244 @@ const unsigned char _Py_M__importlib[] = { 103,0,0,110,3,0,100,0,0,124,0,0,95,4,0,100, 1,0,124,0,0,95,5,0,100,0,0,124,0,0,95,6, 0,100,0,0,83,41,2,78,70,41,7,114,67,0,0,0, - 114,170,0,0,0,114,218,0,0,0,114,219,0,0,0,218, + 114,170,0,0,0,114,217,0,0,0,114,218,0,0,0,218, 26,115,117,98,109,111,100,117,108,101,95,115,101,97,114,99, 104,95,108,111,99,97,116,105,111,110,115,218,13,95,115,101, 116,95,102,105,108,101,97,116,116,114,218,7,95,99,97,99, 104,101,100,41,6,114,71,0,0,0,114,67,0,0,0,114, - 170,0,0,0,114,218,0,0,0,114,219,0,0,0,114,220, + 170,0,0,0,114,217,0,0,0,114,218,0,0,0,114,219, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,72,0,0,0,22,3,0,0,115,14,0,0,0, + 0,0,114,72,0,0,0,23,3,0,0,115,14,0,0,0, 0,2,9,1,9,1,9,1,9,1,21,3,9,1,122,19, 77,111,100,117,108,101,83,112,101,99,46,95,95,105,110,105, 116,95,95,99,1,0,0,0,0,0,0,0,2,0,0,0, - 4,0,0,0,67,0,0,0,115,153,0,0,0,100,1,0, + 4,0,0,0,67,0,0,0,115,147,0,0,0,100,1,0, 106,0,0,124,0,0,106,1,0,131,1,0,100,2,0,106, 0,0,124,0,0,106,2,0,131,1,0,103,2,0,125,1, - 0,124,0,0,106,3,0,100,0,0,107,9,0,114,79,0, + 0,124,0,0,106,3,0,100,0,0,107,9,0,114,76,0, 124,1,0,106,4,0,100,3,0,106,0,0,124,0,0,106, - 3,0,131,1,0,131,1,0,1,110,0,0,124,0,0,106, - 5,0,100,0,0,107,9,0,114,122,0,124,1,0,106,4, - 0,100,4,0,106,0,0,124,0,0,106,5,0,131,1,0, - 131,1,0,1,110,0,0,100,5,0,106,0,0,124,0,0, - 106,6,0,106,7,0,100,6,0,106,8,0,124,1,0,131, - 1,0,131,2,0,83,41,7,78,122,9,110,97,109,101,61, - 123,33,114,125,122,11,108,111,97,100,101,114,61,123,33,114, - 125,122,11,111,114,105,103,105,110,61,123,33,114,125,122,29, - 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, - 95,108,111,99,97,116,105,111,110,115,61,123,125,122,6,123, - 125,40,123,125,41,122,2,44,32,41,9,114,47,0,0,0, - 114,67,0,0,0,114,170,0,0,0,114,218,0,0,0,218, - 6,97,112,112,101,110,100,114,221,0,0,0,218,9,95,95, - 99,108,97,115,115,95,95,114,57,0,0,0,114,26,0,0, - 0,41,2,114,71,0,0,0,114,80,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,101,0,0, - 0,34,3,0,0,115,16,0,0,0,0,1,15,1,21,1, - 15,1,28,1,15,1,12,1,16,1,122,19,77,111,100,117, - 108,101,83,112,101,99,46,95,95,114,101,112,114,95,95,99, - 2,0,0,0,0,0,0,0,3,0,0,0,11,0,0,0, - 67,0,0,0,115,145,0,0,0,124,0,0,106,0,0,125, - 2,0,121,107,0,124,0,0,106,1,0,124,1,0,106,1, - 0,107,2,0,111,114,0,124,0,0,106,2,0,124,1,0, - 106,2,0,107,2,0,111,114,0,124,0,0,106,3,0,124, - 1,0,106,3,0,107,2,0,111,114,0,124,2,0,124,1, - 0,106,0,0,107,2,0,111,114,0,124,0,0,106,4,0, - 124,1,0,106,4,0,107,2,0,111,114,0,124,0,0,106, - 5,0,124,1,0,106,5,0,107,2,0,83,87,110,22,0, - 4,116,6,0,107,10,0,114,140,0,1,1,1,100,1,0, - 83,89,110,1,0,88,100,0,0,83,41,2,78,70,41,7, - 114,221,0,0,0,114,67,0,0,0,114,170,0,0,0,114, - 218,0,0,0,218,6,99,97,99,104,101,100,218,12,104,97, - 115,95,108,111,99,97,116,105,111,110,114,210,0,0,0,41, - 3,114,71,0,0,0,218,5,111,116,104,101,114,218,4,115, - 109,115,108,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,6,95,95,101,113,95,95,44,3,0,0,115,20, - 0,0,0,0,1,9,1,3,1,18,1,18,1,18,1,15, - 1,18,1,20,1,13,1,122,17,77,111,100,117,108,101,83, - 112,101,99,46,95,95,101,113,95,95,99,1,0,0,0,0, - 0,0,0,2,0,0,0,11,0,0,0,67,0,0,0,115, - 158,0,0,0,124,0,0,106,0,0,100,0,0,107,8,0, - 114,151,0,124,0,0,106,1,0,100,0,0,107,9,0,114, - 151,0,124,0,0,106,2,0,114,151,0,124,0,0,106,1, - 0,125,1,0,124,1,0,106,3,0,116,4,0,116,5,0, - 131,1,0,131,1,0,114,112,0,121,19,0,116,6,0,124, - 1,0,131,1,0,124,0,0,95,0,0,87,113,145,0,4, - 116,7,0,107,10,0,114,108,0,1,1,1,89,113,145,0, - 88,113,148,0,124,1,0,106,3,0,116,4,0,116,8,0, - 131,1,0,131,1,0,114,148,0,124,1,0,124,0,0,95, - 0,0,113,148,0,113,151,0,110,0,0,124,0,0,106,0, - 0,83,41,1,78,41,9,114,223,0,0,0,114,218,0,0, - 0,114,222,0,0,0,218,8,101,110,100,115,119,105,116,104, - 218,5,116,117,112,108,101,114,135,0,0,0,114,132,0,0, - 0,114,123,0,0,0,218,17,66,89,84,69,67,79,68,69, - 95,83,85,70,70,73,88,69,83,41,2,114,71,0,0,0, - 114,131,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,226,0,0,0,56,3,0,0,115,22,0, - 0,0,0,2,15,1,24,1,9,1,21,1,3,1,19,1, - 13,1,8,1,21,1,18,1,122,17,77,111,100,117,108,101, - 83,112,101,99,46,99,97,99,104,101,100,99,2,0,0,0, - 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0, - 115,13,0,0,0,124,1,0,124,0,0,95,0,0,100,0, - 0,83,41,1,78,41,1,114,223,0,0,0,41,2,114,71, - 0,0,0,114,226,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,226,0,0,0,70,3,0,0, - 115,2,0,0,0,0,2,99,1,0,0,0,0,0,0,0, - 1,0,0,0,2,0,0,0,67,0,0,0,115,46,0,0, - 0,124,0,0,106,0,0,100,1,0,107,8,0,114,35,0, - 124,0,0,106,1,0,106,2,0,100,2,0,131,1,0,100, - 3,0,25,83,124,0,0,106,1,0,83,100,1,0,83,41, - 4,122,32,84,104,101,32,110,97,109,101,32,111,102,32,116, - 104,101,32,109,111,100,117,108,101,39,115,32,112,97,114,101, - 110,116,46,78,114,116,0,0,0,114,84,0,0,0,41,3, - 114,221,0,0,0,114,67,0,0,0,114,32,0,0,0,41, - 1,114,71,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,6,112,97,114,101,110,116,74,3,0, - 0,115,6,0,0,0,0,3,15,1,20,2,122,17,77,111, - 100,117,108,101,83,112,101,99,46,112,97,114,101,110,116,99, - 1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0, - 67,0,0,0,115,7,0,0,0,124,0,0,106,0,0,83, - 41,1,78,41,1,114,222,0,0,0,41,1,114,71,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,227,0,0,0,82,3,0,0,115,2,0,0,0,0,2, - 122,23,77,111,100,117,108,101,83,112,101,99,46,104,97,115, - 95,108,111,99,97,116,105,111,110,99,2,0,0,0,0,0, - 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,19, - 0,0,0,116,0,0,124,1,0,131,1,0,124,0,0,95, - 1,0,100,0,0,83,41,1,78,41,2,218,4,98,111,111, - 108,114,222,0,0,0,41,2,114,71,0,0,0,218,5,118, - 97,108,117,101,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,227,0,0,0,86,3,0,0,115,2,0,0, - 0,0,2,41,12,114,57,0,0,0,114,56,0,0,0,114, - 58,0,0,0,114,59,0,0,0,114,72,0,0,0,114,101, - 0,0,0,114,230,0,0,0,218,8,112,114,111,112,101,114, - 116,121,114,226,0,0,0,218,6,115,101,116,116,101,114,114, - 234,0,0,0,114,227,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,217,0, - 0,0,241,2,0,0,115,20,0,0,0,12,35,6,2,15, - 1,15,11,12,10,12,12,18,14,21,4,18,8,18,4,114, - 217,0,0,0,114,218,0,0,0,114,220,0,0,0,99,2, - 0,0,0,2,0,0,0,5,0,0,0,15,0,0,0,67, - 0,0,0,115,193,0,0,0,116,0,0,124,1,0,100,1, - 0,131,2,0,114,83,0,124,3,0,100,2,0,107,8,0, - 114,43,0,116,1,0,124,0,0,100,3,0,124,1,0,131, - 1,1,83,124,3,0,114,55,0,103,0,0,110,3,0,100, - 2,0,125,4,0,116,1,0,124,0,0,100,3,0,124,1, - 0,100,4,0,124,4,0,131,1,2,83,124,3,0,100,2, - 0,107,8,0,114,168,0,116,0,0,124,1,0,100,5,0, - 131,2,0,114,159,0,121,19,0,124,1,0,106,2,0,124, - 0,0,131,1,0,125,3,0,87,113,165,0,4,116,3,0, - 107,10,0,114,155,0,1,1,1,100,2,0,125,3,0,89, - 113,165,0,88,113,168,0,100,6,0,125,3,0,110,0,0, - 116,4,0,124,0,0,124,1,0,100,7,0,124,2,0,100, - 5,0,124,3,0,131,2,2,83,41,8,122,53,82,101,116, - 117,114,110,32,97,32,109,111,100,117,108,101,32,115,112,101, - 99,32,98,97,115,101,100,32,111,110,32,118,97,114,105,111, - 117,115,32,108,111,97,100,101,114,32,109,101,116,104,111,100, - 115,46,218,12,103,101,116,95,102,105,108,101,110,97,109,101, - 78,114,170,0,0,0,114,221,0,0,0,114,220,0,0,0, - 70,114,218,0,0,0,41,5,114,60,0,0,0,218,23,115, - 112,101,99,95,102,114,111,109,95,102,105,108,101,95,108,111, - 99,97,116,105,111,110,114,220,0,0,0,114,154,0,0,0, - 114,217,0,0,0,41,5,114,67,0,0,0,114,170,0,0, - 0,114,218,0,0,0,114,220,0,0,0,90,6,115,101,97, - 114,99,104,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,174,0,0,0,91,3,0,0,115,28,0,0,0, - 0,2,15,1,12,1,16,1,18,1,15,1,7,2,12,1, - 15,1,3,1,19,1,13,1,14,3,9,2,114,174,0,0, - 0,114,170,0,0,0,114,221,0,0,0,99,2,0,0,0, - 2,0,0,0,9,0,0,0,19,0,0,0,67,0,0,0, - 115,110,1,0,0,124,1,0,100,1,0,107,8,0,114,79, - 0,100,2,0,125,1,0,116,0,0,124,2,0,100,3,0, - 131,2,0,114,79,0,121,19,0,124,2,0,106,1,0,124, - 0,0,131,1,0,125,1,0,87,113,76,0,4,116,2,0, - 107,10,0,114,72,0,1,1,1,89,113,76,0,88,113,79, - 0,110,0,0,116,3,0,124,0,0,124,2,0,100,4,0, - 124,1,0,131,2,1,125,4,0,100,5,0,124,4,0,95, - 4,0,124,2,0,100,1,0,107,8,0,114,203,0,120,79, - 0,116,5,0,131,0,0,68,93,61,0,92,2,0,125,5, - 0,125,6,0,124,1,0,106,6,0,116,7,0,124,6,0, - 131,1,0,131,1,0,114,131,0,124,5,0,124,0,0,124, - 1,0,131,2,0,125,2,0,124,2,0,124,4,0,95,8, - 0,80,113,131,0,113,131,0,87,100,1,0,83,110,0,0, - 124,3,0,116,9,0,107,8,0,114,38,1,116,0,0,124, - 2,0,100,6,0,131,2,0,114,47,1,121,19,0,124,2, - 0,106,10,0,124,0,0,131,1,0,125,7,0,87,110,18, - 0,4,116,2,0,107,10,0,114,13,1,1,1,1,89,113, - 35,1,88,124,7,0,114,35,1,103,0,0,124,4,0,95, - 11,0,113,35,1,113,47,1,110,9,0,124,3,0,124,4, - 0,95,11,0,124,4,0,106,11,0,103,0,0,107,2,0, - 114,106,1,124,1,0,114,106,1,116,12,0,124,1,0,131, - 1,0,100,7,0,25,125,8,0,124,4,0,106,11,0,106, - 13,0,124,8,0,131,1,0,1,113,106,1,110,0,0,124, - 4,0,83,41,8,97,61,1,0,0,82,101,116,117,114,110, - 32,97,32,109,111,100,117,108,101,32,115,112,101,99,32,98, - 97,115,101,100,32,111,110,32,97,32,102,105,108,101,32,108, - 111,99,97,116,105,111,110,46,10,10,32,32,32,32,84,111, - 32,105,110,100,105,99,97,116,101,32,116,104,97,116,32,116, - 104,101,32,109,111,100,117,108,101,32,105,115,32,97,32,112, - 97,99,107,97,103,101,44,32,115,101,116,10,32,32,32,32, - 115,117,98,109,111,100,117,108,101,95,115,101,97,114,99,104, - 95,108,111,99,97,116,105,111,110,115,32,116,111,32,97,32, - 108,105,115,116,32,111,102,32,100,105,114,101,99,116,111,114, - 121,32,112,97,116,104,115,46,32,32,65,110,10,32,32,32, - 32,101,109,112,116,121,32,108,105,115,116,32,105,115,32,115, - 117,102,102,105,99,105,101,110,116,44,32,116,104,111,117,103, - 104,32,105,116,115,32,110,111,116,32,111,116,104,101,114,119, - 105,115,101,32,117,115,101,102,117,108,32,116,111,32,116,104, - 101,10,32,32,32,32,105,109,112,111,114,116,32,115,121,115, - 116,101,109,46,10,10,32,32,32,32,84,104,101,32,108,111, - 97,100,101,114,32,109,117,115,116,32,116,97,107,101,32,97, - 32,115,112,101,99,32,97,115,32,105,116,115,32,111,110,108, - 121,32,95,95,105,110,105,116,95,95,40,41,32,97,114,103, - 46,10,10,32,32,32,32,78,122,9,60,117,110,107,110,111, - 119,110,62,114,239,0,0,0,114,218,0,0,0,84,114,220, - 0,0,0,114,84,0,0,0,41,14,114,60,0,0,0,114, - 239,0,0,0,114,154,0,0,0,114,217,0,0,0,114,222, - 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, - 114,231,0,0,0,114,232,0,0,0,114,170,0,0,0,218, - 9,95,80,79,80,85,76,65,84,69,114,220,0,0,0,114, - 221,0,0,0,114,38,0,0,0,114,224,0,0,0,41,9, - 114,67,0,0,0,218,8,108,111,99,97,116,105,111,110,114, - 170,0,0,0,114,221,0,0,0,114,178,0,0,0,218,12, - 108,111,97,100,101,114,95,99,108,97,115,115,114,126,0,0, - 0,114,220,0,0,0,90,7,100,105,114,110,97,109,101,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,240, - 0,0,0,116,3,0,0,115,60,0,0,0,0,12,12,4, - 6,1,15,2,3,1,19,1,13,1,11,8,21,1,9,3, - 12,1,22,1,21,1,15,1,9,1,8,2,7,3,12,2, - 15,1,3,1,19,1,13,1,5,2,6,1,18,2,9,1, - 15,1,6,1,16,1,22,2,114,240,0,0,0,99,3,0, - 0,0,0,0,0,0,8,0,0,0,53,0,0,0,67,0, - 0,0,115,124,1,0,0,121,13,0,124,0,0,106,0,0, - 125,3,0,87,110,18,0,4,116,1,0,107,10,0,114,33, - 0,1,1,1,89,110,17,0,88,124,3,0,100,0,0,107, - 9,0,114,50,0,124,3,0,83,124,0,0,106,2,0,125, - 4,0,124,1,0,100,0,0,107,8,0,114,108,0,121,13, - 0,124,0,0,106,3,0,125,1,0,87,113,108,0,4,116, - 1,0,107,10,0,114,104,0,1,1,1,89,113,108,0,88, - 110,0,0,121,13,0,124,0,0,106,4,0,125,5,0,87, - 110,24,0,4,116,1,0,107,10,0,114,147,0,1,1,1, - 100,0,0,125,5,0,89,110,1,0,88,124,2,0,100,0, - 0,107,8,0,114,224,0,124,5,0,100,0,0,107,8,0, - 114,215,0,121,13,0,124,1,0,106,5,0,125,2,0,87, - 113,221,0,4,116,1,0,107,10,0,114,211,0,1,1,1, - 100,0,0,125,2,0,89,113,221,0,88,113,224,0,124,5, - 0,125,2,0,110,0,0,121,13,0,124,0,0,106,6,0, - 125,6,0,87,110,24,0,4,116,1,0,107,10,0,114,7, + 3,0,131,1,0,131,1,0,1,124,0,0,106,5,0,100, + 0,0,107,9,0,114,116,0,124,1,0,106,4,0,100,4, + 0,106,0,0,124,0,0,106,5,0,131,1,0,131,1,0, + 1,100,5,0,106,0,0,124,0,0,106,6,0,106,7,0, + 100,6,0,106,8,0,124,1,0,131,1,0,131,2,0,83, + 41,7,78,122,9,110,97,109,101,61,123,33,114,125,122,11, + 108,111,97,100,101,114,61,123,33,114,125,122,11,111,114,105, + 103,105,110,61,123,33,114,125,122,29,115,117,98,109,111,100, + 117,108,101,95,115,101,97,114,99,104,95,108,111,99,97,116, + 105,111,110,115,61,123,125,122,6,123,125,40,123,125,41,122, + 2,44,32,41,9,114,47,0,0,0,114,67,0,0,0,114, + 170,0,0,0,114,217,0,0,0,218,6,97,112,112,101,110, + 100,114,220,0,0,0,218,9,95,95,99,108,97,115,115,95, + 95,114,57,0,0,0,114,26,0,0,0,41,2,114,71,0, + 0,0,114,80,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,101,0,0,0,35,3,0,0,115, + 16,0,0,0,0,1,15,1,21,1,15,1,25,1,15,1, + 12,1,13,1,122,19,77,111,100,117,108,101,83,112,101,99, + 46,95,95,114,101,112,114,95,95,99,2,0,0,0,0,0, + 0,0,3,0,0,0,11,0,0,0,67,0,0,0,115,145, + 0,0,0,124,0,0,106,0,0,125,2,0,121,107,0,124, + 0,0,106,1,0,124,1,0,106,1,0,107,2,0,111,114, + 0,124,0,0,106,2,0,124,1,0,106,2,0,107,2,0, + 111,114,0,124,0,0,106,3,0,124,1,0,106,3,0,107, + 2,0,111,114,0,124,2,0,124,1,0,106,0,0,107,2, + 0,111,114,0,124,0,0,106,4,0,124,1,0,106,4,0, + 107,2,0,111,114,0,124,0,0,106,5,0,124,1,0,106, + 5,0,107,2,0,83,87,110,22,0,4,116,6,0,107,10, + 0,114,140,0,1,1,1,100,1,0,83,89,110,1,0,88, + 100,0,0,83,41,2,78,70,41,7,114,220,0,0,0,114, + 67,0,0,0,114,170,0,0,0,114,217,0,0,0,218,6, + 99,97,99,104,101,100,218,12,104,97,115,95,108,111,99,97, + 116,105,111,110,114,208,0,0,0,41,3,114,71,0,0,0, + 218,5,111,116,104,101,114,218,4,115,109,115,108,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,6,95,95, + 101,113,95,95,45,3,0,0,115,20,0,0,0,0,1,9, + 1,3,1,18,1,18,1,18,1,15,1,18,1,20,1,13, + 1,122,17,77,111,100,117,108,101,83,112,101,99,46,95,95, + 101,113,95,95,99,1,0,0,0,0,0,0,0,2,0,0, + 0,11,0,0,0,67,0,0,0,115,149,0,0,0,124,0, + 0,106,0,0,100,0,0,107,8,0,114,142,0,124,0,0, + 106,1,0,100,0,0,107,9,0,114,142,0,124,0,0,106, + 2,0,114,142,0,124,0,0,106,1,0,125,1,0,124,1, + 0,106,3,0,116,4,0,116,5,0,131,1,0,131,1,0, + 114,112,0,121,19,0,116,6,0,124,1,0,131,1,0,124, + 0,0,95,0,0,87,113,142,0,4,116,7,0,107,10,0, + 114,108,0,1,1,1,89,113,142,0,88,110,30,0,124,1, + 0,106,3,0,116,4,0,116,8,0,131,1,0,131,1,0, + 114,142,0,124,1,0,124,0,0,95,0,0,124,0,0,106, + 0,0,83,41,1,78,41,9,114,222,0,0,0,114,217,0, + 0,0,114,221,0,0,0,218,8,101,110,100,115,119,105,116, + 104,218,5,116,117,112,108,101,114,135,0,0,0,114,132,0, + 0,0,114,123,0,0,0,218,17,66,89,84,69,67,79,68, + 69,95,83,85,70,70,73,88,69,83,41,2,114,71,0,0, + 0,114,131,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,225,0,0,0,57,3,0,0,115,22, + 0,0,0,0,2,15,1,24,1,9,1,21,1,3,1,19, + 1,13,1,8,1,21,1,9,1,122,17,77,111,100,117,108, + 101,83,112,101,99,46,99,97,99,104,101,100,99,2,0,0, + 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, + 0,115,13,0,0,0,124,1,0,124,0,0,95,0,0,100, + 0,0,83,41,1,78,41,1,114,222,0,0,0,41,2,114, + 71,0,0,0,114,225,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,225,0,0,0,71,3,0, + 0,115,2,0,0,0,0,2,99,1,0,0,0,0,0,0, + 0,1,0,0,0,2,0,0,0,67,0,0,0,115,46,0, + 0,0,124,0,0,106,0,0,100,1,0,107,8,0,114,35, + 0,124,0,0,106,1,0,106,2,0,100,2,0,131,1,0, + 100,3,0,25,83,124,0,0,106,1,0,83,100,1,0,83, + 41,4,122,32,84,104,101,32,110,97,109,101,32,111,102,32, + 116,104,101,32,109,111,100,117,108,101,39,115,32,112,97,114, + 101,110,116,46,78,114,116,0,0,0,114,84,0,0,0,41, + 3,114,220,0,0,0,114,67,0,0,0,114,32,0,0,0, + 41,1,114,71,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,218,6,112,97,114,101,110,116,75,3, + 0,0,115,6,0,0,0,0,3,15,1,20,2,122,17,77, + 111,100,117,108,101,83,112,101,99,46,112,97,114,101,110,116, + 99,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0, + 0,67,0,0,0,115,7,0,0,0,124,0,0,106,0,0, + 83,41,1,78,41,1,114,221,0,0,0,41,1,114,71,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,226,0,0,0,83,3,0,0,115,2,0,0,0,0, + 2,122,23,77,111,100,117,108,101,83,112,101,99,46,104,97, + 115,95,108,111,99,97,116,105,111,110,99,2,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 19,0,0,0,116,0,0,124,1,0,131,1,0,124,0,0, + 95,1,0,100,0,0,83,41,1,78,41,2,218,4,98,111, + 111,108,114,221,0,0,0,41,2,114,71,0,0,0,218,5, + 118,97,108,117,101,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,226,0,0,0,87,3,0,0,115,2,0, + 0,0,0,2,41,12,114,57,0,0,0,114,56,0,0,0, + 114,58,0,0,0,114,59,0,0,0,114,72,0,0,0,114, + 101,0,0,0,114,229,0,0,0,218,8,112,114,111,112,101, + 114,116,121,114,225,0,0,0,218,6,115,101,116,116,101,114, + 114,233,0,0,0,114,226,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,216, + 0,0,0,242,2,0,0,115,20,0,0,0,12,35,6,2, + 15,1,15,11,12,10,12,12,18,14,21,4,18,8,18,4, + 114,216,0,0,0,114,217,0,0,0,114,219,0,0,0,99, + 2,0,0,0,2,0,0,0,5,0,0,0,15,0,0,0, + 67,0,0,0,115,190,0,0,0,116,0,0,124,1,0,100, + 1,0,131,2,0,114,83,0,124,3,0,100,2,0,107,8, + 0,114,43,0,116,1,0,124,0,0,100,3,0,124,1,0, + 131,1,1,83,124,3,0,114,55,0,103,0,0,110,3,0, + 100,2,0,125,4,0,116,1,0,124,0,0,100,3,0,124, + 1,0,100,4,0,124,4,0,131,1,2,83,124,3,0,100, + 2,0,107,8,0,114,165,0,116,0,0,124,1,0,100,5, + 0,131,2,0,114,159,0,121,19,0,124,1,0,106,2,0, + 124,0,0,131,1,0,125,3,0,87,113,165,0,4,116,3, + 0,107,10,0,114,155,0,1,1,1,100,2,0,125,3,0, + 89,113,165,0,88,110,6,0,100,6,0,125,3,0,116,4, + 0,124,0,0,124,1,0,100,7,0,124,2,0,100,5,0, + 124,3,0,131,2,2,83,41,8,122,53,82,101,116,117,114, + 110,32,97,32,109,111,100,117,108,101,32,115,112,101,99,32, + 98,97,115,101,100,32,111,110,32,118,97,114,105,111,117,115, + 32,108,111,97,100,101,114,32,109,101,116,104,111,100,115,46, + 218,12,103,101,116,95,102,105,108,101,110,97,109,101,78,114, + 170,0,0,0,114,220,0,0,0,114,219,0,0,0,70,114, + 217,0,0,0,41,5,114,60,0,0,0,218,23,115,112,101, + 99,95,102,114,111,109,95,102,105,108,101,95,108,111,99,97, + 116,105,111,110,114,219,0,0,0,114,154,0,0,0,114,216, + 0,0,0,41,5,114,67,0,0,0,114,170,0,0,0,114, + 217,0,0,0,114,219,0,0,0,90,6,115,101,97,114,99, + 104,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,174,0,0,0,92,3,0,0,115,28,0,0,0,0,2, + 15,1,12,1,16,1,18,1,15,1,7,2,12,1,15,1, + 3,1,19,1,13,1,14,3,6,2,114,174,0,0,0,114, + 170,0,0,0,114,220,0,0,0,99,2,0,0,0,2,0, + 0,0,9,0,0,0,19,0,0,0,67,0,0,0,115,86, + 1,0,0,124,1,0,100,1,0,107,8,0,114,73,0,100, + 2,0,125,1,0,116,0,0,124,2,0,100,3,0,131,2, + 0,114,73,0,121,19,0,124,2,0,106,1,0,124,0,0, + 131,1,0,125,1,0,87,110,18,0,4,116,2,0,107,10, + 0,114,72,0,1,1,1,89,110,1,0,88,116,3,0,124, + 0,0,124,2,0,100,4,0,124,1,0,131,2,1,125,4, + 0,100,5,0,124,4,0,95,4,0,124,2,0,100,1,0, + 107,8,0,114,191,0,120,73,0,116,5,0,131,0,0,68, + 93,58,0,92,2,0,125,5,0,125,6,0,124,1,0,106, + 6,0,116,7,0,124,6,0,131,1,0,131,1,0,114,125, + 0,124,5,0,124,0,0,124,1,0,131,2,0,125,2,0, + 124,2,0,124,4,0,95,8,0,80,113,125,0,87,100,1, + 0,83,124,3,0,116,9,0,107,8,0,114,20,1,116,0, + 0,124,2,0,100,6,0,131,2,0,114,29,1,121,19,0, + 124,2,0,106,10,0,124,0,0,131,1,0,125,7,0,87, + 110,18,0,4,116,2,0,107,10,0,114,1,1,1,1,1, + 89,113,29,1,88,124,7,0,114,29,1,103,0,0,124,4, + 0,95,11,0,110,9,0,124,3,0,124,4,0,95,11,0, + 124,4,0,106,11,0,103,0,0,107,2,0,114,82,1,124, + 1,0,114,82,1,116,12,0,124,1,0,131,1,0,100,7, + 0,25,125,8,0,124,4,0,106,11,0,106,13,0,124,8, + 0,131,1,0,1,124,4,0,83,41,8,97,61,1,0,0, + 82,101,116,117,114,110,32,97,32,109,111,100,117,108,101,32, + 115,112,101,99,32,98,97,115,101,100,32,111,110,32,97,32, + 102,105,108,101,32,108,111,99,97,116,105,111,110,46,10,10, + 32,32,32,32,84,111,32,105,110,100,105,99,97,116,101,32, + 116,104,97,116,32,116,104,101,32,109,111,100,117,108,101,32, + 105,115,32,97,32,112,97,99,107,97,103,101,44,32,115,101, + 116,10,32,32,32,32,115,117,98,109,111,100,117,108,101,95, + 115,101,97,114,99,104,95,108,111,99,97,116,105,111,110,115, + 32,116,111,32,97,32,108,105,115,116,32,111,102,32,100,105, + 114,101,99,116,111,114,121,32,112,97,116,104,115,46,32,32, + 65,110,10,32,32,32,32,101,109,112,116,121,32,108,105,115, + 116,32,105,115,32,115,117,102,102,105,99,105,101,110,116,44, + 32,116,104,111,117,103,104,32,105,116,115,32,110,111,116,32, + 111,116,104,101,114,119,105,115,101,32,117,115,101,102,117,108, + 32,116,111,32,116,104,101,10,32,32,32,32,105,109,112,111, + 114,116,32,115,121,115,116,101,109,46,10,10,32,32,32,32, + 84,104,101,32,108,111,97,100,101,114,32,109,117,115,116,32, + 116,97,107,101,32,97,32,115,112,101,99,32,97,115,32,105, + 116,115,32,111,110,108,121,32,95,95,105,110,105,116,95,95, + 40,41,32,97,114,103,46,10,10,32,32,32,32,78,122,9, + 60,117,110,107,110,111,119,110,62,114,238,0,0,0,114,217, + 0,0,0,84,114,219,0,0,0,114,84,0,0,0,41,14, + 114,60,0,0,0,114,238,0,0,0,114,154,0,0,0,114, + 216,0,0,0,114,221,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,114,230,0,0,0,114,231,0,0,0, + 114,170,0,0,0,218,9,95,80,79,80,85,76,65,84,69, + 114,219,0,0,0,114,220,0,0,0,114,38,0,0,0,114, + 223,0,0,0,41,9,114,67,0,0,0,218,8,108,111,99, + 97,116,105,111,110,114,170,0,0,0,114,220,0,0,0,114, + 177,0,0,0,218,12,108,111,97,100,101,114,95,99,108,97, + 115,115,114,126,0,0,0,114,219,0,0,0,90,7,100,105, + 114,110,97,109,101,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,239,0,0,0,117,3,0,0,115,60,0, + 0,0,0,12,12,4,6,1,15,2,3,1,19,1,13,1, + 5,8,21,1,9,3,12,1,22,1,21,1,15,1,9,1, + 5,2,4,3,12,2,15,1,3,1,19,1,13,1,5,2, + 6,1,12,2,9,1,15,1,6,1,16,1,16,2,114,239, + 0,0,0,99,3,0,0,0,0,0,0,0,8,0,0,0, + 53,0,0,0,67,0,0,0,115,118,1,0,0,121,13,0, + 124,0,0,106,0,0,125,3,0,87,110,18,0,4,116,1, + 0,107,10,0,114,33,0,1,1,1,89,110,17,0,88,124, + 3,0,100,0,0,107,9,0,114,50,0,124,3,0,83,124, + 0,0,106,2,0,125,4,0,124,1,0,100,0,0,107,8, + 0,114,105,0,121,13,0,124,0,0,106,3,0,125,1,0, + 87,110,18,0,4,116,1,0,107,10,0,114,104,0,1,1, + 1,89,110,1,0,88,121,13,0,124,0,0,106,4,0,125, + 5,0,87,110,24,0,4,116,1,0,107,10,0,114,144,0, + 1,1,1,100,0,0,125,5,0,89,110,1,0,88,124,2, + 0,100,0,0,107,8,0,114,218,0,124,5,0,100,0,0, + 107,8,0,114,212,0,121,13,0,124,1,0,106,5,0,125, + 2,0,87,113,218,0,4,116,1,0,107,10,0,114,208,0, + 1,1,1,100,0,0,125,2,0,89,113,218,0,88,110,6, + 0,124,5,0,125,2,0,121,13,0,124,0,0,106,6,0, + 125,6,0,87,110,24,0,4,116,1,0,107,10,0,114,1, 1,1,1,1,100,0,0,125,6,0,89,110,1,0,88,121, 19,0,116,7,0,124,0,0,106,8,0,131,1,0,125,7, - 0,87,110,24,0,4,116,1,0,107,10,0,114,53,1,1, + 0,87,110,24,0,4,116,1,0,107,10,0,114,47,1,1, 1,1,100,0,0,125,7,0,89,110,1,0,88,116,9,0, 124,4,0,124,1,0,100,1,0,124,2,0,131,2,1,125, - 3,0,124,5,0,100,0,0,107,8,0,114,93,1,100,2, + 3,0,124,5,0,100,0,0,107,8,0,114,87,1,100,2, 0,110,3,0,100,3,0,124,3,0,95,10,0,124,6,0, 124,3,0,95,11,0,124,7,0,124,3,0,95,12,0,124, - 3,0,83,41,4,78,114,218,0,0,0,70,84,41,13,114, - 209,0,0,0,114,210,0,0,0,114,57,0,0,0,114,205, - 0,0,0,114,211,0,0,0,90,7,95,79,82,73,71,73, + 3,0,83,41,4,78,114,217,0,0,0,70,84,41,13,114, + 207,0,0,0,114,208,0,0,0,114,57,0,0,0,114,203, + 0,0,0,114,210,0,0,0,90,7,95,79,82,73,71,73, 78,218,10,95,95,99,97,99,104,101,100,95,95,218,4,108, - 105,115,116,218,8,95,95,112,97,116,104,95,95,114,217,0, - 0,0,114,222,0,0,0,114,226,0,0,0,114,221,0,0, - 0,41,8,114,180,0,0,0,114,170,0,0,0,114,218,0, - 0,0,114,178,0,0,0,114,67,0,0,0,114,243,0,0, - 0,114,226,0,0,0,114,221,0,0,0,114,4,0,0,0, + 105,115,116,218,8,95,95,112,97,116,104,95,95,114,216,0, + 0,0,114,221,0,0,0,114,225,0,0,0,114,220,0,0, + 0,41,8,114,178,0,0,0,114,170,0,0,0,114,217,0, + 0,0,114,177,0,0,0,114,67,0,0,0,114,242,0,0, + 0,114,225,0,0,0,114,220,0,0,0,114,4,0,0,0, 114,4,0,0,0,114,5,0,0,0,218,17,95,115,112,101, - 99,95,102,114,111,109,95,109,111,100,117,108,101,180,3,0, + 99,95,102,114,111,109,95,109,111,100,117,108,101,181,3,0, 0,115,72,0,0,0,0,2,3,1,13,1,13,1,5,2, - 12,1,4,2,9,1,12,1,3,1,13,1,13,2,8,1, + 12,1,4,2,9,1,12,1,3,1,13,1,13,2,5,1, 3,1,13,1,13,1,11,1,12,1,12,1,3,1,13,1, - 13,1,14,2,9,1,3,1,13,1,13,1,11,1,3,1, - 19,1,13,1,11,2,21,1,27,1,9,1,9,1,114,248, - 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,142,0,0,0,101,0,0, - 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100, - 2,0,100,3,0,132,0,0,90,4,0,100,4,0,100,5, - 0,132,0,0,90,5,0,100,6,0,100,7,0,100,8,0, - 100,9,0,100,10,0,100,11,0,132,0,2,90,6,0,100, - 12,0,100,13,0,132,0,0,90,7,0,100,14,0,100,15, - 0,132,0,0,90,8,0,100,16,0,100,17,0,132,0,0, - 90,9,0,100,18,0,100,19,0,132,0,0,90,10,0,100, - 20,0,100,21,0,132,0,0,90,11,0,100,22,0,100,23, - 0,132,0,0,90,12,0,100,24,0,83,41,25,114,175,0, - 0,0,122,77,67,111,110,118,101,110,105,101,110,99,101,32, - 119,114,97,112,112,101,114,32,97,114,111,117,110,100,32,115, - 112,101,99,32,111,98,106,101,99,116,115,32,116,111,32,112, - 114,111,118,105,100,101,32,115,112,101,99,45,115,112,101,99, - 105,102,105,99,10,32,32,32,32,109,101,116,104,111,100,115, - 46,99,2,0,0,0,0,0,0,0,2,0,0,0,2,0, - 0,0,67,0,0,0,115,13,0,0,0,124,1,0,124,0, - 0,95,0,0,100,0,0,83,41,1,78,41,1,114,178,0, - 0,0,41,2,114,71,0,0,0,114,178,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,72,0, - 0,0,232,3,0,0,115,2,0,0,0,0,1,122,21,95, - 83,112,101,99,77,101,116,104,111,100,115,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,67,0,0,0,115,158,0,0,0,124,0, - 0,106,0,0,125,1,0,124,1,0,106,1,0,100,1,0, - 107,8,0,114,30,0,100,2,0,110,6,0,124,1,0,106, - 1,0,125,2,0,124,1,0,106,2,0,100,1,0,107,8, - 0,114,104,0,124,1,0,106,3,0,100,1,0,107,8,0, - 114,82,0,100,3,0,106,4,0,124,2,0,131,1,0,83, - 100,4,0,106,4,0,124,2,0,124,1,0,106,3,0,131, - 2,0,83,110,50,0,124,1,0,106,5,0,114,132,0,100, - 5,0,106,4,0,124,2,0,124,1,0,106,2,0,131,2, - 0,83,100,6,0,106,4,0,124,1,0,106,1,0,124,1, - 0,106,2,0,131,2,0,83,100,1,0,83,41,7,122,38, - 82,101,116,117,114,110,32,116,104,101,32,114,101,112,114,32, - 116,111,32,117,115,101,32,102,111,114,32,116,104,101,32,109, - 111,100,117,108,101,46,78,114,207,0,0,0,122,13,60,109, - 111,100,117,108,101,32,123,33,114,125,62,122,20,60,109,111, - 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, - 62,122,23,60,109,111,100,117,108,101,32,123,33,114,125,32, - 102,114,111,109,32,123,33,114,125,62,122,18,60,109,111,100, - 117,108,101,32,123,33,114,125,32,40,123,125,41,62,41,6, - 114,178,0,0,0,114,67,0,0,0,114,218,0,0,0,114, - 170,0,0,0,114,47,0,0,0,114,227,0,0,0,41,3, - 114,71,0,0,0,114,178,0,0,0,114,67,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,206, - 0,0,0,235,3,0,0,115,18,0,0,0,0,3,9,1, - 30,1,15,1,15,1,13,2,22,2,9,1,19,2,122,24, - 95,83,112,101,99,77,101,116,104,111,100,115,46,109,111,100, - 117,108,101,95,114,101,112,114,218,9,95,111,118,101,114,114, - 105,100,101,70,218,11,95,102,111,114,99,101,95,110,97,109, - 101,84,99,2,0,0,0,2,0,0,0,6,0,0,0,59, - 0,0,0,67,0,0,0,115,75,2,0,0,124,0,0,106, - 0,0,125,4,0,124,2,0,115,45,0,124,3,0,115,45, - 0,116,1,0,124,1,0,100,1,0,100,2,0,131,3,0, - 100,2,0,107,8,0,114,85,0,121,16,0,124,4,0,106, - 2,0,124,1,0,95,3,0,87,113,85,0,4,116,4,0, - 107,10,0,114,81,0,1,1,1,89,113,85,0,88,110,0, - 0,124,2,0,115,115,0,116,1,0,124,1,0,100,3,0, - 100,2,0,131,3,0,100,2,0,107,8,0,114,221,0,124, - 4,0,106,5,0,125,5,0,124,5,0,100,2,0,107,8, - 0,114,184,0,124,4,0,106,6,0,100,2,0,107,9,0, - 114,184,0,116,7,0,106,8,0,116,7,0,131,1,0,125, - 5,0,124,4,0,106,6,0,124,5,0,95,9,0,113,184, - 0,110,0,0,121,13,0,124,5,0,124,1,0,95,10,0, - 87,113,221,0,4,116,4,0,107,10,0,114,217,0,1,1, - 1,89,113,221,0,88,110,0,0,124,2,0,115,251,0,116, - 1,0,124,1,0,100,4,0,100,2,0,131,3,0,100,2, - 0,107,8,0,114,35,1,121,16,0,124,4,0,106,11,0, - 124,1,0,95,12,0,87,113,35,1,4,116,4,0,107,10, - 0,114,31,1,1,1,1,89,113,35,1,88,110,0,0,121, - 13,0,124,4,0,124,1,0,95,13,0,87,110,18,0,4, - 116,4,0,107,10,0,114,68,1,1,1,1,89,110,1,0, - 88,124,2,0,115,99,1,116,1,0,124,1,0,100,5,0, - 100,2,0,131,3,0,100,2,0,107,8,0,114,157,1,124, - 4,0,106,6,0,100,2,0,107,9,0,114,157,1,121,16, - 0,124,4,0,106,6,0,124,1,0,95,14,0,87,113,154, - 1,4,116,4,0,107,10,0,114,150,1,1,1,1,89,113, - 154,1,88,113,157,1,110,0,0,124,4,0,106,15,0,114, - 71,2,124,2,0,115,196,1,116,1,0,124,1,0,100,6, - 0,100,2,0,131,3,0,100,2,0,107,8,0,114,236,1, - 121,16,0,124,4,0,106,16,0,124,1,0,95,17,0,87, - 113,236,1,4,116,4,0,107,10,0,114,232,1,1,1,1, - 89,113,236,1,88,110,0,0,124,2,0,115,10,2,116,1, - 0,124,1,0,100,7,0,100,2,0,131,3,0,100,2,0, - 107,8,0,114,71,2,124,4,0,106,18,0,100,2,0,107, - 9,0,114,68,2,121,16,0,124,4,0,106,18,0,124,1, - 0,95,19,0,87,113,65,2,4,116,4,0,107,10,0,114, - 61,2,1,1,1,89,113,65,2,88,113,68,2,113,71,2, - 110,0,0,100,2,0,83,41,8,97,29,2,0,0,83,101, - 116,32,116,104,101,32,109,111,100,117,108,101,39,115,32,97, - 116,116,114,105,98,117,116,101,115,46,10,10,32,32,32,32, - 32,32,32,32,65,108,108,32,109,105,115,115,105,110,103,32, - 105,109,112,111,114,116,45,114,101,108,97,116,101,100,32,109, - 111,100,117,108,101,32,97,116,116,114,105,98,117,116,101,115, - 32,119,105,108,108,32,98,101,32,115,101,116,46,32,32,72, - 101,114,101,10,32,32,32,32,32,32,32,32,105,115,32,104, - 111,119,32,116,104,101,32,115,112,101,99,32,97,116,116,114, - 105,98,117,116,101,115,32,109,97,112,32,111,110,116,111,32, - 116,104,101,32,109,111,100,117,108,101,58,10,10,32,32,32, - 32,32,32,32,32,115,112,101,99,46,110,97,109,101,32,45, - 62,32,109,111,100,117,108,101,46,95,95,110,97,109,101,95, - 95,10,32,32,32,32,32,32,32,32,115,112,101,99,46,108, - 111,97,100,101,114,32,45,62,32,109,111,100,117,108,101,46, - 95,95,108,111,97,100,101,114,95,95,10,32,32,32,32,32, - 32,32,32,115,112,101,99,46,112,97,114,101,110,116,32,45, - 62,32,109,111,100,117,108,101,46,95,95,112,97,99,107,97, - 103,101,95,95,10,32,32,32,32,32,32,32,32,115,112,101, - 99,32,45,62,32,109,111,100,117,108,101,46,95,95,115,112, - 101,99,95,95,10,10,32,32,32,32,32,32,32,32,79,112, - 116,105,111,110,97,108,58,10,32,32,32,32,32,32,32,32, - 115,112,101,99,46,111,114,105,103,105,110,32,45,62,32,109, - 111,100,117,108,101,46,95,95,102,105,108,101,95,95,32,40, - 105,102,32,115,112,101,99,46,115,101,116,95,102,105,108,101, - 97,116,116,114,32,105,115,32,116,114,117,101,41,10,32,32, - 32,32,32,32,32,32,115,112,101,99,46,99,97,99,104,101, - 100,32,45,62,32,109,111,100,117,108,101,46,95,95,99,97, - 99,104,101,100,95,95,32,40,105,102,32,95,95,102,105,108, - 101,95,95,32,97,108,115,111,32,115,101,116,41,10,32,32, - 32,32,32,32,32,32,115,112,101,99,46,115,117,98,109,111, - 100,117,108,101,95,115,101,97,114,99,104,95,108,111,99,97, - 116,105,111,110,115,32,45,62,32,109,111,100,117,108,101,46, - 95,95,112,97,116,104,95,95,32,40,105,102,32,115,101,116, - 41,10,10,32,32,32,32,32,32,32,32,114,57,0,0,0, - 78,114,205,0,0,0,218,11,95,95,112,97,99,107,97,103, - 101,95,95,114,247,0,0,0,114,211,0,0,0,114,245,0, - 0,0,41,20,114,178,0,0,0,114,62,0,0,0,114,67, - 0,0,0,114,57,0,0,0,114,210,0,0,0,114,170,0, - 0,0,114,221,0,0,0,218,16,95,78,97,109,101,115,112, - 97,99,101,76,111,97,100,101,114,218,7,95,95,110,101,119, - 95,95,218,5,95,112,97,116,104,114,205,0,0,0,114,234, - 0,0,0,114,251,0,0,0,114,209,0,0,0,114,247,0, - 0,0,114,227,0,0,0,114,218,0,0,0,114,211,0,0, - 0,114,226,0,0,0,114,245,0,0,0,41,6,114,71,0, - 0,0,114,180,0,0,0,114,249,0,0,0,114,250,0,0, - 0,114,178,0,0,0,114,170,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,251,3,0, - 0,115,88,0,0,0,0,17,9,6,12,1,24,1,3,1, - 16,1,13,1,8,3,30,1,9,1,12,2,15,1,15,1, - 18,1,3,1,13,1,13,1,8,3,30,1,3,1,16,1, - 13,1,8,3,3,1,13,1,13,1,5,3,30,1,15,1, - 3,1,16,1,13,1,11,2,9,2,30,1,3,1,16,1, - 13,1,8,3,30,1,15,1,3,1,16,1,13,1,122,30, - 95,83,112,101,99,77,101,116,104,111,100,115,46,105,110,105, - 116,95,109,111,100,117,108,101,95,97,116,116,114,115,99,1, - 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, - 0,0,0,115,101,0,0,0,124,0,0,106,0,0,125,1, - 0,116,1,0,124,1,0,106,2,0,100,1,0,131,2,0, - 114,48,0,124,1,0,106,2,0,106,3,0,124,1,0,131, - 1,0,125,2,0,110,6,0,100,2,0,125,2,0,124,2, - 0,100,2,0,107,8,0,114,84,0,116,4,0,124,1,0, - 106,5,0,131,1,0,125,2,0,110,0,0,124,0,0,106, - 6,0,124,2,0,131,1,0,1,124,2,0,83,41,3,122, - 153,82,101,116,117,114,110,32,97,32,110,101,119,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,32,32,32,32,84,104,101,32, - 105,109,112,111,114,116,45,114,101,108,97,116,101,100,32,109, - 111,100,117,108,101,32,97,116,116,114,105,98,117,116,101,115, - 32,97,114,101,32,97,108,115,111,32,115,101,116,32,119,105, - 116,104,32,116,104,101,10,32,32,32,32,32,32,32,32,97, - 112,112,114,111,112,114,105,97,116,101,32,118,97,108,117,101, - 115,32,102,114,111,109,32,116,104,101,32,115,112,101,99,46, - 10,10,32,32,32,32,32,32,32,32,218,13,99,114,101,97, - 116,101,95,109,111,100,117,108,101,78,41,7,114,178,0,0, - 0,114,60,0,0,0,114,170,0,0,0,114,0,1,0,0, - 114,68,0,0,0,114,67,0,0,0,114,255,0,0,0,41, - 3,114,71,0,0,0,114,178,0,0,0,114,180,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 6,99,114,101,97,116,101,75,4,0,0,115,16,0,0,0, - 0,7,9,2,18,3,21,2,6,1,12,4,18,1,13,1, - 122,19,95,83,112,101,99,77,101,116,104,111,100,115,46,99, - 114,101,97,116,101,99,2,0,0,0,0,0,0,0,2,0, - 0,0,2,0,0,0,67,0,0,0,115,23,0,0,0,124, - 0,0,106,0,0,106,1,0,106,2,0,124,1,0,131,1, - 0,1,100,1,0,83,41,2,122,189,68,111,32,101,118,101, - 114,121,116,104,105,110,103,32,110,101,99,101,115,115,97,114, - 121,32,116,111,32,101,120,101,99,117,116,101,32,116,104,101, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,84,104,101,32,110,97,109,101,115,112,97,99,101,32, - 111,102,32,96,109,111,100,117,108,101,96,32,105,115,32,117, - 115,101,100,32,97,115,32,116,104,101,32,116,97,114,103,101, - 116,32,111,102,32,101,120,101,99,117,116,105,111,110,46,10, - 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, - 104,111,100,32,117,115,101,115,32,116,104,101,32,108,111,97, - 100,101,114,39,115,32,96,101,120,101,99,95,109,111,100,117, - 108,101,40,41,96,32,109,101,116,104,111,100,46,10,10,32, - 32,32,32,32,32,32,32,78,41,3,114,178,0,0,0,114, - 170,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108, - 101,41,2,114,71,0,0,0,114,180,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,5,95,101, - 120,101,99,98,4,0,0,115,2,0,0,0,0,7,122,18, - 95,83,112,101,99,77,101,116,104,111,100,115,46,95,101,120, - 101,99,99,2,0,0,0,0,0,0,0,4,0,0,0,11, - 0,0,0,67,0,0,0,115,17,1,0,0,124,0,0,106, - 0,0,106,1,0,125,2,0,116,2,0,106,3,0,131,0, - 0,1,116,4,0,124,2,0,131,1,0,143,226,0,1,116, - 5,0,106,6,0,106,7,0,124,2,0,131,1,0,124,1, - 0,107,9,0,114,95,0,100,1,0,106,8,0,124,2,0, - 131,1,0,125,3,0,116,9,0,124,3,0,100,2,0,124, - 2,0,131,1,1,130,1,0,110,0,0,124,0,0,106,0, - 0,106,10,0,100,3,0,107,8,0,114,181,0,124,0,0, - 106,0,0,106,11,0,100,3,0,107,8,0,114,158,0,116, - 9,0,100,4,0,100,2,0,124,0,0,106,0,0,106,1, - 0,131,1,1,130,1,0,110,0,0,124,0,0,106,12,0, - 124,1,0,100,5,0,100,6,0,131,1,1,1,124,1,0, - 83,124,0,0,106,12,0,124,1,0,100,5,0,100,6,0, - 131,1,1,1,116,13,0,124,0,0,106,0,0,106,10,0, - 100,7,0,131,2,0,115,243,0,124,0,0,106,0,0,106, - 10,0,106,14,0,124,2,0,131,1,0,1,110,13,0,124, - 0,0,106,15,0,124,1,0,131,1,0,1,87,100,3,0, - 81,88,116,5,0,106,6,0,124,2,0,25,83,41,8,122, - 51,69,120,101,99,117,116,101,32,116,104,101,32,115,112,101, - 99,32,105,110,32,97,110,32,101,120,105,115,116,105,110,103, - 32,109,111,100,117,108,101,39,115,32,110,97,109,101,115,112, - 97,99,101,46,122,30,109,111,100,117,108,101,32,123,33,114, - 125,32,110,111,116,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,114,67,0,0,0,78,122,14,109,105,115,115, - 105,110,103,32,108,111,97,100,101,114,114,249,0,0,0,84, - 114,2,1,0,0,41,16,114,178,0,0,0,114,67,0,0, - 0,114,106,0,0,0,218,12,97,99,113,117,105,114,101,95, - 108,111,99,107,114,103,0,0,0,114,7,0,0,0,114,73, - 0,0,0,114,93,0,0,0,114,47,0,0,0,114,154,0, - 0,0,114,170,0,0,0,114,221,0,0,0,114,255,0,0, - 0,114,60,0,0,0,218,11,108,111,97,100,95,109,111,100, - 117,108,101,114,3,1,0,0,41,4,114,71,0,0,0,114, - 180,0,0,0,114,67,0,0,0,114,172,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,176,0, - 0,0,108,4,0,0,115,32,0,0,0,0,2,12,1,10, - 1,13,1,24,1,15,1,21,1,18,1,18,1,27,2,19, - 1,4,1,19,1,21,4,22,2,19,1,122,17,95,83,112, - 101,99,77,101,116,104,111,100,115,46,101,120,101,99,99,1, - 0,0,0,0,0,0,0,3,0,0,0,27,0,0,0,67, - 0,0,0,115,24,1,0,0,124,0,0,106,0,0,125,1, - 0,124,1,0,106,1,0,106,2,0,124,1,0,106,3,0, - 131,1,0,1,116,4,0,106,5,0,124,1,0,106,3,0, - 25,125,2,0,116,6,0,124,2,0,100,1,0,100,0,0, - 131,3,0,100,0,0,107,8,0,114,108,0,121,16,0,124, - 1,0,106,1,0,124,2,0,95,7,0,87,113,108,0,4, - 116,8,0,107,10,0,114,104,0,1,1,1,89,113,108,0, - 88,110,0,0,116,6,0,124,2,0,100,2,0,100,0,0, - 131,3,0,100,0,0,107,8,0,114,215,0,121,59,0,124, - 2,0,106,9,0,124,2,0,95,10,0,116,11,0,124,2, - 0,100,3,0,131,2,0,115,190,0,124,1,0,106,3,0, - 106,12,0,100,4,0,131,1,0,100,5,0,25,124,2,0, - 95,10,0,110,0,0,87,113,215,0,4,116,8,0,107,10, - 0,114,211,0,1,1,1,89,113,215,0,88,110,0,0,116, - 6,0,124,2,0,100,6,0,100,0,0,131,3,0,100,0, - 0,107,8,0,114,20,1,121,13,0,124,1,0,124,2,0, - 95,13,0,87,113,20,1,4,116,8,0,107,10,0,114,16, - 1,1,1,1,89,113,20,1,88,110,0,0,124,2,0,83, - 41,7,78,114,205,0,0,0,114,251,0,0,0,114,247,0, - 0,0,114,116,0,0,0,114,84,0,0,0,114,209,0,0, - 0,41,14,114,178,0,0,0,114,170,0,0,0,114,5,1, - 0,0,114,67,0,0,0,114,7,0,0,0,114,73,0,0, - 0,114,62,0,0,0,114,205,0,0,0,114,210,0,0,0, - 114,57,0,0,0,114,251,0,0,0,114,60,0,0,0,114, - 32,0,0,0,114,209,0,0,0,41,3,114,71,0,0,0, - 114,178,0,0,0,114,180,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,218,25,95,108,111,97,100, - 95,98,97,99,107,119,97,114,100,95,99,111,109,112,97,116, - 105,98,108,101,132,4,0,0,115,42,0,0,0,0,4,9, - 1,19,2,16,1,24,1,3,1,16,1,13,1,8,1,24, - 1,3,4,12,1,15,1,32,1,13,1,8,1,24,1,3, - 1,13,1,13,1,8,1,122,38,95,83,112,101,99,77,101, - 116,104,111,100,115,46,95,108,111,97,100,95,98,97,99,107, - 119,97,114,100,95,99,111,109,112,97,116,105,98,108,101,99, - 1,0,0,0,0,0,0,0,2,0,0,0,11,0,0,0, - 67,0,0,0,115,179,0,0,0,124,0,0,106,0,0,106, - 1,0,100,0,0,107,9,0,114,52,0,116,2,0,124,0, - 0,106,0,0,106,1,0,100,1,0,131,2,0,115,52,0, - 124,0,0,106,3,0,131,0,0,83,110,0,0,124,0,0, - 106,4,0,131,0,0,125,1,0,116,5,0,124,1,0,131, - 1,0,143,84,0,1,124,0,0,106,0,0,106,1,0,100, - 0,0,107,8,0,114,143,0,124,0,0,106,0,0,106,6, - 0,100,0,0,107,8,0,114,156,0,116,7,0,100,2,0, - 100,3,0,124,0,0,106,0,0,106,8,0,131,1,1,130, - 1,0,113,156,0,110,13,0,124,0,0,106,9,0,124,1, - 0,131,1,0,1,87,100,0,0,81,88,116,10,0,106,11, - 0,124,0,0,106,0,0,106,8,0,25,83,41,4,78,114, - 2,1,0,0,122,14,109,105,115,115,105,110,103,32,108,111, - 97,100,101,114,114,67,0,0,0,41,12,114,178,0,0,0, - 114,170,0,0,0,114,60,0,0,0,114,6,1,0,0,114, - 1,1,0,0,114,213,0,0,0,114,221,0,0,0,114,154, - 0,0,0,114,67,0,0,0,114,3,1,0,0,114,7,0, - 0,0,114,73,0,0,0,41,2,114,71,0,0,0,114,180, + 13,1,14,2,6,1,3,1,13,1,13,1,11,1,3,1, + 19,1,13,1,11,2,21,1,27,1,9,1,9,1,114,247, + 0,0,0,218,8,111,118,101,114,114,105,100,101,70,99,2, + 0,0,0,1,0,0,0,4,0,0,0,59,0,0,0,67, + 0,0,0,115,27,2,0,0,124,2,0,115,30,0,116,0, + 0,124,1,0,100,1,0,100,0,0,131,3,0,100,0,0, + 107,8,0,114,67,0,121,16,0,124,0,0,106,1,0,124, + 1,0,95,2,0,87,110,18,0,4,116,3,0,107,10,0, + 114,66,0,1,1,1,89,110,1,0,88,124,2,0,115,97, + 0,116,0,0,124,1,0,100,2,0,100,0,0,131,3,0, + 100,0,0,107,8,0,114,194,0,124,0,0,106,4,0,125, + 3,0,124,3,0,100,0,0,107,8,0,114,160,0,124,0, + 0,106,5,0,100,0,0,107,9,0,114,160,0,116,6,0, + 106,7,0,116,6,0,131,1,0,125,3,0,124,0,0,106, + 5,0,124,3,0,95,8,0,121,13,0,124,3,0,124,1, + 0,95,9,0,87,110,18,0,4,116,3,0,107,10,0,114, + 193,0,1,1,1,89,110,1,0,88,124,2,0,115,224,0, + 116,0,0,124,1,0,100,3,0,100,0,0,131,3,0,100, + 0,0,107,8,0,114,5,1,121,16,0,124,0,0,106,10, + 0,124,1,0,95,11,0,87,110,18,0,4,116,3,0,107, + 10,0,114,4,1,1,1,1,89,110,1,0,88,121,13,0, + 124,0,0,124,1,0,95,12,0,87,110,18,0,4,116,3, + 0,107,10,0,114,38,1,1,1,1,89,110,1,0,88,124, + 2,0,115,69,1,116,0,0,124,1,0,100,4,0,100,0, + 0,131,3,0,100,0,0,107,8,0,114,121,1,124,0,0, + 106,5,0,100,0,0,107,9,0,114,121,1,121,16,0,124, + 0,0,106,5,0,124,1,0,95,13,0,87,110,18,0,4, + 116,3,0,107,10,0,114,120,1,1,1,1,89,110,1,0, + 88,124,0,0,106,14,0,114,23,2,124,2,0,115,160,1, + 116,0,0,124,1,0,100,5,0,100,0,0,131,3,0,100, + 0,0,107,8,0,114,197,1,121,16,0,124,0,0,106,15, + 0,124,1,0,95,16,0,87,110,18,0,4,116,3,0,107, + 10,0,114,196,1,1,1,1,89,110,1,0,88,124,2,0, + 115,227,1,116,0,0,124,1,0,100,6,0,100,0,0,131, + 3,0,100,0,0,107,8,0,114,23,2,124,0,0,106,17, + 0,100,0,0,107,9,0,114,23,2,121,16,0,124,0,0, + 106,17,0,124,1,0,95,18,0,87,110,18,0,4,116,3, + 0,107,10,0,114,22,2,1,1,1,89,110,1,0,88,124, + 1,0,83,41,7,78,114,57,0,0,0,114,203,0,0,0, + 218,11,95,95,112,97,99,107,97,103,101,95,95,114,246,0, + 0,0,114,210,0,0,0,114,244,0,0,0,41,19,114,62, + 0,0,0,114,67,0,0,0,114,57,0,0,0,114,208,0, + 0,0,114,170,0,0,0,114,220,0,0,0,218,16,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,218,7, + 95,95,110,101,119,95,95,218,5,95,112,97,116,104,114,203, + 0,0,0,114,233,0,0,0,114,249,0,0,0,114,207,0, + 0,0,114,246,0,0,0,114,226,0,0,0,114,217,0,0, + 0,114,210,0,0,0,114,225,0,0,0,114,244,0,0,0, + 41,4,114,177,0,0,0,114,178,0,0,0,114,248,0,0, + 0,114,170,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,218,18,95,105,110,105,116,95,109,111,100, + 117,108,101,95,97,116,116,114,115,226,3,0,0,115,86,0, + 0,0,0,4,30,1,3,1,16,1,13,1,5,2,30,1, + 9,1,12,2,15,1,15,1,12,1,3,1,13,1,13,1, + 5,2,30,1,3,1,16,1,13,1,5,2,3,1,13,1, + 13,1,5,2,30,1,15,1,3,1,16,1,13,1,5,2, + 9,1,30,1,3,1,16,1,13,1,5,2,30,1,15,1, + 3,1,16,1,13,1,5,1,114,253,0,0,0,99,1,0, + 0,0,0,0,0,0,2,0,0,0,5,0,0,0,67,0, + 0,0,115,129,0,0,0,100,1,0,125,1,0,116,0,0, + 124,0,0,106,1,0,100,2,0,131,2,0,114,45,0,124, + 0,0,106,1,0,106,2,0,124,0,0,131,1,0,125,1, + 0,110,40,0,116,0,0,124,0,0,106,1,0,100,3,0, + 131,2,0,114,85,0,116,3,0,106,4,0,100,4,0,116, + 5,0,100,5,0,100,6,0,131,2,1,1,124,1,0,100, + 1,0,107,8,0,114,112,0,116,6,0,124,0,0,106,7, + 0,131,1,0,125,1,0,116,8,0,124,0,0,124,1,0, + 131,2,0,1,124,1,0,83,41,7,122,43,67,114,101,97, + 116,101,32,97,32,109,111,100,117,108,101,32,98,97,115,101, + 100,32,111,110,32,116,104,101,32,112,114,111,118,105,100,101, + 100,32,115,112,101,99,46,78,218,13,99,114,101,97,116,101, + 95,109,111,100,117,108,101,218,11,101,120,101,99,95,109,111, + 100,117,108,101,122,87,115,116,97,114,116,105,110,103,32,105, + 110,32,80,121,116,104,111,110,32,51,46,54,44,32,108,111, + 97,100,101,114,115,32,100,101,102,105,110,105,110,103,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,109,117,115, + 116,32,97,108,115,111,32,100,101,102,105,110,101,32,99,114, + 101,97,116,101,95,109,111,100,117,108,101,40,41,90,10,115, + 116,97,99,107,108,101,118,101,108,114,115,0,0,0,41,9, + 114,60,0,0,0,114,170,0,0,0,114,254,0,0,0,114, + 167,0,0,0,114,168,0,0,0,218,18,68,101,112,114,101, + 99,97,116,105,111,110,87,97,114,110,105,110,103,114,68,0, + 0,0,114,67,0,0,0,114,253,0,0,0,41,2,114,177, + 0,0,0,114,178,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,16,109,111,100,117,108,101,95, + 102,114,111,109,95,115,112,101,99,26,4,0,0,115,20,0, + 0,0,0,3,6,1,18,3,21,1,18,1,9,2,13,1, + 12,1,15,1,13,1,114,1,1,0,0,99,1,0,0,0, + 0,0,0,0,2,0,0,0,3,0,0,0,67,0,0,0, + 115,149,0,0,0,124,0,0,106,0,0,100,1,0,107,8, + 0,114,21,0,100,2,0,110,6,0,124,0,0,106,0,0, + 125,1,0,124,0,0,106,1,0,100,1,0,107,8,0,114, + 95,0,124,0,0,106,2,0,100,1,0,107,8,0,114,73, + 0,100,3,0,106,3,0,124,1,0,131,1,0,83,100,4, + 0,106,3,0,124,1,0,124,0,0,106,2,0,131,2,0, + 83,110,50,0,124,0,0,106,4,0,114,123,0,100,5,0, + 106,3,0,124,1,0,124,0,0,106,1,0,131,2,0,83, + 100,6,0,106,3,0,124,0,0,106,0,0,124,0,0,106, + 1,0,131,2,0,83,100,1,0,83,41,7,122,38,82,101, + 116,117,114,110,32,116,104,101,32,114,101,112,114,32,116,111, + 32,117,115,101,32,102,111,114,32,116,104,101,32,109,111,100, + 117,108,101,46,78,114,205,0,0,0,122,13,60,109,111,100, + 117,108,101,32,123,33,114,125,62,122,20,60,109,111,100,117, + 108,101,32,123,33,114,125,32,40,123,33,114,125,41,62,122, + 23,60,109,111,100,117,108,101,32,123,33,114,125,32,102,114, + 111,109,32,123,33,114,125,62,122,18,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,125,41,62,41,5,114,67, + 0,0,0,114,217,0,0,0,114,170,0,0,0,114,47,0, + 0,0,114,226,0,0,0,41,2,114,177,0,0,0,114,67, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,14,95,108,111,97,100,95,117,110,108,111,99,107, - 101,100,162,4,0,0,115,20,0,0,0,0,2,18,2,21, - 1,13,2,12,1,13,1,18,1,18,1,30,3,19,5,122, - 27,95,83,112,101,99,77,101,116,104,111,100,115,46,95,108, - 111,97,100,95,117,110,108,111,99,107,101,100,99,1,0,0, - 0,0,0,0,0,1,0,0,0,8,0,0,0,67,0,0, - 0,115,49,0,0,0,116,0,0,106,1,0,131,0,0,1, - 116,2,0,124,0,0,106,3,0,106,4,0,131,1,0,143, - 15,0,1,124,0,0,106,5,0,131,0,0,83,87,100,1, - 0,81,88,100,1,0,83,41,2,122,207,82,101,116,117,114, - 110,32,97,32,110,101,119,32,109,111,100,117,108,101,32,111, - 98,106,101,99,116,44,32,108,111,97,100,101,100,32,98,121, - 32,116,104,101,32,115,112,101,99,39,115,32,108,111,97,100, - 101,114,46,10,10,32,32,32,32,32,32,32,32,84,104,101, - 32,109,111,100,117,108,101,32,105,115,32,110,111,116,32,97, - 100,100,101,100,32,116,111,32,105,116,115,32,112,97,114,101, - 110,116,46,10,10,32,32,32,32,32,32,32,32,73,102,32, - 97,32,109,111,100,117,108,101,32,105,115,32,97,108,114,101, - 97,100,121,32,105,110,32,115,121,115,46,109,111,100,117,108, - 101,115,44,32,116,104,97,116,32,101,120,105,115,116,105,110, - 103,32,109,111,100,117,108,101,32,103,101,116,115,10,32,32, - 32,32,32,32,32,32,99,108,111,98,98,101,114,101,100,46, - 10,10,32,32,32,32,32,32,32,32,78,41,6,114,106,0, - 0,0,114,4,1,0,0,114,103,0,0,0,114,178,0,0, - 0,114,67,0,0,0,114,7,1,0,0,41,1,114,71,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,177,0,0,0,185,4,0,0,115,6,0,0,0,0, - 9,10,1,19,1,122,17,95,83,112,101,99,77,101,116,104, - 111,100,115,46,108,111,97,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, - 72,0,0,0,114,206,0,0,0,114,255,0,0,0,114,1, - 1,0,0,114,3,1,0,0,114,176,0,0,0,114,6,1, - 0,0,114,7,1,0,0,114,177,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,175,0,0,0,225,3,0,0,115,20,0,0,0,12,3, - 6,4,12,3,12,16,24,80,12,23,12,10,12,24,12,30, - 12,23,114,175,0,0,0,99,4,0,0,0,0,0,0,0, - 6,0,0,0,11,0,0,0,67,0,0,0,115,201,0,0, + 0,0,114,209,0,0,0,44,4,0,0,115,16,0,0,0, + 0,3,30,1,15,1,15,1,13,2,22,2,9,1,19,2, + 114,209,0,0,0,99,2,0,0,0,0,0,0,0,4,0, + 0,0,12,0,0,0,67,0,0,0,115,252,0,0,0,124, + 0,0,106,0,0,125,2,0,116,1,0,106,2,0,131,0, + 0,1,116,3,0,124,2,0,131,1,0,143,208,0,1,116, + 4,0,106,5,0,106,6,0,124,2,0,131,1,0,124,1, + 0,107,9,0,114,89,0,100,1,0,106,7,0,124,2,0, + 131,1,0,125,3,0,116,8,0,124,3,0,100,2,0,124, + 2,0,131,1,1,130,1,0,124,0,0,106,9,0,100,3, + 0,107,8,0,114,163,0,124,0,0,106,10,0,100,3,0, + 107,8,0,114,140,0,116,8,0,100,4,0,100,2,0,124, + 0,0,106,0,0,131,1,1,130,1,0,116,11,0,124,0, + 0,124,1,0,100,5,0,100,6,0,131,2,1,1,124,1, + 0,83,116,11,0,124,0,0,124,1,0,100,5,0,100,6, + 0,131,2,1,1,116,12,0,124,0,0,106,9,0,100,7, + 0,131,2,0,115,219,0,124,0,0,106,9,0,106,13,0, + 124,2,0,131,1,0,1,110,16,0,124,0,0,106,9,0, + 106,14,0,124,1,0,131,1,0,1,87,100,3,0,81,88, + 116,4,0,106,5,0,124,2,0,25,83,41,8,122,51,69, + 120,101,99,117,116,101,32,116,104,101,32,115,112,101,99,32, + 105,110,32,97,110,32,101,120,105,115,116,105,110,103,32,109, + 111,100,117,108,101,39,115,32,110,97,109,101,115,112,97,99, + 101,46,122,30,109,111,100,117,108,101,32,123,33,114,125,32, + 110,111,116,32,105,110,32,115,121,115,46,109,111,100,117,108, + 101,115,114,67,0,0,0,78,122,14,109,105,115,115,105,110, + 103,32,108,111,97,100,101,114,114,248,0,0,0,84,114,255, + 0,0,0,41,15,114,67,0,0,0,114,106,0,0,0,218, + 12,97,99,113,117,105,114,101,95,108,111,99,107,114,103,0, + 0,0,114,7,0,0,0,114,73,0,0,0,114,93,0,0, + 0,114,47,0,0,0,114,154,0,0,0,114,170,0,0,0, + 114,220,0,0,0,114,253,0,0,0,114,60,0,0,0,218, + 11,108,111,97,100,95,109,111,100,117,108,101,114,255,0,0, + 0,41,4,114,177,0,0,0,114,178,0,0,0,114,67,0, + 0,0,114,172,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,175,0,0,0,61,4,0,0,115, + 32,0,0,0,0,2,9,1,10,1,13,1,24,1,15,1, + 18,1,15,1,15,1,21,2,19,1,4,1,19,1,18,4, + 19,2,22,1,114,175,0,0,0,99,1,0,0,0,0,0, + 0,0,2,0,0,0,27,0,0,0,67,0,0,0,115,3, + 1,0,0,124,0,0,106,0,0,106,1,0,124,0,0,106, + 2,0,131,1,0,1,116,3,0,106,4,0,124,0,0,106, + 2,0,25,125,1,0,116,5,0,124,1,0,100,1,0,100, + 0,0,131,3,0,100,0,0,107,8,0,114,96,0,121,16, + 0,124,0,0,106,0,0,124,1,0,95,6,0,87,110,18, + 0,4,116,7,0,107,10,0,114,95,0,1,1,1,89,110, + 1,0,88,116,5,0,124,1,0,100,2,0,100,0,0,131, + 3,0,100,0,0,107,8,0,114,197,0,121,56,0,124,1, + 0,106,8,0,124,1,0,95,9,0,116,10,0,124,1,0, + 100,3,0,131,2,0,115,175,0,124,0,0,106,2,0,106, + 11,0,100,4,0,131,1,0,100,5,0,25,124,1,0,95, + 9,0,87,110,18,0,4,116,7,0,107,10,0,114,196,0, + 1,1,1,89,110,1,0,88,116,5,0,124,1,0,100,6, + 0,100,0,0,131,3,0,100,0,0,107,8,0,114,255,0, + 121,13,0,124,0,0,124,1,0,95,12,0,87,110,18,0, + 4,116,7,0,107,10,0,114,254,0,1,1,1,89,110,1, + 0,88,124,1,0,83,41,7,78,114,203,0,0,0,114,249, + 0,0,0,114,246,0,0,0,114,116,0,0,0,114,84,0, + 0,0,114,207,0,0,0,41,13,114,170,0,0,0,114,3, + 1,0,0,114,67,0,0,0,114,7,0,0,0,114,73,0, + 0,0,114,62,0,0,0,114,203,0,0,0,114,208,0,0, + 0,114,57,0,0,0,114,249,0,0,0,114,60,0,0,0, + 114,32,0,0,0,114,207,0,0,0,41,2,114,177,0,0, + 0,114,178,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,218,25,95,108,111,97,100,95,98,97,99, + 107,119,97,114,100,95,99,111,109,112,97,116,105,98,108,101, + 86,4,0,0,115,40,0,0,0,0,4,19,2,16,1,24, + 1,3,1,16,1,13,1,5,1,24,1,3,4,12,1,15, + 1,29,1,13,1,5,1,24,1,3,1,13,1,13,1,5, + 1,114,4,1,0,0,99,1,0,0,0,0,0,0,0,2, + 0,0,0,11,0,0,0,67,0,0,0,115,158,0,0,0, + 124,0,0,106,0,0,100,0,0,107,9,0,114,43,0,116, + 1,0,124,0,0,106,0,0,100,1,0,131,2,0,115,43, + 0,116,2,0,124,0,0,131,1,0,83,116,3,0,124,0, + 0,131,1,0,125,1,0,116,4,0,124,1,0,131,1,0, + 143,75,0,1,124,0,0,106,0,0,100,0,0,107,8,0, + 114,122,0,124,0,0,106,5,0,100,0,0,107,8,0,114, + 138,0,116,6,0,100,2,0,100,3,0,124,0,0,106,7, + 0,131,1,1,130,1,0,110,16,0,124,0,0,106,0,0, + 106,8,0,124,1,0,131,1,0,1,87,100,0,0,81,88, + 116,9,0,106,10,0,124,0,0,106,7,0,25,83,41,4, + 78,114,255,0,0,0,122,14,109,105,115,115,105,110,103,32, + 108,111,97,100,101,114,114,67,0,0,0,41,11,114,170,0, + 0,0,114,60,0,0,0,114,4,1,0,0,114,1,1,0, + 0,114,212,0,0,0,114,220,0,0,0,114,154,0,0,0, + 114,67,0,0,0,114,255,0,0,0,114,7,0,0,0,114, + 73,0,0,0,41,2,114,177,0,0,0,114,178,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 14,95,108,111,97,100,95,117,110,108,111,99,107,101,100,115, + 4,0,0,115,20,0,0,0,0,2,15,2,18,1,10,2, + 12,1,13,1,15,1,15,1,24,3,22,5,114,5,1,0, + 0,99,1,0,0,0,0,0,0,0,1,0,0,0,9,0, + 0,0,67,0,0,0,115,46,0,0,0,116,0,0,106,1, + 0,131,0,0,1,116,2,0,124,0,0,106,3,0,131,1, + 0,143,15,0,1,116,4,0,124,0,0,131,1,0,83,87, + 100,1,0,81,88,100,1,0,83,41,2,122,191,82,101,116, + 117,114,110,32,97,32,110,101,119,32,109,111,100,117,108,101, + 32,111,98,106,101,99,116,44,32,108,111,97,100,101,100,32, + 98,121,32,116,104,101,32,115,112,101,99,39,115,32,108,111, + 97,100,101,114,46,10,10,32,32,32,32,84,104,101,32,109, + 111,100,117,108,101,32,105,115,32,110,111,116,32,97,100,100, + 101,100,32,116,111,32,105,116,115,32,112,97,114,101,110,116, + 46,10,10,32,32,32,32,73,102,32,97,32,109,111,100,117, + 108,101,32,105,115,32,97,108,114,101,97,100,121,32,105,110, + 32,115,121,115,46,109,111,100,117,108,101,115,44,32,116,104, + 97,116,32,101,120,105,115,116,105,110,103,32,109,111,100,117, + 108,101,32,103,101,116,115,10,32,32,32,32,99,108,111,98, + 98,101,114,101,100,46,10,10,32,32,32,32,78,41,5,114, + 106,0,0,0,114,2,1,0,0,114,103,0,0,0,114,67, + 0,0,0,114,5,1,0,0,41,1,114,177,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,176, + 0,0,0,138,4,0,0,115,6,0,0,0,0,9,10,1, + 16,1,114,176,0,0,0,99,4,0,0,0,0,0,0,0, + 6,0,0,0,11,0,0,0,67,0,0,0,115,195,0,0, 0,124,0,0,106,0,0,100,1,0,131,1,0,125,4,0, 124,0,0,106,0,0,100,2,0,131,1,0,125,5,0,124, - 4,0,115,102,0,124,5,0,114,54,0,124,5,0,106,1, - 0,125,4,0,113,102,0,124,2,0,124,3,0,107,2,0, + 4,0,115,99,0,124,5,0,114,54,0,124,5,0,106,1, + 0,125,4,0,110,45,0,124,2,0,124,3,0,107,2,0, 114,84,0,116,2,0,124,1,0,124,2,0,131,2,0,125, - 4,0,113,102,0,116,3,0,124,1,0,124,2,0,131,2, - 0,125,4,0,110,0,0,124,5,0,115,132,0,116,4,0, - 124,1,0,124,2,0,100,3,0,124,4,0,131,2,1,125, - 5,0,110,0,0,121,44,0,124,5,0,124,0,0,100,2, - 0,60,124,4,0,124,0,0,100,1,0,60,124,2,0,124, - 0,0,100,4,0,60,124,3,0,124,0,0,100,5,0,60, - 87,110,18,0,4,116,5,0,107,10,0,114,196,0,1,1, - 1,89,110,1,0,88,100,0,0,83,41,6,78,114,205,0, - 0,0,114,209,0,0,0,114,170,0,0,0,114,211,0,0, - 0,114,245,0,0,0,41,6,114,93,0,0,0,114,170,0, - 0,0,218,20,83,111,117,114,99,101,108,101,115,115,70,105, - 108,101,76,111,97,100,101,114,218,16,83,111,117,114,99,101, - 70,105,108,101,76,111,97,100,101,114,114,240,0,0,0,114, - 208,0,0,0,41,6,90,2,110,115,114,67,0,0,0,90, - 8,112,97,116,104,110,97,109,101,90,9,99,112,97,116,104, - 110,97,109,101,114,170,0,0,0,114,178,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,95, - 102,105,120,95,117,112,95,109,111,100,117,108,101,199,4,0, - 0,115,34,0,0,0,0,2,15,1,15,1,6,1,6,1, - 12,1,12,1,18,2,18,1,6,1,24,1,3,1,10,1, - 10,1,10,1,14,1,13,2,114,10,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,181,0,0,0,101,0,0,90,1,0,100,0,0, - 90,2,0,100,1,0,90,3,0,101,4,0,100,2,0,100, - 3,0,132,0,0,131,1,0,90,5,0,101,6,0,100,4, - 0,100,4,0,100,5,0,100,6,0,132,2,0,131,1,0, - 90,7,0,101,6,0,100,4,0,100,7,0,100,8,0,132, - 1,0,131,1,0,90,8,0,101,6,0,101,9,0,100,9, - 0,100,10,0,132,0,0,131,1,0,131,1,0,90,10,0, - 101,6,0,101,9,0,100,11,0,100,12,0,132,0,0,131, - 1,0,131,1,0,90,11,0,101,6,0,101,9,0,100,13, - 0,100,14,0,132,0,0,131,1,0,131,1,0,90,12,0, - 101,6,0,101,9,0,100,15,0,100,16,0,132,0,0,131, - 1,0,131,1,0,90,13,0,100,4,0,83,41,17,218,15, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,122, - 144,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,98,117,105,108,116,45,105,110,32,109, - 111,100,117,108,101,115,46,10,10,32,32,32,32,65,108,108, - 32,109,101,116,104,111,100,115,32,97,114,101,32,101,105,116, - 104,101,114,32,99,108,97,115,115,32,111,114,32,115,116,97, - 116,105,99,32,109,101,116,104,111,100,115,32,116,111,32,97, - 118,111,105,100,32,116,104,101,32,110,101,101,100,32,116,111, - 10,32,32,32,32,105,110,115,116,97,110,116,105,97,116,101, - 32,116,104,101,32,99,108,97,115,115,46,10,10,32,32,32, - 32,99,1,0,0,0,0,0,0,0,1,0,0,0,2,0, - 0,0,67,0,0,0,115,16,0,0,0,100,1,0,106,0, - 0,124,0,0,106,1,0,131,1,0,83,41,2,122,115,82, - 101,116,117,114,110,32,114,101,112,114,32,102,111,114,32,116, - 104,101,32,109,111,100,117,108,101,46,10,10,32,32,32,32, - 32,32,32,32,84,104,101,32,109,101,116,104,111,100,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,84, - 104,101,32,105,109,112,111,114,116,32,109,97,99,104,105,110, - 101,114,121,32,100,111,101,115,32,116,104,101,32,106,111,98, - 32,105,116,115,101,108,102,46,10,10,32,32,32,32,32,32, - 32,32,122,24,60,109,111,100,117,108,101,32,123,33,114,125, - 32,40,98,117,105,108,116,45,105,110,41,62,41,2,114,47, - 0,0,0,114,57,0,0,0,41,1,114,180,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,206, - 0,0,0,233,4,0,0,115,2,0,0,0,0,7,122,27, - 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, - 109,111,100,117,108,101,95,114,101,112,114,78,99,4,0,0, - 0,0,0,0,0,4,0,0,0,5,0,0,0,67,0,0, - 0,115,58,0,0,0,124,2,0,100,0,0,107,9,0,114, - 16,0,100,0,0,83,116,0,0,106,1,0,124,1,0,131, - 1,0,114,50,0,116,2,0,124,1,0,124,0,0,100,1, - 0,100,2,0,131,2,1,83,100,0,0,83,100,0,0,83, - 41,3,78,114,218,0,0,0,122,8,98,117,105,108,116,45, - 105,110,41,3,114,106,0,0,0,90,10,105,115,95,98,117, - 105,108,116,105,110,114,174,0,0,0,41,4,218,3,99,108, - 115,114,159,0,0,0,114,35,0,0,0,218,6,116,97,114, - 103,101,116,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,9,102,105,110,100,95,115,112,101,99,242,4,0, - 0,115,10,0,0,0,0,2,12,1,4,1,15,1,19,2, - 122,25,66,117,105,108,116,105,110,73,109,112,111,114,116,101, - 114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,0, - 0,0,0,0,4,0,0,0,3,0,0,0,67,0,0,0, - 115,41,0,0,0,124,0,0,106,0,0,124,1,0,124,2, - 0,131,2,0,125,3,0,124,3,0,100,1,0,107,9,0, - 114,37,0,124,3,0,106,1,0,83,100,1,0,83,41,2, - 122,175,70,105,110,100,32,116,104,101,32,98,117,105,108,116, - 45,105,110,32,109,111,100,117,108,101,46,10,10,32,32,32, - 32,32,32,32,32,73,102,32,39,112,97,116,104,39,32,105, - 115,32,101,118,101,114,32,115,112,101,99,105,102,105,101,100, - 32,116,104,101,110,32,116,104,101,32,115,101,97,114,99,104, - 32,105,115,32,99,111,110,115,105,100,101,114,101,100,32,97, - 32,102,97,105,108,117,114,101,46,10,10,32,32,32,32,32, - 32,32,32,84,104,105,115,32,109,101,116,104,111,100,32,105, - 115,32,100,101,112,114,101,99,97,116,101,100,46,32,32,85, - 115,101,32,102,105,110,100,95,115,112,101,99,40,41,32,105, - 110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,32, - 32,78,41,2,114,14,1,0,0,114,170,0,0,0,41,4, - 114,12,1,0,0,114,159,0,0,0,114,35,0,0,0,114, + 4,0,110,15,0,116,3,0,124,1,0,124,2,0,131,2, + 0,125,4,0,124,5,0,115,126,0,116,4,0,124,1,0, + 124,2,0,100,3,0,124,4,0,131,2,1,125,5,0,121, + 44,0,124,5,0,124,0,0,100,2,0,60,124,4,0,124, + 0,0,100,1,0,60,124,2,0,124,0,0,100,4,0,60, + 124,3,0,124,0,0,100,5,0,60,87,110,18,0,4,116, + 5,0,107,10,0,114,190,0,1,1,1,89,110,1,0,88, + 100,0,0,83,41,6,78,114,203,0,0,0,114,207,0,0, + 0,114,170,0,0,0,114,210,0,0,0,114,244,0,0,0, + 41,6,114,93,0,0,0,114,170,0,0,0,218,20,83,111, + 117,114,99,101,108,101,115,115,70,105,108,101,76,111,97,100, + 101,114,218,16,83,111,117,114,99,101,70,105,108,101,76,111, + 97,100,101,114,114,239,0,0,0,114,206,0,0,0,41,6, + 90,2,110,115,114,67,0,0,0,90,8,112,97,116,104,110, + 97,109,101,90,9,99,112,97,116,104,110,97,109,101,114,170, + 0,0,0,114,177,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,14,95,102,105,120,95,117,112, + 95,109,111,100,117,108,101,152,4,0,0,115,34,0,0,0, + 0,2,15,1,15,1,6,1,6,1,12,1,12,1,18,2, + 15,1,6,1,21,1,3,1,10,1,10,1,10,1,14,1, + 13,2,114,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,181,0,0, + 0,101,0,0,90,1,0,100,0,0,90,2,0,100,1,0, + 90,3,0,101,4,0,100,2,0,100,3,0,132,0,0,131, + 1,0,90,5,0,101,6,0,100,4,0,100,4,0,100,5, + 0,100,6,0,132,2,0,131,1,0,90,7,0,101,6,0, + 100,4,0,100,7,0,100,8,0,132,1,0,131,1,0,90, + 8,0,101,6,0,101,9,0,100,9,0,100,10,0,132,0, + 0,131,1,0,131,1,0,90,10,0,101,6,0,101,9,0, + 100,11,0,100,12,0,132,0,0,131,1,0,131,1,0,90, + 11,0,101,6,0,101,9,0,100,13,0,100,14,0,132,0, + 0,131,1,0,131,1,0,90,12,0,101,6,0,101,9,0, + 100,15,0,100,16,0,132,0,0,131,1,0,131,1,0,90, + 13,0,100,4,0,83,41,17,218,15,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,122,144,77,101,116,97,32, + 112,97,116,104,32,105,109,112,111,114,116,32,102,111,114,32, + 98,117,105,108,116,45,105,110,32,109,111,100,117,108,101,115, + 46,10,10,32,32,32,32,65,108,108,32,109,101,116,104,111, + 100,115,32,97,114,101,32,101,105,116,104,101,114,32,99,108, + 97,115,115,32,111,114,32,115,116,97,116,105,99,32,109,101, + 116,104,111,100,115,32,116,111,32,97,118,111,105,100,32,116, + 104,101,32,110,101,101,100,32,116,111,10,32,32,32,32,105, + 110,115,116,97,110,116,105,97,116,101,32,116,104,101,32,99, + 108,97,115,115,46,10,10,32,32,32,32,99,1,0,0,0, + 0,0,0,0,1,0,0,0,2,0,0,0,67,0,0,0, + 115,16,0,0,0,100,1,0,106,0,0,124,0,0,106,1, + 0,131,1,0,83,41,2,122,115,82,101,116,117,114,110,32, + 114,101,112,114,32,102,111,114,32,116,104,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,84,104,101,32,105,109,112, + 111,114,116,32,109,97,99,104,105,110,101,114,121,32,100,111, + 101,115,32,116,104,101,32,106,111,98,32,105,116,115,101,108, + 102,46,10,10,32,32,32,32,32,32,32,32,122,24,60,109, + 111,100,117,108,101,32,123,33,114,125,32,40,98,117,105,108, + 116,45,105,110,41,62,41,2,114,47,0,0,0,114,57,0, + 0,0,41,1,114,178,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,204,0,0,0,186,4,0, + 0,115,2,0,0,0,0,7,122,27,66,117,105,108,116,105, + 110,73,109,112,111,114,116,101,114,46,109,111,100,117,108,101, + 95,114,101,112,114,78,99,4,0,0,0,0,0,0,0,4, + 0,0,0,5,0,0,0,67,0,0,0,115,58,0,0,0, + 124,2,0,100,0,0,107,9,0,114,16,0,100,0,0,83, + 116,0,0,106,1,0,124,1,0,131,1,0,114,50,0,116, + 2,0,124,1,0,124,0,0,100,1,0,100,2,0,131,2, + 1,83,100,0,0,83,100,0,0,83,41,3,78,114,217,0, + 0,0,122,8,98,117,105,108,116,45,105,110,41,3,114,106, + 0,0,0,90,10,105,115,95,98,117,105,108,116,105,110,114, + 174,0,0,0,41,4,218,3,99,108,115,114,159,0,0,0, + 114,35,0,0,0,218,6,116,97,114,103,101,116,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,195,4,0,0,115,10,0,0,0, + 0,2,12,1,4,1,15,1,19,2,122,25,66,117,105,108, + 116,105,110,73,109,112,111,114,116,101,114,46,102,105,110,100, + 95,115,112,101,99,99,3,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,67,0,0,0,115,41,0,0,0,124, + 0,0,106,0,0,124,1,0,124,2,0,131,2,0,125,3, + 0,124,3,0,100,1,0,107,9,0,114,37,0,124,3,0, + 106,1,0,83,100,1,0,83,41,2,122,175,70,105,110,100, + 32,116,104,101,32,98,117,105,108,116,45,105,110,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,73, + 102,32,39,112,97,116,104,39,32,105,115,32,101,118,101,114, + 32,115,112,101,99,105,102,105,101,100,32,116,104,101,110,32, + 116,104,101,32,115,101,97,114,99,104,32,105,115,32,99,111, + 110,115,105,100,101,114,101,100,32,97,32,102,97,105,108,117, + 114,101,46,10,10,32,32,32,32,32,32,32,32,84,104,105, + 115,32,109,101,116,104,111,100,32,105,115,32,100,101,112,114, + 101,99,97,116,101,100,46,32,32,85,115,101,32,102,105,110, + 100,95,115,112,101,99,40,41,32,105,110,115,116,101,97,100, + 46,10,10,32,32,32,32,32,32,32,32,78,41,2,114,12, + 1,0,0,114,170,0,0,0,41,4,114,10,1,0,0,114, + 159,0,0,0,114,35,0,0,0,114,177,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,204,4,0,0,115,4, + 0,0,0,0,9,18,1,122,27,66,117,105,108,116,105,110, + 73,109,112,111,114,116,101,114,46,102,105,110,100,95,109,111, + 100,117,108,101,99,2,0,0,0,0,0,0,0,3,0,0, + 0,10,0,0,0,67,0,0,0,115,59,0,0,0,116,0, + 0,124,1,0,131,1,0,143,23,0,1,116,1,0,116,2, + 0,106,3,0,124,1,0,131,2,0,125,2,0,87,100,1, + 0,81,88,124,0,0,124,2,0,95,4,0,100,2,0,124, + 2,0,95,5,0,124,2,0,83,41,3,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,114,30,0,0,0,41,6,114,69,0,0, + 0,114,114,0,0,0,114,106,0,0,0,90,12,105,110,105, + 116,95,98,117,105,108,116,105,110,114,203,0,0,0,114,249, + 0,0,0,41,3,114,10,1,0,0,114,159,0,0,0,114, 178,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, - 251,4,0,0,115,4,0,0,0,0,9,18,1,122,27,66, - 117,105,108,116,105,110,73,109,112,111,114,116,101,114,46,102, - 105,110,100,95,109,111,100,117,108,101,99,2,0,0,0,0, - 0,0,0,3,0,0,0,10,0,0,0,67,0,0,0,115, - 59,0,0,0,116,0,0,124,1,0,131,1,0,143,23,0, - 1,116,1,0,116,2,0,106,3,0,124,1,0,131,2,0, - 125,2,0,87,100,1,0,81,88,124,0,0,124,2,0,95, - 4,0,100,2,0,124,2,0,95,5,0,124,2,0,83,41, - 3,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,114,30,0,0,0, - 41,6,114,69,0,0,0,114,114,0,0,0,114,106,0,0, - 0,90,12,105,110,105,116,95,98,117,105,108,116,105,110,114, - 205,0,0,0,114,251,0,0,0,41,3,114,12,1,0,0, - 114,159,0,0,0,114,180,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,5,1,0,0,7,5, - 0,0,115,10,0,0,0,0,6,13,1,24,1,9,1,9, - 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,12,1,0,0,114,159,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,19,5,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,12,1,0,0, + 0,0,0,114,3,1,0,0,216,4,0,0,115,10,0,0, + 0,0,6,13,1,24,1,9,1,9,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,10,1,0,0, 114,159,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, - 25,5,0,0,115,2,0,0,0,0,4,122,26,66,117,105, - 108,116,105,110,73,109,112,111,114,116,101,114,46,103,101,116, - 95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, - 0,100,1,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,12,1,0,0,114,159,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,220, - 0,0,0,31,5,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,12,115,116,97,116,105,99,109,101,116,104,111,100,114,206, - 0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,100, - 114,14,1,0,0,114,15,1,0,0,114,162,0,0,0,114, - 5,1,0,0,114,16,1,0,0,114,17,1,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,11,1,0,0,224,4,0,0, - 115,28,0,0,0,12,7,6,2,18,9,3,1,21,8,3, - 1,18,11,3,1,21,11,3,1,21,5,3,1,21,5,3, - 1,114,11,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,193,0,0,0, - 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, - 3,0,101,4,0,100,2,0,100,3,0,132,0,0,131,1, - 0,90,5,0,101,6,0,100,4,0,100,4,0,100,5,0, - 100,6,0,132,2,0,131,1,0,90,7,0,101,6,0,100, - 4,0,100,7,0,100,8,0,132,1,0,131,1,0,90,8, - 0,101,4,0,100,9,0,100,10,0,132,0,0,131,1,0, - 90,9,0,101,6,0,100,11,0,100,12,0,132,0,0,131, - 1,0,90,10,0,101,6,0,101,11,0,100,13,0,100,14, - 0,132,0,0,131,1,0,131,1,0,90,12,0,101,6,0, - 101,11,0,100,15,0,100,16,0,132,0,0,131,1,0,131, - 1,0,90,13,0,101,6,0,101,11,0,100,17,0,100,18, - 0,132,0,0,131,1,0,131,1,0,90,14,0,100,4,0, - 83,41,19,218,14,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,122,142,77,101,116,97,32,112,97,116,104,32,105, - 109,112,111,114,116,32,102,111,114,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,115,46,10,10,32,32,32,32,65, - 108,108,32,109,101,116,104,111,100,115,32,97,114,101,32,101, - 105,116,104,101,114,32,99,108,97,115,115,32,111,114,32,115, - 116,97,116,105,99,32,109,101,116,104,111,100,115,32,116,111, - 32,97,118,111,105,100,32,116,104,101,32,110,101,101,100,32, - 116,111,10,32,32,32,32,105,110,115,116,97,110,116,105,97, - 116,101,32,116,104,101,32,99,108,97,115,115,46,10,10,32, - 32,32,32,99,1,0,0,0,0,0,0,0,1,0,0,0, - 2,0,0,0,67,0,0,0,115,16,0,0,0,100,1,0, - 106,0,0,124,0,0,106,1,0,131,1,0,83,41,2,122, - 115,82,101,116,117,114,110,32,114,101,112,114,32,102,111,114, - 32,116,104,101,32,109,111,100,117,108,101,46,10,10,32,32, - 32,32,32,32,32,32,84,104,101,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, - 32,84,104,101,32,105,109,112,111,114,116,32,109,97,99,104, - 105,110,101,114,121,32,100,111,101,115,32,116,104,101,32,106, - 111,98,32,105,116,115,101,108,102,46,10,10,32,32,32,32, - 32,32,32,32,122,22,60,109,111,100,117,108,101,32,123,33, - 114,125,32,40,102,114,111,122,101,110,41,62,41,2,114,47, - 0,0,0,114,57,0,0,0,41,1,218,1,109,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,206,0,0, - 0,47,5,0,0,115,2,0,0,0,0,7,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,109,111,100, - 117,108,101,95,114,101,112,114,78,99,4,0,0,0,0,0, - 0,0,4,0,0,0,5,0,0,0,67,0,0,0,115,42, - 0,0,0,116,0,0,106,1,0,124,1,0,131,1,0,114, - 34,0,116,2,0,124,1,0,124,0,0,100,1,0,100,2, - 0,131,2,1,83,100,0,0,83,100,0,0,83,41,3,78, - 114,218,0,0,0,90,6,102,114,111,122,101,110,41,3,114, - 106,0,0,0,114,163,0,0,0,114,174,0,0,0,41,4, - 114,12,1,0,0,114,159,0,0,0,114,35,0,0,0,114, - 13,1,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,14,1,0,0,56,5,0,0,115,6,0,0, - 0,0,2,15,1,19,2,122,24,70,114,111,122,101,110,73, - 109,112,111,114,116,101,114,46,102,105,110,100,95,115,112,101, - 99,99,3,0,0,0,0,0,0,0,3,0,0,0,2,0, - 0,0,67,0,0,0,115,23,0,0,0,116,0,0,106,1, - 0,124,1,0,131,1,0,114,19,0,124,0,0,83,100,1, - 0,83,41,2,122,93,70,105,110,100,32,97,32,102,114,111, - 122,101,110,32,109,111,100,117,108,101,46,10,10,32,32,32, - 32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, - 32,85,115,101,32,102,105,110,100,95,115,112,101,99,40,41, - 32,105,110,115,116,101,97,100,46,10,10,32,32,32,32,32, - 32,32,32,78,41,2,114,106,0,0,0,114,163,0,0,0, - 41,3,114,12,1,0,0,114,159,0,0,0,114,35,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,15,1,0,0,63,5,0,0,115,2,0,0,0,0,7, - 122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,99,1,0,0, - 0,0,0,0,0,3,0,0,0,4,0,0,0,67,0,0, - 0,115,95,0,0,0,124,0,0,106,0,0,106,1,0,125, - 1,0,116,2,0,106,3,0,124,1,0,131,1,0,115,57, - 0,116,4,0,100,1,0,106,5,0,124,1,0,131,1,0, - 100,2,0,124,1,0,131,1,1,130,1,0,110,0,0,116, - 6,0,116,2,0,106,7,0,124,1,0,131,2,0,125,2, - 0,116,8,0,124,2,0,124,0,0,106,9,0,131,2,0, - 1,100,0,0,83,41,3,78,122,27,123,33,114,125,32,105, - 115,32,110,111,116,32,97,32,102,114,111,122,101,110,32,109, - 111,100,117,108,101,114,67,0,0,0,41,10,114,209,0,0, - 0,114,67,0,0,0,114,106,0,0,0,114,163,0,0,0, - 114,154,0,0,0,114,47,0,0,0,114,114,0,0,0,218, - 17,103,101,116,95,102,114,111,122,101,110,95,111,98,106,101, - 99,116,114,176,0,0,0,114,63,0,0,0,41,3,114,180, - 0,0,0,114,67,0,0,0,114,195,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,2,1,0, - 0,72,5,0,0,115,12,0,0,0,0,2,12,1,15,1, - 18,1,12,1,18,1,122,26,70,114,111,122,101,110,73,109, - 112,111,114,116,101,114,46,101,120,101,99,95,109,111,100,117, - 108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,3, - 0,0,0,67,0,0,0,115,13,0,0,0,116,0,0,124, - 0,0,124,1,0,131,2,0,83,41,1,122,95,76,111,97, - 100,32,97,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, - 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, - 99,97,116,101,100,46,32,32,85,115,101,32,101,120,101,99, - 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97, - 100,46,10,10,32,32,32,32,32,32,32,32,41,1,114,181, - 0,0,0,41,2,114,12,1,0,0,114,159,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,5, - 1,0,0,81,5,0,0,115,2,0,0,0,0,7,122,26, - 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,108, - 111,97,100,95,109,111,100,117,108,101,99,2,0,0,0,0, - 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, - 13,0,0,0,116,0,0,106,1,0,124,1,0,131,1,0, - 83,41,1,122,45,82,101,116,117,114,110,32,116,104,101,32, - 99,111,100,101,32,111,98,106,101,99,116,32,102,111,114,32, - 116,104,101,32,102,114,111,122,101,110,32,109,111,100,117,108, - 101,46,41,2,114,106,0,0,0,114,22,1,0,0,41,2, - 114,12,1,0,0,114,159,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,16,1,0,0,90,5, - 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,12,1,0,0,114,159,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,17,1,0,0, - 96,5,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,106,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,12,1,0,0, - 114,159,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,220,0,0,0,102,5,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, - 15,114,57,0,0,0,114,56,0,0,0,114,58,0,0,0, - 114,59,0,0,0,114,18,1,0,0,114,206,0,0,0,114, - 19,1,0,0,114,14,1,0,0,114,15,1,0,0,114,2, - 1,0,0,114,5,1,0,0,114,165,0,0,0,114,16,1, - 0,0,114,17,1,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,20,1,0,0,38,5,0,0,115,28,0,0,0,12,7, - 6,2,18,9,3,1,21,6,3,1,18,8,18,9,18,9, - 3,1,21,5,3,1,21,5,3,1,114,20,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,121,0,0,0,101,0,0,90,1,0,100, - 0,0,90,2,0,100,1,0,90,3,0,100,2,0,90,4, - 0,100,3,0,90,5,0,100,4,0,90,6,0,101,7,0, - 100,5,0,100,6,0,132,0,0,131,1,0,90,8,0,101, - 7,0,100,7,0,100,8,0,132,0,0,131,1,0,90,9, - 0,101,7,0,100,9,0,100,9,0,100,10,0,100,11,0, - 132,2,0,131,1,0,90,10,0,101,7,0,100,9,0,100, - 12,0,100,13,0,132,1,0,131,1,0,90,11,0,100,9, - 0,83,41,14,218,21,87,105,110,100,111,119,115,82,101,103, - 105,115,116,114,121,70,105,110,100,101,114,122,62,77,101,116, - 97,32,112,97,116,104,32,102,105,110,100,101,114,32,102,111, - 114,32,109,111,100,117,108,101,115,32,100,101,99,108,97,114, - 101,100,32,105,110,32,116,104,101,32,87,105,110,100,111,119, - 115,32,114,101,103,105,115,116,114,121,46,122,59,83,111,102, - 116,119,97,114,101,92,80,121,116,104,111,110,92,80,121,116, - 104,111,110,67,111,114,101,92,123,115,121,115,95,118,101,114, - 115,105,111,110,125,92,77,111,100,117,108,101,115,92,123,102, - 117,108,108,110,97,109,101,125,122,65,83,111,102,116,119,97, - 114,101,92,80,121,116,104,111,110,92,80,121,116,104,111,110, - 67,111,114,101,92,123,115,121,115,95,118,101,114,115,105,111, - 110,125,92,77,111,100,117,108,101,115,92,123,102,117,108,108, - 110,97,109,101,125,92,68,101,98,117,103,70,99,2,0,0, - 0,0,0,0,0,2,0,0,0,11,0,0,0,67,0,0, - 0,115,67,0,0,0,121,23,0,116,0,0,106,1,0,116, - 0,0,106,2,0,124,1,0,131,2,0,83,87,110,37,0, - 4,116,3,0,107,10,0,114,62,0,1,1,1,116,0,0, - 106,1,0,116,0,0,106,4,0,124,1,0,131,2,0,83, - 89,110,1,0,88,100,0,0,83,41,1,78,41,5,218,7, - 95,119,105,110,114,101,103,90,7,79,112,101,110,75,101,121, - 90,17,72,75,69,89,95,67,85,82,82,69,78,84,95,85, - 83,69,82,114,40,0,0,0,90,18,72,75,69,89,95,76, - 79,67,65,76,95,77,65,67,72,73,78,69,41,2,114,12, - 1,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,121,5,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,159,0,0,0,90,11, - 115,121,115,95,118,101,114,115,105,111,110,114,137,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,26,1,0,0,114,24, - 1,0,0,90,10,81,117,101,114,121,86,97,108,117,101,114, - 40,0,0,0,41,6,114,12,1,0,0,114,159,0,0,0, - 90,12,114,101,103,105,115,116,114,121,95,107,101,121,114,25, - 1,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,128,5,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,46,95,115,101,97,114, - 99,104,95,114,101,103,105,115,116,114,121,78,99,4,0,0, - 0,0,0,0,0,8,0,0,0,14,0,0,0,67,0,0, - 0,115,155,0,0,0,124,0,0,106,0,0,124,1,0,131, - 1,0,125,4,0,124,4,0,100,0,0,107,8,0,114,31, - 0,100,0,0,83,121,14,0,116,1,0,124,4,0,131,1, - 0,1,87,110,22,0,4,116,2,0,107,10,0,114,69,0, - 1,1,1,100,0,0,83,89,110,1,0,88,120,78,0,116, - 3,0,131,0,0,68,93,67,0,92,2,0,125,5,0,125, - 6,0,124,4,0,106,4,0,116,5,0,124,6,0,131,1, - 0,131,1,0,114,80,0,116,6,0,124,1,0,124,5,0, - 124,1,0,124,4,0,131,2,0,100,1,0,124,4,0,131, - 2,1,125,7,0,124,7,0,83,113,80,0,87,100,0,0, - 83,41,2,78,114,218,0,0,0,41,7,114,32,1,0,0, - 114,39,0,0,0,114,40,0,0,0,114,241,0,0,0,114, - 231,0,0,0,114,232,0,0,0,114,174,0,0,0,41,8, - 114,12,1,0,0,114,159,0,0,0,114,35,0,0,0,114, - 13,1,0,0,114,31,1,0,0,114,170,0,0,0,114,126, - 0,0,0,114,178,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,14,1,0,0,143,5,0,0, - 115,24,0,0,0,0,2,15,1,12,1,4,1,3,1,14, - 1,13,1,9,1,22,1,21,1,21,1,9,1,122,31,87, - 105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105, - 110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,3, - 0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,67, - 0,0,0,115,45,0,0,0,124,0,0,106,0,0,124,1, - 0,124,2,0,131,2,0,125,3,0,124,3,0,100,1,0, - 107,9,0,114,37,0,124,3,0,106,1,0,83,100,1,0, - 83,100,1,0,83,41,2,122,108,70,105,110,100,32,109,111, - 100,117,108,101,32,110,97,109,101,100,32,105,110,32,116,104, - 101,32,114,101,103,105,115,116,114,121,46,10,10,32,32,32, - 32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, - 32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,78,41,2,114,14,1,0,0,114,170,0, - 0,0,41,4,114,12,1,0,0,114,159,0,0,0,114,35, - 0,0,0,114,178,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,15,1,0,0,158,5,0,0, - 115,8,0,0,0,0,7,18,1,12,1,7,2,122,33,87, - 105,110,100,111,119,115,82,101,103,105,115,116,114,121,70,105, - 110,100,101,114,46,102,105,110,100,95,109,111,100,117,108,101, - 41,12,114,57,0,0,0,114,56,0,0,0,114,58,0,0, - 0,114,59,0,0,0,114,29,1,0,0,114,28,1,0,0, - 114,27,1,0,0,114,19,1,0,0,114,26,1,0,0,114, - 32,1,0,0,114,14,1,0,0,114,15,1,0,0,114,4, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,23,1,0,0,109,5,0,0,115,20,0,0,0, - 12,2,6,3,6,3,6,2,6,2,18,7,18,15,3,1, - 21,14,3,1,114,23,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,52, + 5,0,0,0,218,8,103,101,116,95,99,111,100,101,228,4, + 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,10,1,0,0,114,159,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,234,4,0,0,115,2, + 0,0,0,0,4,122,26,66,117,105,108,116,105,110,73,109, + 112,111,114,116,101,114,46,103,101,116,95,115,111,117,114,99, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,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, + 10,1,0,0,114,159,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,219,0,0,0,240,4,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,12,115,116,97,116, + 105,99,109,101,116,104,111,100,114,204,0,0,0,218,11,99, + 108,97,115,115,109,101,116,104,111,100,114,12,1,0,0,114, + 13,1,0,0,114,162,0,0,0,114,3,1,0,0,114,14, + 1,0,0,114,15,1,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,9,1,0,0,177,4,0,0,115,28,0,0,0,12, + 7,6,2,18,9,3,1,21,8,3,1,18,11,3,1,21, + 11,3,1,21,5,3,1,21,5,3,1,114,9,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,211,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,101,4,0,100, + 2,0,100,3,0,132,0,0,131,1,0,90,5,0,101,6, + 0,100,4,0,100,4,0,100,5,0,100,6,0,132,2,0, + 131,1,0,90,7,0,101,6,0,100,4,0,100,7,0,100, + 8,0,132,1,0,131,1,0,90,8,0,101,6,0,100,9, + 0,100,10,0,132,0,0,131,1,0,90,9,0,101,4,0, + 100,11,0,100,12,0,132,0,0,131,1,0,90,10,0,101, + 6,0,100,13,0,100,14,0,132,0,0,131,1,0,90,11, + 0,101,6,0,101,12,0,100,15,0,100,16,0,132,0,0, + 131,1,0,131,1,0,90,13,0,101,6,0,101,12,0,100, + 17,0,100,18,0,132,0,0,131,1,0,131,1,0,90,14, + 0,101,6,0,101,12,0,100,19,0,100,20,0,132,0,0, + 131,1,0,131,1,0,90,15,0,100,4,0,83,41,21,218, + 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, + 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, + 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, + 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, + 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, + 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, + 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, + 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, + 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,99, + 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, + 67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,124, + 0,0,106,1,0,131,1,0,83,41,2,122,115,82,101,116, + 117,114,110,32,114,101,112,114,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, + 32,32,84,104,101,32,109,101,116,104,111,100,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,46,32,32,84,104,101, + 32,105,109,112,111,114,116,32,109,97,99,104,105,110,101,114, + 121,32,100,111,101,115,32,116,104,101,32,106,111,98,32,105, + 116,115,101,108,102,46,10,10,32,32,32,32,32,32,32,32, + 122,22,60,109,111,100,117,108,101,32,123,33,114,125,32,40, + 102,114,111,122,101,110,41,62,41,2,114,47,0,0,0,114, + 57,0,0,0,41,1,218,1,109,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,204,0,0,0,0,5,0, + 0,115,2,0,0,0,0,7,122,26,70,114,111,122,101,110, + 73,109,112,111,114,116,101,114,46,109,111,100,117,108,101,95, + 114,101,112,114,78,99,4,0,0,0,0,0,0,0,4,0, + 0,0,5,0,0,0,67,0,0,0,115,42,0,0,0,116, + 0,0,106,1,0,124,1,0,131,1,0,114,34,0,116,2, + 0,124,1,0,124,0,0,100,1,0,100,2,0,131,2,1, + 83,100,0,0,83,100,0,0,83,41,3,78,114,217,0,0, + 0,90,6,102,114,111,122,101,110,41,3,114,106,0,0,0, + 114,163,0,0,0,114,174,0,0,0,41,4,114,10,1,0, + 0,114,159,0,0,0,114,35,0,0,0,114,11,1,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 12,1,0,0,9,5,0,0,115,6,0,0,0,0,2,15, + 1,19,2,122,24,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, + 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0, + 0,0,115,23,0,0,0,116,0,0,106,1,0,124,1,0, + 131,1,0,114,19,0,124,0,0,83,100,1,0,83,41,2, + 122,93,70,105,110,100,32,97,32,102,114,111,122,101,110,32, + 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, + 32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, + 100,101,112,114,101,99,97,116,101,100,46,32,32,85,115,101, + 32,102,105,110,100,95,115,112,101,99,40,41,32,105,110,115, + 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78, + 41,2,114,106,0,0,0,114,163,0,0,0,41,3,114,10, + 1,0,0,114,159,0,0,0,114,35,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,13,1,0, + 0,16,5,0,0,115,2,0,0,0,0,7,122,26,70,114, + 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, + 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, + 0,0,100,1,0,83,41,2,122,42,85,115,101,32,100,101, + 102,97,117,108,116,32,115,101,109,97,110,116,105,99,115,32, + 102,111,114,32,109,111,100,117,108,101,32,99,114,101,97,116, + 105,111,110,46,78,114,4,0,0,0,41,2,114,10,1,0, + 0,114,177,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,254,0,0,0,25,5,0,0,115,0, + 0,0,0,122,28,70,114,111,122,101,110,73,109,112,111,114, + 116,101,114,46,99,114,101,97,116,101,95,109,111,100,117,108, + 101,99,1,0,0,0,0,0,0,0,3,0,0,0,4,0, + 0,0,67,0,0,0,115,92,0,0,0,124,0,0,106,0, + 0,106,1,0,125,1,0,116,2,0,106,3,0,124,1,0, + 131,1,0,115,54,0,116,4,0,100,1,0,106,5,0,124, + 1,0,131,1,0,100,2,0,124,1,0,131,1,1,130,1, + 0,116,6,0,116,2,0,106,7,0,124,1,0,131,2,0, + 125,2,0,116,8,0,124,2,0,124,0,0,106,9,0,131, + 2,0,1,100,0,0,83,41,3,78,122,27,123,33,114,125, + 32,105,115,32,110,111,116,32,97,32,102,114,111,122,101,110, + 32,109,111,100,117,108,101,114,67,0,0,0,41,10,114,207, + 0,0,0,114,67,0,0,0,114,106,0,0,0,114,163,0, + 0,0,114,154,0,0,0,114,47,0,0,0,114,114,0,0, + 0,218,17,103,101,116,95,102,114,111,122,101,110,95,111,98, + 106,101,99,116,218,4,101,120,101,99,114,63,0,0,0,41, + 3,114,178,0,0,0,114,67,0,0,0,114,193,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 255,0,0,0,29,5,0,0,115,12,0,0,0,0,2,12, + 1,15,1,18,1,9,1,18,1,122,26,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,101,120,101,99,95,109, + 111,100,117,108,101,99,2,0,0,0,0,0,0,0,2,0, + 0,0,3,0,0,0,67,0,0,0,115,13,0,0,0,116, + 0,0,124,0,0,124,1,0,131,2,0,83,41,1,122,95, + 76,111,97,100,32,97,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,41, + 1,114,179,0,0,0,41,2,114,10,1,0,0,114,159,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,3,1,0,0,38,5,0,0,115,2,0,0,0,0, + 7,122,26,70,114,111,122,101,110,73,109,112,111,114,116,101, + 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, + 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, + 0,0,115,13,0,0,0,116,0,0,106,1,0,124,1,0, + 131,1,0,83,41,1,122,45,82,101,116,117,114,110,32,116, + 104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,102, + 111,114,32,116,104,101,32,102,114,111,122,101,110,32,109,111, + 100,117,108,101,46,41,2,114,106,0,0,0,114,20,1,0, + 0,41,2,114,10,1,0,0,114,159,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,14,1,0, + 0,47,5,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,10,1,0,0,114,159,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,15, + 1,0,0,53,5,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,106,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,10, + 1,0,0,114,159,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,219,0,0,0,59,5,0,0, + 115,2,0,0,0,0,4,122,25,70,114,111,122,101,110,73, + 109,112,111,114,116,101,114,46,105,115,95,112,97,99,107,97, + 103,101,41,16,114,57,0,0,0,114,56,0,0,0,114,58, + 0,0,0,114,59,0,0,0,114,16,1,0,0,114,204,0, + 0,0,114,17,1,0,0,114,12,1,0,0,114,13,1,0, + 0,114,254,0,0,0,114,255,0,0,0,114,3,1,0,0, + 114,165,0,0,0,114,14,1,0,0,114,15,1,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,18,1,0,0,247,4,0, + 0,115,30,0,0,0,12,7,6,2,18,9,3,1,21,6, + 3,1,18,8,18,4,18,9,18,9,3,1,21,5,3,1, + 21,5,3,1,114,18,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,121, 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100, - 1,0,90,3,0,100,2,0,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,83,41,7,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,116,0,0,0,114,84,0,0,0,114, - 115,0,0,0,114,72,0,0,0,41,4,114,38,0,0,0, - 114,239,0,0,0,114,34,0,0,0,114,32,0,0,0,41, - 5,114,71,0,0,0,114,159,0,0,0,114,131,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,220,0,0,0,177,5, - 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,3,0,0,0,4,0,0,0,67,0,0,0,115,80, - 0,0,0,124,0,0,106,0,0,124,1,0,106,1,0,131, - 1,0,125,2,0,124,2,0,100,1,0,107,8,0,114,57, - 0,116,2,0,100,2,0,106,3,0,124,1,0,106,1,0, - 131,1,0,131,1,0,130,1,0,110,0,0,116,4,0,116, - 5,0,124,2,0,124,1,0,106,6,0,131,3,0,1,100, - 1,0,83,41,3,122,19,69,120,101,99,117,116,101,32,116, - 104,101,32,109,111,100,117,108,101,46,78,122,52,99,97,110, - 110,111,116,32,108,111,97,100,32,109,111,100,117,108,101,32, - 123,33,114,125,32,119,104,101,110,32,103,101,116,95,99,111, - 100,101,40,41,32,114,101,116,117,114,110,115,32,78,111,110, - 101,41,7,114,16,1,0,0,114,57,0,0,0,114,154,0, - 0,0,114,47,0,0,0,114,114,0,0,0,114,176,0,0, - 0,114,63,0,0,0,41,3,114,71,0,0,0,114,180,0, - 0,0,114,195,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,2,1,0,0,185,5,0,0,115, - 10,0,0,0,0,2,18,1,12,1,9,1,18,1,122,25, - 95,76,111,97,100,101,114,66,97,115,105,99,115,46,101,120, - 101,99,95,109,111,100,117,108,101,78,41,8,114,57,0,0, + 1,0,90,3,0,100,2,0,90,4,0,100,3,0,90,5, + 0,100,4,0,90,6,0,101,7,0,100,5,0,100,6,0, + 132,0,0,131,1,0,90,8,0,101,7,0,100,7,0,100, + 8,0,132,0,0,131,1,0,90,9,0,101,7,0,100,9, + 0,100,9,0,100,10,0,100,11,0,132,2,0,131,1,0, + 90,10,0,101,7,0,100,9,0,100,12,0,100,13,0,132, + 1,0,131,1,0,90,11,0,100,9,0,83,41,14,218,21, + 87,105,110,100,111,119,115,82,101,103,105,115,116,114,121,70, + 105,110,100,101,114,122,62,77,101,116,97,32,112,97,116,104, + 32,102,105,110,100,101,114,32,102,111,114,32,109,111,100,117, + 108,101,115,32,100,101,99,108,97,114,101,100,32,105,110,32, + 116,104,101,32,87,105,110,100,111,119,115,32,114,101,103,105, + 115,116,114,121,46,122,59,83,111,102,116,119,97,114,101,92, + 80,121,116,104,111,110,92,80,121,116,104,111,110,67,111,114, + 101,92,123,115,121,115,95,118,101,114,115,105,111,110,125,92, + 77,111,100,117,108,101,115,92,123,102,117,108,108,110,97,109, + 101,125,122,65,83,111,102,116,119,97,114,101,92,80,121,116, + 104,111,110,92,80,121,116,104,111,110,67,111,114,101,92,123, + 115,121,115,95,118,101,114,115,105,111,110,125,92,77,111,100, + 117,108,101,115,92,123,102,117,108,108,110,97,109,101,125,92, + 68,101,98,117,103,70,99,2,0,0,0,0,0,0,0,2, + 0,0,0,11,0,0,0,67,0,0,0,115,67,0,0,0, + 121,23,0,116,0,0,106,1,0,116,0,0,106,2,0,124, + 1,0,131,2,0,83,87,110,37,0,4,116,3,0,107,10, + 0,114,62,0,1,1,1,116,0,0,106,1,0,116,0,0, + 106,4,0,124,1,0,131,2,0,83,89,110,1,0,88,100, + 0,0,83,41,1,78,41,5,218,7,95,119,105,110,114,101, + 103,90,7,79,112,101,110,75,101,121,90,17,72,75,69,89, + 95,67,85,82,82,69,78,84,95,85,83,69,82,114,40,0, + 0,0,90,18,72,75,69,89,95,76,79,67,65,76,95,77, + 65,67,72,73,78,69,41,2,114,10,1,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,78,5,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,159,0,0,0,90,11,115,121,115,95,118,101, + 114,115,105,111,110,114,137,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,25,1,0,0,114,23,1,0,0,90,10,81, + 117,101,114,121,86,97,108,117,101,114,40,0,0,0,41,6, + 114,10,1,0,0,114,159,0,0,0,90,12,114,101,103,105, + 115,116,114,121,95,107,101,121,114,24,1,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,85,5, + 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,46,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,78,99,4,0,0,0,0,0,0,0,8, + 0,0,0,14,0,0,0,67,0,0,0,115,155,0,0,0, + 124,0,0,106,0,0,124,1,0,131,1,0,125,4,0,124, + 4,0,100,0,0,107,8,0,114,31,0,100,0,0,83,121, + 14,0,116,1,0,124,4,0,131,1,0,1,87,110,22,0, + 4,116,2,0,107,10,0,114,69,0,1,1,1,100,0,0, + 83,89,110,1,0,88,120,78,0,116,3,0,131,0,0,68, + 93,67,0,92,2,0,125,5,0,125,6,0,124,4,0,106, + 4,0,116,5,0,124,6,0,131,1,0,131,1,0,114,80, + 0,116,6,0,124,1,0,124,5,0,124,1,0,124,4,0, + 131,2,0,100,1,0,124,4,0,131,2,1,125,7,0,124, + 7,0,83,113,80,0,87,100,0,0,83,41,2,78,114,217, + 0,0,0,41,7,114,31,1,0,0,114,39,0,0,0,114, + 40,0,0,0,114,240,0,0,0,114,230,0,0,0,114,231, + 0,0,0,114,174,0,0,0,41,8,114,10,1,0,0,114, + 159,0,0,0,114,35,0,0,0,114,11,1,0,0,114,30, + 1,0,0,114,170,0,0,0,114,126,0,0,0,114,177,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,12,1,0,0,100,5,0,0,115,24,0,0,0,0, + 2,15,1,12,1,4,1,3,1,14,1,13,1,9,1,22, + 1,21,1,21,1,9,1,122,31,87,105,110,100,111,119,115, + 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,102, + 105,110,100,95,115,112,101,99,99,3,0,0,0,0,0,0, + 0,4,0,0,0,3,0,0,0,67,0,0,0,115,45,0, + 0,0,124,0,0,106,0,0,124,1,0,124,2,0,131,2, + 0,125,3,0,124,3,0,100,1,0,107,9,0,114,37,0, + 124,3,0,106,1,0,83,100,1,0,83,100,1,0,83,41, + 2,122,108,70,105,110,100,32,109,111,100,117,108,101,32,110, + 97,109,101,100,32,105,110,32,116,104,101,32,114,101,103,105, + 115,116,114,121,46,10,10,32,32,32,32,32,32,32,32,84, + 104,105,115,32,109,101,116,104,111,100,32,105,115,32,100,101, + 112,114,101,99,97,116,101,100,46,32,32,85,115,101,32,101, + 120,101,99,95,109,111,100,117,108,101,40,41,32,105,110,115, + 116,101,97,100,46,10,10,32,32,32,32,32,32,32,32,78, + 41,2,114,12,1,0,0,114,170,0,0,0,41,4,114,10, + 1,0,0,114,159,0,0,0,114,35,0,0,0,114,177,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,13,1,0,0,115,5,0,0,115,8,0,0,0,0, + 7,18,1,12,1,7,2,122,33,87,105,110,100,111,119,115, + 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,41,12,114,57,0,0, 0,114,56,0,0,0,114,58,0,0,0,114,59,0,0,0, - 114,220,0,0,0,114,2,1,0,0,114,181,0,0,0,114, - 5,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,33,1,0,0,172,5,0, - 0,115,8,0,0,0,12,3,6,2,12,8,12,8,114,33, + 114,28,1,0,0,114,27,1,0,0,114,26,1,0,0,114, + 17,1,0,0,114,25,1,0,0,114,31,1,0,0,114,12, + 1,0,0,114,13,1,0,0,114,4,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,22,1,0, + 0,66,5,0,0,115,20,0,0,0,12,2,6,3,6,3, + 6,2,6,2,18,7,18,15,3,1,21,14,3,1,114,22, 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,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, - 71,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,198,5,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,184,0,0,0,41,1,114,36, - 1,0,0,41,2,114,71,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,206,5,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,71, - 0,0,0,114,142,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,219,5,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,71,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,38,1,0,0,229,5,0,0,115,0,0,0,0,122,21, - 83,111,117,114,99,101,76,111,97,100,101,114,46,115,101,116, - 95,100,97,116,97,99,2,0,0,0,0,0,0,0,5,0, - 0,0,16,0,0,0,67,0,0,0,115,105,0,0,0,124, - 0,0,106,0,0,124,1,0,131,1,0,125,2,0,121,19, - 0,124,0,0,106,1,0,124,2,0,131,1,0,125,3,0, - 87,110,58,0,4,116,2,0,107,10,0,114,94,0,1,125, - 4,0,1,122,26,0,116,3,0,100,1,0,100,2,0,124, - 1,0,131,1,1,124,4,0,130,2,0,87,89,100,3,0, - 100,3,0,125,4,0,126,4,0,88,110,1,0,88,116,4, - 0,124,3,0,131,1,0,83,41,4,122,52,67,111,110,99, - 114,101,116,101,32,105,109,112,108,101,109,101,110,116,97,116, - 105,111,110,32,111,102,32,73,110,115,112,101,99,116,76,111, - 97,100,101,114,46,103,101,116,95,115,111,117,114,99,101,46, - 122,39,115,111,117,114,99,101,32,110,111,116,32,97,118,97, - 105,108,97,98,108,101,32,116,104,114,111,117,103,104,32,103, - 101,116,95,100,97,116,97,40,41,114,67,0,0,0,78,41, - 5,114,239,0,0,0,218,8,103,101,116,95,100,97,116,97, - 114,40,0,0,0,114,154,0,0,0,114,204,0,0,0,41, - 5,114,71,0,0,0,114,159,0,0,0,114,35,0,0,0, - 114,202,0,0,0,218,3,101,120,99,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,17,1,0,0,236,5, - 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,176,0, - 0,0,218,12,100,111,110,116,95,105,110,104,101,114,105,116, - 84,114,118,0,0,0,41,2,114,114,0,0,0,218,7,99, - 111,109,112,105,108,101,41,4,114,71,0,0,0,114,53,0, - 0,0,114,35,0,0,0,114,42,1,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,246,5,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,43,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,4,0,107,10,0,114,103,0,1, - 1,1,89,110,162,0,88,116,5,0,124,5,0,100,2,0, - 25,131,1,0,125,3,0,121,19,0,124,0,0,106,6,0, - 124,4,0,131,1,0,125,6,0,87,110,18,0,4,116,7, - 0,107,10,0,114,159,0,1,1,1,89,110,106,0,88,121, - 34,0,116,8,0,124,6,0,100,3,0,124,5,0,100,4, - 0,124,1,0,100,5,0,124,4,0,131,1,3,125,7,0, - 87,110,24,0,4,116,9,0,116,10,0,102,2,0,107,10, - 0,114,220,0,1,1,1,89,110,45,0,88,116,11,0,100, - 6,0,124,4,0,124,2,0,131,3,0,1,116,12,0,124, - 7,0,100,4,0,124,1,0,100,7,0,124,4,0,100,8, - 0,124,2,0,131,1,3,83,124,0,0,106,6,0,124,2, - 0,131,1,0,125,8,0,124,0,0,106,13,0,124,8,0, - 124,2,0,131,2,0,125,9,0,116,11,0,100,9,0,124, - 2,0,131,2,0,1,116,14,0,106,15,0,12,114,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,184,0,0,0,114,188,0,0,0,114,67,0, - 0,0,114,35,0,0,0,122,13,123,125,32,109,97,116,99, - 104,101,115,32,123,125,114,141,0,0,0,114,142,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,239,0,0,0,114,132,0,0,0,114,123,0, - 0,0,114,37,1,0,0,114,35,1,0,0,114,14,0,0, - 0,114,40,1,0,0,114,40,0,0,0,114,191,0,0,0, - 114,154,0,0,0,114,187,0,0,0,114,153,0,0,0,114, - 196,0,0,0,114,45,1,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,199,0,0,0,114,31,0,0,0,114,39,1, - 0,0,41,10,114,71,0,0,0,114,159,0,0,0,114,142, - 0,0,0,114,189,0,0,0,114,141,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,202,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,16,1,0,0,254,5,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,139,0,0,0,41,10,114,57, - 0,0,0,114,56,0,0,0,114,58,0,0,0,114,36,1, - 0,0,114,37,1,0,0,114,39,1,0,0,114,38,1,0, - 0,114,17,1,0,0,114,45,1,0,0,114,16,1,0,0, - 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,34,1,0,0,196,5,0,0,115,14,0, - 0,0,12,2,12,8,12,13,12,10,12,7,12,10,18,8, - 114,34,1,0,0,99,0,0,0,0,0,0,0,0,0,0, - 0,0,4,0,0,0,0,0,0,0,115,112,0,0,0,101, - 0,0,90,1,0,100,0,0,90,2,0,100,1,0,90,3, - 0,100,2,0,100,3,0,132,0,0,90,4,0,100,4,0, - 100,5,0,132,0,0,90,5,0,100,6,0,100,7,0,132, - 0,0,90,6,0,101,7,0,135,0,0,102,1,0,100,8, - 0,100,9,0,134,0,0,131,1,0,90,8,0,101,7,0, - 100,10,0,100,11,0,132,0,0,131,1,0,90,9,0,100, - 12,0,100,13,0,132,0,0,90,10,0,135,0,0,83,41, - 14,218,10,70,105,108,101,76,111,97,100,101,114,122,103,66, - 97,115,101,32,102,105,108,101,32,108,111,97,100,101,114,32, - 99,108,97,115,115,32,119,104,105,99,104,32,105,109,112,108, - 101,109,101,110,116,115,32,116,104,101,32,108,111,97,100,101, - 114,32,112,114,111,116,111,99,111,108,32,109,101,116,104,111, - 100,115,32,116,104,97,116,10,32,32,32,32,114,101,113,117, - 105,114,101,32,102,105,108,101,32,115,121,115,116,101,109,32, - 117,115,97,103,101,46,99,3,0,0,0,0,0,0,0,3, - 0,0,0,2,0,0,0,67,0,0,0,115,22,0,0,0, - 124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,95, - 1,0,100,1,0,83,41,2,122,75,67,97,99,104,101,32, - 116,104,101,32,109,111,100,117,108,101,32,110,97,109,101,32, - 97,110,100,32,116,104,101,32,112,97,116,104,32,116,111,32, - 116,104,101,32,102,105,108,101,32,102,111,117,110,100,32,98, - 121,32,116,104,101,10,32,32,32,32,32,32,32,32,102,105, - 110,100,101,114,46,78,41,2,114,67,0,0,0,114,35,0, - 0,0,41,3,114,71,0,0,0,114,159,0,0,0,114,35, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,72,0,0,0,55,6,0,0,115,4,0,0,0, - 0,3,9,1,122,19,70,105,108,101,76,111,97,100,101,114, - 46,95,95,105,110,105,116,95,95,99,2,0,0,0,0,0, - 0,0,2,0,0,0,2,0,0,0,67,0,0,0,115,34, - 0,0,0,124,0,0,106,0,0,124,1,0,106,0,0,107, - 2,0,111,33,0,124,0,0,106,1,0,124,1,0,106,1, - 0,107,2,0,83,41,1,78,41,2,114,225,0,0,0,114, - 63,0,0,0,41,2,114,71,0,0,0,114,228,0,0,0, + 2,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,132,0,0, + 90,6,0,101,7,0,90,8,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,116,0,0,0, + 114,84,0,0,0,114,115,0,0,0,114,72,0,0,0,41, + 4,114,38,0,0,0,114,238,0,0,0,114,34,0,0,0, + 114,32,0,0,0,41,5,114,71,0,0,0,114,159,0,0, + 0,114,131,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, - 230,0,0,0,61,6,0,0,115,4,0,0,0,0,1,18, - 1,122,17,70,105,108,101,76,111,97,100,101,114,46,95,95, - 101,113,95,95,99,1,0,0,0,0,0,0,0,1,0,0, - 0,3,0,0,0,67,0,0,0,115,26,0,0,0,116,0, - 0,124,0,0,106,1,0,131,1,0,116,0,0,124,0,0, - 106,2,0,131,1,0,65,83,41,1,78,41,3,218,4,104, - 97,115,104,114,67,0,0,0,114,35,0,0,0,41,1,114, - 71,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,8,95,95,104,97,115,104,95,95,65,6,0, - 0,115,2,0,0,0,0,1,122,19,70,105,108,101,76,111, - 97,100,101,114,46,95,95,104,97,115,104,95,95,99,2,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,3,0, - 0,0,115,22,0,0,0,116,0,0,116,1,0,124,0,0, - 131,2,0,106,2,0,124,1,0,131,1,0,83,41,1,122, - 100,76,111,97,100,32,97,32,109,111,100,117,108,101,32,102, - 114,111,109,32,97,32,102,105,108,101,46,10,10,32,32,32, - 32,32,32,32,32,84,104,105,115,32,109,101,116,104,111,100, - 32,105,115,32,100,101,112,114,101,99,97,116,101,100,46,32, - 32,85,115,101,32,101,120,101,99,95,109,111,100,117,108,101, - 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, - 32,32,32,32,32,41,3,218,5,115,117,112,101,114,114,49, - 1,0,0,114,5,1,0,0,41,2,114,71,0,0,0,114, - 159,0,0,0,41,1,114,225,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,5,1,0,0,68,6,0,0,115,2, - 0,0,0,0,10,122,22,70,105,108,101,76,111,97,100,101, - 114,46,108,111,97,100,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, - 0,0,115,7,0,0,0,124,0,0,106,0,0,83,41,1, - 122,58,82,101,116,117,114,110,32,116,104,101,32,112,97,116, - 104,32,116,111,32,116,104,101,32,115,111,117,114,99,101,32, - 102,105,108,101,32,97,115,32,102,111,117,110,100,32,98,121, - 32,116,104,101,32,102,105,110,100,101,114,46,41,1,114,35, - 0,0,0,41,2,114,71,0,0,0,114,159,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,239, - 0,0,0,80,6,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,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,71,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,40,1,0,0, - 85,6,0,0,115,4,0,0,0,0,2,21,1,122,19,70, - 105,108,101,76,111,97,100,101,114,46,103,101,116,95,100,97, - 116,97,41,11,114,57,0,0,0,114,56,0,0,0,114,58, - 0,0,0,114,59,0,0,0,114,72,0,0,0,114,230,0, - 0,0,114,51,1,0,0,114,157,0,0,0,114,5,1,0, - 0,114,239,0,0,0,114,40,1,0,0,114,4,0,0,0, - 114,4,0,0,0,41,1,114,225,0,0,0,114,5,0,0, - 0,114,49,1,0,0,50,6,0,0,115,14,0,0,0,12, - 3,6,2,12,6,12,4,12,3,24,12,18,5,114,49,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,114,9, - 1,0,0,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,36,0,0,0,116,0,0, - 124,1,0,131,1,0,125,2,0,105,2,0,124,2,0,106, - 1,0,100,1,0,54,124,2,0,106,2,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,184,0,0,0,114,185,0,0,0, - 41,3,114,39,0,0,0,218,8,115,116,95,109,116,105,109, - 101,90,7,115,116,95,115,105,122,101,41,3,114,71,0,0, - 0,114,35,0,0,0,114,47,1,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,37,1,0,0,95, - 6,0,0,115,4,0,0,0,0,2,12,1,122,27,83,111, - 117,114,99,101,70,105,108,101,76,111,97,100,101,114,46,112, - 97,116,104,95,115,116,97,116,115,99,4,0,0,0,0,0, - 0,0,5,0,0,0,5,0,0,0,67,0,0,0,115,34, - 0,0,0,116,0,0,124,1,0,131,1,0,125,4,0,124, - 0,0,106,1,0,124,2,0,124,3,0,100,1,0,124,4, - 0,131,2,1,83,41,2,78,218,5,95,109,111,100,101,41, - 2,114,145,0,0,0,114,38,1,0,0,41,5,114,71,0, - 0,0,114,142,0,0,0,114,141,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,39,1,0,0,100,6,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,55,1,0,0,105,182, - 1,0,0,99,3,0,0,0,1,0,0,0,9,0,0,0, - 17,0,0,0,67,0,0,0,115,53,1,0,0,116,0,0, - 124,1,0,131,1,0,92,2,0,125,4,0,125,5,0,103, - 0,0,125,6,0,120,54,0,124,4,0,114,80,0,116,1, - 0,124,4,0,131,1,0,12,114,80,0,116,0,0,124,4, - 0,131,1,0,92,2,0,125,4,0,125,7,0,124,6,0, - 106,2,0,124,7,0,131,1,0,1,113,27,0,87,120,132, - 0,116,3,0,124,6,0,131,1,0,68,93,118,0,125,7, - 0,116,4,0,124,4,0,124,7,0,131,2,0,125,4,0, - 121,17,0,116,5,0,106,6,0,124,4,0,131,1,0,1, - 87,113,94,0,4,116,7,0,107,10,0,114,155,0,1,1, - 1,119,94,0,89,113,94,0,4,116,8,0,107,10,0,114, - 211,0,1,125,8,0,1,122,25,0,116,9,0,100,1,0, - 124,4,0,124,8,0,131,3,0,1,100,2,0,83,87,89, - 100,2,0,100,2,0,125,8,0,126,8,0,88,113,94,0, - 88,113,94,0,87,121,33,0,116,10,0,124,1,0,124,2, - 0,124,3,0,131,3,0,1,116,9,0,100,3,0,124,1, - 0,131,2,0,1,87,110,53,0,4,116,8,0,107,10,0, - 114,48,1,1,125,8,0,1,122,21,0,116,9,0,100,1, - 0,124,1,0,124,8,0,131,3,0,1,87,89,100,2,0, - 100,2,0,125,8,0,126,8,0,88,110,1,0,88,100,2, - 0,83,41,4,122,27,87,114,105,116,101,32,98,121,116,101, - 115,32,100,97,116,97,32,116,111,32,97,32,102,105,108,101, - 46,122,27,99,111,117,108,100,32,110,111,116,32,99,114,101, - 97,116,101,32,123,33,114,125,58,32,123,33,114,125,78,122, - 12,99,114,101,97,116,101,100,32,123,33,114,125,41,11,114, - 38,0,0,0,114,46,0,0,0,114,224,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,153,0,0,0,114, - 55,0,0,0,41,9,114,71,0,0,0,114,35,0,0,0, - 114,53,0,0,0,114,55,1,0,0,114,234,0,0,0,114, - 131,0,0,0,114,27,0,0,0,114,23,0,0,0,114,41, - 1,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,38,1,0,0,105,6,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,37,1,0,0,114,39,1, - 0,0,114,38,1,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, - 91,6,0,0,115,8,0,0,0,12,2,6,2,12,5,12, - 5,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,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, - 114,8,1,0,0,122,45,76,111,97,100,101,114,32,119,104, - 105,99,104,32,104,97,110,100,108,101,115,32,115,111,117,114, - 99,101,108,101,115,115,32,102,105,108,101,32,105,109,112,111, - 114,116,115,46,99,2,0,0,0,0,0,0,0,5,0,0, - 0,6,0,0,0,67,0,0,0,115,76,0,0,0,124,0, - 0,106,0,0,124,1,0,131,1,0,125,2,0,124,0,0, - 106,1,0,124,2,0,131,1,0,125,3,0,116,2,0,124, - 3,0,100,1,0,124,1,0,100,2,0,124,2,0,131,1, - 2,125,4,0,116,3,0,124,4,0,100,1,0,124,1,0, - 100,3,0,124,2,0,131,1,2,83,41,4,78,114,67,0, - 0,0,114,35,0,0,0,114,141,0,0,0,41,4,114,239, - 0,0,0,114,40,1,0,0,114,191,0,0,0,114,196,0, - 0,0,41,5,114,71,0,0,0,114,159,0,0,0,114,35, - 0,0,0,114,53,0,0,0,114,48,1,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,16,1,0, - 0,138,6,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,71,0,0,0,114,159,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,17,1,0,0, - 144,6,0,0,115,2,0,0,0,0,2,122,31,83,111,117, - 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, - 114,46,103,101,116,95,115,111,117,114,99,101,78,41,6,114, - 57,0,0,0,114,56,0,0,0,114,58,0,0,0,114,59, - 0,0,0,114,16,1,0,0,114,17,1,0,0,114,4,0, + 219,0,0,0,134,5,0,0,115,8,0,0,0,0,3,25, + 1,22,1,19,1,122,24,95,76,111,97,100,101,114,66,97, + 115,105,99,115,46,105,115,95,112,97,99,107,97,103,101,99, + 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,122, + 42,85,115,101,32,100,101,102,97,117,108,116,32,115,101,109, + 97,110,116,105,99,115,32,102,111,114,32,109,111,100,117,108, + 101,32,99,114,101,97,116,105,111,110,46,78,114,4,0,0, + 0,41,2,114,71,0,0,0,114,177,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,254,0,0, + 0,142,5,0,0,115,0,0,0,0,122,27,95,76,111,97, + 100,101,114,66,97,115,105,99,115,46,99,114,101,97,116,101, + 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,67,0,0,0,115,77,0,0, + 0,124,0,0,106,0,0,124,1,0,106,1,0,131,1,0, + 125,2,0,124,2,0,100,1,0,107,8,0,114,54,0,116, + 2,0,100,2,0,106,3,0,124,1,0,106,1,0,131,1, + 0,131,1,0,130,1,0,116,4,0,116,5,0,124,2,0, + 124,1,0,106,6,0,131,3,0,1,100,1,0,83,41,3, + 122,19,69,120,101,99,117,116,101,32,116,104,101,32,109,111, + 100,117,108,101,46,78,122,52,99,97,110,110,111,116,32,108, + 111,97,100,32,109,111,100,117,108,101,32,123,33,114,125,32, + 119,104,101,110,32,103,101,116,95,99,111,100,101,40,41,32, + 114,101,116,117,114,110,115,32,78,111,110,101,41,7,114,14, + 1,0,0,114,57,0,0,0,114,154,0,0,0,114,47,0, + 0,0,114,114,0,0,0,114,21,1,0,0,114,63,0,0, + 0,41,3,114,71,0,0,0,114,178,0,0,0,114,193,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,8,1,0,0,134,6,0,0,115,6,0,0,0,12, - 2,6,2,12,6,114,8,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, - 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,101,7,0,100,8,0, - 100,9,0,132,0,0,131,1,0,90,8,0,100,10,0,100, - 11,0,132,0,0,90,9,0,100,12,0,100,13,0,132,0, - 0,90,10,0,100,14,0,100,15,0,132,0,0,90,11,0, - 101,7,0,100,16,0,100,17,0,132,0,0,131,1,0,90, - 12,0,100,18,0,83,41,19,218,19,69,120,116,101,110,115, - 105,111,110,70,105,108,101,76,111,97,100,101,114,122,93,76, - 111,97,100,101,114,32,102,111,114,32,101,120,116,101,110,115, - 105,111,110,32,109,111,100,117,108,101,115,46,10,10,32,32, - 32,32,84,104,101,32,99,111,110,115,116,114,117,99,116,111, - 114,32,105,115,32,100,101,115,105,103,110,101,100,32,116,111, - 32,119,111,114,107,32,119,105,116,104,32,70,105,108,101,70, - 105,110,100,101,114,46,10,10,32,32,32,32,99,3,0,0, - 0,0,0,0,0,3,0,0,0,2,0,0,0,67,0,0, - 0,115,22,0,0,0,124,1,0,124,0,0,95,0,0,124, - 2,0,124,0,0,95,1,0,100,0,0,83,41,1,78,41, - 2,114,67,0,0,0,114,35,0,0,0,41,3,114,71,0, - 0,0,114,67,0,0,0,114,35,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,72,0,0,0, - 161,6,0,0,115,4,0,0,0,0,1,9,1,122,28,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,0, - 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0, - 115,34,0,0,0,124,0,0,106,0,0,124,1,0,106,0, - 0,107,2,0,111,33,0,124,0,0,106,1,0,124,1,0, - 106,1,0,107,2,0,83,41,1,78,41,2,114,225,0,0, - 0,114,63,0,0,0,41,2,114,71,0,0,0,114,228,0, + 0,114,255,0,0,0,145,5,0,0,115,10,0,0,0,0, + 2,18,1,12,1,9,1,15,1,122,25,95,76,111,97,100, + 101,114,66,97,115,105,99,115,46,101,120,101,99,95,109,111, + 100,117,108,101,78,41,9,114,57,0,0,0,114,56,0,0, + 0,114,58,0,0,0,114,59,0,0,0,114,219,0,0,0, + 114,254,0,0,0,114,255,0,0,0,114,179,0,0,0,114, + 3,1,0,0,114,4,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,32,1,0,0,129,5,0, + 0,115,10,0,0,0,12,3,6,2,12,8,12,3,12,8, + 114,32,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,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,71,0,0,0,114,35,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,10,112,97,116,104, + 95,109,116,105,109,101,158,5,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,182,0,0,0,41,1, + 114,35,1,0,0,41,2,114,71,0,0,0,114,35,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,10,112,97,116,104,95,115,116,97,116,115,166,5,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,71,0,0,0,114,142,0,0,0,90,10,99,97,99,104, + 101,95,112,97,116,104,114,53,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,15,95,99,97,99, + 104,101,95,98,121,116,101,99,111,100,101,179,5,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,71,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,37,1,0,0,189,5,0,0,115,0,0,0,0, + 122,21,83,111,117,114,99,101,76,111,97,100,101,114,46,115, + 101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,0, + 5,0,0,0,16,0,0,0,67,0,0,0,115,105,0,0, + 0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0, + 121,19,0,124,0,0,106,1,0,124,2,0,131,1,0,125, + 3,0,87,110,58,0,4,116,2,0,107,10,0,114,94,0, + 1,125,4,0,1,122,26,0,116,3,0,100,1,0,100,2, + 0,124,1,0,131,1,1,124,4,0,130,2,0,87,89,100, + 3,0,100,3,0,125,4,0,126,4,0,88,110,1,0,88, + 116,4,0,124,3,0,131,1,0,83,41,4,122,52,67,111, + 110,99,114,101,116,101,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,111,102,32,73,110,115,112,101,99,116, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,46,122,39,115,111,117,114,99,101,32,110,111,116,32,97, + 118,97,105,108,97,98,108,101,32,116,104,114,111,117,103,104, + 32,103,101,116,95,100,97,116,97,40,41,114,67,0,0,0, + 78,41,5,114,238,0,0,0,218,8,103,101,116,95,100,97, + 116,97,114,40,0,0,0,114,154,0,0,0,114,202,0,0, + 0,41,5,114,71,0,0,0,114,159,0,0,0,114,35,0, + 0,0,114,200,0,0,0,218,3,101,120,99,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,15,1,0,0, + 196,5,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, + 21,1,0,0,218,12,100,111,110,116,95,105,110,104,101,114, + 105,116,84,114,118,0,0,0,41,2,114,114,0,0,0,218, + 7,99,111,109,112,105,108,101,41,4,114,71,0,0,0,114, + 53,0,0,0,114,35,0,0,0,114,41,1,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,115, + 111,117,114,99,101,95,116,111,95,99,111,100,101,206,5,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,43,0,0,0,67,0,0,0,115,174,1,0, + 0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0, + 100,1,0,125,3,0,121,16,0,116,1,0,124,2,0,131, + 1,0,125,4,0,87,110,24,0,4,116,2,0,107,10,0, + 114,63,0,1,1,1,100,1,0,125,4,0,89,110,202,0, + 88,121,19,0,124,0,0,106,3,0,124,2,0,131,1,0, + 125,5,0,87,110,18,0,4,116,4,0,107,10,0,114,103, + 0,1,1,1,89,110,162,0,88,116,5,0,124,5,0,100, + 2,0,25,131,1,0,125,3,0,121,19,0,124,0,0,106, + 6,0,124,4,0,131,1,0,125,6,0,87,110,18,0,4, + 116,7,0,107,10,0,114,159,0,1,1,1,89,110,106,0, + 88,121,34,0,116,8,0,124,6,0,100,3,0,124,5,0, + 100,4,0,124,1,0,100,5,0,124,4,0,131,1,3,125, + 7,0,87,110,24,0,4,116,9,0,116,10,0,102,2,0, + 107,10,0,114,220,0,1,1,1,89,110,45,0,88,116,11, + 0,100,6,0,124,4,0,124,2,0,131,3,0,1,116,12, + 0,124,7,0,100,4,0,124,1,0,100,7,0,124,4,0, + 100,8,0,124,2,0,131,1,3,83,124,0,0,106,6,0, + 124,2,0,131,1,0,125,8,0,124,0,0,106,13,0,124, + 8,0,124,2,0,131,2,0,125,9,0,116,11,0,100,9, + 0,124,2,0,131,2,0,1,116,14,0,106,15,0,12,114, + 170,1,124,4,0,100,1,0,107,9,0,114,170,1,124,3, + 0,100,1,0,107,9,0,114,170,1,116,16,0,124,9,0, + 124,3,0,116,17,0,124,8,0,131,1,0,131,3,0,125, + 6,0,121,36,0,124,0,0,106,18,0,124,2,0,124,4, + 0,124,6,0,131,3,0,1,116,11,0,100,10,0,124,4, + 0,131,2,0,1,87,110,18,0,4,116,2,0,107,10,0, + 114,169,1,1,1,1,89,110,1,0,88,124,9,0,83,41, + 11,122,190,67,111,110,99,114,101,116,101,32,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,110, + 115,112,101,99,116,76,111,97,100,101,114,46,103,101,116,95, + 99,111,100,101,46,10,10,32,32,32,32,32,32,32,32,82, + 101,97,100,105,110,103,32,111,102,32,98,121,116,101,99,111, + 100,101,32,114,101,113,117,105,114,101,115,32,112,97,116,104, + 95,115,116,97,116,115,32,116,111,32,98,101,32,105,109,112, + 108,101,109,101,110,116,101,100,46,32,84,111,32,119,114,105, + 116,101,10,32,32,32,32,32,32,32,32,98,121,116,101,99, + 111,100,101,44,32,115,101,116,95,100,97,116,97,32,109,117, + 115,116,32,97,108,115,111,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,182,0,0,0,114,186,0,0,0,114,67,0,0, + 0,114,35,0,0,0,122,13,123,125,32,109,97,116,99,104, + 101,115,32,123,125,114,141,0,0,0,114,142,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,238,0,0,0,114,132,0,0,0,114,123,0,0, + 0,114,36,1,0,0,114,34,1,0,0,114,14,0,0,0, + 114,39,1,0,0,114,40,0,0,0,114,189,0,0,0,114, + 154,0,0,0,114,185,0,0,0,114,153,0,0,0,114,194, + 0,0,0,114,44,1,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,197,0,0,0,114,31,0,0,0,114,38,1,0, + 0,41,10,114,71,0,0,0,114,159,0,0,0,114,142,0, + 0,0,114,187,0,0,0,114,141,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,200,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,14,1,0,0,214,5,0,0,115,78,0,0,0, + 0,7,15,1,6,1,3,1,16,1,13,1,11,2,3,1, + 19,1,13,1,5,2,16,1,3,1,19,1,13,1,5,2, + 3,1,9,1,12,1,13,1,19,1,5,2,9,1,7,1, + 15,1,6,1,7,1,15,1,18,1,13,1,22,1,12,1, + 9,1,15,1,3,1,19,1,17,1,13,1,5,1,122,21, + 83,111,117,114,99,101,76,111,97,100,101,114,46,103,101,116, + 95,99,111,100,101,78,114,139,0,0,0,41,10,114,57,0, + 0,0,114,56,0,0,0,114,58,0,0,0,114,35,1,0, + 0,114,36,1,0,0,114,38,1,0,0,114,37,1,0,0, + 114,15,1,0,0,114,44,1,0,0,114,14,1,0,0,114, + 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,33,1,0,0,156,5,0,0,115,14,0,0, + 0,12,2,12,8,12,13,12,10,12,7,12,10,18,8,114, + 33,1,0,0,99,0,0,0,0,0,0,0,0,0,0,0, + 0,4,0,0,0,0,0,0,0,115,112,0,0,0,101,0, + 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, + 100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,100, + 5,0,132,0,0,90,5,0,100,6,0,100,7,0,132,0, + 0,90,6,0,101,7,0,135,0,0,102,1,0,100,8,0, + 100,9,0,134,0,0,131,1,0,90,8,0,101,7,0,100, + 10,0,100,11,0,132,0,0,131,1,0,90,9,0,100,12, + 0,100,13,0,132,0,0,90,10,0,135,0,0,83,41,14, + 218,10,70,105,108,101,76,111,97,100,101,114,122,103,66,97, + 115,101,32,102,105,108,101,32,108,111,97,100,101,114,32,99, + 108,97,115,115,32,119,104,105,99,104,32,105,109,112,108,101, + 109,101,110,116,115,32,116,104,101,32,108,111,97,100,101,114, + 32,112,114,111,116,111,99,111,108,32,109,101,116,104,111,100, + 115,32,116,104,97,116,10,32,32,32,32,114,101,113,117,105, + 114,101,32,102,105,108,101,32,115,121,115,116,101,109,32,117, + 115,97,103,101,46,99,3,0,0,0,0,0,0,0,3,0, + 0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,124, + 1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1, + 0,100,1,0,83,41,2,122,75,67,97,99,104,101,32,116, + 104,101,32,109,111,100,117,108,101,32,110,97,109,101,32,97, + 110,100,32,116,104,101,32,112,97,116,104,32,116,111,32,116, + 104,101,32,102,105,108,101,32,102,111,117,110,100,32,98,121, + 32,116,104,101,10,32,32,32,32,32,32,32,32,102,105,110, + 100,101,114,46,78,41,2,114,67,0,0,0,114,35,0,0, + 0,41,3,114,71,0,0,0,114,159,0,0,0,114,35,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,230,0,0,0,165,6,0,0,115,4,0,0,0,0, - 1,18,1,122,26,69,120,116,101,110,115,105,111,110,70,105, - 108,101,76,111,97,100,101,114,46,95,95,101,113,95,95,99, - 1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, - 67,0,0,0,115,26,0,0,0,116,0,0,124,0,0,106, - 1,0,131,1,0,116,0,0,124,0,0,106,2,0,131,1, - 0,65,83,41,1,78,41,3,114,50,1,0,0,114,67,0, - 0,0,114,35,0,0,0,41,1,114,71,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,51,1, - 0,0,169,6,0,0,115,2,0,0,0,0,1,122,28,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,46,95,95,104,97,115,104,95,95,99,2,0,0,0, - 0,0,0,0,4,0,0,0,11,0,0,0,67,0,0,0, - 115,183,0,0,0,116,0,0,124,1,0,131,1,0,143,29, - 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,87,100,1,0,81,88, - 116,5,0,100,2,0,124,0,0,106,4,0,131,2,0,1, - 124,0,0,106,6,0,124,1,0,131,1,0,125,3,0,124, - 3,0,114,124,0,116,7,0,124,2,0,100,3,0,131,2, - 0,12,114,124,0,116,8,0,124,0,0,106,4,0,131,1, - 0,100,4,0,25,103,1,0,124,2,0,95,9,0,110,0, - 0,124,0,0,124,2,0,95,10,0,124,2,0,106,11,0, - 124,2,0,95,12,0,124,3,0,115,179,0,124,2,0,106, - 12,0,106,13,0,100,5,0,131,1,0,100,4,0,25,124, - 2,0,95,12,0,110,0,0,124,2,0,83,41,6,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,78,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,247,0, - 0,0,114,84,0,0,0,114,116,0,0,0,41,14,114,69, - 0,0,0,114,114,0,0,0,114,106,0,0,0,90,12,108, - 111,97,100,95,100,121,110,97,109,105,99,114,35,0,0,0, - 114,153,0,0,0,114,220,0,0,0,114,60,0,0,0,114, - 38,0,0,0,114,247,0,0,0,114,205,0,0,0,114,57, - 0,0,0,114,251,0,0,0,114,32,0,0,0,41,4,114, - 71,0,0,0,114,159,0,0,0,114,180,0,0,0,114,220, + 0,114,72,0,0,0,15,6,0,0,115,4,0,0,0,0, + 3,9,1,122,19,70,105,108,101,76,111,97,100,101,114,46, + 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0, + 0,2,0,0,0,2,0,0,0,67,0,0,0,115,34,0, + 0,0,124,0,0,106,0,0,124,1,0,106,0,0,107,2, + 0,111,33,0,124,0,0,106,1,0,124,1,0,106,1,0, + 107,2,0,83,41,1,78,41,2,114,224,0,0,0,114,63, + 0,0,0,41,2,114,71,0,0,0,114,227,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,229, + 0,0,0,21,6,0,0,115,4,0,0,0,0,1,18,1, + 122,17,70,105,108,101,76,111,97,100,101,114,46,95,95,101, + 113,95,95,99,1,0,0,0,0,0,0,0,1,0,0,0, + 3,0,0,0,67,0,0,0,115,26,0,0,0,116,0,0, + 124,0,0,106,1,0,131,1,0,116,0,0,124,0,0,106, + 2,0,131,1,0,65,83,41,1,78,41,3,218,4,104,97, + 115,104,114,67,0,0,0,114,35,0,0,0,41,1,114,71, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,5,1,0,0,172,6,0,0,115,24,0,0,0, - 0,5,13,1,9,1,21,1,16,1,15,1,22,1,28,1, - 9,1,12,1,6,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,72,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,77,0,0,0,193,6, - 0,0,115,2,0,0,0,6,1,122,49,69,120,116,101,110, - 115,105,111,110,70,105,108,101,76,111,97,100,101,114,46,105, - 115,95,112,97,99,107,97,103,101,46,60,108,111,99,97,108, - 115,62,46,60,103,101,110,101,120,112,114,62,41,4,114,38, - 0,0,0,114,35,0,0,0,114,78,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,71,0,0,0,114,159,0,0,0,114,4,0, - 0,0,41,1,114,59,1,0,0,114,5,0,0,0,114,220, - 0,0,0,190,6,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,71,0,0,0, - 114,159,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,16,1,0,0,196,6,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, + 0,0,218,8,95,95,104,97,115,104,95,95,25,6,0,0, + 115,2,0,0,0,0,1,122,19,70,105,108,101,76,111,97, + 100,101,114,46,95,95,104,97,115,104,95,95,99,2,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,3,0,0, + 0,115,22,0,0,0,116,0,0,116,1,0,124,0,0,131, + 2,0,106,2,0,124,1,0,131,1,0,83,41,1,122,100, + 76,111,97,100,32,97,32,109,111,100,117,108,101,32,102,114, + 111,109,32,97,32,102,105,108,101,46,10,10,32,32,32,32, + 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, + 105,115,32,100,101,112,114,101,99,97,116,101,100,46,32,32, + 85,115,101,32,101,120,101,99,95,109,111,100,117,108,101,40, + 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, + 32,32,32,32,41,3,218,5,115,117,112,101,114,114,48,1, + 0,0,114,3,1,0,0,41,2,114,71,0,0,0,114,159, + 0,0,0,41,1,114,224,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,3,1,0,0,28,6,0,0,115,2,0, + 0,0,0,10,122,22,70,105,108,101,76,111,97,100,101,114, + 46,108,111,97,100,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0, + 0,115,7,0,0,0,124,0,0,106,0,0,83,41,1,122, + 58,82,101,116,117,114,110,32,116,104,101,32,112,97,116,104, + 32,116,111,32,116,104,101,32,115,111,117,114,99,101,32,102, + 105,108,101,32,97,115,32,102,111,117,110,100,32,98,121,32, + 116,104,101,32,102,105,110,100,101,114,46,41,1,114,35,0, + 0,0,41,2,114,71,0,0,0,114,159,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,238,0, + 0,0,40,6,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,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,71,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,39,1,0,0,45, + 6,0,0,115,4,0,0,0,0,2,21,1,122,19,70,105, + 108,101,76,111,97,100,101,114,46,103,101,116,95,100,97,116, + 97,41,11,114,57,0,0,0,114,56,0,0,0,114,58,0, + 0,0,114,59,0,0,0,114,72,0,0,0,114,229,0,0, + 0,114,50,1,0,0,114,157,0,0,0,114,3,1,0,0, + 114,238,0,0,0,114,39,1,0,0,114,4,0,0,0,114, + 4,0,0,0,41,1,114,224,0,0,0,114,5,0,0,0, + 114,48,1,0,0,10,6,0,0,115,14,0,0,0,12,3, + 6,2,12,6,12,4,12,3,24,12,18,5,114,48,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,114,7,1, + 0,0,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,36,0,0,0,116,0,0,124, + 1,0,131,1,0,125,2,0,105,2,0,124,2,0,106,1, + 0,100,1,0,54,124,2,0,106,2,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,182,0,0,0,114,183,0,0,0,41, + 3,114,39,0,0,0,218,8,115,116,95,109,116,105,109,101, + 90,7,115,116,95,115,105,122,101,41,3,114,71,0,0,0, + 114,35,0,0,0,114,46,1,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,36,1,0,0,55,6, + 0,0,115,4,0,0,0,0,2,12,1,122,27,83,111,117, + 114,99,101,70,105,108,101,76,111,97,100,101,114,46,112,97, + 116,104,95,115,116,97,116,115,99,4,0,0,0,0,0,0, + 0,5,0,0,0,5,0,0,0,67,0,0,0,115,34,0, + 0,0,116,0,0,124,1,0,131,1,0,125,4,0,124,0, + 0,106,1,0,124,2,0,124,3,0,100,1,0,124,4,0, + 131,2,1,83,41,2,78,218,5,95,109,111,100,101,41,2, + 114,145,0,0,0,114,37,1,0,0,41,5,114,71,0,0, + 0,114,142,0,0,0,114,141,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,38,1,0,0,60,6,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,54,1,0,0,105,182,1, + 0,0,99,3,0,0,0,1,0,0,0,9,0,0,0,17, + 0,0,0,67,0,0,0,115,53,1,0,0,116,0,0,124, + 1,0,131,1,0,92,2,0,125,4,0,125,5,0,103,0, + 0,125,6,0,120,54,0,124,4,0,114,80,0,116,1,0, + 124,4,0,131,1,0,12,114,80,0,116,0,0,124,4,0, + 131,1,0,92,2,0,125,4,0,125,7,0,124,6,0,106, + 2,0,124,7,0,131,1,0,1,113,27,0,87,120,132,0, + 116,3,0,124,6,0,131,1,0,68,93,118,0,125,7,0, + 116,4,0,124,4,0,124,7,0,131,2,0,125,4,0,121, + 17,0,116,5,0,106,6,0,124,4,0,131,1,0,1,87, + 113,94,0,4,116,7,0,107,10,0,114,155,0,1,1,1, + 119,94,0,89,113,94,0,4,116,8,0,107,10,0,114,211, + 0,1,125,8,0,1,122,25,0,116,9,0,100,1,0,124, + 4,0,124,8,0,131,3,0,1,100,2,0,83,87,89,100, + 2,0,100,2,0,125,8,0,126,8,0,88,113,94,0,88, + 113,94,0,87,121,33,0,116,10,0,124,1,0,124,2,0, + 124,3,0,131,3,0,1,116,9,0,100,3,0,124,1,0, + 131,2,0,1,87,110,53,0,4,116,8,0,107,10,0,114, + 48,1,1,125,8,0,1,122,21,0,116,9,0,100,1,0, + 124,1,0,124,8,0,131,3,0,1,87,89,100,2,0,100, + 2,0,125,8,0,126,8,0,88,110,1,0,88,100,2,0, + 83,41,4,122,27,87,114,105,116,101,32,98,121,116,101,115, + 32,100,97,116,97,32,116,111,32,97,32,102,105,108,101,46, + 122,27,99,111,117,108,100,32,110,111,116,32,99,114,101,97, + 116,101,32,123,33,114,125,58,32,123,33,114,125,78,122,12, + 99,114,101,97,116,101,100,32,123,33,114,125,41,11,114,38, + 0,0,0,114,46,0,0,0,114,223,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,153,0,0,0,114,55, + 0,0,0,41,9,114,71,0,0,0,114,35,0,0,0,114, + 53,0,0,0,114,54,1,0,0,114,233,0,0,0,114,131, + 0,0,0,114,27,0,0,0,114,23,0,0,0,114,40,1, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,37,1,0,0,65,6,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,36,1,0,0,114,38,1,0, + 0,114,37,1,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,7,1,0,0,51, + 6,0,0,115,8,0,0,0,12,2,6,2,12,5,12,5, + 114,7,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,114, + 6,1,0,0,122,45,76,111,97,100,101,114,32,119,104,105, + 99,104,32,104,97,110,100,108,101,115,32,115,111,117,114,99, + 101,108,101,115,115,32,102,105,108,101,32,105,109,112,111,114, + 116,115,46,99,2,0,0,0,0,0,0,0,5,0,0,0, + 6,0,0,0,67,0,0,0,115,76,0,0,0,124,0,0, + 106,0,0,124,1,0,131,1,0,125,2,0,124,0,0,106, + 1,0,124,2,0,131,1,0,125,3,0,116,2,0,124,3, + 0,100,1,0,124,1,0,100,2,0,124,2,0,131,1,2, + 125,4,0,116,3,0,124,4,0,100,1,0,124,1,0,100, + 3,0,124,2,0,131,1,2,83,41,4,78,114,67,0,0, + 0,114,35,0,0,0,114,141,0,0,0,41,4,114,238,0, + 0,0,114,39,1,0,0,114,189,0,0,0,114,194,0,0, + 0,41,5,114,71,0,0,0,114,159,0,0,0,114,35,0, + 0,0,114,53,0,0,0,114,47,1,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,14,1,0,0, + 98,6,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,71,0,0,0,114,159,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,17,1,0,0,200, - 6,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,71,0,0,0,114,159,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,239,0,0,0, - 204,6,0,0,115,2,0,0,0,0,3,122,32,69,120,116, + 114,4,0,0,0,114,5,0,0,0,114,15,1,0,0,104, + 6,0,0,115,2,0,0,0,0,2,122,31,83,111,117,114, + 99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114, + 46,103,101,116,95,115,111,117,114,99,101,78,41,6,114,57, + 0,0,0,114,56,0,0,0,114,58,0,0,0,114,59,0, + 0,0,114,14,1,0,0,114,15,1,0,0,114,4,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,6,1,0,0,94,6,0,0,115,6,0,0,0,12,2, + 6,2,12,6,114,6,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,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,101,7,0,100,8,0,100, + 9,0,132,0,0,131,1,0,90,8,0,100,10,0,100,11, + 0,132,0,0,90,9,0,100,12,0,100,13,0,132,0,0, + 90,10,0,100,14,0,100,15,0,132,0,0,90,11,0,101, + 7,0,100,16,0,100,17,0,132,0,0,131,1,0,90,12, + 0,100,18,0,83,41,19,218,19,69,120,116,101,110,115,105, + 111,110,70,105,108,101,76,111,97,100,101,114,122,93,76,111, + 97,100,101,114,32,102,111,114,32,101,120,116,101,110,115,105, + 111,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,84,104,101,32,99,111,110,115,116,114,117,99,116,111,114, + 32,105,115,32,100,101,115,105,103,110,101,100,32,116,111,32, + 119,111,114,107,32,119,105,116,104,32,70,105,108,101,70,105, + 110,100,101,114,46,10,10,32,32,32,32,99,3,0,0,0, + 0,0,0,0,3,0,0,0,2,0,0,0,67,0,0,0, + 115,22,0,0,0,124,1,0,124,0,0,95,0,0,124,2, + 0,124,0,0,95,1,0,100,0,0,83,41,1,78,41,2, + 114,67,0,0,0,114,35,0,0,0,41,3,114,71,0,0, + 0,114,67,0,0,0,114,35,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,72,0,0,0,121, + 6,0,0,115,4,0,0,0,0,1,9,1,122,28,69,120, + 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, + 114,46,95,95,105,110,105,116,95,95,99,2,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 34,0,0,0,124,0,0,106,0,0,124,1,0,106,0,0, + 107,2,0,111,33,0,124,0,0,106,1,0,124,1,0,106, + 1,0,107,2,0,83,41,1,78,41,2,114,224,0,0,0, + 114,63,0,0,0,41,2,114,71,0,0,0,114,227,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,229,0,0,0,125,6,0,0,115,4,0,0,0,0,1, + 18,1,122,26,69,120,116,101,110,115,105,111,110,70,105,108, + 101,76,111,97,100,101,114,46,95,95,101,113,95,95,99,1, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67, + 0,0,0,115,26,0,0,0,116,0,0,124,0,0,106,1, + 0,131,1,0,116,0,0,124,0,0,106,2,0,131,1,0, + 65,83,41,1,78,41,3,114,49,1,0,0,114,67,0,0, + 0,114,35,0,0,0,41,1,114,71,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,50,1,0, + 0,129,6,0,0,115,2,0,0,0,0,1,122,28,69,120, + 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, + 114,46,95,95,104,97,115,104,95,95,99,2,0,0,0,0, + 0,0,0,4,0,0,0,11,0,0,0,67,0,0,0,115, + 177,0,0,0,116,0,0,124,1,0,131,1,0,143,29,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,87,100,1,0,81,88,116, + 5,0,100,2,0,124,0,0,106,4,0,131,2,0,1,124, + 0,0,106,6,0,124,1,0,131,1,0,125,3,0,124,3, + 0,114,121,0,116,7,0,124,2,0,100,3,0,131,2,0, + 12,114,121,0,116,8,0,124,0,0,106,4,0,131,1,0, + 100,4,0,25,103,1,0,124,2,0,95,9,0,124,0,0, + 124,2,0,95,10,0,124,2,0,106,11,0,124,2,0,95, + 12,0,124,3,0,115,173,0,124,2,0,106,12,0,106,13, + 0,100,5,0,131,1,0,100,4,0,25,124,2,0,95,12, + 0,124,2,0,83,41,6,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,78,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,246,0,0,0,114,84,0,0,0, + 114,116,0,0,0,41,14,114,69,0,0,0,114,114,0,0, + 0,114,106,0,0,0,90,12,108,111,97,100,95,100,121,110, + 97,109,105,99,114,35,0,0,0,114,153,0,0,0,114,219, + 0,0,0,114,60,0,0,0,114,38,0,0,0,114,246,0, + 0,0,114,203,0,0,0,114,57,0,0,0,114,249,0,0, + 0,114,32,0,0,0,41,4,114,71,0,0,0,114,159,0, + 0,0,114,178,0,0,0,114,219,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,3,1,0,0, + 132,6,0,0,115,24,0,0,0,0,5,13,1,9,1,21, + 1,16,1,15,1,22,1,25,1,9,1,12,1,6,1,25, + 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,72,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,77,0,0,0,153,6,0,0,115,2,0,0,0, + 6,1,122,49,69,120,116,101,110,115,105,111,110,70,105,108, + 101,76,111,97,100,101,114,46,105,115,95,112,97,99,107,97, + 103,101,46,60,108,111,99,97,108,115,62,46,60,103,101,110, + 101,120,112,114,62,41,4,114,38,0,0,0,114,35,0,0, + 0,114,78,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,71,0,0, + 0,114,159,0,0,0,114,4,0,0,0,41,1,114,58,1, + 0,0,114,5,0,0,0,114,219,0,0,0,150,6,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,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,72,0,0,0,114,230,0,0,0,114,51, - 1,0,0,114,157,0,0,0,114,5,1,0,0,114,220,0, - 0,0,114,16,1,0,0,114,17,1,0,0,114,239,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,57,1,0,0,153,6,0,0,115,18, - 0,0,0,12,6,6,2,12,4,12,4,12,3,18,18,12, - 6,12,4,12,4,114,57,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,70,0,0,0,114,254,0,0,0, - 114,232,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,71,0,0,0,114, - 67,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,72,0,0,0,217,6,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,116,0,0,0,114,30,0,0,0,114, - 7,0,0,0,114,35,0,0,0,114,247,0,0,0,41,2, - 122,3,115,121,115,122,4,112,97,116,104,41,2,114,70,0, - 0,0,114,32,0,0,0,41,4,114,71,0,0,0,114,234, - 0,0,0,218,3,100,111,116,114,94,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,223,6,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,67,1,0,0,114,62,0,0,0,114,7,0, - 0,0,114,73,0,0,0,41,3,114,71,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,62,1,0,0,233,6,0,0,115,4,0,0,0,0, - 1,18,1,122,31,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,103,101,116,95,112,97,114,101,110,116,95, - 112,97,116,104,99,1,0,0,0,0,0,0,0,3,0,0, - 0,3,0,0,0,67,0,0,0,115,127,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,120,0,124, - 0,0,106,3,0,124,0,0,106,4,0,124,1,0,131,2, - 0,125,2,0,124,2,0,100,0,0,107,9,0,114,108,0, - 124,2,0,106,5,0,100,0,0,107,8,0,114,108,0,124, - 2,0,106,6,0,114,108,0,124,2,0,106,6,0,124,0, - 0,95,7,0,113,108,0,110,0,0,124,1,0,124,0,0, - 95,2,0,110,0,0,124,0,0,106,7,0,83,41,1,78, - 41,8,114,232,0,0,0,114,62,1,0,0,114,63,1,0, - 0,114,64,1,0,0,114,70,0,0,0,114,170,0,0,0, - 114,221,0,0,0,114,254,0,0,0,41,3,114,71,0,0, - 0,90,11,112,97,114,101,110,116,95,112,97,116,104,114,178, + 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,71,0,0,0,114,159,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,14,1, + 0,0,156,6,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,71,0,0,0,114, + 159,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,15,1,0,0,160,6,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,71,0,0,0, + 114,159,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,238,0,0,0,164,6,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,72,0, + 0,0,114,229,0,0,0,114,50,1,0,0,114,157,0,0, + 0,114,3,1,0,0,114,219,0,0,0,114,14,1,0,0, + 114,15,1,0,0,114,238,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,56, + 1,0,0,113,6,0,0,115,18,0,0,0,12,6,6,2, + 12,4,12,4,12,3,18,18,12,6,12,4,12,4,114,56, + 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, + 70,0,0,0,114,252,0,0,0,114,231,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,71,0,0,0,114,67,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,72, + 0,0,0,177,6,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,116, + 0,0,0,114,30,0,0,0,114,7,0,0,0,114,35,0, + 0,0,114,246,0,0,0,41,2,122,3,115,121,115,122,4, + 112,97,116,104,41,2,114,70,0,0,0,114,32,0,0,0, + 41,4,114,71,0,0,0,114,233,0,0,0,218,3,100,111, + 116,114,94,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,183,6, + 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,66,1,0, + 0,114,62,0,0,0,114,7,0,0,0,114,73,0,0,0, + 41,3,114,71,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,61,1,0,0,193, + 6,0,0,115,4,0,0,0,0,1,18,1,122,31,95,78, + 97,109,101,115,112,97,99,101,80,97,116,104,46,95,103,101, + 116,95,112,97,114,101,110,116,95,112,97,116,104,99,1,0, + 0,0,0,0,0,0,3,0,0,0,3,0,0,0,67,0, + 0,0,115,118,0,0,0,116,0,0,124,0,0,106,1,0, + 131,0,0,131,1,0,125,1,0,124,1,0,124,0,0,106, + 2,0,107,3,0,114,111,0,124,0,0,106,3,0,124,0, + 0,106,4,0,124,1,0,131,2,0,125,2,0,124,2,0, + 100,0,0,107,9,0,114,102,0,124,2,0,106,5,0,100, + 0,0,107,8,0,114,102,0,124,2,0,106,6,0,114,102, + 0,124,2,0,106,6,0,124,0,0,95,7,0,124,1,0, + 124,0,0,95,2,0,124,0,0,106,7,0,83,41,1,78, + 41,8,114,231,0,0,0,114,61,1,0,0,114,62,1,0, + 0,114,63,1,0,0,114,70,0,0,0,114,170,0,0,0, + 114,220,0,0,0,114,252,0,0,0,41,3,114,71,0,0, + 0,90,11,112,97,114,101,110,116,95,112,97,116,104,114,177, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, - 237,6,0,0,115,16,0,0,0,0,2,18,1,15,1,21, - 3,27,1,9,1,18,1,12,1,122,27,95,78,97,109,101, + 197,6,0,0,115,16,0,0,0,0,2,18,1,15,1,21, + 3,27,1,9,1,12,1,9,1,122,27,95,78,97,109,101, 115,112,97,99,101,80,97,116,104,46,95,114,101,99,97,108, 99,117,108,97,116,101,99,1,0,0,0,0,0,0,0,1, 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, 116,0,0,124,0,0,106,1,0,131,0,0,131,1,0,83, - 41,1,78,41,2,218,4,105,116,101,114,114,68,1,0,0, + 41,1,78,41,2,218,4,105,116,101,114,114,67,1,0,0, 41,1,114,71,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, - 250,6,0,0,115,2,0,0,0,0,1,122,23,95,78,97, + 210,6,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,68,1,0,0,41,1,114, + 78,41,2,114,31,0,0,0,114,67,1,0,0,41,1,114, 71,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,253,6,0,0, + 0,0,0,218,7,95,95,108,101,110,95,95,213,6,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,254,0,0,0,41,1, + 125,41,41,2,114,47,0,0,0,114,252,0,0,0,41,1, 114,71,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,101,0,0,0,0,7,0,0,115,2,0, + 5,0,0,0,114,101,0,0,0,216,6,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,68,1,0, + 131,0,0,107,6,0,83,41,1,78,41,1,114,67,1,0, 0,41,2,114,71,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,3,7,0,0,115, + 95,99,111,110,116,97,105,110,115,95,95,219,6,0,0,115, 2,0,0,0,0,1,122,27,95,78,97,109,101,115,112,97, 99,101,80,97,116,104,46,95,95,99,111,110,116,97,105,110, 115,95,95,99,2,0,0,0,0,0,0,0,2,0,0,0, 2,0,0,0,67,0,0,0,115,20,0,0,0,124,0,0, 106,0,0,106,1,0,124,1,0,131,1,0,1,100,0,0, - 83,41,1,78,41,2,114,254,0,0,0,114,224,0,0,0, - 41,2,114,71,0,0,0,114,72,1,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,224,0,0,0, - 6,7,0,0,115,2,0,0,0,0,1,122,21,95,78,97, + 83,41,1,78,41,2,114,252,0,0,0,114,223,0,0,0, + 41,2,114,71,0,0,0,114,71,1,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,223,0,0,0, + 222,6,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,72,0,0,0,114,67, - 1,0,0,114,62,1,0,0,114,68,1,0,0,114,70,1, - 0,0,114,71,1,0,0,114,101,0,0,0,114,73,1,0, - 0,114,224,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,61,1,0,0,210, + 58,0,0,0,114,59,0,0,0,114,72,0,0,0,114,66, + 1,0,0,114,61,1,0,0,114,67,1,0,0,114,69,1, + 0,0,114,70,1,0,0,114,101,0,0,0,114,72,1,0, + 0,114,223,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,60,1,0,0,170, 6,0,0,115,20,0,0,0,12,5,6,2,12,6,12,10, - 12,4,12,13,12,3,12,3,12,3,12,3,114,61,1,0, + 12,4,12,13,12,3,12,3,12,3,12,3,114,60,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,0,64,0,0,0,115,118,0,0,0,101,0,0,90,1, 0,100,0,0,90,2,0,100,1,0,100,2,0,132,0,0, 90,3,0,101,4,0,100,3,0,100,4,0,132,0,0,131, 1,0,90,5,0,100,5,0,100,6,0,132,0,0,90,6, 0,100,7,0,100,8,0,132,0,0,90,7,0,100,9,0, 100,10,0,132,0,0,90,8,0,100,11,0,100,12,0,132, 0,0,90,9,0,100,13,0,100,14,0,132,0,0,90,10, - 0,100,15,0,83,41,16,114,252,0,0,0,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,61,1,0,0,114,254,0,0,0,41,4, - 114,71,0,0,0,114,67,0,0,0,114,35,0,0,0,114, - 65,1,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,72,0,0,0,12,7,0,0,115,2,0,0, - 0,0,1,122,25,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,46,95,95,105,110,105,116,95,95,99,2, - 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, - 0,0,0,115,16,0,0,0,100,1,0,106,0,0,124,1, - 0,106,1,0,131,1,0,83,41,2,122,115,82,101,116,117, - 114,110,32,114,101,112,114,32,102,111,114,32,116,104,101,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,101,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,84,104,101,32, - 105,109,112,111,114,116,32,109,97,99,104,105,110,101,114,121, - 32,100,111,101,115,32,116,104,101,32,106,111,98,32,105,116, - 115,101,108,102,46,10,10,32,32,32,32,32,32,32,32,122, - 25,60,109,111,100,117,108,101,32,123,33,114,125,32,40,110, - 97,109,101,115,112,97,99,101,41,62,41,2,114,47,0,0, - 0,114,57,0,0,0,41,2,114,12,1,0,0,114,180,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,206,0,0,0,15,7,0,0,115,2,0,0,0,0, - 7,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97, - 100,101,114,46,109,111,100,117,108,101,95,114,101,112,114,99, - 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, - 67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,78, - 84,114,4,0,0,0,41,2,114,71,0,0,0,114,159,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,220,0,0,0,24,7,0,0,115,2,0,0,0,0, - 1,122,27,95,78,97,109,101,115,112,97,99,101,76,111,97, - 100,101,114,46,105,115,95,112,97,99,107,97,103,101,99,2, - 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, - 0,0,0,115,4,0,0,0,100,1,0,83,41,2,78,114, - 30,0,0,0,114,4,0,0,0,41,2,114,71,0,0,0, - 114,159,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,17,1,0,0,27,7,0,0,115,2,0, - 0,0,0,1,122,27,95,78,97,109,101,115,112,97,99,101, - 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, - 101,99,2,0,0,0,0,0,0,0,2,0,0,0,6,0, - 0,0,67,0,0,0,115,22,0,0,0,116,0,0,100,1, - 0,100,2,0,100,3,0,100,4,0,100,5,0,131,3,1, - 83,41,6,78,114,30,0,0,0,122,8,60,115,116,114,105, - 110,103,62,114,176,0,0,0,114,43,1,0,0,84,41,1, - 114,44,1,0,0,41,2,114,71,0,0,0,114,159,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,16,1,0,0,30,7,0,0,115,2,0,0,0,0,1, - 122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100, - 101,114,46,103,101,116,95,99,111,100,101,99,2,0,0,0, + 0,100,15,0,100,16,0,132,0,0,90,11,0,100,17,0, + 83,41,18,114,250,0,0,0,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,60,1,0,0,114,252,0,0,0,41,4,114,71,0,0, + 0,114,67,0,0,0,114,35,0,0,0,114,64,1,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 72,0,0,0,228,6,0,0,115,2,0,0,0,0,1,122, + 25,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, + 114,46,95,95,105,110,105,116,95,95,99,2,0,0,0,0, + 0,0,0,2,0,0,0,2,0,0,0,67,0,0,0,115, + 16,0,0,0,100,1,0,106,0,0,124,1,0,106,1,0, + 131,1,0,83,41,2,122,115,82,101,116,117,114,110,32,114, + 101,112,114,32,102,111,114,32,116,104,101,32,109,111,100,117, + 108,101,46,10,10,32,32,32,32,32,32,32,32,84,104,101, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,46,32,32,84,104,101,32,105,109,112,111, + 114,116,32,109,97,99,104,105,110,101,114,121,32,100,111,101, + 115,32,116,104,101,32,106,111,98,32,105,116,115,101,108,102, + 46,10,10,32,32,32,32,32,32,32,32,122,25,60,109,111, + 100,117,108,101,32,123,33,114,125,32,40,110,97,109,101,115, + 112,97,99,101,41,62,41,2,114,47,0,0,0,114,57,0, + 0,0,41,2,114,10,1,0,0,114,178,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,204,0, + 0,0,231,6,0,0,115,2,0,0,0,0,7,122,28,95, + 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46, + 109,111,100,117,108,101,95,114,101,112,114,99,2,0,0,0, 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,0,0,83,41,1,78,114,4,0,0, - 0,41,2,114,71,0,0,0,114,180,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,2,1,0, - 0,33,7,0,0,115,2,0,0,0,0,1,122,28,95,78, - 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,101, - 120,101,99,95,109,111,100,117,108,101,99,2,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, - 29,0,0,0,116,0,0,100,1,0,124,0,0,106,1,0, - 131,2,0,1,116,2,0,124,0,0,124,1,0,131,2,0, - 83,41,2,122,98,76,111,97,100,32,97,32,110,97,109,101, - 115,112,97,99,101,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, - 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, - 46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,117, - 108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32, - 32,32,32,32,32,32,32,122,38,110,97,109,101,115,112,97, - 99,101,32,109,111,100,117,108,101,32,108,111,97,100,101,100, - 32,119,105,116,104,32,112,97,116,104,32,123,33,114,125,41, - 3,114,153,0,0,0,114,254,0,0,0,114,181,0,0,0, - 41,2,114,71,0,0,0,114,159,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,5,1,0,0, - 36,7,0,0,115,4,0,0,0,0,7,16,1,122,28,95, + 115,4,0,0,0,100,1,0,83,41,2,78,84,114,4,0, + 0,0,41,2,114,71,0,0,0,114,159,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,219,0, + 0,0,240,6,0,0,115,2,0,0,0,0,1,122,27,95, 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,46, - 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,72,0, - 0,0,114,19,1,0,0,114,206,0,0,0,114,220,0,0, - 0,114,17,1,0,0,114,16,1,0,0,114,2,1,0,0, - 114,5,1,0,0,114,4,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,252,0,0,0,11,7, - 0,0,115,14,0,0,0,12,1,12,3,18,9,12,3,12, - 3,12,3,12,3,114,252,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,5,0,0,0,64,0,0,0,115, - 160,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, - 100,1,0,90,3,0,101,4,0,100,2,0,100,3,0,132, - 0,0,131,1,0,90,5,0,101,4,0,100,4,0,100,5, - 0,132,0,0,131,1,0,90,6,0,101,4,0,100,6,0, - 100,7,0,132,0,0,131,1,0,90,7,0,101,4,0,100, - 8,0,100,9,0,132,0,0,131,1,0,90,8,0,101,4, - 0,100,10,0,100,11,0,100,12,0,132,1,0,131,1,0, - 90,9,0,101,4,0,100,10,0,100,10,0,100,13,0,100, - 14,0,132,2,0,131,1,0,90,10,0,101,4,0,100,10, - 0,100,15,0,100,16,0,132,1,0,131,1,0,90,11,0, - 100,10,0,83,41,17,218,10,80,97,116,104,70,105,110,100, - 101,114,122,62,77,101,116,97,32,112,97,116,104,32,102,105, - 110,100,101,114,32,102,111,114,32,115,121,115,46,112,97,116, - 104,32,97,110,100,32,112,97,99,107,97,103,101,32,95,95, - 112,97,116,104,95,95,32,97,116,116,114,105,98,117,116,101, - 115,46,99,1,0,0,0,0,0,0,0,2,0,0,0,4, - 0,0,0,67,0,0,0,115,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,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,75,1,0,0,41,2,114,12,1,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,75,1,0,0,53,7,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,167,0,0,0,114,168,0,0,0,114,169,0, - 0,0,114,154,0,0,0,41,3,114,12,1,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,61,7,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,76,1, - 0,0,114,79,0,0,0,114,80,1,0,0,41,3,114,12, - 1,0,0,114,35,0,0,0,114,78,1,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,20,95,112, + 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,71,0,0,0,114,159,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,15,1,0,0,243,6,0,0,115,2,0,0,0,0,1, + 122,27,95,78,97,109,101,115,112,97,99,101,76,111,97,100, + 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, + 0,0,0,0,0,0,2,0,0,0,6,0,0,0,67,0, + 0,0,115,22,0,0,0,116,0,0,100,1,0,100,2,0, + 100,3,0,100,4,0,100,5,0,131,3,1,83,41,6,78, + 114,30,0,0,0,122,8,60,115,116,114,105,110,103,62,114, + 21,1,0,0,114,42,1,0,0,84,41,1,114,43,1,0, + 0,41,2,114,71,0,0,0,114,159,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,14,1,0, + 0,246,6,0,0,115,2,0,0,0,0,1,122,25,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,103, + 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,0,83,41,2,122,42,85,115,101,32,100,101,102, + 97,117,108,116,32,115,101,109,97,110,116,105,99,115,32,102, + 111,114,32,109,111,100,117,108,101,32,99,114,101,97,116,105, + 111,110,46,78,114,4,0,0,0,41,2,114,71,0,0,0, + 114,177,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,114,254,0,0,0,249,6,0,0,115,0,0, + 0,0,122,30,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,46,99,114,101,97,116,101,95,109,111,100,117, + 108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,115,4,0,0,0,100,0,0,83, + 41,1,78,114,4,0,0,0,41,2,114,71,0,0,0,114, + 178,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,255,0,0,0,252,6,0,0,115,2,0,0, + 0,0,1,122,28,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,101,120,101,99,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,3,0, + 0,0,67,0,0,0,115,29,0,0,0,116,0,0,100,1, + 0,124,0,0,106,1,0,131,2,0,1,116,2,0,124,0, + 0,124,1,0,131,2,0,83,41,2,122,98,76,111,97,100, + 32,97,32,110,97,109,101,115,112,97,99,101,32,109,111,100, + 117,108,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,112, + 114,101,99,97,116,101,100,46,32,32,85,115,101,32,101,120, + 101,99,95,109,111,100,117,108,101,40,41,32,105,110,115,116, + 101,97,100,46,10,10,32,32,32,32,32,32,32,32,122,38, + 110,97,109,101,115,112,97,99,101,32,109,111,100,117,108,101, + 32,108,111,97,100,101,100,32,119,105,116,104,32,112,97,116, + 104,32,123,33,114,125,41,3,114,153,0,0,0,114,252,0, + 0,0,114,179,0,0,0,41,2,114,71,0,0,0,114,159, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,3,1,0,0,255,6,0,0,115,4,0,0,0, + 0,7,16,1,122,28,95,78,97,109,101,115,112,97,99,101, + 76,111,97,100,101,114,46,108,111,97,100,95,109,111,100,117, + 108,101,78,41,12,114,57,0,0,0,114,56,0,0,0,114, + 58,0,0,0,114,72,0,0,0,114,17,1,0,0,114,204, + 0,0,0,114,219,0,0,0,114,15,1,0,0,114,14,1, + 0,0,114,254,0,0,0,114,255,0,0,0,114,3,1,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,250,0,0,0,227,6,0,0,115,16, + 0,0,0,12,1,12,3,18,9,12,3,12,3,12,3,12, + 3,12,3,114,250,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,5,0,0,0,64,0,0,0,115,160,0, + 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1, + 0,90,3,0,101,4,0,100,2,0,100,3,0,132,0,0, + 131,1,0,90,5,0,101,4,0,100,4,0,100,5,0,132, + 0,0,131,1,0,90,6,0,101,4,0,100,6,0,100,7, + 0,132,0,0,131,1,0,90,7,0,101,4,0,100,8,0, + 100,9,0,132,0,0,131,1,0,90,8,0,101,4,0,100, + 10,0,100,11,0,100,12,0,132,1,0,131,1,0,90,9, + 0,101,4,0,100,10,0,100,10,0,100,13,0,100,14,0, + 132,2,0,131,1,0,90,10,0,101,4,0,100,10,0,100, + 15,0,100,16,0,132,1,0,131,1,0,90,11,0,100,10, + 0,83,41,17,218,10,80,97,116,104,70,105,110,100,101,114, + 122,62,77,101,116,97,32,112,97,116,104,32,102,105,110,100, + 101,114,32,102,111,114,32,115,121,115,46,112,97,116,104,32, + 97,110,100,32,112,97,99,107,97,103,101,32,95,95,112,97, + 116,104,95,95,32,97,116,116,114,105,98,117,116,101,115,46, + 99,1,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,67,0,0,0,115,55,0,0,0,120,48,0,116,0,0, + 106,1,0,106,2,0,131,0,0,68,93,31,0,125,1,0, + 116,3,0,124,1,0,100,1,0,131,2,0,114,16,0,124, + 1,0,106,4,0,131,0,0,1,113,16,0,87,100,2,0, + 83,41,3,122,125,67,97,108,108,32,116,104,101,32,105,110, + 118,97,108,105,100,97,116,101,95,99,97,99,104,101,115,40, + 41,32,109,101,116,104,111,100,32,111,110,32,97,108,108,32, + 112,97,116,104,32,101,110,116,114,121,32,102,105,110,100,101, + 114,115,10,32,32,32,32,32,32,32,32,115,116,111,114,101, + 100,32,105,110,32,115,121,115,46,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,115,32,40,119, + 104,101,114,101,32,105,109,112,108,101,109,101,110,116,101,100, + 41,46,218,17,105,110,118,97,108,105,100,97,116,101,95,99, + 97,99,104,101,115,78,41,5,114,7,0,0,0,218,19,112, 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, - 104,101,78,7,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,6,0,0,0,3,0,0,0,67,0,0, - 0,115,113,0,0,0,116,0,0,124,2,0,100,1,0,131, - 2,0,114,39,0,124,2,0,106,1,0,124,1,0,131,1, - 0,92,2,0,125,3,0,125,4,0,110,21,0,124,2,0, - 106,2,0,124,1,0,131,1,0,125,3,0,103,0,0,125, - 4,0,124,3,0,100,0,0,107,9,0,114,85,0,116,3, - 0,124,1,0,124,3,0,131,2,0,83,116,4,0,124,1, - 0,100,0,0,131,2,0,125,5,0,124,4,0,124,5,0, - 95,5,0,124,5,0,83,41,2,78,114,166,0,0,0,41, - 6,114,60,0,0,0,114,166,0,0,0,114,15,1,0,0, - 114,174,0,0,0,114,217,0,0,0,114,221,0,0,0,41, - 6,114,12,1,0,0,114,159,0,0,0,114,78,1,0,0, - 114,170,0,0,0,114,171,0,0,0,114,178,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,16, - 95,108,101,103,97,99,121,95,103,101,116,95,115,112,101,99, - 95,7,0,0,115,18,0,0,0,0,4,15,1,24,2,15, - 1,6,1,12,1,13,1,15,1,9,1,122,27,80,97,116, - 104,70,105,110,100,101,114,46,95,108,101,103,97,99,121,95, - 103,101,116,95,115,112,101,99,78,99,4,0,0,0,0,0, - 0,0,9,0,0,0,5,0,0,0,67,0,0,0,115,252, - 0,0,0,103,0,0,125,4,0,120,239,0,124,2,0,68, - 93,203,0,125,5,0,116,0,0,124,5,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,5,0,131,1,0,125,6,0, - 124,6,0,100,1,0,107,9,0,114,13,0,116,4,0,124, - 6,0,100,2,0,131,2,0,114,109,0,124,6,0,106,5, - 0,124,1,0,124,3,0,131,2,0,125,7,0,110,18,0, - 124,0,0,106,6,0,124,1,0,124,6,0,131,2,0,125, - 7,0,124,7,0,100,1,0,107,8,0,114,145,0,113,13, - 0,110,0,0,124,7,0,106,7,0,100,1,0,107,9,0, - 114,164,0,124,7,0,83,124,7,0,106,8,0,125,8,0, - 124,8,0,100,1,0,107,8,0,114,200,0,116,9,0,100, - 3,0,131,1,0,130,1,0,110,0,0,124,4,0,106,10, - 0,124,8,0,131,1,0,1,113,13,0,113,13,0,87,116, + 104,101,218,6,118,97,108,117,101,115,114,60,0,0,0,114, + 74,1,0,0,41,2,114,10,1,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,74,1,0,0,16,7,0,0,115,6,0,0,0, + 0,4,22,1,15,1,122,28,80,97,116,104,70,105,110,100, + 101,114,46,105,110,118,97,108,105,100,97,116,101,95,99,97, + 99,104,101,115,99,2,0,0,0,0,0,0,0,3,0,0, + 0,12,0,0,0,67,0,0,0,115,107,0,0,0,116,0, + 0,106,1,0,100,1,0,107,9,0,114,41,0,116,0,0, + 106,1,0,12,114,41,0,116,2,0,106,3,0,100,2,0, + 116,4,0,131,2,0,1,120,59,0,116,0,0,106,1,0, + 68,93,44,0,125,2,0,121,14,0,124,2,0,124,1,0, + 131,1,0,83,87,113,51,0,4,116,5,0,107,10,0,114, + 94,0,1,1,1,119,51,0,89,113,51,0,88,113,51,0, + 87,100,1,0,83,100,1,0,83,41,3,122,113,83,101,97, + 114,99,104,32,115,101,113,117,101,110,99,101,32,111,102,32, + 104,111,111,107,115,32,102,111,114,32,97,32,102,105,110,100, + 101,114,32,102,111,114,32,39,112,97,116,104,39,46,10,10, + 32,32,32,32,32,32,32,32,73,102,32,39,104,111,111,107, + 115,39,32,105,115,32,102,97,108,115,101,32,116,104,101,110, + 32,117,115,101,32,115,121,115,46,112,97,116,104,95,104,111, + 111,107,115,46,10,10,32,32,32,32,32,32,32,32,78,122, + 23,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, + 105,115,32,101,109,112,116,121,41,6,114,7,0,0,0,218, + 10,112,97,116,104,95,104,111,111,107,115,114,167,0,0,0, + 114,168,0,0,0,114,169,0,0,0,114,154,0,0,0,41, + 3,114,10,1,0,0,114,35,0,0,0,90,4,104,111,111, + 107,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 218,11,95,112,97,116,104,95,104,111,111,107,115,24,7,0, + 0,115,16,0,0,0,0,7,25,1,16,1,16,1,3,1, + 14,1,13,1,12,2,122,22,80,97,116,104,70,105,110,100, + 101,114,46,95,112,97,116,104,95,104,111,111,107,115,99,2, + 0,0,0,0,0,0,0,3,0,0,0,19,0,0,0,67, + 0,0,0,115,123,0,0,0,124,1,0,100,1,0,107,2, + 0,114,53,0,121,16,0,116,0,0,106,1,0,131,0,0, + 125,1,0,87,110,22,0,4,116,2,0,107,10,0,114,52, + 0,1,1,1,100,2,0,83,89,110,1,0,88,121,17,0, + 116,3,0,106,4,0,124,1,0,25,125,2,0,87,110,46, + 0,4,116,5,0,107,10,0,114,118,0,1,1,1,124,0, + 0,106,6,0,124,1,0,131,1,0,125,2,0,124,2,0, + 116,3,0,106,4,0,124,1,0,60,89,110,1,0,88,124, + 2,0,83,41,3,122,210,71,101,116,32,116,104,101,32,102, + 105,110,100,101,114,32,102,111,114,32,116,104,101,32,112,97, + 116,104,32,101,110,116,114,121,32,102,114,111,109,32,115,121, + 115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95, + 99,97,99,104,101,46,10,10,32,32,32,32,32,32,32,32, + 73,102,32,116,104,101,32,112,97,116,104,32,101,110,116,114, + 121,32,105,115,32,110,111,116,32,105,110,32,116,104,101,32, + 99,97,99,104,101,44,32,102,105,110,100,32,116,104,101,32, + 97,112,112,114,111,112,114,105,97,116,101,32,102,105,110,100, + 101,114,10,32,32,32,32,32,32,32,32,97,110,100,32,99, + 97,99,104,101,32,105,116,46,32,73,102,32,110,111,32,102, + 105,110,100,101,114,32,105,115,32,97,118,97,105,108,97,98, + 108,101,44,32,115,116,111,114,101,32,78,111,110,101,46,10, + 10,32,32,32,32,32,32,32,32,114,30,0,0,0,78,41, + 7,114,3,0,0,0,114,45,0,0,0,218,17,70,105,108, + 101,78,111,116,70,111,117,110,100,69,114,114,111,114,114,7, + 0,0,0,114,75,1,0,0,114,79,0,0,0,114,79,1, + 0,0,41,3,114,10,1,0,0,114,35,0,0,0,114,77, + 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,41,7,0,0,115,22,0,0, + 0,0,8,12,1,3,1,16,1,13,3,9,1,3,1,17, + 1,13,1,15,1,18,1,122,31,80,97,116,104,70,105,110, + 100,101,114,46,95,112,97,116,104,95,105,109,112,111,114,116, + 101,114,95,99,97,99,104,101,99,3,0,0,0,0,0,0, + 0,6,0,0,0,3,0,0,0,67,0,0,0,115,113,0, + 0,0,116,0,0,124,2,0,100,1,0,131,2,0,114,39, + 0,124,2,0,106,1,0,124,1,0,131,1,0,92,2,0, + 125,3,0,125,4,0,110,21,0,124,2,0,106,2,0,124, + 1,0,131,1,0,125,3,0,103,0,0,125,4,0,124,3, + 0,100,0,0,107,9,0,114,85,0,116,3,0,124,1,0, + 124,3,0,131,2,0,83,116,4,0,124,1,0,100,0,0, + 131,2,0,125,5,0,124,4,0,124,5,0,95,5,0,124, + 5,0,83,41,2,78,114,166,0,0,0,41,6,114,60,0, + 0,0,114,166,0,0,0,114,13,1,0,0,114,174,0,0, + 0,114,216,0,0,0,114,220,0,0,0,41,6,114,10,1, + 0,0,114,159,0,0,0,114,77,1,0,0,114,170,0,0, + 0,114,171,0,0,0,114,177,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,16,95,108,101,103, + 97,99,121,95,103,101,116,95,115,112,101,99,63,7,0,0, + 115,18,0,0,0,0,4,15,1,24,2,15,1,6,1,12, + 1,13,1,15,1,9,1,122,27,80,97,116,104,70,105,110, + 100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,95, + 115,112,101,99,78,99,4,0,0,0,0,0,0,0,9,0, + 0,0,5,0,0,0,67,0,0,0,115,240,0,0,0,103, + 0,0,125,4,0,120,227,0,124,2,0,68,93,191,0,125, + 5,0,116,0,0,124,5,0,116,1,0,116,2,0,102,2, + 0,131,2,0,115,43,0,113,13,0,124,0,0,106,3,0, + 124,5,0,131,1,0,125,6,0,124,6,0,100,1,0,107, + 9,0,114,13,0,116,4,0,124,6,0,100,2,0,131,2, + 0,114,106,0,124,6,0,106,5,0,124,1,0,124,3,0, + 131,2,0,125,7,0,110,18,0,124,0,0,106,6,0,124, + 1,0,124,6,0,131,2,0,125,7,0,124,7,0,100,1, + 0,107,8,0,114,139,0,113,13,0,124,7,0,106,7,0, + 100,1,0,107,9,0,114,158,0,124,7,0,83,124,7,0, + 106,8,0,125,8,0,124,8,0,100,1,0,107,8,0,114, + 191,0,116,9,0,100,3,0,131,1,0,130,1,0,124,4, + 0,106,10,0,124,8,0,131,1,0,1,113,13,0,87,116, 11,0,124,1,0,100,1,0,131,2,0,125,7,0,124,4, 0,124,7,0,95,8,0,124,7,0,83,100,1,0,83,41, 4,122,63,70,105,110,100,32,116,104,101,32,108,111,97,100, 101,114,32,111,114,32,110,97,109,101,115,112,97,99,101,95, 112,97,116,104,32,102,111,114,32,116,104,105,115,32,109,111, 100,117,108,101,47,112,97,99,107,97,103,101,32,110,97,109, - 101,46,78,114,14,1,0,0,122,19,115,112,101,99,32,109, + 101,46,78,114,12,1,0,0,122,19,115,112,101,99,32,109, 105,115,115,105,110,103,32,108,111,97,100,101,114,41,12,114, - 193,0,0,0,218,3,115,116,114,218,5,98,121,116,101,115, - 114,81,1,0,0,114,60,0,0,0,114,14,1,0,0,114, - 82,1,0,0,114,170,0,0,0,114,221,0,0,0,114,154, - 0,0,0,114,198,0,0,0,114,217,0,0,0,41,9,114, - 12,1,0,0,114,159,0,0,0,114,35,0,0,0,114,13, + 191,0,0,0,218,3,115,116,114,218,5,98,121,116,101,115, + 114,81,1,0,0,114,60,0,0,0,114,12,1,0,0,114, + 82,1,0,0,114,170,0,0,0,114,220,0,0,0,114,154, + 0,0,0,114,196,0,0,0,114,216,0,0,0,41,9,114, + 10,1,0,0,114,159,0,0,0,114,35,0,0,0,114,11, 1,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,78,1,0,0,114, - 178,0,0,0,114,171,0,0,0,114,4,0,0,0,114,4, + 97,116,104,90,5,101,110,116,114,121,114,77,1,0,0,114, + 177,0,0,0,114,171,0,0,0,114,4,0,0,0,114,4, 0,0,0,114,5,0,0,0,218,9,95,103,101,116,95,115, - 112,101,99,110,7,0,0,115,40,0,0,0,0,5,6,1, - 13,1,21,1,6,1,15,1,12,1,15,1,21,2,18,1, - 12,1,6,1,15,1,4,1,9,1,12,1,15,5,20,2, + 112,101,99,78,7,0,0,115,40,0,0,0,0,5,6,1, + 13,1,21,1,3,1,15,1,12,1,15,1,21,2,18,1, + 12,1,3,1,15,1,4,1,9,1,12,1,12,5,17,2, 15,1,9,1,122,20,80,97,116,104,70,105,110,100,101,114, 46,95,103,101,116,95,115,112,101,99,99,4,0,0,0,0, 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, - 143,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,124,3,0,131,3,0,125,4, - 0,124,4,0,100,1,0,107,8,0,114,61,0,100,1,0, - 83,124,4,0,106,3,0,100,1,0,107,8,0,114,135,0, - 124,4,0,106,4,0,125,5,0,124,5,0,114,128,0,100, - 2,0,124,4,0,95,5,0,116,6,0,124,1,0,124,5, - 0,124,0,0,106,2,0,131,3,0,124,4,0,95,4,0, - 124,4,0,83,100,1,0,83,110,4,0,124,4,0,83,100, - 1,0,83,41,3,122,98,102,105,110,100,32,116,104,101,32, - 109,111,100,117,108,101,32,111,110,32,115,121,115,46,112,97, - 116,104,32,111,114,32,39,112,97,116,104,39,32,98,97,115, - 101,100,32,111,110,32,115,121,115,46,112,97,116,104,95,104, - 111,111,107,115,32,97,110,100,10,32,32,32,32,32,32,32, - 32,115,121,115,46,112,97,116,104,95,105,109,112,111,114,116, - 101,114,95,99,97,99,104,101,46,78,90,9,110,97,109,101, - 115,112,97,99,101,41,7,114,7,0,0,0,114,35,0,0, - 0,114,86,1,0,0,114,170,0,0,0,114,221,0,0,0, - 114,218,0,0,0,114,61,1,0,0,41,6,114,12,1,0, - 0,114,159,0,0,0,114,35,0,0,0,114,13,1,0,0, - 114,178,0,0,0,114,85,1,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,14,1,0,0,142,7, - 0,0,115,26,0,0,0,0,4,12,1,12,1,21,1,12, - 1,4,1,15,1,9,1,6,3,9,1,24,1,4,2,7, - 2,122,20,80,97,116,104,70,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,99,3,0,0,0,0,0,0,0, - 4,0,0,0,3,0,0,0,67,0,0,0,115,41,0,0, - 0,124,0,0,106,0,0,124,1,0,124,2,0,131,2,0, - 125,3,0,124,3,0,100,1,0,107,8,0,114,34,0,100, - 1,0,83,124,3,0,106,1,0,83,41,2,122,170,102,105, - 110,100,32,116,104,101,32,109,111,100,117,108,101,32,111,110, - 32,115,121,115,46,112,97,116,104,32,111,114,32,39,112,97, - 116,104,39,32,98,97,115,101,100,32,111,110,32,115,121,115, - 46,112,97,116,104,95,104,111,111,107,115,32,97,110,100,10, - 32,32,32,32,32,32,32,32,115,121,115,46,112,97,116,104, - 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,46, - 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109, - 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,46,32,32,85,115,101,32,102,105,110,100,95,115, - 112,101,99,40,41,32,105,110,115,116,101,97,100,46,10,10, - 32,32,32,32,32,32,32,32,78,41,2,114,14,1,0,0, - 114,170,0,0,0,41,4,114,12,1,0,0,114,159,0,0, - 0,114,35,0,0,0,114,178,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,15,1,0,0,164, - 7,0,0,115,8,0,0,0,0,8,18,1,12,1,4,1, - 122,22,80,97,116,104,70,105,110,100,101,114,46,102,105,110, - 100,95,109,111,100,117,108,101,41,12,114,57,0,0,0,114, - 56,0,0,0,114,58,0,0,0,114,59,0,0,0,114,19, - 1,0,0,114,75,1,0,0,114,80,1,0,0,114,81,1, - 0,0,114,82,1,0,0,114,86,1,0,0,114,14,1,0, - 0,114,15,1,0,0,114,4,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,74,1,0,0,49, - 7,0,0,115,22,0,0,0,12,2,6,2,18,8,18,17, - 18,17,18,15,3,1,18,31,3,1,21,21,3,1,114,74, - 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,133,0,0,0,101,0,0, - 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100, - 2,0,100,3,0,132,0,0,90,4,0,100,4,0,100,5, - 0,132,0,0,90,5,0,101,6,0,90,7,0,100,6,0, - 100,7,0,132,0,0,90,8,0,100,8,0,100,9,0,132, - 0,0,90,9,0,100,10,0,100,11,0,100,12,0,132,1, - 0,90,10,0,100,13,0,100,14,0,132,0,0,90,11,0, - 101,12,0,100,15,0,100,16,0,132,0,0,131,1,0,90, - 13,0,100,17,0,100,18,0,132,0,0,90,14,0,100,10, - 0,83,41,19,218,10,70,105,108,101,70,105,110,100,101,114, - 122,172,70,105,108,101,45,98,97,115,101,100,32,102,105,110, - 100,101,114,46,10,10,32,32,32,32,73,110,116,101,114,97, - 99,116,105,111,110,115,32,119,105,116,104,32,116,104,101,32, - 102,105,108,101,32,115,121,115,116,101,109,32,97,114,101,32, - 99,97,99,104,101,100,32,102,111,114,32,112,101,114,102,111, - 114,109,97,110,99,101,44,32,98,101,105,110,103,10,32,32, - 32,32,114,101,102,114,101,115,104,101,100,32,119,104,101,110, - 32,116,104,101,32,100,105,114,101,99,116,111,114,121,32,116, - 104,101,32,102,105,110,100,101,114,32,105,115,32,104,97,110, - 100,108,105,110,103,32,104,97,115,32,98,101,101,110,32,109, - 111,100,105,102,105,101,100,46,10,10,32,32,32,32,99,2, - 0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,7, - 0,0,0,115,122,0,0,0,103,0,0,125,3,0,120,52, - 0,124,2,0,68,93,44,0,92,2,0,137,0,0,125,4, - 0,124,3,0,106,0,0,135,0,0,102,1,0,100,1,0, - 100,2,0,134,0,0,124,4,0,68,131,1,0,131,1,0, - 1,113,13,0,87,124,3,0,124,0,0,95,1,0,124,1, - 0,112,79,0,100,3,0,124,0,0,95,2,0,100,6,0, - 124,0,0,95,3,0,116,4,0,131,0,0,124,0,0,95, - 5,0,116,4,0,131,0,0,124,0,0,95,6,0,100,5, - 0,83,41,7,122,154,73,110,105,116,105,97,108,105,122,101, - 32,119,105,116,104,32,116,104,101,32,112,97,116,104,32,116, - 111,32,115,101,97,114,99,104,32,111,110,32,97,110,100,32, - 97,32,118,97,114,105,97,98,108,101,32,110,117,109,98,101, - 114,32,111,102,10,32,32,32,32,32,32,32,32,50,45,116, - 117,112,108,101,115,32,99,111,110,116,97,105,110,105,110,103, - 32,116,104,101,32,108,111,97,100,101,114,32,97,110,100,32, - 116,104,101,32,102,105,108,101,32,115,117,102,102,105,120,101, - 115,32,116,104,101,32,108,111,97,100,101,114,10,32,32,32, - 32,32,32,32,32,114,101,99,111,103,110,105,122,101,115,46, - 99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,0, - 0,51,0,0,0,115,27,0,0,0,124,0,0,93,17,0, - 125,1,0,124,1,0,136,0,0,102,2,0,86,1,113,3, - 0,100,0,0,83,41,1,78,114,4,0,0,0,41,2,114, - 22,0,0,0,114,58,1,0,0,41,1,114,170,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,77,0,0,0,193, - 7,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,116,0,0,0,114,29,0,0,0,78,114,139,0, - 0,0,41,7,114,198,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,71, - 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,126,0,0,0,114,4,0,0,0,41,1,114,170,0, - 0,0,114,5,0,0,0,114,72,0,0,0,187,7,0,0, - 115,16,0,0,0,0,4,6,1,19,1,36,1,9,2,15, - 1,9,1,12,1,122,19,70,105,108,101,70,105,110,100,101, - 114,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, - 0,0,0,1,0,0,0,2,0,0,0,67,0,0,0,115, - 13,0,0,0,100,3,0,124,0,0,95,0,0,100,2,0, - 83,41,4,122,31,73,110,118,97,108,105,100,97,116,101,32, - 116,104,101,32,100,105,114,101,99,116,111,114,121,32,109,116, - 105,109,101,46,114,29,0,0,0,78,114,139,0,0,0,41, - 1,114,89,1,0,0,41,1,114,71,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,75,1,0, - 0,201,7,0,0,115,2,0,0,0,0,2,122,28,70,105, - 108,101,70,105,110,100,101,114,46,105,110,118,97,108,105,100, - 97,116,101,95,99,97,99,104,101,115,99,2,0,0,0,0, - 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, - 59,0,0,0,124,0,0,106,0,0,124,1,0,131,1,0, - 125,2,0,124,2,0,100,1,0,107,8,0,114,37,0,100, - 1,0,103,0,0,102,2,0,83,124,2,0,106,1,0,124, - 2,0,106,2,0,112,55,0,103,0,0,102,2,0,83,41, - 2,122,197,84,114,121,32,116,111,32,102,105,110,100,32,97, - 32,108,111,97,100,101,114,32,102,111,114,32,116,104,101,32, - 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, - 44,32,111,114,32,116,104,101,32,110,97,109,101,115,112,97, - 99,101,10,32,32,32,32,32,32,32,32,112,97,99,107,97, - 103,101,32,112,111,114,116,105,111,110,115,46,32,82,101,116, - 117,114,110,115,32,40,108,111,97,100,101,114,44,32,108,105, - 115,116,45,111,102,45,112,111,114,116,105,111,110,115,41,46, - 10,10,32,32,32,32,32,32,32,32,84,104,105,115,32,109, - 101,116,104,111,100,32,105,115,32,100,101,112,114,101,99,97, - 116,101,100,46,32,32,85,115,101,32,102,105,110,100,95,115, - 112,101,99,40,41,32,105,110,115,116,101,97,100,46,10,10, - 32,32,32,32,32,32,32,32,78,41,3,114,14,1,0,0, - 114,170,0,0,0,114,221,0,0,0,41,3,114,71,0,0, - 0,114,159,0,0,0,114,178,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,166,0,0,0,207, - 7,0,0,115,8,0,0,0,0,7,15,1,12,1,10,1, - 122,22,70,105,108,101,70,105,110,100,101,114,46,102,105,110, - 100,95,108,111,97,100,101,114,99,6,0,0,0,0,0,0, - 0,7,0,0,0,7,0,0,0,67,0,0,0,115,40,0, - 0,0,124,1,0,124,2,0,124,3,0,131,2,0,125,6, - 0,116,0,0,124,2,0,124,3,0,100,1,0,124,6,0, - 100,2,0,124,4,0,131,2,2,83,41,3,78,114,170,0, - 0,0,114,221,0,0,0,41,1,114,240,0,0,0,41,7, - 114,71,0,0,0,114,244,0,0,0,114,159,0,0,0,114, - 35,0,0,0,114,229,0,0,0,114,13,1,0,0,114,170, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,86,1,0,0,219,7,0,0,115,6,0,0,0, - 0,1,15,1,18,1,122,20,70,105,108,101,70,105,110,100, - 101,114,46,95,103,101,116,95,115,112,101,99,78,99,3,0, - 0,0,0,0,0,0,14,0,0,0,15,0,0,0,67,0, - 0,0,115,240,1,0,0,100,1,0,125,3,0,124,1,0, - 106,0,0,100,2,0,131,1,0,100,3,0,25,125,4,0, - 121,34,0,116,1,0,124,0,0,106,2,0,112,49,0,116, - 3,0,106,4,0,131,0,0,131,1,0,106,5,0,125,5, - 0,87,110,24,0,4,116,6,0,107,10,0,114,85,0,1, - 1,1,100,10,0,125,5,0,89,110,1,0,88,124,5,0, - 124,0,0,106,7,0,107,3,0,114,123,0,124,0,0,106, - 8,0,131,0,0,1,124,5,0,124,0,0,95,7,0,110, - 0,0,116,9,0,131,0,0,114,156,0,124,0,0,106,10, - 0,125,6,0,124,4,0,106,11,0,131,0,0,125,7,0, - 110,15,0,124,0,0,106,12,0,125,6,0,124,4,0,125, - 7,0,124,7,0,124,6,0,107,6,0,114,51,1,116,13, - 0,124,0,0,106,2,0,124,4,0,131,2,0,125,8,0, - 120,103,0,124,0,0,106,14,0,68,93,77,0,92,2,0, - 125,9,0,125,10,0,100,5,0,124,9,0,23,125,11,0, - 116,13,0,124,8,0,124,11,0,131,2,0,125,12,0,116, - 15,0,124,12,0,131,1,0,114,211,0,124,0,0,106,16, - 0,124,10,0,124,1,0,124,12,0,124,8,0,103,1,0, - 124,2,0,131,5,0,83,113,211,0,87,116,17,0,124,8, - 0,131,1,0,125,3,0,110,0,0,120,126,0,124,0,0, - 106,14,0,68,93,115,0,92,2,0,125,9,0,125,10,0, - 116,13,0,124,0,0,106,2,0,124,4,0,124,9,0,23, - 131,2,0,125,12,0,116,18,0,100,6,0,106,19,0,124, - 12,0,131,1,0,100,7,0,100,3,0,131,1,1,1,124, - 7,0,124,9,0,23,124,6,0,107,6,0,114,61,1,116, - 15,0,124,12,0,131,1,0,114,176,1,124,0,0,106,16, - 0,124,10,0,124,1,0,124,12,0,100,8,0,124,2,0, - 131,5,0,83,113,61,1,113,61,1,87,124,3,0,114,236, - 1,116,18,0,100,9,0,106,19,0,124,8,0,131,1,0, - 131,1,0,1,116,20,0,124,1,0,100,8,0,131,2,0, - 125,13,0,124,8,0,103,1,0,124,13,0,95,21,0,124, - 13,0,83,100,8,0,83,41,11,122,125,84,114,121,32,116, - 111,32,102,105,110,100,32,97,32,108,111,97,100,101,114,32, - 102,111,114,32,116,104,101,32,115,112,101,99,105,102,105,101, - 100,32,109,111,100,117,108,101,44,32,111,114,32,116,104,101, - 32,110,97,109,101,115,112,97,99,101,10,32,32,32,32,32, - 32,32,32,112,97,99,107,97,103,101,32,112,111,114,116,105, - 111,110,115,46,32,82,101,116,117,114,110,115,32,40,108,111, - 97,100,101,114,44,32,108,105,115,116,45,111,102,45,112,111, - 114,116,105,111,110,115,41,46,70,114,116,0,0,0,114,115, - 0,0,0,114,29,0,0,0,114,72,0,0,0,122,9,116, - 114,121,105,110,103,32,123,125,114,146,0,0,0,78,122,25, - 112,111,115,115,105,98,108,101,32,110,97,109,101,115,112,97, - 99,101,32,102,111,114,32,123,125,114,139,0,0,0,41,22, - 114,32,0,0,0,114,39,0,0,0,114,35,0,0,0,114, - 3,0,0,0,114,45,0,0,0,114,54,1,0,0,114,40, - 0,0,0,114,89,1,0,0,218,11,95,102,105,108,108,95, - 99,97,99,104,101,114,6,0,0,0,114,92,1,0,0,114, - 140,0,0,0,114,91,1,0,0,114,28,0,0,0,114,88, - 1,0,0,114,44,0,0,0,114,86,1,0,0,114,46,0, - 0,0,114,153,0,0,0,114,47,0,0,0,114,217,0,0, - 0,114,221,0,0,0,41,14,114,71,0,0,0,114,159,0, - 0,0,114,13,1,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,184,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,58,1,0,0,114,244,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,178,0,0,0, + 140,0,0,0,124,2,0,100,1,0,107,8,0,114,21,0, + 116,0,0,106,1,0,125,2,0,124,0,0,106,2,0,124, + 1,0,124,2,0,124,3,0,131,3,0,125,4,0,124,4, + 0,100,1,0,107,8,0,114,58,0,100,1,0,83,124,4, + 0,106,3,0,100,1,0,107,8,0,114,132,0,124,4,0, + 106,4,0,125,5,0,124,5,0,114,125,0,100,2,0,124, + 4,0,95,5,0,116,6,0,124,1,0,124,5,0,124,0, + 0,106,2,0,131,3,0,124,4,0,95,4,0,124,4,0, + 83,100,1,0,83,110,4,0,124,4,0,83,100,1,0,83, + 41,3,122,98,102,105,110,100,32,116,104,101,32,109,111,100, + 117,108,101,32,111,110,32,115,121,115,46,112,97,116,104,32, + 111,114,32,39,112,97,116,104,39,32,98,97,115,101,100,32, + 111,110,32,115,121,115,46,112,97,116,104,95,104,111,111,107, + 115,32,97,110,100,10,32,32,32,32,32,32,32,32,115,121, + 115,46,112,97,116,104,95,105,109,112,111,114,116,101,114,95, + 99,97,99,104,101,46,78,90,9,110,97,109,101,115,112,97, + 99,101,41,7,114,7,0,0,0,114,35,0,0,0,114,86, + 1,0,0,114,170,0,0,0,114,220,0,0,0,114,217,0, + 0,0,114,60,1,0,0,41,6,114,10,1,0,0,114,159, + 0,0,0,114,35,0,0,0,114,11,1,0,0,114,177,0, + 0,0,114,85,1,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,12,1,0,0,110,7,0,0,115, + 26,0,0,0,0,4,12,1,9,1,21,1,12,1,4,1, + 15,1,9,1,6,3,9,1,24,1,4,2,7,2,122,20, + 80,97,116,104,70,105,110,100,101,114,46,102,105,110,100,95, + 115,112,101,99,99,3,0,0,0,0,0,0,0,4,0,0, + 0,3,0,0,0,67,0,0,0,115,41,0,0,0,124,0, + 0,106,0,0,124,1,0,124,2,0,131,2,0,125,3,0, + 124,3,0,100,1,0,107,8,0,114,34,0,100,1,0,83, + 124,3,0,106,1,0,83,41,2,122,170,102,105,110,100,32, + 116,104,101,32,109,111,100,117,108,101,32,111,110,32,115,121, + 115,46,112,97,116,104,32,111,114,32,39,112,97,116,104,39, + 32,98,97,115,101,100,32,111,110,32,115,121,115,46,112,97, + 116,104,95,104,111,111,107,115,32,97,110,100,10,32,32,32, + 32,32,32,32,32,115,121,115,46,112,97,116,104,95,105,109, + 112,111,114,116,101,114,95,99,97,99,104,101,46,10,10,32, + 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,99, + 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, + 32,32,32,32,32,78,41,2,114,12,1,0,0,114,170,0, + 0,0,41,4,114,10,1,0,0,114,159,0,0,0,114,35, + 0,0,0,114,177,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,13,1,0,0,132,7,0,0, + 115,8,0,0,0,0,8,18,1,12,1,4,1,122,22,80, + 97,116,104,70,105,110,100,101,114,46,102,105,110,100,95,109, + 111,100,117,108,101,41,12,114,57,0,0,0,114,56,0,0, + 0,114,58,0,0,0,114,59,0,0,0,114,17,1,0,0, + 114,74,1,0,0,114,79,1,0,0,114,81,1,0,0,114, + 82,1,0,0,114,86,1,0,0,114,12,1,0,0,114,13, + 1,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,73,1,0,0,12,7,0,0, + 115,22,0,0,0,12,2,6,2,18,8,18,17,18,22,18, + 15,3,1,18,31,3,1,21,21,3,1,114,73,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,133,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, + 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, + 0,90,5,0,101,6,0,90,7,0,100,6,0,100,7,0, + 132,0,0,90,8,0,100,8,0,100,9,0,132,0,0,90, + 9,0,100,10,0,100,11,0,100,12,0,132,1,0,90,10, + 0,100,13,0,100,14,0,132,0,0,90,11,0,101,12,0, + 100,15,0,100,16,0,132,0,0,131,1,0,90,13,0,100, + 17,0,100,18,0,132,0,0,90,14,0,100,10,0,83,41, + 19,218,10,70,105,108,101,70,105,110,100,101,114,122,172,70, + 105,108,101,45,98,97,115,101,100,32,102,105,110,100,101,114, + 46,10,10,32,32,32,32,73,110,116,101,114,97,99,116,105, + 111,110,115,32,119,105,116,104,32,116,104,101,32,102,105,108, + 101,32,115,121,115,116,101,109,32,97,114,101,32,99,97,99, + 104,101,100,32,102,111,114,32,112,101,114,102,111,114,109,97, + 110,99,101,44,32,98,101,105,110,103,10,32,32,32,32,114, + 101,102,114,101,115,104,101,100,32,119,104,101,110,32,116,104, + 101,32,100,105,114,101,99,116,111,114,121,32,116,104,101,32, + 102,105,110,100,101,114,32,105,115,32,104,97,110,100,108,105, + 110,103,32,104,97,115,32,98,101,101,110,32,109,111,100,105, + 102,105,101,100,46,10,10,32,32,32,32,99,2,0,0,0, + 0,0,0,0,5,0,0,0,5,0,0,0,7,0,0,0, + 115,122,0,0,0,103,0,0,125,3,0,120,52,0,124,2, + 0,68,93,44,0,92,2,0,137,0,0,125,4,0,124,3, + 0,106,0,0,135,0,0,102,1,0,100,1,0,100,2,0, + 134,0,0,124,4,0,68,131,1,0,131,1,0,1,113,13, + 0,87,124,3,0,124,0,0,95,1,0,124,1,0,112,79, + 0,100,3,0,124,0,0,95,2,0,100,6,0,124,0,0, + 95,3,0,116,4,0,131,0,0,124,0,0,95,5,0,116, + 4,0,131,0,0,124,0,0,95,6,0,100,5,0,83,41, + 7,122,154,73,110,105,116,105,97,108,105,122,101,32,119,105, + 116,104,32,116,104,101,32,112,97,116,104,32,116,111,32,115, + 101,97,114,99,104,32,111,110,32,97,110,100,32,97,32,118, + 97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,111, + 102,10,32,32,32,32,32,32,32,32,50,45,116,117,112,108, + 101,115,32,99,111,110,116,97,105,110,105,110,103,32,116,104, + 101,32,108,111,97,100,101,114,32,97,110,100,32,116,104,101, + 32,102,105,108,101,32,115,117,102,102,105,120,101,115,32,116, + 104,101,32,108,111,97,100,101,114,10,32,32,32,32,32,32, + 32,32,114,101,99,111,103,110,105,122,101,115,46,99,1,0, + 0,0,0,0,0,0,2,0,0,0,3,0,0,0,51,0, + 0,0,115,27,0,0,0,124,0,0,93,17,0,125,1,0, + 124,1,0,136,0,0,102,2,0,86,1,113,3,0,100,0, + 0,83,41,1,78,114,4,0,0,0,41,2,114,22,0,0, + 0,114,57,1,0,0,41,1,114,170,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,77,0,0,0,161,7,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, + 116,0,0,0,114,29,0,0,0,78,114,139,0,0,0,41, + 7,114,196,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,71,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,126, + 0,0,0,114,4,0,0,0,41,1,114,170,0,0,0,114, + 5,0,0,0,114,72,0,0,0,155,7,0,0,115,16,0, + 0,0,0,4,6,1,19,1,36,1,9,2,15,1,9,1, + 12,1,122,19,70,105,108,101,70,105,110,100,101,114,46,95, + 95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,0, + 1,0,0,0,2,0,0,0,67,0,0,0,115,13,0,0, + 0,100,3,0,124,0,0,95,0,0,100,2,0,83,41,4, + 122,31,73,110,118,97,108,105,100,97,116,101,32,116,104,101, + 32,100,105,114,101,99,116,111,114,121,32,109,116,105,109,101, + 46,114,29,0,0,0,78,114,139,0,0,0,41,1,114,89, + 1,0,0,41,1,114,71,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,74,1,0,0,169,7, + 0,0,115,2,0,0,0,0,2,122,28,70,105,108,101,70, + 105,110,100,101,114,46,105,110,118,97,108,105,100,97,116,101, + 95,99,97,99,104,101,115,99,2,0,0,0,0,0,0,0, + 3,0,0,0,2,0,0,0,67,0,0,0,115,59,0,0, + 0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0, + 124,2,0,100,1,0,107,8,0,114,37,0,100,1,0,103, + 0,0,102,2,0,83,124,2,0,106,1,0,124,2,0,106, + 2,0,112,55,0,103,0,0,102,2,0,83,41,2,122,197, + 84,114,121,32,116,111,32,102,105,110,100,32,97,32,108,111, + 97,100,101,114,32,102,111,114,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,32,109,111,100,117,108,101,44,32,111, + 114,32,116,104,101,32,110,97,109,101,115,112,97,99,101,10, + 32,32,32,32,32,32,32,32,112,97,99,107,97,103,101,32, + 112,111,114,116,105,111,110,115,46,32,82,101,116,117,114,110, + 115,32,40,108,111,97,100,101,114,44,32,108,105,115,116,45, + 111,102,45,112,111,114,116,105,111,110,115,41,46,10,10,32, + 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 46,32,32,85,115,101,32,102,105,110,100,95,115,112,101,99, + 40,41,32,105,110,115,116,101,97,100,46,10,10,32,32,32, + 32,32,32,32,32,78,41,3,114,12,1,0,0,114,170,0, + 0,0,114,220,0,0,0,41,3,114,71,0,0,0,114,159, + 0,0,0,114,177,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,166,0,0,0,175,7,0,0, + 115,8,0,0,0,0,7,15,1,12,1,10,1,122,22,70, + 105,108,101,70,105,110,100,101,114,46,102,105,110,100,95,108, + 111,97,100,101,114,99,6,0,0,0,0,0,0,0,7,0, + 0,0,7,0,0,0,67,0,0,0,115,40,0,0,0,124, + 1,0,124,2,0,124,3,0,131,2,0,125,6,0,116,0, + 0,124,2,0,124,3,0,100,1,0,124,6,0,100,2,0, + 124,4,0,131,2,2,83,41,3,78,114,170,0,0,0,114, + 220,0,0,0,41,1,114,239,0,0,0,41,7,114,71,0, + 0,0,114,243,0,0,0,114,159,0,0,0,114,35,0,0, + 0,114,228,0,0,0,114,11,1,0,0,114,170,0,0,0, 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, - 14,1,0,0,224,7,0,0,115,68,0,0,0,0,3,6, - 1,19,1,3,1,34,1,13,1,11,1,15,1,10,1,12, - 2,9,1,9,1,15,2,9,1,6,2,12,1,18,1,22, - 1,10,1,15,1,12,1,32,4,15,2,22,1,22,1,25, - 1,16,1,12,1,32,1,6,1,19,1,15,1,12,1,4, - 1,122,20,70,105,108,101,70,105,110,100,101,114,46,102,105, - 110,100,95,115,112,101,99,99,1,0,0,0,0,0,0,0, - 9,0,0,0,13,0,0,0,67,0,0,0,115,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,116,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,140,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,42, - 8,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,90,1,0,0,114,91,1,0, - 0,114,134,0,0,0,114,47,0,0,0,114,140,0,0,0, - 218,3,97,100,100,114,10,0,0,0,114,92,1,0,0,41, - 9,114,71,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,72,1,0, - 0,114,67,0,0,0,114,66,1,0,0,114,58,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,94,1,0,0,13,8, - 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, + 86,1,0,0,187,7,0,0,115,6,0,0,0,0,1,15, + 1,18,1,122,20,70,105,108,101,70,105,110,100,101,114,46, + 95,103,101,116,95,115,112,101,99,78,99,3,0,0,0,0, + 0,0,0,14,0,0,0,15,0,0,0,67,0,0,0,115, + 231,1,0,0,100,1,0,125,3,0,124,1,0,106,0,0, + 100,2,0,131,1,0,100,3,0,25,125,4,0,121,34,0, + 116,1,0,124,0,0,106,2,0,112,49,0,116,3,0,106, + 4,0,131,0,0,131,1,0,106,5,0,125,5,0,87,110, + 24,0,4,116,6,0,107,10,0,114,85,0,1,1,1,100, + 10,0,125,5,0,89,110,1,0,88,124,5,0,124,0,0, + 106,7,0,107,3,0,114,120,0,124,0,0,106,8,0,131, + 0,0,1,124,5,0,124,0,0,95,7,0,116,9,0,131, + 0,0,114,153,0,124,0,0,106,10,0,125,6,0,124,4, + 0,106,11,0,131,0,0,125,7,0,110,15,0,124,0,0, + 106,12,0,125,6,0,124,4,0,125,7,0,124,7,0,124, + 6,0,107,6,0,114,45,1,116,13,0,124,0,0,106,2, + 0,124,4,0,131,2,0,125,8,0,120,100,0,124,0,0, + 106,14,0,68,93,77,0,92,2,0,125,9,0,125,10,0, + 100,5,0,124,9,0,23,125,11,0,116,13,0,124,8,0, + 124,11,0,131,2,0,125,12,0,116,15,0,124,12,0,131, + 1,0,114,208,0,124,0,0,106,16,0,124,10,0,124,1, + 0,124,12,0,124,8,0,103,1,0,124,2,0,131,5,0, + 83,113,208,0,87,116,17,0,124,8,0,131,1,0,125,3, + 0,120,123,0,124,0,0,106,14,0,68,93,112,0,92,2, + 0,125,9,0,125,10,0,116,13,0,124,0,0,106,2,0, + 124,4,0,124,9,0,23,131,2,0,125,12,0,116,18,0, + 100,6,0,106,19,0,124,12,0,131,1,0,100,7,0,100, + 3,0,131,1,1,1,124,7,0,124,9,0,23,124,6,0, + 107,6,0,114,55,1,116,15,0,124,12,0,131,1,0,114, + 55,1,124,0,0,106,16,0,124,10,0,124,1,0,124,12, + 0,100,8,0,124,2,0,131,5,0,83,113,55,1,87,124, + 3,0,114,227,1,116,18,0,100,9,0,106,19,0,124,8, + 0,131,1,0,131,1,0,1,116,20,0,124,1,0,100,8, + 0,131,2,0,125,13,0,124,8,0,103,1,0,124,13,0, + 95,21,0,124,13,0,83,100,8,0,83,41,11,122,125,84, + 114,121,32,116,111,32,102,105,110,100,32,97,32,108,111,97, + 100,101,114,32,102,111,114,32,116,104,101,32,115,112,101,99, + 105,102,105,101,100,32,109,111,100,117,108,101,44,32,111,114, + 32,116,104,101,32,110,97,109,101,115,112,97,99,101,10,32, + 32,32,32,32,32,32,32,112,97,99,107,97,103,101,32,112, + 111,114,116,105,111,110,115,46,32,82,101,116,117,114,110,115, + 32,40,108,111,97,100,101,114,44,32,108,105,115,116,45,111, + 102,45,112,111,114,116,105,111,110,115,41,46,70,114,116,0, + 0,0,114,115,0,0,0,114,29,0,0,0,114,72,0,0, + 0,122,9,116,114,121,105,110,103,32,123,125,114,146,0,0, + 0,78,122,25,112,111,115,115,105,98,108,101,32,110,97,109, + 101,115,112,97,99,101,32,102,111,114,32,123,125,114,139,0, + 0,0,41,22,114,32,0,0,0,114,39,0,0,0,114,35, + 0,0,0,114,3,0,0,0,114,45,0,0,0,114,53,1, + 0,0,114,40,0,0,0,114,89,1,0,0,218,11,95,102, + 105,108,108,95,99,97,99,104,101,114,6,0,0,0,114,92, + 1,0,0,114,140,0,0,0,114,91,1,0,0,114,28,0, + 0,0,114,88,1,0,0,114,44,0,0,0,114,86,1,0, + 0,114,46,0,0,0,114,153,0,0,0,114,47,0,0,0, + 114,216,0,0,0,114,220,0,0,0,41,14,114,71,0,0, + 0,114,159,0,0,0,114,11,1,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,182,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,57,1,0,0, + 114,243,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, + 177,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,12,1,0,0,192,7,0,0,115,68,0,0, + 0,0,3,6,1,19,1,3,1,34,1,13,1,11,1,15, + 1,10,1,9,2,9,1,9,1,15,2,9,1,6,2,12, + 1,18,1,22,1,10,1,15,1,12,1,32,4,12,2,22, + 1,22,1,25,1,16,1,12,1,29,1,6,1,19,1,15, + 1,12,1,4,1,122,20,70,105,108,101,70,105,110,100,101, + 114,46,102,105,110,100,95,115,112,101,99,99,1,0,0,0, + 0,0,0,0,9,0,0,0,13,0,0,0,67,0,0,0, + 115,11,1,0,0,124,0,0,106,0,0,125,1,0,121,31, + 0,116,1,0,106,2,0,124,1,0,112,33,0,116,1,0, + 106,3,0,131,0,0,131,1,0,125,2,0,87,110,33,0, + 4,116,4,0,116,5,0,116,6,0,102,3,0,107,10,0, + 114,75,0,1,1,1,103,0,0,125,2,0,89,110,1,0, + 88,116,7,0,106,8,0,106,9,0,100,1,0,131,1,0, + 115,112,0,116,10,0,124,2,0,131,1,0,124,0,0,95, + 11,0,110,111,0,116,10,0,131,0,0,125,3,0,120,90, + 0,124,2,0,68,93,82,0,125,4,0,124,4,0,106,12, + 0,100,2,0,131,1,0,92,3,0,125,5,0,125,6,0, + 125,7,0,124,6,0,114,191,0,100,3,0,106,13,0,124, + 5,0,124,7,0,106,14,0,131,0,0,131,2,0,125,8, + 0,110,6,0,124,5,0,125,8,0,124,3,0,106,15,0, + 124,8,0,131,1,0,1,113,128,0,87,124,3,0,124,0, + 0,95,11,0,116,7,0,106,8,0,106,9,0,116,16,0, + 131,1,0,114,7,1,100,4,0,100,5,0,132,0,0,124, + 2,0,68,131,1,0,124,0,0,95,17,0,100,6,0,83, + 41,7,122,68,70,105,108,108,32,116,104,101,32,99,97,99, + 104,101,32,111,102,32,112,111,116,101,110,116,105,97,108,32, + 109,111,100,117,108,101,115,32,97,110,100,32,112,97,99,107, + 97,103,101,115,32,102,111,114,32,116,104,105,115,32,100,105, + 114,101,99,116,111,114,121,46,114,0,0,0,0,114,116,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,140,0,0,0,41,2,114,22,0, + 0,0,90,2,102,110,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,250,9,60,115,101,116,99,111,109,112,62, + 10,8,0,0,115,2,0,0,0,9,0,122,41,70,105,108, + 101,70,105,110,100,101,114,46,95,102,105,108,108,95,99,97, + 99,104,101,46,60,108,111,99,97,108,115,62,46,60,115,101, + 116,99,111,109,112,62,78,41,18,114,35,0,0,0,114,3, + 0,0,0,90,7,108,105,115,116,100,105,114,114,45,0,0, + 0,114,80,1,0,0,218,15,80,101,114,109,105,115,115,105, + 111,110,69,114,114,111,114,218,18,78,111,116,65,68,105,114, + 101,99,116,111,114,121,69,114,114,111,114,114,7,0,0,0, + 114,8,0,0,0,114,9,0,0,0,114,90,1,0,0,114, + 91,1,0,0,114,134,0,0,0,114,47,0,0,0,114,140, + 0,0,0,218,3,97,100,100,114,10,0,0,0,114,92,1, + 0,0,41,9,114,71,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, + 71,1,0,0,114,67,0,0,0,114,65,1,0,0,114,57, + 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,94,1,0, + 0,237,7,0,0,115,34,0,0,0,0,2,9,1,3,1, + 31,1,22,3,11,3,18,1,18,7,9,1,13,1,24,1, + 6,1,27,2,6,1,17,1,9,1,18,1,122,22,70,105, + 108,101,70,105,110,100,101,114,46,95,102,105,108,108,95,99, + 97,99,104,101,99,1,0,0,0,0,0,0,0,3,0,0, + 0,3,0,0,0,7,0,0,0,115,25,0,0,0,135,0, + 0,135,1,0,102,2,0,100,1,0,100,2,0,134,0,0, + 125,2,0,124,2,0,83,41,3,97,20,1,0,0,65,32, + 99,108,97,115,115,32,109,101,116,104,111,100,32,119,104,105, + 99,104,32,114,101,116,117,114,110,115,32,97,32,99,108,111, + 115,117,114,101,32,116,111,32,117,115,101,32,111,110,32,115, + 121,115,46,112,97,116,104,95,104,111,111,107,10,32,32,32, + 32,32,32,32,32,119,104,105,99,104,32,119,105,108,108,32, + 114,101,116,117,114,110,32,97,110,32,105,110,115,116,97,110, + 99,101,32,117,115,105,110,103,32,116,104,101,32,115,112,101, + 99,105,102,105,101,100,32,108,111,97,100,101,114,115,32,97, + 110,100,32,116,104,101,32,112,97,116,104,10,32,32,32,32, + 32,32,32,32,99,97,108,108,101,100,32,111,110,32,116,104, + 101,32,99,108,111,115,117,114,101,46,10,10,32,32,32,32, + 32,32,32,32,73,102,32,116,104,101,32,112,97,116,104,32, + 99,97,108,108,101,100,32,111,110,32,116,104,101,32,99,108, + 111,115,117,114,101,32,105,115,32,110,111,116,32,97,32,100, + 105,114,101,99,116,111,114,121,44,32,73,109,112,111,114,116, + 69,114,114,111,114,32,105,115,10,32,32,32,32,32,32,32, + 32,114,97,105,115,101,100,46,10,10,32,32,32,32,32,32, + 32,32,99,1,0,0,0,0,0,0,0,1,0,0,0,4, + 0,0,0,19,0,0,0,115,43,0,0,0,116,0,0,124, + 0,0,131,1,0,115,30,0,116,1,0,100,1,0,100,2, + 0,124,0,0,131,1,1,130,1,0,136,0,0,124,0,0, 136,1,0,140,1,0,83,41,3,122,45,80,97,116,104,32, 104,111,111,107,32,102,111,114,32,105,109,112,111,114,116,108, 105,98,46,109,97,99,104,105,110,101,114,121,46,70,105,108, @@ -3759,17 +3682,17 @@ const unsigned char _Py_M__importlib[] = { 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,154,0,0,0,41,1,114,35,0,0,0, - 41,2,114,12,1,0,0,114,93,1,0,0,114,4,0,0, + 41,2,114,10,1,0,0,114,93,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, - 54,8,0,0,115,6,0,0,0,0,2,12,1,21,1,122, + 22,8,0,0,115,6,0,0,0,0,2,12,1,18,1,122, 54,70,105,108,101,70,105,110,100,101,114,46,112,97,116,104, 95,104,111,111,107,46,60,108,111,99,97,108,115,62,46,112, 97,116,104,95,104,111,111,107,95,102,111,114,95,70,105,108, - 101,70,105,110,100,101,114,114,4,0,0,0,41,3,114,12, - 1,0,0,114,93,1,0,0,114,100,1,0,0,114,4,0, - 0,0,41,2,114,12,1,0,0,114,93,1,0,0,114,5, - 0,0,0,218,9,112,97,116,104,95,104,111,111,107,44,8, + 101,70,105,110,100,101,114,114,4,0,0,0,41,3,114,10, + 1,0,0,114,93,1,0,0,114,99,1,0,0,114,4,0, + 0,0,41,2,114,10,1,0,0,114,93,1,0,0,114,5, + 0,0,0,218,9,112,97,116,104,95,104,111,111,107,12,8, 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, @@ -3778,15 +3701,15 @@ const unsigned char _Py_M__importlib[] = { 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,71, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,101,0,0,0,62,8,0,0,115,2,0,0,0, + 0,0,114,101,0,0,0,30,8,0,0,115,2,0,0,0, 0,1,122,19,70,105,108,101,70,105,110,100,101,114,46,95, 95,114,101,112,114,95,95,41,15,114,57,0,0,0,114,56, 0,0,0,114,58,0,0,0,114,59,0,0,0,114,72,0, - 0,0,114,75,1,0,0,114,173,0,0,0,114,15,1,0, - 0,114,166,0,0,0,114,86,1,0,0,114,14,1,0,0, - 114,94,1,0,0,114,19,1,0,0,114,101,1,0,0,114, + 0,0,114,74,1,0,0,114,173,0,0,0,114,13,1,0, + 0,114,166,0,0,0,114,86,1,0,0,114,12,1,0,0, + 114,94,1,0,0,114,17,1,0,0,114,100,1,0,0,114, 101,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,87,1,0,0,178,7,0, + 0,0,0,114,5,0,0,0,114,87,1,0,0,146,7,0, 0,115,20,0,0,0,12,7,6,2,12,14,12,4,6,2, 12,12,12,5,15,45,12,31,18,18,114,87,1,0,0,99, 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0, @@ -3802,8 +3725,8 @@ const unsigned char _Py_M__importlib[] = { 106,1,0,131,0,0,1,100,1,0,83,41,2,122,24,65, 99,113,117,105,114,101,32,116,104,101,32,105,109,112,111,114, 116,32,108,111,99,107,46,78,41,2,114,106,0,0,0,114, - 4,1,0,0,41,1,114,71,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,75,0,0,0,72, + 2,1,0,0,41,1,114,71,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,75,0,0,0,40, 8,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, @@ -3817,560 +3740,555 @@ const unsigned char _Py_M__importlib[] = { 71,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,81,0,0,0,76,8,0,0, + 0,0,114,5,0,0,0,114,81,0,0,0,44,8,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,75,0,0,0, 114,81,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,102,1,0,0,68,8, - 0,0,115,6,0,0,0,12,2,6,2,12,4,114,102,1, + 4,0,0,0,114,5,0,0,0,114,101,1,0,0,36,8, + 0,0,115,6,0,0,0,12,2,6,2,12,4,114,101,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,0,67,0,0,0,115,88,0,0,0,124,1,0,106, 0,0,100,1,0,124,2,0,100,2,0,24,131,2,0,125, 3,0,116,1,0,124,3,0,131,1,0,124,2,0,107,0, - 0,114,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,114,116,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,84,0,0,0, - 122,5,123,125,46,123,125,41,4,114,34,0,0,0,114,31, - 0,0,0,114,133,0,0,0,114,47,0,0,0,41,5,114, - 67,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,114,128,0,0,0,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,81,8,0, - 0,115,10,0,0,0,0,2,22,1,18,1,15,1,10,1, - 114,105,1,0,0,99,3,0,0,0,0,0,0,0,4,0, - 0,0,3,0,0,0,67,0,0,0,115,47,0,0,0,124, - 0,0,106,0,0,124,1,0,124,2,0,131,2,0,125,3, - 0,124,3,0,100,0,0,107,8,0,114,34,0,100,0,0, - 83,116,1,0,124,1,0,124,3,0,131,2,0,83,41,1, - 78,41,2,114,15,1,0,0,114,174,0,0,0,41,4,114, - 78,1,0,0,114,67,0,0,0,114,35,0,0,0,114,170, + 0,114,52,0,116,2,0,100,3,0,131,1,0,130,1,0, + 124,3,0,100,4,0,25,125,4,0,124,0,0,114,84,0, + 100,5,0,106,3,0,124,4,0,124,0,0,131,2,0,83, + 124,4,0,83,41,6,122,50,82,101,115,111,108,118,101,32, + 97,32,114,101,108,97,116,105,118,101,32,109,111,100,117,108, + 101,32,110,97,109,101,32,116,111,32,97,110,32,97,98,115, + 111,108,117,116,101,32,111,110,101,46,114,116,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,84,0,0,0,122,5,123, + 125,46,123,125,41,4,114,34,0,0,0,114,31,0,0,0, + 114,133,0,0,0,114,47,0,0,0,41,5,114,67,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,114,128,0,0,0,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,49,8,0,0,115,10, + 0,0,0,0,2,22,1,18,1,12,1,10,1,114,104,1, + 0,0,99,3,0,0,0,0,0,0,0,4,0,0,0,3, + 0,0,0,67,0,0,0,115,47,0,0,0,124,0,0,106, + 0,0,124,1,0,124,2,0,131,2,0,125,3,0,124,3, + 0,100,0,0,107,8,0,114,34,0,100,0,0,83,116,1, + 0,124,1,0,124,3,0,131,2,0,83,41,1,78,41,2, + 114,13,1,0,0,114,174,0,0,0,41,4,114,77,1,0, + 0,114,67,0,0,0,114,35,0,0,0,114,170,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 17,95,102,105,110,100,95,115,112,101,99,95,108,101,103,97, + 99,121,58,8,0,0,115,8,0,0,0,0,3,18,1,12, + 1,4,1,114,105,1,0,0,99,3,0,0,0,0,0,0, + 0,9,0,0,0,26,0,0,0,67,0,0,0,115,41,1, + 0,0,116,0,0,106,1,0,100,1,0,107,9,0,114,41, + 0,116,0,0,106,1,0,12,114,41,0,116,2,0,106,3, + 0,100,2,0,116,4,0,131,2,0,1,124,0,0,116,0, + 0,106,5,0,107,6,0,125,3,0,120,234,0,116,0,0, + 106,1,0,68,93,219,0,125,4,0,116,6,0,131,0,0, + 143,90,0,1,121,13,0,124,4,0,106,7,0,125,5,0, + 87,110,51,0,4,116,8,0,107,10,0,114,148,0,1,1, + 1,116,9,0,124,4,0,124,0,0,124,1,0,131,3,0, + 125,6,0,124,6,0,100,1,0,107,8,0,114,144,0,119, + 66,0,89,110,19,0,88,124,5,0,124,0,0,124,1,0, + 124,2,0,131,3,0,125,6,0,87,100,1,0,81,88,124, + 6,0,100,1,0,107,9,0,114,66,0,124,3,0,12,114, + 25,1,124,0,0,116,0,0,106,5,0,107,6,0,114,25, + 1,116,0,0,106,5,0,124,0,0,25,125,7,0,121,13, + 0,124,7,0,106,10,0,125,8,0,87,110,22,0,4,116, + 8,0,107,10,0,114,1,1,1,1,1,124,6,0,83,89, + 113,29,1,88,124,8,0,100,1,0,107,8,0,114,18,1, + 124,6,0,83,124,8,0,83,113,66,0,124,6,0,83,113, + 66,0,87,100,1,0,83,100,1,0,83,41,3,122,23,70, + 105,110,100,32,97,32,109,111,100,117,108,101,39,115,32,108, + 111,97,100,101,114,46,78,122,22,115,121,115,46,109,101,116, + 97,95,112,97,116,104,32,105,115,32,101,109,112,116,121,41, + 11,114,7,0,0,0,218,9,109,101,116,97,95,112,97,116, + 104,114,167,0,0,0,114,168,0,0,0,114,169,0,0,0, + 114,73,0,0,0,114,101,1,0,0,114,12,1,0,0,114, + 208,0,0,0,114,105,1,0,0,114,207,0,0,0,41,9, + 114,67,0,0,0,114,35,0,0,0,114,11,1,0,0,90, + 9,105,115,95,114,101,108,111,97,100,114,77,1,0,0,114, + 12,1,0,0,114,177,0,0,0,114,178,0,0,0,114,207, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,10,95,102,105,110,100,95,115,112,101,99,67,8, + 0,0,115,48,0,0,0,0,2,25,1,16,4,15,1,16, + 1,10,1,3,1,13,1,13,1,18,1,12,1,8,2,24, + 1,12,2,22,1,13,1,3,1,13,1,13,4,9,2,12, + 1,4,2,7,2,8,2,114,107,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,179,0,0,0,116,0,0,124,0,0,116,1,0,131, + 2,0,115,42,0,116,2,0,100,1,0,106,3,0,116,4, + 0,124,0,0,131,1,0,131,1,0,131,1,0,130,1,0, + 124,2,0,100,2,0,107,0,0,114,66,0,116,5,0,100, + 3,0,131,1,0,130,1,0,124,1,0,114,144,0,116,0, + 0,124,1,0,116,1,0,131,2,0,115,102,0,116,2,0, + 100,4,0,131,1,0,130,1,0,110,42,0,124,1,0,116, + 6,0,106,7,0,107,7,0,114,144,0,100,5,0,125,3, + 0,116,8,0,124,3,0,106,3,0,124,1,0,131,1,0, + 131,1,0,130,1,0,124,0,0,12,114,175,0,124,2,0, + 100,2,0,107,2,0,114,175,0,116,5,0,100,6,0,131, + 1,0,130,1,0,100,7,0,83,41,8,122,28,86,101,114, + 105,102,121,32,97,114,103,117,109,101,110,116,115,32,97,114, + 101,32,34,115,97,110,101,34,46,122,31,109,111,100,117,108, + 101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,115, + 116,114,44,32,110,111,116,32,123,125,114,84,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,191,0,0,0,114,83, + 1,0,0,218,9,84,121,112,101,69,114,114,111,114,114,47, + 0,0,0,114,66,0,0,0,114,133,0,0,0,114,7,0, + 0,0,114,73,0,0,0,218,11,83,121,115,116,101,109,69, + 114,114,111,114,41,4,114,67,0,0,0,114,102,1,0,0, + 114,103,1,0,0,114,172,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,107,8,0,0,115,24,0,0, + 0,0,2,15,1,27,1,12,1,12,1,6,1,15,1,15, + 1,15,1,6,2,21,1,19,1,114,110,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,12,0,0,0,67,0,0,0,115,40,1,0,0, + 100,0,0,125,2,0,124,0,0,106,0,0,100,1,0,131, + 1,0,100,2,0,25,125,3,0,124,3,0,114,175,0,124, + 3,0,116,1,0,106,2,0,107,7,0,114,59,0,116,3, + 0,124,1,0,124,3,0,131,2,0,1,124,0,0,116,1, + 0,106,2,0,107,6,0,114,85,0,116,1,0,106,2,0, + 124,0,0,25,83,116,1,0,106,2,0,124,3,0,25,125, + 4,0,121,13,0,124,4,0,106,4,0,125,2,0,87,110, + 61,0,4,116,5,0,107,10,0,114,174,0,1,1,1,116, + 6,0,100,3,0,23,106,7,0,124,0,0,124,3,0,131, + 2,0,125,5,0,116,8,0,124,5,0,100,4,0,124,0, + 0,131,1,1,100,0,0,130,2,0,89,110,1,0,88,116, + 9,0,124,0,0,124,2,0,131,2,0,125,6,0,124,6, + 0,100,0,0,107,8,0,114,232,0,116,8,0,116,6,0, + 106,7,0,124,0,0,131,1,0,100,4,0,124,0,0,131, + 1,1,130,1,0,110,12,0,116,10,0,124,6,0,131,1, + 0,125,7,0,124,3,0,114,36,1,116,1,0,106,2,0, + 124,3,0,25,125,4,0,116,11,0,124,4,0,124,0,0, + 106,0,0,100,1,0,131,1,0,100,5,0,25,124,7,0, + 131,3,0,1,124,7,0,83,41,6,78,114,116,0,0,0, + 114,84,0,0,0,122,23,59,32,123,33,114,125,32,105,115, + 32,110,111,116,32,97,32,112,97,99,107,97,103,101,114,67, + 0,0,0,114,115,0,0,0,41,12,114,32,0,0,0,114, + 7,0,0,0,114,73,0,0,0,114,114,0,0,0,114,246, + 0,0,0,114,208,0,0,0,218,8,95,69,82,82,95,77, + 83,71,114,47,0,0,0,114,154,0,0,0,114,107,1,0, + 0,114,5,1,0,0,114,61,0,0,0,41,8,114,67,0, + 0,0,218,7,105,109,112,111,114,116,95,114,35,0,0,0, + 114,233,0,0,0,90,13,112,97,114,101,110,116,95,109,111, + 100,117,108,101,114,172,0,0,0,114,177,0,0,0,114,178, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,17,95,102,105,110,100,95,115,112,101,99,95,108, - 101,103,97,99,121,90,8,0,0,115,8,0,0,0,0,3, - 18,1,12,1,4,1,114,106,1,0,0,99,3,0,0,0, - 0,0,0,0,9,0,0,0,26,0,0,0,67,0,0,0, - 115,34,1,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,124,0,0,116,0,0,106,5,0,107,6,0,125,3,0, - 120,240,0,116,0,0,106,1,0,68,93,225,0,125,4,0, - 116,6,0,131,0,0,143,93,0,1,121,13,0,124,4,0, - 106,7,0,125,5,0,87,110,54,0,4,116,8,0,107,10, - 0,114,138,0,1,1,1,116,9,0,124,4,0,124,0,0, - 124,1,0,131,3,0,125,6,0,124,6,0,100,2,0,107, - 8,0,114,134,0,119,53,0,110,0,0,89,110,19,0,88, - 124,5,0,124,0,0,124,1,0,124,2,0,131,3,0,125, - 6,0,87,100,2,0,81,88,124,6,0,100,2,0,107,9, - 0,114,53,0,124,3,0,12,114,15,1,124,0,0,116,0, - 0,106,5,0,107,6,0,114,15,1,116,0,0,106,5,0, - 124,0,0,25,125,7,0,121,13,0,124,7,0,106,10,0, - 125,8,0,87,110,22,0,4,116,8,0,107,10,0,114,247, - 0,1,1,1,124,6,0,83,89,113,19,1,88,124,8,0, - 100,2,0,107,8,0,114,8,1,124,6,0,83,124,8,0, - 83,113,22,1,124,6,0,83,113,53,0,113,53,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,11,114,7,0, - 0,0,218,9,109,101,116,97,95,112,97,116,104,114,167,0, - 0,0,114,168,0,0,0,114,169,0,0,0,114,73,0,0, - 0,114,102,1,0,0,114,14,1,0,0,114,210,0,0,0, - 114,106,1,0,0,114,209,0,0,0,41,9,114,67,0,0, - 0,114,35,0,0,0,114,13,1,0,0,90,9,105,115,95, - 114,101,108,111,97,100,114,78,1,0,0,114,14,1,0,0, - 114,178,0,0,0,114,180,0,0,0,114,209,0,0,0,114, + 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,127,8,0,0,115, + 42,0,0,0,0,1,6,1,19,1,6,1,15,1,13,2, + 15,1,11,1,13,1,3,1,13,1,13,1,22,1,26,1, + 15,1,12,1,30,2,12,1,6,2,13,1,29,1,114,113, + 1,0,0,99,2,0,0,0,0,0,0,0,2,0,0,0, + 10,0,0,0,67,0,0,0,115,36,0,0,0,116,0,0, + 124,0,0,131,1,0,143,18,0,1,116,1,0,124,0,0, + 124,1,0,131,2,0,83,87,100,1,0,81,88,100,1,0, + 83,41,2,122,54,70,105,110,100,32,97,110,100,32,108,111, + 97,100,32,116,104,101,32,109,111,100,117,108,101,44,32,97, + 110,100,32,114,101,108,101,97,115,101,32,116,104,101,32,105, + 109,112,111,114,116,32,108,111,99,107,46,78,41,2,114,103, + 0,0,0,114,113,1,0,0,41,2,114,67,0,0,0,114, + 112,1,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,154,8,0,0,115,4,0,0,0,0,2,13,1, + 114,114,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,166,0,0,0,116, + 0,0,124,0,0,124,1,0,124,2,0,131,3,0,1,124, + 2,0,100,1,0,107,4,0,114,46,0,116,1,0,124,0, + 0,124,1,0,124,2,0,131,3,0,125,0,0,116,2,0, + 106,3,0,131,0,0,1,124,0,0,116,4,0,106,5,0, + 107,7,0,114,84,0,116,6,0,124,0,0,116,7,0,131, + 2,0,83,116,4,0,106,5,0,124,0,0,25,125,3,0, + 124,3,0,100,2,0,107,8,0,114,152,0,116,2,0,106, + 8,0,131,0,0,1,100,3,0,106,9,0,124,0,0,131, + 1,0,125,4,0,116,10,0,124,4,0,100,4,0,124,0, + 0,131,1,1,130,1,0,116,11,0,124,0,0,131,1,0, + 1,124,3,0,83,41,5,97,50,1,0,0,73,109,112,111, + 114,116,32,97,110,100,32,114,101,116,117,114,110,32,116,104, + 101,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, + 110,32,105,116,115,32,110,97,109,101,44,32,116,104,101,32, + 112,97,99,107,97,103,101,32,116,104,101,32,99,97,108,108, + 32,105,115,10,32,32,32,32,98,101,105,110,103,32,109,97, + 100,101,32,102,114,111,109,44,32,97,110,100,32,116,104,101, + 32,108,101,118,101,108,32,97,100,106,117,115,116,109,101,110, + 116,46,10,10,32,32,32,32,84,104,105,115,32,102,117,110, + 99,116,105,111,110,32,114,101,112,114,101,115,101,110,116,115, + 32,116,104,101,32,103,114,101,97,116,101,115,116,32,99,111, + 109,109,111,110,32,100,101,110,111,109,105,110,97,116,111,114, + 32,111,102,32,102,117,110,99,116,105,111,110,97,108,105,116, + 121,10,32,32,32,32,98,101,116,119,101,101,110,32,105,109, + 112,111,114,116,95,109,111,100,117,108,101,32,97,110,100,32, + 95,95,105,109,112,111,114,116,95,95,46,32,84,104,105,115, + 32,105,110,99,108,117,100,101,115,32,115,101,116,116,105,110, + 103,32,95,95,112,97,99,107,97,103,101,95,95,32,105,102, + 10,32,32,32,32,116,104,101,32,108,111,97,100,101,114,32, + 100,105,100,32,110,111,116,46,10,10,32,32,32,32,114,84, + 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,67, + 0,0,0,41,12,114,110,1,0,0,114,104,1,0,0,114, + 106,0,0,0,114,2,1,0,0,114,7,0,0,0,114,73, + 0,0,0,114,114,1,0,0,218,11,95,103,99,100,95,105, + 109,112,111,114,116,114,107,0,0,0,114,47,0,0,0,114, + 154,0,0,0,114,112,0,0,0,41,5,114,67,0,0,0, + 114,102,1,0,0,114,103,1,0,0,114,178,0,0,0,114, + 152,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,115,1,0,0,160,8,0,0,115,28,0,0, + 0,0,9,16,1,12,1,18,1,10,1,15,1,13,1,13, + 1,12,1,10,1,6,1,9,1,18,1,10,1,114,115,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,239,0,0,0,116,0,0,124, + 0,0,100,1,0,131,2,0,114,235,0,100,2,0,124,1, + 0,107,6,0,114,83,0,116,1,0,124,1,0,131,1,0, + 125,1,0,124,1,0,106,2,0,100,2,0,131,1,0,1, + 116,0,0,124,0,0,100,3,0,131,2,0,114,83,0,124, + 1,0,106,3,0,124,0,0,106,4,0,131,1,0,1,120, + 149,0,124,1,0,68,93,141,0,125,3,0,116,0,0,124, + 0,0,124,3,0,131,2,0,115,90,0,100,4,0,106,5, + 0,124,0,0,106,6,0,124,3,0,131,2,0,125,4,0, + 121,17,0,116,7,0,124,2,0,124,4,0,131,2,0,1, + 87,113,90,0,4,116,8,0,107,10,0,114,230,0,1,125, + 5,0,1,122,47,0,116,9,0,124,5,0,131,1,0,106, + 10,0,116,11,0,131,1,0,114,209,0,124,5,0,106,12, + 0,124,4,0,107,2,0,114,209,0,119,90,0,130,0,0, + 87,89,100,5,0,100,5,0,125,5,0,126,5,0,88,113, + 90,0,88,113,90,0,87,124,0,0,83,41,6,122,238,70, + 105,103,117,114,101,32,111,117,116,32,119,104,97,116,32,95, + 95,105,109,112,111,114,116,95,95,32,115,104,111,117,108,100, + 32,114,101,116,117,114,110,46,10,10,32,32,32,32,84,104, + 101,32,105,109,112,111,114,116,95,32,112,97,114,97,109,101, + 116,101,114,32,105,115,32,97,32,99,97,108,108,97,98,108, + 101,32,119,104,105,99,104,32,116,97,107,101,115,32,116,104, + 101,32,110,97,109,101,32,111,102,32,109,111,100,117,108,101, + 32,116,111,10,32,32,32,32,105,109,112,111,114,116,46,32, + 73,116,32,105,115,32,114,101,113,117,105,114,101,100,32,116, + 111,32,100,101,99,111,117,112,108,101,32,116,104,101,32,102, + 117,110,99,116,105,111,110,32,102,114,111,109,32,97,115,115, + 117,109,105,110,103,32,105,109,112,111,114,116,108,105,98,39, + 115,10,32,32,32,32,105,109,112,111,114,116,32,105,109,112, + 108,101,109,101,110,116,97,116,105,111,110,32,105,115,32,100, + 101,115,105,114,101,100,46,10,10,32,32,32,32,114,246,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,114,245,0, + 0,0,218,6,114,101,109,111,118,101,114,196,0,0,0,114, + 117,1,0,0,114,47,0,0,0,114,57,0,0,0,114,114, + 0,0,0,114,154,0,0,0,114,83,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,67,0,0,0,41,6,114,178,0,0,0,218, + 8,102,114,111,109,108,105,115,116,114,112,1,0,0,114,16, + 0,0,0,90,9,102,114,111,109,95,110,97,109,101,114,40, + 1,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,184,8,0,0,115,34,0,0,0,0,10,15, + 1,12,1,12,1,13,1,15,1,16,1,13,1,15,1,21, + 1,3,1,17,1,18,4,21,1,15,1,3,1,26,1,114, + 121,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,72,0,0,0,124,0, + 0,106,0,0,100,1,0,131,1,0,125,1,0,124,1,0, + 100,2,0,107,8,0,114,68,0,124,0,0,100,3,0,25, + 125,1,0,100,4,0,124,0,0,107,7,0,114,68,0,124, + 1,0,106,1,0,100,5,0,131,1,0,100,6,0,25,125, + 1,0,124,1,0,83,41,7,122,167,67,97,108,99,117,108, + 97,116,101,32,119,104,97,116,32,95,95,112,97,99,107,97, + 103,101,95,95,32,115,104,111,117,108,100,32,98,101,46,10, + 10,32,32,32,32,95,95,112,97,99,107,97,103,101,95,95, + 32,105,115,32,110,111,116,32,103,117,97,114,97,110,116,101, + 101,100,32,116,111,32,98,101,32,100,101,102,105,110,101,100, + 32,111,114,32,99,111,117,108,100,32,98,101,32,115,101,116, + 32,116,111,32,78,111,110,101,10,32,32,32,32,116,111,32, + 114,101,112,114,101,115,101,110,116,32,116,104,97,116,32,105, + 116,115,32,112,114,111,112,101,114,32,118,97,108,117,101,32, + 105,115,32,117,110,107,110,111,119,110,46,10,10,32,32,32, + 32,114,249,0,0,0,78,114,57,0,0,0,114,246,0,0, + 0,114,116,0,0,0,114,84,0,0,0,41,2,114,93,0, + 0,0,114,32,0,0,0,41,2,218,7,103,108,111,98,97, + 108,115,114,102,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,216,8,0,0,115,12,0, + 0,0,0,7,15,1,12,1,10,1,12,1,19,1,114,123, + 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,56,1,0,0,114,106, + 0,0,0,218,18,101,120,116,101,110,115,105,111,110,95,115, + 117,102,102,105,120,101,115,114,7,1,0,0,114,135,0,0, + 0,114,6,1,0,0,114,232,0,0,0,41,3,90,10,101, + 120,116,101,110,115,105,111,110,115,90,6,115,111,117,114,99, + 101,90,8,98,121,116,101,99,111,100,101,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,240,0,0,0,231, + 8,0,0,115,8,0,0,0,0,5,18,1,12,1,12,1, + 114,240,0,0,0,99,5,0,0,0,0,0,0,0,9,0, + 0,0,5,0,0,0,67,0,0,0,115,227,0,0,0,124, + 4,0,100,1,0,107,2,0,114,27,0,116,0,0,124,0, + 0,131,1,0,125,5,0,110,54,0,124,1,0,100,2,0, + 107,9,0,114,45,0,124,1,0,110,3,0,105,0,0,125, + 6,0,116,1,0,124,6,0,131,1,0,125,7,0,116,0, + 0,124,0,0,124,7,0,124,4,0,131,3,0,125,5,0, + 124,3,0,115,207,0,124,4,0,100,1,0,107,2,0,114, + 122,0,116,0,0,124,0,0,106,2,0,100,3,0,131,1, + 0,100,1,0,25,131,1,0,83,124,0,0,115,132,0,124, + 5,0,83,116,3,0,124,0,0,131,1,0,116,3,0,124, + 0,0,106,2,0,100,3,0,131,1,0,100,1,0,25,131, + 1,0,24,125,8,0,116,4,0,106,5,0,124,5,0,106, + 6,0,100,2,0,116,3,0,124,5,0,106,6,0,131,1, + 0,124,8,0,24,133,2,0,25,25,83,110,16,0,116,7, + 0,124,5,0,124,3,0,116,0,0,131,3,0,83,100,2, + 0,83,41,4,97,214,1,0,0,73,109,112,111,114,116,32, + 97,32,109,111,100,117,108,101,46,10,10,32,32,32,32,84, + 104,101,32,39,103,108,111,98,97,108,115,39,32,97,114,103, + 117,109,101,110,116,32,105,115,32,117,115,101,100,32,116,111, + 32,105,110,102,101,114,32,119,104,101,114,101,32,116,104,101, + 32,105,109,112,111,114,116,32,105,115,32,111,99,99,117,114, + 105,110,103,32,102,114,111,109,10,32,32,32,32,116,111,32, + 104,97,110,100,108,101,32,114,101,108,97,116,105,118,101,32, + 105,109,112,111,114,116,115,46,32,84,104,101,32,39,108,111, + 99,97,108,115,39,32,97,114,103,117,109,101,110,116,32,105, + 115,32,105,103,110,111,114,101,100,46,32,84,104,101,10,32, + 32,32,32,39,102,114,111,109,108,105,115,116,39,32,97,114, + 103,117,109,101,110,116,32,115,112,101,99,105,102,105,101,115, + 32,119,104,97,116,32,115,104,111,117,108,100,32,101,120,105, + 115,116,32,97,115,32,97,116,116,114,105,98,117,116,101,115, + 32,111,110,32,116,104,101,32,109,111,100,117,108,101,10,32, + 32,32,32,98,101,105,110,103,32,105,109,112,111,114,116,101, + 100,32,40,101,46,103,46,32,96,96,102,114,111,109,32,109, + 111,100,117,108,101,32,105,109,112,111,114,116,32,60,102,114, + 111,109,108,105,115,116,62,96,96,41,46,32,32,84,104,101, + 32,39,108,101,118,101,108,39,10,32,32,32,32,97,114,103, + 117,109,101,110,116,32,114,101,112,114,101,115,101,110,116,115, + 32,116,104,101,32,112,97,99,107,97,103,101,32,108,111,99, + 97,116,105,111,110,32,116,111,32,105,109,112,111,114,116,32, + 102,114,111,109,32,105,110,32,97,32,114,101,108,97,116,105, + 118,101,10,32,32,32,32,105,109,112,111,114,116,32,40,101, + 46,103,46,32,96,96,102,114,111,109,32,46,46,112,107,103, + 32,105,109,112,111,114,116,32,109,111,100,96,96,32,119,111, + 117,108,100,32,104,97,118,101,32,97,32,39,108,101,118,101, + 108,39,32,111,102,32,50,41,46,10,10,32,32,32,32,114, + 84,0,0,0,78,114,116,0,0,0,41,8,114,115,1,0, + 0,114,123,1,0,0,114,134,0,0,0,114,31,0,0,0, + 114,7,0,0,0,114,73,0,0,0,114,57,0,0,0,114, + 121,1,0,0,41,9,114,67,0,0,0,114,122,1,0,0, + 218,6,108,111,99,97,108,115,114,120,1,0,0,114,103,1, + 0,0,114,178,0,0,0,90,8,103,108,111,98,97,108,115, + 95,114,102,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,102,105,110,100,95,115,112,101,99,99,8,0,0,115,48, - 0,0,0,0,2,9,1,19,4,15,1,16,1,10,1,3, - 1,13,1,13,1,18,1,12,1,11,2,24,1,12,2,22, - 1,13,1,3,1,13,1,13,4,9,2,12,1,4,2,7, - 2,11,2,114,108,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,84,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,193,0,0,0,114,83,1,0,0,218,9, - 84,121,112,101,69,114,114,111,114,114,47,0,0,0,114,66, - 0,0,0,114,133,0,0,0,114,7,0,0,0,114,73,0, - 0,0,218,11,83,121,115,116,101,109,69,114,114,111,114,41, - 4,114,67,0,0,0,114,103,1,0,0,114,104,1,0,0, - 114,172,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,139,8,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,111,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,12,0, - 0,0,67,0,0,0,115,52,1,0,0,100,0,0,125,2, - 0,124,0,0,106,0,0,100,1,0,131,1,0,100,2,0, - 25,125,3,0,124,3,0,114,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,18,0,116,10,0,124,6,0,131,1,0,106, - 11,0,131,0,0,125,7,0,124,3,0,114,48,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,5,0, - 25,124,7,0,131,3,0,1,110,0,0,124,7,0,83,41, - 6,78,114,116,0,0,0,114,84,0,0,0,122,23,59,32, - 123,33,114,125,32,105,115,32,110,111,116,32,97,32,112,97, - 99,107,97,103,101,114,67,0,0,0,114,115,0,0,0,41, - 13,114,32,0,0,0,114,7,0,0,0,114,73,0,0,0, - 114,114,0,0,0,114,247,0,0,0,114,210,0,0,0,218, - 8,95,69,82,82,95,77,83,71,114,47,0,0,0,114,154, - 0,0,0,114,108,1,0,0,114,175,0,0,0,114,7,1, - 0,0,114,61,0,0,0,41,8,114,67,0,0,0,218,7, - 105,109,112,111,114,116,95,114,35,0,0,0,114,234,0,0, - 0,90,13,112,97,114,101,110,116,95,109,111,100,117,108,101, - 114,172,0,0,0,114,178,0,0,0,114,180,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,159,8,0,0,115,42,0,0,0, - 0,1,6,1,19,1,6,1,15,1,16,2,15,1,11,1, - 13,1,3,1,13,1,13,1,22,1,26,1,15,1,12,1, - 30,2,18,1,6,2,13,1,32,1,114,114,1,0,0,99, - 2,0,0,0,0,0,0,0,2,0,0,0,10,0,0,0, - 67,0,0,0,115,36,0,0,0,116,0,0,124,0,0,131, - 1,0,143,18,0,1,116,1,0,124,0,0,124,1,0,131, - 2,0,83,87,100,1,0,81,88,100,1,0,83,41,2,122, - 54,70,105,110,100,32,97,110,100,32,108,111,97,100,32,116, - 104,101,32,109,111,100,117,108,101,44,32,97,110,100,32,114, - 101,108,101,97,115,101,32,116,104,101,32,105,109,112,111,114, - 116,32,108,111,99,107,46,78,41,2,114,103,0,0,0,114, - 114,1,0,0,41,2,114,67,0,0,0,114,113,1,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,186, - 8,0,0,115,4,0,0,0,0,2,13,1,114,115,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,84,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,67,0,0,0,41,12,114,111,1,0,0,114,105,1,0, - 0,114,106,0,0,0,114,4,1,0,0,114,7,0,0,0, - 114,73,0,0,0,114,115,1,0,0,218,11,95,103,99,100, - 95,105,109,112,111,114,116,114,107,0,0,0,114,47,0,0, - 0,114,154,0,0,0,114,112,0,0,0,41,5,114,67,0, - 0,0,114,103,1,0,0,114,104,1,0,0,114,180,0,0, - 0,114,152,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,116,1,0,0,192,8,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,114, - 116,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,247,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,114,246,0,0,0,218,6,114,101,109,111,118,101,114,198, - 0,0,0,114,118,1,0,0,114,47,0,0,0,114,57,0, - 0,0,114,114,0,0,0,114,154,0,0,0,114,83,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,67,0,0,0,41,6,114,180, - 0,0,0,218,8,102,114,111,109,108,105,115,116,114,113,1, - 0,0,114,16,0,0,0,90,9,102,114,111,109,95,110,97, - 109,101,114,41,1,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,216,8,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,122,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,251,0,0,0, - 78,114,57,0,0,0,114,247,0,0,0,114,116,0,0,0, - 114,84,0,0,0,41,2,114,93,0,0,0,114,32,0,0, - 0,41,2,218,7,103,108,111,98,97,108,115,114,103,1,0, + 95,95,105,109,112,111,114,116,95,95,242,8,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,126,1, + 0,0,99,1,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,67,0,0,0,115,53,0,0,0,116,0,0,106, + 1,0,124,0,0,131,1,0,125,1,0,124,1,0,100,0, + 0,107,8,0,114,43,0,116,2,0,100,1,0,124,0,0, + 23,131,1,0,130,1,0,116,3,0,124,1,0,131,1,0, + 83,41,2,78,122,25,110,111,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,32,110,97,109,101,100,32,41, + 4,114,9,1,0,0,114,12,1,0,0,114,154,0,0,0, + 114,5,1,0,0,41,2,114,67,0,0,0,114,177,0,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,248,8,0,0,115,12,0,0,0,0,7,15,1, - 12,1,10,1,12,1,25,1,114,124,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,57,1,0,0,114,106,0,0,0,218,18,101, - 120,116,101,110,115,105,111,110,95,115,117,102,102,105,120,101, - 115,114,9,1,0,0,114,135,0,0,0,114,8,1,0,0, - 114,233,0,0,0,41,3,90,10,101,120,116,101,110,115,105, - 111,110,115,90,6,115,111,117,114,99,101,90,8,98,121,116, - 101,99,111,100,101,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,241,0,0,0,7,9,0,0,115,8,0, - 0,0,0,5,18,1,12,1,12,1,114,241,0,0,0,99, - 5,0,0,0,0,0,0,0,9,0,0,0,5,0,0,0, - 67,0,0,0,115,227,0,0,0,124,4,0,100,1,0,107, - 2,0,114,27,0,116,0,0,124,0,0,131,1,0,125,5, - 0,110,54,0,124,1,0,100,2,0,107,9,0,114,45,0, - 124,1,0,110,3,0,105,0,0,125,6,0,116,1,0,124, - 6,0,131,1,0,125,7,0,116,0,0,124,0,0,124,7, - 0,124,4,0,131,3,0,125,5,0,124,3,0,115,207,0, - 124,4,0,100,1,0,107,2,0,114,122,0,116,0,0,124, - 0,0,106,2,0,100,3,0,131,1,0,100,1,0,25,131, - 1,0,83,124,0,0,115,132,0,124,5,0,83,116,3,0, - 124,0,0,131,1,0,116,3,0,124,0,0,106,2,0,100, - 3,0,131,1,0,100,1,0,25,131,1,0,24,125,8,0, - 116,4,0,106,5,0,124,5,0,106,6,0,100,2,0,116, - 3,0,124,5,0,106,6,0,131,1,0,124,8,0,24,133, - 2,0,25,25,83,110,16,0,116,7,0,124,5,0,124,3, - 0,116,0,0,131,3,0,83,100,2,0,83,41,4,97,214, - 1,0,0,73,109,112,111,114,116,32,97,32,109,111,100,117, - 108,101,46,10,10,32,32,32,32,84,104,101,32,39,103,108, - 111,98,97,108,115,39,32,97,114,103,117,109,101,110,116,32, - 105,115,32,117,115,101,100,32,116,111,32,105,110,102,101,114, - 32,119,104,101,114,101,32,116,104,101,32,105,109,112,111,114, - 116,32,105,115,32,111,99,99,117,114,105,110,103,32,102,114, - 111,109,10,32,32,32,32,116,111,32,104,97,110,100,108,101, - 32,114,101,108,97,116,105,118,101,32,105,109,112,111,114,116, - 115,46,32,84,104,101,32,39,108,111,99,97,108,115,39,32, - 97,114,103,117,109,101,110,116,32,105,115,32,105,103,110,111, - 114,101,100,46,32,84,104,101,10,32,32,32,32,39,102,114, - 111,109,108,105,115,116,39,32,97,114,103,117,109,101,110,116, - 32,115,112,101,99,105,102,105,101,115,32,119,104,97,116,32, - 115,104,111,117,108,100,32,101,120,105,115,116,32,97,115,32, - 97,116,116,114,105,98,117,116,101,115,32,111,110,32,116,104, - 101,32,109,111,100,117,108,101,10,32,32,32,32,98,101,105, - 110,103,32,105,109,112,111,114,116,101,100,32,40,101,46,103, - 46,32,96,96,102,114,111,109,32,109,111,100,117,108,101,32, - 105,109,112,111,114,116,32,60,102,114,111,109,108,105,115,116, - 62,96,96,41,46,32,32,84,104,101,32,39,108,101,118,101, - 108,39,10,32,32,32,32,97,114,103,117,109,101,110,116,32, - 114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,112, - 97,99,107,97,103,101,32,108,111,99,97,116,105,111,110,32, - 116,111,32,105,109,112,111,114,116,32,102,114,111,109,32,105, - 110,32,97,32,114,101,108,97,116,105,118,101,10,32,32,32, - 32,105,109,112,111,114,116,32,40,101,46,103,46,32,96,96, - 102,114,111,109,32,46,46,112,107,103,32,105,109,112,111,114, - 116,32,109,111,100,96,96,32,119,111,117,108,100,32,104,97, - 118,101,32,97,32,39,108,101,118,101,108,39,32,111,102,32, - 50,41,46,10,10,32,32,32,32,114,84,0,0,0,78,114, - 116,0,0,0,41,8,114,116,1,0,0,114,124,1,0,0, - 114,134,0,0,0,114,31,0,0,0,114,7,0,0,0,114, - 73,0,0,0,114,57,0,0,0,114,122,1,0,0,41,9, - 114,67,0,0,0,114,123,1,0,0,218,6,108,111,99,97, - 108,115,114,121,1,0,0,114,104,1,0,0,114,180,0,0, - 0,90,8,103,108,111,98,97,108,115,95,114,103,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,18,9,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,127,1,0,0,99,1,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, - 0,115,68,0,0,0,116,0,0,106,1,0,124,0,0,131, - 1,0,125,1,0,124,1,0,100,0,0,107,8,0,114,46, - 0,116,2,0,100,1,0,124,0,0,23,131,1,0,130,1, - 0,110,0,0,116,3,0,124,1,0,131,1,0,125,2,0, - 124,2,0,106,4,0,131,0,0,83,41,2,78,122,25,110, - 111,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,32,110,97,109,101,100,32,41,5,114,11,1,0,0,114, - 14,1,0,0,114,154,0,0,0,114,175,0,0,0,114,7, - 1,0,0,41,3,114,67,0,0,0,114,178,0,0,0,114, - 179,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,18,95,98,117,105,108,116,105,110,95,102,114, - 111,109,95,110,97,109,101,53,9,0,0,115,10,0,0,0, - 0,1,15,1,12,1,19,1,12,1,114,128,1,0,0,99, - 2,0,0,0,0,0,0,0,19,0,0,0,12,0,0,0, - 67,0,0,0,115,232,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,138,0,116, - 1,0,106,8,0,106,9,0,131,0,0,68,93,121,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,124,3,0,116,1,0,106,11,0, - 107,6,0,114,118,0,116,12,0,125,5,0,110,27,0,116, - 0,0,106,13,0,124,3,0,131,1,0,114,67,0,116,14, - 0,125,5,0,110,3,0,113,67,0,116,15,0,124,4,0, - 124,5,0,131,2,0,125,6,0,116,16,0,124,6,0,131, - 1,0,125,7,0,124,7,0,106,17,0,124,4,0,131,1, - 0,1,113,67,0,113,67,0,87,116,1,0,106,8,0,116, - 18,0,25,125,8,0,120,73,0,100,26,0,68,93,65,0, - 125,9,0,124,9,0,116,1,0,106,8,0,107,7,0,114, - 248,0,116,19,0,124,9,0,131,1,0,125,10,0,110,13, - 0,116,1,0,106,8,0,124,9,0,25,125,10,0,116,20, - 0,124,8,0,124,9,0,124,10,0,131,3,0,1,113,212, - 0,87,100,5,0,100,6,0,103,1,0,102,2,0,100,7, - 0,100,8,0,100,6,0,103,2,0,102,2,0,102,2,0, - 125,11,0,120,146,0,124,11,0,68,93,126,0,92,2,0, - 125,12,0,125,13,0,116,21,0,100,9,0,100,10,0,132, - 0,0,124,13,0,68,131,1,0,131,1,0,115,108,1,116, - 22,0,130,1,0,124,13,0,100,11,0,25,125,14,0,124, - 12,0,116,1,0,106,8,0,107,6,0,114,150,1,116,1, - 0,106,8,0,124,12,0,25,125,15,0,80,113,65,1,121, - 17,0,116,19,0,124,12,0,131,1,0,125,15,0,80,87, - 113,65,1,4,116,23,0,107,10,0,114,190,1,1,1,1, - 119,65,1,89,113,65,1,88,113,65,1,87,116,23,0,100, - 12,0,131,1,0,130,1,0,116,20,0,124,8,0,100,13, - 0,124,15,0,131,3,0,1,116,20,0,124,8,0,100,14, - 0,124,14,0,131,3,0,1,116,20,0,124,8,0,100,15, - 0,100,16,0,106,24,0,124,13,0,131,1,0,131,3,0, - 1,121,16,0,116,19,0,100,17,0,131,1,0,125,16,0, - 87,110,24,0,4,116,23,0,107,10,0,114,50,2,1,1, - 1,100,18,0,125,16,0,89,110,1,0,88,116,20,0,124, - 8,0,100,17,0,124,16,0,131,3,0,1,116,19,0,100, - 19,0,131,1,0,125,17,0,116,20,0,124,8,0,100,19, - 0,124,17,0,131,3,0,1,124,12,0,100,7,0,107,2, - 0,114,138,2,116,19,0,100,20,0,131,1,0,125,18,0, - 116,20,0,124,8,0,100,21,0,124,18,0,131,3,0,1, - 110,0,0,116,20,0,124,8,0,100,22,0,116,25,0,131, - 0,0,131,3,0,1,116,26,0,106,27,0,116,0,0,106, - 28,0,131,0,0,131,1,0,1,124,12,0,100,7,0,107, - 2,0,114,228,2,116,29,0,106,30,0,100,23,0,131,1, - 0,1,100,24,0,116,26,0,107,6,0,114,228,2,100,25, - 0,116,31,0,95,32,0,113,228,2,110,0,0,100,18,0, - 83,41,27,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, - 49,0,0,0,114,167,0,0,0,218,8,98,117,105,108,116, - 105,110,115,114,192,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,129,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,77, - 0,0,0,105,9,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,84,0,0,0,122,30, - 105,109,112,111,114,116,108,105,98,32,114,101,113,117,105,114, - 101,115,32,112,111,115,105,120,32,111,114,32,110,116,114,3, - 0,0,0,114,25,0,0,0,114,21,0,0,0,114,30,0, - 0,0,114,85,0,0,0,78,114,111,0,0,0,90,6,119, - 105,110,114,101,103,114,24,1,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,33,114,106,0,0,0,114,7,0,0,0,114, - 117,0,0,0,114,118,0,0,0,114,120,0,0,0,114,233, - 0,0,0,114,119,0,0,0,114,66,0,0,0,114,73,0, - 0,0,218,5,105,116,101,109,115,114,193,0,0,0,114,158, - 0,0,0,114,11,1,0,0,114,163,0,0,0,114,20,1, - 0,0,114,248,0,0,0,114,175,0,0,0,114,255,0,0, - 0,114,57,0,0,0,114,128,1,0,0,114,61,0,0,0, - 218,3,97,108,108,114,100,0,0,0,114,154,0,0,0,114, - 26,0,0,0,114,11,0,0,0,114,60,1,0,0,114,198, - 0,0,0,114,125,1,0,0,114,135,0,0,0,114,224,0, - 0,0,114,23,1,0,0,114,27,1,0,0,41,19,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,67,0,0,0,114,180,0,0,0,114,170, - 0,0,0,114,178,0,0,0,114,179,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,61,9,0,0,115,108, - 0,0,0,0,9,6,1,6,2,12,1,9,2,6,3,12, - 1,28,1,15,1,15,1,9,1,15,1,9,2,3,1,15, - 1,12,1,20,3,13,1,13,1,15,1,15,2,13,1,20, - 3,33,1,19,2,31,1,10,1,15,1,13,1,4,2,3, - 1,12,1,5,1,13,1,12,2,12,1,16,1,16,1,25, - 3,3,1,16,1,13,2,11,1,16,3,12,1,16,3,12, - 1,12,1,19,3,19,1,19,1,12,1,13,1,12,1,114, - 137,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,131,1,0, - 0,78,41,15,114,137,1,0,0,114,241,0,0,0,114,7, - 0,0,0,114,79,1,0,0,114,198,0,0,0,114,87,1, - 0,0,114,101,1,0,0,114,107,1,0,0,114,224,0,0, - 0,114,11,1,0,0,114,20,1,0,0,114,3,0,0,0, - 114,57,0,0,0,114,23,1,0,0,114,74,1,0,0,41, - 3,114,135,1,0,0,114,136,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,148,9,0,0,115,16,0,0,0, - 0,2,13,1,9,1,28,1,16,1,16,1,15,1,19,1, - 114,138,1,0,0,41,3,122,3,119,105,110,114,1,0,0, - 0,114,2,0,0,0,41,92,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,39,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,68,0,0,0,114,66, - 0,0,0,218,8,95,95,99,111,100,101,95,95,114,194,0, - 0,0,114,69,0,0,0,114,109,0,0,0,114,92,0,0, - 0,114,99,0,0,0,114,82,0,0,0,114,83,0,0,0, - 114,102,0,0,0,114,103,0,0,0,114,105,0,0,0,114, - 112,0,0,0,114,114,0,0,0,114,15,0,0,0,114,186, - 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,124,0,0,0,114,135,0,0,0,114,119,0,0,0,114, - 120,0,0,0,114,132,0,0,0,114,136,0,0,0,114,143, - 0,0,0,114,145,0,0,0,114,153,0,0,0,114,157,0, - 0,0,114,162,0,0,0,114,165,0,0,0,114,173,0,0, - 0,114,181,0,0,0,114,191,0,0,0,114,196,0,0,0, - 114,199,0,0,0,114,204,0,0,0,114,212,0,0,0,114, - 213,0,0,0,114,217,0,0,0,114,174,0,0,0,218,6, - 111,98,106,101,99,116,114,242,0,0,0,114,240,0,0,0, - 114,248,0,0,0,114,175,0,0,0,114,10,1,0,0,114, - 11,1,0,0,114,20,1,0,0,114,23,1,0,0,114,33, - 1,0,0,114,34,1,0,0,114,49,1,0,0,114,9,1, - 0,0,114,8,1,0,0,114,60,1,0,0,114,57,1,0, - 0,114,61,1,0,0,114,252,0,0,0,114,74,1,0,0, - 114,87,1,0,0,114,102,1,0,0,114,105,1,0,0,114, - 106,1,0,0,114,108,1,0,0,114,111,1,0,0,114,120, - 1,0,0,114,112,1,0,0,114,114,1,0,0,114,115,1, - 0,0,114,116,1,0,0,114,122,1,0,0,114,124,1,0, - 0,114,241,0,0,0,114,127,1,0,0,114,128,1,0,0, - 114,137,1,0,0,114,138,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,170,0,0, - 0,6,17,6,3,12,12,12,5,12,5,12,6,12,12,12, - 10,12,9,12,5,12,7,15,22,12,8,12,4,15,4,19, - 20,6,2,6,3,22,4,19,68,19,21,19,19,12,19,12, - 20,12,114,22,1,18,2,6,2,9,2,9,1,9,2,15, - 27,12,23,12,19,12,12,18,8,12,18,12,11,12,11,12, - 17,12,16,21,55,21,12,18,10,12,14,12,36,19,27,19, - 106,24,22,9,3,12,1,15,63,18,45,19,230,15,25,19, - 70,19,71,19,63,19,24,22,110,19,41,25,43,25,16,6, - 3,19,57,19,57,19,38,19,129,19,146,19,13,12,9,12, - 9,15,40,12,17,6,1,10,2,12,27,12,6,18,24,12, - 32,12,15,12,11,24,35,12,8,12,87, + 218,18,95,98,117,105,108,116,105,110,95,102,114,111,109,95, + 110,97,109,101,21,9,0,0,115,8,0,0,0,0,1,15, + 1,12,1,16,1,114,127,1,0,0,99,2,0,0,0,0, + 0,0,0,18,0,0,0,12,0,0,0,67,0,0,0,115, + 208,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,123,0,116,1,0,106,8,0, + 106,9,0,131,0,0,68,93,106,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,124,3,0,116,1,0,106,11,0,107,6,0,114,118, + 0,116,12,0,125,5,0,110,27,0,116,0,0,106,13,0, + 124,3,0,131,1,0,114,67,0,116,14,0,125,5,0,110, + 3,0,113,67,0,116,15,0,124,4,0,124,5,0,131,2, + 0,125,6,0,116,16,0,124,6,0,124,4,0,131,2,0, + 1,113,67,0,87,116,1,0,106,8,0,116,17,0,25,125, + 7,0,120,73,0,100,26,0,68,93,65,0,125,8,0,124, + 8,0,116,1,0,106,8,0,107,7,0,114,233,0,116,18, + 0,124,8,0,131,1,0,125,9,0,110,13,0,116,1,0, + 106,8,0,124,8,0,25,125,9,0,116,19,0,124,7,0, + 124,8,0,124,9,0,131,3,0,1,113,197,0,87,100,5, + 0,100,6,0,103,1,0,102,2,0,100,7,0,100,8,0, + 100,6,0,103,2,0,102,2,0,102,2,0,125,10,0,120, + 146,0,124,10,0,68,93,126,0,92,2,0,125,11,0,125, + 12,0,116,20,0,100,9,0,100,10,0,132,0,0,124,12, + 0,68,131,1,0,131,1,0,115,93,1,116,21,0,130,1, + 0,124,12,0,100,11,0,25,125,13,0,124,11,0,116,1, + 0,106,8,0,107,6,0,114,135,1,116,1,0,106,8,0, + 124,11,0,25,125,14,0,80,113,50,1,121,17,0,116,18, + 0,124,11,0,131,1,0,125,14,0,80,87,113,50,1,4, + 116,22,0,107,10,0,114,175,1,1,1,1,119,50,1,89, + 113,50,1,88,113,50,1,87,116,22,0,100,12,0,131,1, + 0,130,1,0,116,19,0,124,7,0,100,13,0,124,14,0, + 131,3,0,1,116,19,0,124,7,0,100,14,0,124,13,0, + 131,3,0,1,116,19,0,124,7,0,100,15,0,100,16,0, + 106,23,0,124,12,0,131,1,0,131,3,0,1,121,16,0, + 116,18,0,100,17,0,131,1,0,125,15,0,87,110,24,0, + 4,116,22,0,107,10,0,114,35,2,1,1,1,100,18,0, + 125,15,0,89,110,1,0,88,116,19,0,124,7,0,100,17, + 0,124,15,0,131,3,0,1,116,18,0,100,19,0,131,1, + 0,125,16,0,116,19,0,124,7,0,100,19,0,124,16,0, + 131,3,0,1,124,11,0,100,7,0,107,2,0,114,120,2, + 116,18,0,100,20,0,131,1,0,125,17,0,116,19,0,124, + 7,0,100,21,0,124,17,0,131,3,0,1,116,19,0,124, + 7,0,100,22,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,11,0,100,7,0,107,2,0,114,204,2,116,28, + 0,106,29,0,100,23,0,131,1,0,1,100,24,0,116,25, + 0,107,6,0,114,204,2,100,25,0,116,30,0,95,31,0, + 100,18,0,83,41,27,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,49,0,0,0,114,167,0,0,0,218,8,98,117, + 105,108,116,105,110,115,114,190,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,129,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,77,0,0,0,71,9,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,84,0,0, + 0,122,30,105,109,112,111,114,116,108,105,98,32,114,101,113, + 117,105,114,101,115,32,112,111,115,105,120,32,111,114,32,110, + 116,114,3,0,0,0,114,25,0,0,0,114,21,0,0,0, + 114,30,0,0,0,114,85,0,0,0,78,114,111,0,0,0, + 90,6,119,105,110,114,101,103,114,23,1,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,106,0,0,0,114,7,0, + 0,0,114,117,0,0,0,114,118,0,0,0,114,120,0,0, + 0,114,232,0,0,0,114,119,0,0,0,114,66,0,0,0, + 114,73,0,0,0,218,5,105,116,101,109,115,114,191,0,0, + 0,114,158,0,0,0,114,9,1,0,0,114,163,0,0,0, + 114,18,1,0,0,114,247,0,0,0,114,253,0,0,0,114, + 57,0,0,0,114,127,1,0,0,114,61,0,0,0,218,3, + 97,108,108,114,100,0,0,0,114,154,0,0,0,114,26,0, + 0,0,114,11,0,0,0,114,59,1,0,0,114,196,0,0, + 0,114,124,1,0,0,114,135,0,0,0,114,223,0,0,0, + 114,22,1,0,0,114,26,1,0,0,41,18,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,67,0,0,0,114,178,0,0,0,114,170,0,0, + 0,114,177,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,28,9,0,0,115,106,0,0,0,0,9,6,1, + 6,2,12,1,9,2,6,3,12,1,28,1,15,1,15,1, + 9,1,15,1,9,2,3,1,15,1,17,3,13,1,13,1, + 15,1,15,2,13,1,20,3,33,1,19,2,31,1,10,1, + 15,1,13,1,4,2,3,1,12,1,5,1,13,1,12,2, + 12,1,16,1,16,1,25,3,3,1,16,1,13,2,11,1, + 16,3,12,1,16,3,12,1,12,1,16,3,19,1,19,1, + 12,1,13,1,12,1,114,136,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,133,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,113,0,116,2,0,106,7,0,106,8,0,116, + 13,0,131,1,0,1,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,130,1,0,0,78,41,15,114,136,1,0,0,114,240,0, + 0,0,114,7,0,0,0,114,78,1,0,0,114,196,0,0, + 0,114,87,1,0,0,114,100,1,0,0,114,106,1,0,0, + 114,223,0,0,0,114,9,1,0,0,114,18,1,0,0,114, + 3,0,0,0,114,57,0,0,0,114,22,1,0,0,114,73, + 1,0,0,41,3,114,134,1,0,0,114,135,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,114,9,0,0,115, + 16,0,0,0,0,2,13,1,9,1,28,1,16,1,16,1, + 15,1,16,1,114,137,1,0,0,41,3,122,3,119,105,110, + 114,1,0,0,0,114,2,0,0,0,41,98,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, + 39,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,68,0, + 0,0,114,66,0,0,0,218,8,95,95,99,111,100,101,95, + 95,114,192,0,0,0,114,69,0,0,0,114,109,0,0,0, + 114,92,0,0,0,114,99,0,0,0,114,82,0,0,0,114, + 83,0,0,0,114,102,0,0,0,114,103,0,0,0,114,105, + 0,0,0,114,112,0,0,0,114,114,0,0,0,114,15,0, + 0,0,114,184,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,124,0,0,0,114,135,0,0,0,114,119, + 0,0,0,114,120,0,0,0,114,132,0,0,0,114,136,0, + 0,0,114,143,0,0,0,114,145,0,0,0,114,153,0,0, + 0,114,157,0,0,0,114,162,0,0,0,114,165,0,0,0, + 114,173,0,0,0,114,179,0,0,0,114,189,0,0,0,114, + 194,0,0,0,114,197,0,0,0,114,202,0,0,0,114,211, + 0,0,0,114,212,0,0,0,114,216,0,0,0,114,174,0, + 0,0,218,6,111,98,106,101,99,116,114,241,0,0,0,114, + 239,0,0,0,114,247,0,0,0,114,253,0,0,0,114,1, + 1,0,0,114,209,0,0,0,114,175,0,0,0,114,4,1, + 0,0,114,5,1,0,0,114,176,0,0,0,114,8,1,0, + 0,114,9,1,0,0,114,18,1,0,0,114,22,1,0,0, + 114,32,1,0,0,114,33,1,0,0,114,48,1,0,0,114, + 7,1,0,0,114,6,1,0,0,114,59,1,0,0,114,56, + 1,0,0,114,60,1,0,0,114,250,0,0,0,114,73,1, + 0,0,114,87,1,0,0,114,101,1,0,0,114,104,1,0, + 0,114,105,1,0,0,114,107,1,0,0,114,110,1,0,0, + 114,119,1,0,0,114,111,1,0,0,114,113,1,0,0,114, + 114,1,0,0,114,115,1,0,0,114,121,1,0,0,114,123, + 1,0,0,114,240,0,0,0,114,126,1,0,0,114,127,1, + 0,0,114,136,1,0,0,114,137,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,182, + 0,0,0,6,17,6,3,12,12,12,5,12,5,12,6,12, + 12,12,10,12,9,12,5,12,7,15,22,12,8,12,4,15, + 4,19,20,6,2,6,3,22,4,19,68,19,21,19,19,12, + 19,12,20,12,115,22,1,18,2,6,2,9,2,9,1,9, + 2,15,27,12,23,12,19,12,12,18,8,12,18,12,11,12, + 11,12,18,12,15,21,55,21,12,18,10,12,14,12,36,19, + 27,19,106,24,22,9,3,12,1,15,63,18,45,18,56,12, + 18,12,17,12,25,12,29,12,23,12,14,15,25,19,70,19, + 75,19,63,19,27,22,110,19,41,25,43,25,16,6,3,19, + 57,19,57,19,41,19,134,19,146,19,13,12,9,12,9,15, + 40,12,17,6,1,10,2,12,27,12,6,18,24,12,32,12, + 15,12,11,24,35,12,7,12,86, }; diff --git a/Python/marshal.c b/Python/marshal.c index 6f0ee5e..c1ce2fe 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -12,8 +12,7 @@ #include "longintrepr.h" #include "code.h" #include "marshal.h" - -#define ABS(x) ((x) < 0 ? -(x) : (x)) +#include "../Modules/hashtable.h" /* High water mark to determine when the marshalled object is dangerously deep * and risks coring the interpreter. When the object stack gets this deep, @@ -21,7 +20,7 @@ * On Windows debug builds, reduce this value. */ #if defined(MS_WINDOWS) && defined(_DEBUG) -#define MAX_MARSHAL_STACK_DEPTH 1500 +#define MAX_MARSHAL_STACK_DEPTH 1000 #else #define MAX_MARSHAL_STACK_DEPTH 2000 #endif @@ -66,54 +65,83 @@ typedef struct { FILE *fp; int error; /* see WFERR_* values */ int depth; - /* If fp == NULL, the following are valid: */ - PyObject *readable; /* Stream-like object being read from */ PyObject *str; - PyObject *current_filename; char *ptr; char *end; char *buf; - Py_ssize_t buf_size; - PyObject *refs; /* dict on marshal, list on unmarshal */ + _Py_hashtable_t *hashtable; int version; } WFILE; -#define w_byte(c, p) if (((p)->fp)) putc((c), (p)->fp); \ - else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \ - else w_more((c), p) +#define w_byte(c, p) do { \ + if ((p)->ptr != (p)->end || w_reserve((p), 1)) \ + *(p)->ptr++ = (c); \ + } while(0) static void -w_more(char c, WFILE *p) +w_flush(WFILE *p) +{ + assert(p->fp != NULL); + fwrite(p->buf, 1, p->ptr - p->buf, p->fp); + p->ptr = p->buf; +} + +static int +w_reserve(WFILE *p, Py_ssize_t needed) { - Py_ssize_t size, newsize; - if (p->str == NULL) - return; /* An error already occurred */ + Py_ssize_t pos, size, delta; + if (p->ptr == NULL) + return 0; /* An error already occurred */ + if (p->fp != NULL) { + w_flush(p); + return needed <= p->end - p->ptr; + } + assert(p->str != NULL); + pos = p->ptr - p->buf; size = PyBytes_Size(p->str); - newsize = size + size + 1024; - if (newsize > 32*1024*1024) { - newsize = size + (size >> 3); /* 12.5% overallocation */ + if (size > 16*1024*1024) + delta = (size >> 3); /* 12.5% overallocation */ + else + delta = size + 1024; + delta = Py_MAX(delta, needed); + if (delta > PY_SSIZE_T_MAX - size) { + p->error = WFERR_NOMEMORY; + return 0; } - if (_PyBytes_Resize(&p->str, newsize) != 0) { - p->ptr = p->end = NULL; + size += delta; + if (_PyBytes_Resize(&p->str, size) != 0) { + p->ptr = p->buf = p->end = NULL; + return 0; } else { - p->ptr = PyBytes_AS_STRING((PyBytesObject *)p->str) + size; - p->end = - PyBytes_AS_STRING((PyBytesObject *)p->str) + newsize; - *p->ptr++ = c; + p->buf = PyBytes_AS_STRING(p->str); + p->ptr = p->buf + pos; + p->end = p->buf + size; + return 1; } } static void w_string(const char *s, Py_ssize_t n, WFILE *p) { + Py_ssize_t m; + if (!n || p->ptr == NULL) + return; + m = p->end - p->ptr; if (p->fp != NULL) { - fwrite(s, 1, n, p->fp); + if (n <= m) { + Py_MEMCPY(p->ptr, s, n); + p->ptr += n; + } + else { + w_flush(p); + fwrite(s, 1, n, p->fp); + } } else { - while (--n >= 0) { - w_byte(*s, p); - s++; + if (n <= m || w_reserve(p, n - m)) { + Py_MEMCPY(p->ptr, s, n); + p->ptr += n; } } } @@ -192,7 +220,7 @@ w_PyLong(const PyLongObject *ob, char flag, WFILE *p) } /* set l to number of base PyLong_MARSHAL_BASE digits */ - n = ABS(Py_SIZE(ob)); + n = Py_ABS(Py_SIZE(ob)); l = (n-1) * PyLong_MARSHAL_RATIO; d = ob->ob_digit[n-1]; assert(d != 0); /* a PyLong is always normalized */ @@ -225,46 +253,38 @@ w_PyLong(const PyLongObject *ob, char flag, WFILE *p) static int w_ref(PyObject *v, char *flag, WFILE *p) { - PyObject *id; - PyObject *idx; + _Py_hashtable_entry_t *entry; + int w; - if (p->version < 3 || p->refs == NULL) + if (p->version < 3 || p->hashtable == 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) { + entry = _Py_hashtable_get_entry(p->hashtable, v); + if (entry != NULL) { /* write the reference index to the stream */ - long w = PyLong_AsLong(idx); - Py_DECREF(id); - if (w == -1 && PyErr_Occurred()) { - goto err; - } + _Py_HASHTABLE_ENTRY_READ_DATA(p->hashtable, &w, sizeof(w), entry); /* 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); + size_t s = p->hashtable->entries; /* 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) + w = s; + Py_INCREF(v); + if (_Py_HASHTABLE_SET(p->hashtable, v, w) < 0) { + Py_DECREF(v); goto err; + } *flag |= FLAG_REF; return 0; } @@ -547,37 +567,81 @@ w_complex_object(PyObject *v, char flag, WFILE *p) } } +static int +w_init_refs(WFILE *wf, int version) +{ + if (version >= 3) { + wf->hashtable = _Py_hashtable_new(sizeof(int), _Py_hashtable_hash_ptr, + _Py_hashtable_compare_direct); + if (wf->hashtable == NULL) { + PyErr_NoMemory(); + return -1; + } + } + return 0; +} + +static int +w_decref_entry(_Py_hashtable_entry_t *entry, void *Py_UNUSED(data)) +{ + Py_XDECREF(entry->key); + return 0; +} + +static void +w_clear_refs(WFILE *wf) +{ + if (wf->hashtable != NULL) { + _Py_hashtable_foreach(wf->hashtable, w_decref_entry, NULL); + _Py_hashtable_destroy(wf->hashtable); + } +} + /* version currently has no effect for writing ints. */ void PyMarshal_WriteLongToFile(long x, FILE *fp, int version) { + char buf[4]; WFILE wf; + memset(&wf, 0, sizeof(wf)); wf.fp = fp; + wf.ptr = wf.buf = buf; + wf.end = wf.ptr + sizeof(buf); wf.error = WFERR_OK; - wf.depth = 0; - wf.refs = NULL; wf.version = version; w_long(x, &wf); + w_flush(&wf); } void PyMarshal_WriteObjectToFile(PyObject *x, FILE *fp, int version) { + char buf[BUFSIZ]; WFILE wf; + memset(&wf, 0, sizeof(wf)); wf.fp = fp; + wf.ptr = wf.buf = buf; + wf.end = wf.ptr + sizeof(buf); 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; + if (w_init_refs(&wf, version)) + return; /* caller mush check PyErr_Occurred() */ w_object(x, &wf); - Py_XDECREF(wf.refs); + w_clear_refs(&wf); + w_flush(&wf); } -typedef WFILE RFILE; /* Same struct with different invariants */ +typedef struct { + FILE *fp; + int depth; + PyObject *readable; /* Stream-like object being read from */ + PyObject *current_filename; + char *ptr; + char *end; + char *buf; + Py_ssize_t buf_size; + PyObject *refs; /* a list */ +} RFILE; static char * r_string(Py_ssize_t n, RFILE *p) @@ -727,8 +791,8 @@ r_PyLong(RFILE *p) return NULL; } - size = 1 + (ABS(n) - 1) / PyLong_MARSHAL_RATIO; - shorts_in_top_digit = 1 + (ABS(n) - 1) % PyLong_MARSHAL_RATIO; + size = 1 + (Py_ABS(n) - 1) / PyLong_MARSHAL_RATIO; + shorts_in_top_digit = 1 + (Py_ABS(n) - 1) % PyLong_MARSHAL_RATIO; ob = _PyLong_New(size); if (ob == NULL) return NULL; @@ -1511,25 +1575,20 @@ PyMarshal_WriteObjectToString(PyObject *x, int version) { WFILE wf; - wf.fp = NULL; - wf.readable = NULL; + memset(&wf, 0, sizeof(wf)); wf.str = PyBytes_FromStringAndSize((char *)NULL, 50); if (wf.str == NULL) return NULL; - wf.ptr = PyBytes_AS_STRING((PyBytesObject *)wf.str); + wf.ptr = wf.buf = PyBytes_AS_STRING((PyBytesObject *)wf.str); wf.end = wf.ptr + PyBytes_Size(wf.str); wf.error = WFERR_OK; - wf.depth = 0; wf.version = version; - if (version >= 3) { - if ((wf.refs = PyDict_New()) == NULL) { - Py_DECREF(wf.str); - return NULL; - } - } else - wf.refs = NULL; + if (w_init_refs(&wf, version)) { + Py_DECREF(wf.str); + return NULL; + } w_object(x, &wf); - Py_XDECREF(wf.refs); + w_clear_refs(&wf); if (wf.str != NULL) { char *base = PyBytes_AS_STRING((PyBytesObject *)wf.str); if (wf.ptr - base > PY_SSIZE_T_MAX) { diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index f90a17a..1553a7a 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -15,8 +15,8 @@ static void *opcode_targets[256] = { &&_unknown_opcode, &&_unknown_opcode, &&TARGET_UNARY_INVERT, - &&_unknown_opcode, - &&_unknown_opcode, + &&TARGET_BINARY_MATRIX_MULTIPLY, + &&TARGET_INPLACE_MATRIX_MULTIPLY, &&_unknown_opcode, &&TARGET_BINARY_POWER, &&TARGET_BINARY_MULTIPLY, diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c new file mode 100644 index 0000000..2a36b53 --- /dev/null +++ b/Python/pylifecycle.c @@ -0,0 +1,1502 @@ + +/* Python interpreter top-level routines, including init/exit */ + +#include "Python.h" + +#include "Python-ast.h" +#undef Yield /* undefine macro conflicting with winbase.h */ +#include "grammar.h" +#include "node.h" +#include "token.h" +#include "parsetok.h" +#include "errcode.h" +#include "code.h" +#include "symtable.h" +#include "ast.h" +#include "marshal.h" +#include "osdefs.h" +#include <locale.h> + +#ifdef HAVE_SIGNAL_H +#include <signal.h> +#endif + +#ifdef MS_WINDOWS +#include "malloc.h" /* for alloca */ +#endif + +#ifdef HAVE_LANGINFO_H +#include <langinfo.h> +#endif + +#ifdef MS_WINDOWS +#undef BYTE +#include "windows.h" +#endif + +_Py_IDENTIFIER(flush); +_Py_IDENTIFIER(name); +_Py_IDENTIFIER(stdin); +_Py_IDENTIFIER(stdout); +_Py_IDENTIFIER(stderr); + +#ifdef __cplusplus +extern "C" { +#endif + +extern wchar_t *Py_GetPath(void); + +extern grammar _PyParser_Grammar; /* From graminit.c */ + +/* Forward */ +static void initmain(PyInterpreterState *interp); +static int initfsencoding(PyInterpreterState *interp); +static void initsite(void); +static int initstdio(void); +static void initsigs(void); +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); +extern int _PyFaulthandler_Init(void); +extern void _PyFaulthandler_Fini(void); +extern void _PyHash_Fini(void); +extern int _PyTraceMalloc_Init(void); +extern int _PyTraceMalloc_Fini(void); + +#ifdef WITH_THREAD +extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *); +extern void _PyGILState_Fini(void); +#endif /* WITH_THREAD */ + +/* Global configuration variable declarations are in pydebug.h */ +/* XXX (ncoghlan): move those declarations to pylifecycle.h? */ +int Py_DebugFlag; /* Needed by parser.c */ +int Py_VerboseFlag; /* Needed by import.c */ +int Py_QuietFlag; /* Needed by sysmodule.c */ +int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */ +int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */ +int Py_OptimizeFlag = 0; /* Needed by compile.c */ +int Py_NoSiteFlag; /* Suppress 'import site' */ +int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */ +int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */ +int Py_FrozenFlag; /* Needed by getpath.c */ +int Py_IgnoreEnvironmentFlag; /* e.g. PYTHONPATH, PYTHONHOME */ +int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */ +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; + +/* Hack to force loading of object files */ +int (*_PyOS_mystrnicmp_hack)(const char *, const char *, Py_ssize_t) = \ + PyOS_mystrnicmp; /* Python/pystrcmp.o */ + +/* PyModule_GetWarningsModule is no longer necessary as of 2.6 +since _warnings is builtin. This API should not be used. */ +PyObject * +PyModule_GetWarningsModule(void) +{ + return PyImport_ImportModule("warnings"); +} + +static int initialized = 0; + +/* API to access the initialized flag -- useful for esoteric use */ + +int +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 + not return. On return, the first thread and interpreter state have + been created. + + Locking: you must hold the interpreter lock while calling this. + (If the lock has not yet been initialized, that's equivalent to + having the lock, but you cannot use multiple threads.) + +*/ + +static int +add_flag(int flag, const char *envs) +{ + int env = atoi(envs); + if (flag < env) + flag = env; + if (flag < 1) + flag = 1; + return flag; +} + +static char* +get_codec_name(const char *encoding) +{ + char *name_utf8, *name_str; + PyObject *codec, *name = NULL; + + codec = _PyCodec_Lookup(encoding); + if (!codec) + goto error; + + name = _PyObject_GetAttrId(codec, &PyId_name); + Py_CLEAR(codec); + if (!name) + goto error; + + name_utf8 = _PyUnicode_AsString(name); + if (name_utf8 == NULL) + goto error; + name_str = _PyMem_RawStrdup(name_utf8); + Py_DECREF(name); + if (name_str == NULL) { + PyErr_NoMemory(); + return NULL; + } + return name_str; + +error: + Py_XDECREF(codec); + Py_XDECREF(name); + return NULL; +} + +static char* +get_locale_encoding(void) +{ +#ifdef MS_WINDOWS + char codepage[100]; + PyOS_snprintf(codepage, sizeof(codepage), "cp%d", GetACP()); + return get_codec_name(codepage); +#elif defined(HAVE_LANGINFO_H) && defined(CODESET) + char* codeset = nl_langinfo(CODESET); + if (!codeset || codeset[0] == '\0') { + PyErr_SetString(PyExc_ValueError, "CODESET is not set or empty"); + return NULL; + } + return get_codec_name(codeset); +#else + PyErr_SetNone(PyExc_NotImplementedError); + return NULL; +#endif +} + +static void +import_init(PyInterpreterState *interp, PyObject *sysmod) +{ + PyObject *importlib; + PyObject *impmod; + PyObject *sys_modules; + PyObject *value; + + /* Import _importlib through its frozen version, _frozen_importlib. */ + if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) { + Py_FatalError("Py_Initialize: can't import _frozen_importlib"); + } + else if (Py_VerboseFlag) { + PySys_FormatStderr("import _frozen_importlib # frozen\n"); + } + importlib = PyImport_AddModule("_frozen_importlib"); + if (importlib == NULL) { + Py_FatalError("Py_Initialize: couldn't get _frozen_importlib from " + "sys.modules"); + } + interp->importlib = importlib; + Py_INCREF(interp->importlib); + + /* Install _importlib as __import__ */ + impmod = PyInit_imp(); + if (impmod == NULL) { + Py_FatalError("Py_Initialize: can't import imp"); + } + else if (Py_VerboseFlag) { + PySys_FormatStderr("import imp # builtin\n"); + } + sys_modules = PyImport_GetModuleDict(); + if (Py_VerboseFlag) { + PySys_FormatStderr("import sys # builtin\n"); + } + if (PyDict_SetItemString(sys_modules, "_imp", impmod) < 0) { + Py_FatalError("Py_Initialize: can't save _imp to sys.modules"); + } + + value = PyObject_CallMethod(importlib, "_install", "OO", sysmod, impmod); + if (value == NULL) { + PyErr_Print(); + Py_FatalError("Py_Initialize: importlib install failed"); + } + Py_DECREF(value); + Py_DECREF(impmod); + + _PyImportZip_Init(); +} + + +void +_Py_InitializeEx_Private(int install_sigs, int install_importlib) +{ + PyInterpreterState *interp; + PyThreadState *tstate; + PyObject *bimod, *sysmod, *pstderr; + char *p; + extern void _Py_ReadyTypes(void); + + if (initialized) + return; + initialized = 1; + _Py_Finalizing = NULL; + +#if defined(HAVE_LANGINFO_H) && defined(HAVE_SETLOCALE) + /* Set up the LC_CTYPE locale, so we can obtain + the locale's charset without having to switch + locales. */ + setlocale(LC_CTYPE, ""); +#endif + + if ((p = Py_GETENV("PYTHONDEBUG")) && *p != '\0') + Py_DebugFlag = add_flag(Py_DebugFlag, p); + if ((p = Py_GETENV("PYTHONVERBOSE")) && *p != '\0') + Py_VerboseFlag = add_flag(Py_VerboseFlag, p); + if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0') + Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p); + if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0') + Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p); + /* The variable is only tested for existence here; _PyRandom_Init will + check its value further. */ + if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0') + Py_HashRandomizationFlag = add_flag(Py_HashRandomizationFlag, p); + + _PyRandom_Init(); + + interp = PyInterpreterState_New(); + if (interp == NULL) + Py_FatalError("Py_Initialize: can't make first interpreter"); + + tstate = PyThreadState_New(interp); + if (tstate == NULL) + Py_FatalError("Py_Initialize: can't make first thread"); + (void) PyThreadState_Swap(tstate); + +#ifdef WITH_THREAD + /* We can't call _PyEval_FiniThreads() in Py_Finalize because + destroying the GIL might fail when it is being referenced from + another running thread (see issue #9901). + Instead we destroy the previously created GIL here, which ensures + that we can call Py_Initialize / Py_Finalize multiple times. */ + _PyEval_FiniThreads(); + + /* Auto-thread-state API */ + _PyGILState_Init(interp, tstate); +#endif /* WITH_THREAD */ + + _Py_ReadyTypes(); + + if (!_PyFrame_Init()) + Py_FatalError("Py_Initialize: can't init frames"); + + if (!_PyLong_Init()) + Py_FatalError("Py_Initialize: can't init longs"); + + if (!PyByteArray_Init()) + Py_FatalError("Py_Initialize: can't init bytearray"); + + if (!_PyFloat_Init()) + Py_FatalError("Py_Initialize: can't init float"); + + interp->modules = PyDict_New(); + if (interp->modules == NULL) + Py_FatalError("Py_Initialize: can't make modules dictionary"); + + /* 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) + Py_FatalError("Py_Initialize: can't initialize builtins modules"); + _PyImport_FixupBuiltin(bimod, "builtins"); + interp->builtins = PyModule_GetDict(bimod); + if (interp->builtins == NULL) + Py_FatalError("Py_Initialize: can't initialize builtins dict"); + Py_INCREF(interp->builtins); + + /* initialize builtin exceptions */ + _PyExc_Init(bimod); + + sysmod = _PySys_Init(); + if (sysmod == NULL) + Py_FatalError("Py_Initialize: can't initialize sys"); + interp->sysdict = PyModule_GetDict(sysmod); + if (interp->sysdict == NULL) + Py_FatalError("Py_Initialize: can't initialize sys dict"); + Py_INCREF(interp->sysdict); + _PyImport_FixupBuiltin(sysmod, "sys"); + PySys_SetPath(Py_GetPath()); + PyDict_SetItemString(interp->sysdict, "modules", + interp->modules); + + /* Set up a preliminary stderr printer until we have enough + infrastructure for the io module in place. */ + pstderr = PyFile_NewStdPrinter(fileno(stderr)); + if (pstderr == NULL) + Py_FatalError("Py_Initialize: can't set preliminary stderr"); + _PySys_SetObjectId(&PyId_stderr, pstderr); + PySys_SetObject("__stderr__", pstderr); + Py_DECREF(pstderr); + + _PyImport_Init(); + + _PyImportHooks_Init(); + + /* Initialize _warnings. */ + _PyWarnings_Init(); + + if (!install_importlib) + return; + + import_init(interp, sysmod); + + /* initialize the faulthandler module */ + if (_PyFaulthandler_Init()) + Py_FatalError("Py_Initialize: can't initialize faulthandler"); + + if (_PyTime_Init() < 0) + Py_FatalError("Py_Initialize: can't initialize time"); + + if (initfsencoding(interp) < 0) + Py_FatalError("Py_Initialize: unable to load the file system codec"); + + if (install_sigs) + initsigs(); /* Signal handling stuff, including initintr() */ + + if (_PyTraceMalloc_Init() < 0) + Py_FatalError("Py_Initialize: can't initialize tracemalloc"); + + initmain(interp); /* Module __main__ */ + if (initstdio() < 0) + Py_FatalError( + "Py_Initialize: can't initialize sys standard streams"); + + /* Initialize warnings. */ + if (PySys_HasWarnOptions()) { + PyObject *warnings_module = PyImport_ImportModule("warnings"); + if (warnings_module == NULL) { + fprintf(stderr, "'import warnings' failed; traceback:\n"); + PyErr_Print(); + } + Py_XDECREF(warnings_module); + } + + if (!Py_NoSiteFlag) + initsite(); /* Module site */ +} + +void +Py_InitializeEx(int install_sigs) +{ + _Py_InitializeEx_Private(install_sigs, 1); +} + +void +Py_Initialize(void) +{ + Py_InitializeEx(1); +} + + +#ifdef COUNT_ALLOCS +extern void dump_counts(FILE*); +#endif + +/* Flush stdout and stderr */ + +static int +file_is_closed(PyObject *fobj) +{ + int r; + PyObject *tmp = PyObject_GetAttrString(fobj, "closed"); + if (tmp == NULL) { + PyErr_Clear(); + return 0; + } + r = PyObject_IsTrue(tmp); + Py_DECREF(tmp); + if (r < 0) + PyErr_Clear(); + return r > 0; +} + +static void +flush_std_files(void) +{ + PyObject *fout = _PySys_GetObjectId(&PyId_stdout); + PyObject *ferr = _PySys_GetObjectId(&PyId_stderr); + PyObject *tmp; + + if (fout != NULL && fout != Py_None && !file_is_closed(fout)) { + tmp = _PyObject_CallMethodId(fout, &PyId_flush, ""); + if (tmp == NULL) + PyErr_WriteUnraisable(fout); + else + Py_DECREF(tmp); + } + + if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) { + tmp = _PyObject_CallMethodId(ferr, &PyId_flush, ""); + if (tmp == NULL) + PyErr_Clear(); + else + Py_DECREF(tmp); + } +} + +/* Undo the effect of Py_Initialize(). + + Beware: if multiple interpreter and/or thread states exist, these + are not wiped out; only the current thread and interpreter state + are deleted. But since everything else is deleted, those other + interpreter and thread states should no longer be used. + + (XXX We should do better, e.g. wipe out all interpreters and + threads.) + + Locking: as above. + +*/ + +void +Py_Finalize(void) +{ + PyInterpreterState *interp; + PyThreadState *tstate; + + if (!initialized) + return; + + wait_for_thread_shutdown(); + + /* The interpreter is still entirely intact at this point, and the + * exit funcs may be relying on that. In particular, if some thread + * or exit func is still waiting to do an import, the import machinery + * expects Py_IsInitialized() to return true. So don't say the + * interpreter is uninitialized until after the exit funcs have run. + * Note that Threading.py uses an exit func to do a join on all the + * threads created thru it, so this also protects pending imports in + * the threads created via Threading. + */ + call_py_exitfuncs(); + + /* Get current thread state and interpreter pointer */ + tstate = PyThreadState_GET(); + interp = tstate->interp; + + /* Remaining threads (e.g. daemon threads) will automatically exit + after taking the GIL (in PyEval_RestoreThread()). */ + _Py_Finalizing = tstate; + initialized = 0; + + /* Flush stdout+stderr */ + flush_std_files(); + + /* Disable signal handling */ + PyOS_FiniInterrupts(); + + /* Collect garbage. This may call finalizers; it's nice to call these + * before all modules are destroyed. + * XXX If a __del__ or weakref callback is triggered here, and tries to + * XXX import a module, bad things can happen, because Python no + * XXX longer believes it's initialized. + * XXX Fatal Python error: Interpreter not initialized (version mismatch?) + * XXX is easy to provoke that way. I've also seen, e.g., + * XXX Exception exceptions.ImportError: 'No module named sha' + * XXX in <function callback at 0x008F5718> ignored + * XXX but I'm unclear on exactly how that one happens. In any case, + * XXX I haven't seen a real-life report of either of these. + */ + PyGC_Collect(); +#ifdef COUNT_ALLOCS + /* With COUNT_ALLOCS, it helps to run GC multiple times: + each collection might release some types from the type + list, so they become garbage. */ + while (PyGC_Collect() > 0) + /* nothing */; +#endif + /* Destroy all modules */ + PyImport_Cleanup(); + + /* Flush stdout+stderr (again, in case more was printed) */ + flush_std_files(); + + /* Collect final garbage. This disposes of cycles created by + * class definitions, for example. + * XXX This is disabled because it caused too many problems. If + * XXX a __del__ or weakref callback triggers here, Python code has + * XXX a hard time running, because even the sys module has been + * XXX cleared out (sys.stdout is gone, sys.excepthook is gone, etc). + * XXX One symptom is a sequence of information-free messages + * XXX coming from threads (if a __del__ or callback is invoked, + * XXX other threads can execute too, and any exception they encounter + * XXX triggers a comedy of errors as subsystem after subsystem + * XXX fails to find what it *expects* to find in sys to help report + * XXX the exception and consequent unexpected failures). I've also + * XXX seen segfaults then, after adding print statements to the + * XXX Python code getting called. + */ +#if 0 + PyGC_Collect(); +#endif + + /* Disable tracemalloc after all Python objects have been destroyed, + so it is possible to use tracemalloc in objects destructor. */ + _PyTraceMalloc_Fini(); + + /* Destroy the database used by _PyImport_{Fixup,Find}Extension */ + _PyImport_Fini(); + + /* Cleanup typeobject.c's internal caches. */ + _PyType_Fini(); + + /* unload faulthandler module */ + _PyFaulthandler_Fini(); + + /* Debugging stuff */ +#ifdef COUNT_ALLOCS + dump_counts(stdout); +#endif + /* dump hash stats */ + _PyHash_Fini(); + + _PY_DEBUG_PRINT_TOTAL_REFS(); + +#ifdef Py_TRACE_REFS + /* Display all objects still alive -- this can invoke arbitrary + * __repr__ overrides, so requires a mostly-intact interpreter. + * Alas, a lot of stuff may still be alive now that will be cleaned + * up later. + */ + if (Py_GETENV("PYTHONDUMPREFS")) + _Py_PrintReferences(stderr); +#endif /* Py_TRACE_REFS */ + + /* Clear interpreter state and all thread states. */ + PyInterpreterState_Clear(interp); + + /* Now we decref the exception classes. After this point nothing + can raise an exception. That's okay, because each Fini() method + below has been checked to make sure no exceptions are ever + raised. + */ + + _PyExc_Fini(); + + /* Sundry finalizers */ + PyMethod_Fini(); + PyFrame_Fini(); + PyCFunction_Fini(); + PyTuple_Fini(); + PyList_Fini(); + PySet_Fini(); + PyBytes_Fini(); + PyByteArray_Fini(); + PyLong_Fini(); + PyFloat_Fini(); + PyDict_Fini(); + PySlice_Fini(); + _PyGC_Fini(); + _PyRandom_Fini(); + + /* Cleanup Unicode implementation */ + _PyUnicode_Fini(); + + /* reset file system default encoding */ + if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) { + PyMem_RawFree((char*)Py_FileSystemDefaultEncoding); + Py_FileSystemDefaultEncoding = NULL; + } + + /* XXX Still allocated: + - various static ad-hoc pointers to interned strings + - int and float free list blocks + - whatever various modules and libraries allocate + */ + + 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 + * above by _Py_PrintReferences. + */ + if (Py_GETENV("PYTHONDUMPREFS")) + _Py_PrintReferenceAddresses(stderr); +#endif /* Py_TRACE_REFS */ +#ifdef PYMALLOC_DEBUG + if (Py_GETENV("PYTHONMALLOCSTATS")) + _PyObject_DebugMallocStats(stderr); +#endif + + call_ll_exitfuncs(); +} + +/* Create and initialize a new interpreter and thread, and return the + new thread. This requires that Py_Initialize() has been called + first. + + Unsuccessful initialization yields a NULL pointer. Note that *no* + exception information is available even in this case -- the + exception information is held in the thread, and there is no + thread. + + Locking: as above. + +*/ + +PyThreadState * +Py_NewInterpreter(void) +{ + PyInterpreterState *interp; + PyThreadState *tstate, *save_tstate; + PyObject *bimod, *sysmod; + + if (!initialized) + Py_FatalError("Py_NewInterpreter: call Py_Initialize first"); + + interp = PyInterpreterState_New(); + if (interp == NULL) + return NULL; + + tstate = PyThreadState_New(interp); + if (tstate == NULL) { + PyInterpreterState_Delete(interp); + return NULL; + } + + save_tstate = PyThreadState_Swap(tstate); + + /* XXX The following is lax in error checking */ + + interp->modules = PyDict_New(); + + bimod = _PyImport_FindBuiltin("builtins"); + if (bimod != NULL) { + interp->builtins = PyModule_GetDict(bimod); + if (interp->builtins == NULL) + goto handle_error; + Py_INCREF(interp->builtins); + } + + /* initialize builtin exceptions */ + _PyExc_Init(bimod); + + sysmod = _PyImport_FindBuiltin("sys"); + if (bimod != NULL && sysmod != NULL) { + PyObject *pstderr; + + interp->sysdict = PyModule_GetDict(sysmod); + if (interp->sysdict == NULL) + goto handle_error; + Py_INCREF(interp->sysdict); + PySys_SetPath(Py_GetPath()); + PyDict_SetItemString(interp->sysdict, "modules", + interp->modules); + /* Set up a preliminary stderr printer until we have enough + infrastructure for the io module in place. */ + pstderr = PyFile_NewStdPrinter(fileno(stderr)); + if (pstderr == NULL) + Py_FatalError("Py_Initialize: can't set preliminary stderr"); + _PySys_SetObjectId(&PyId_stderr, pstderr); + PySys_SetObject("__stderr__", pstderr); + Py_DECREF(pstderr); + + _PyImportHooks_Init(); + + import_init(interp, sysmod); + + if (initfsencoding(interp) < 0) + goto handle_error; + + if (initstdio() < 0) + Py_FatalError( + "Py_Initialize: can't initialize sys standard streams"); + initmain(interp); + if (!Py_NoSiteFlag) + initsite(); + } + + if (!PyErr_Occurred()) + return tstate; + +handle_error: + /* Oops, it didn't work. Undo it all. */ + + PyErr_PrintEx(0); + PyThreadState_Clear(tstate); + PyThreadState_Swap(save_tstate); + PyThreadState_Delete(tstate); + PyInterpreterState_Delete(interp); + + return NULL; +} + +/* Delete an interpreter and its last thread. This requires that the + given thread state is current, that the thread has no remaining + frames, and that it is its interpreter's only remaining thread. + It is a fatal error to violate these constraints. + + (Py_Finalize() doesn't have these constraints -- it zaps + everything, regardless.) + + Locking: as above. + +*/ + +void +Py_EndInterpreter(PyThreadState *tstate) +{ + PyInterpreterState *interp = tstate->interp; + + if (tstate != PyThreadState_GET()) + 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"); + + PyImport_Cleanup(); + PyInterpreterState_Clear(interp); + PyThreadState_Swap(NULL); + PyInterpreterState_Delete(interp); +} + +#ifdef MS_WINDOWS +static wchar_t *progname = L"python"; +#else +static wchar_t *progname = L"python3"; +#endif + +void +Py_SetProgramName(wchar_t *pn) +{ + if (pn && *pn) + progname = pn; +} + +wchar_t * +Py_GetProgramName(void) +{ + return progname; +} + +static wchar_t *default_home = NULL; +static wchar_t env_home[MAXPATHLEN+1]; + +void +Py_SetPythonHome(wchar_t *home) +{ + default_home = home; +} + +wchar_t * +Py_GetPythonHome(void) +{ + wchar_t *home = default_home; + if (home == NULL && !Py_IgnoreEnvironmentFlag) { + char* chome = Py_GETENV("PYTHONHOME"); + if (chome) { + size_t size = Py_ARRAY_LENGTH(env_home); + size_t r = mbstowcs(env_home, chome, size); + if (r != (size_t)-1 && r < size) + home = env_home; + } + + } + return home; +} + +/* Create __main__ module */ + +static void +initmain(PyInterpreterState *interp) +{ + PyObject *m, *d, *loader; + m = PyImport_AddModule("__main__"); + if (m == NULL) + Py_FatalError("can't create __main__ module"); + d = PyModule_GetDict(m); + if (PyDict_GetItemString(d, "__builtins__") == NULL) { + PyObject *bimod = PyImport_ImportModule("builtins"); + if (bimod == NULL) { + Py_FatalError("Failed to retrieve builtins module"); + } + if (PyDict_SetItemString(d, "__builtins__", bimod) < 0) { + Py_FatalError("Failed to initialize __main__.__builtins__"); + } + Py_DECREF(bimod); + } + /* Main is a little special - imp.is_builtin("__main__") will return + * False, but BuiltinImporter is still the most appropriate initial + * setting for its __loader__ attribute. A more suitable value will + * be set if __main__ gets further initialized later in the startup + * process. + */ + loader = PyDict_GetItemString(d, "__loader__"); + if (loader == NULL || loader == Py_None) { + PyObject *loader = PyObject_GetAttrString(interp->importlib, + "BuiltinImporter"); + if (loader == NULL) { + Py_FatalError("Failed to retrieve BuiltinImporter"); + } + if (PyDict_SetItemString(d, "__loader__", loader) < 0) { + Py_FatalError("Failed to initialize __main__.__loader__"); + } + Py_DECREF(loader); + } +} + +static int +initfsencoding(PyInterpreterState *interp) +{ + PyObject *codec; + + if (Py_FileSystemDefaultEncoding == NULL) + { + Py_FileSystemDefaultEncoding = get_locale_encoding(); + if (Py_FileSystemDefaultEncoding == NULL) + Py_FatalError("Py_Initialize: Unable to get the locale encoding"); + + Py_HasFileSystemDefaultEncoding = 0; + interp->fscodec_initialized = 1; + return 0; + } + + /* the encoding is mbcs, utf-8 or ascii */ + codec = _PyCodec_Lookup(Py_FileSystemDefaultEncoding); + if (!codec) { + /* Such error can only occurs in critical situations: no more + * memory, import a module of the standard library failed, + * etc. */ + return -1; + } + Py_DECREF(codec); + interp->fscodec_initialized = 1; + return 0; +} + +/* Import the site module (not into __main__ though) */ + +static void +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); + } + else { + Py_DECREF(m); + } +} + +static PyObject* +create_stdio(PyObject* io, + int fd, int write_mode, char* name, + char* encoding, char* errors) +{ + PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res; + const char* mode; + const char* newline; + PyObject *line_buffering; + int buffering, isatty; + _Py_IDENTIFIER(open); + _Py_IDENTIFIER(isatty); + _Py_IDENTIFIER(TextIOWrapper); + _Py_IDENTIFIER(mode); + + /* stdin is always opened in buffered mode, first because it shouldn't + make a difference in common use cases, second because TextIOWrapper + depends on the presence of a read1() method which only exists on + buffered streams. + */ + if (Py_UnbufferedStdioFlag && write_mode) + buffering = 0; + else + buffering = -1; + if (write_mode) + mode = "wb"; + else + mode = "rb"; + buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOi", + fd, mode, buffering, + Py_None, Py_None, Py_None, 0); + if (buf == NULL) + goto error; + + if (buffering) { + _Py_IDENTIFIER(raw); + raw = _PyObject_GetAttrId(buf, &PyId_raw); + if (raw == NULL) + goto error; + } + else { + raw = buf; + Py_INCREF(raw); + } + + text = PyUnicode_FromString(name); + if (text == NULL || _PyObject_SetAttrId(raw, &PyId_name, text) < 0) + goto error; + res = _PyObject_CallMethodId(raw, &PyId_isatty, ""); + if (res == NULL) + goto error; + isatty = PyObject_IsTrue(res); + Py_DECREF(res); + if (isatty == -1) + goto error; + if (isatty || Py_UnbufferedStdioFlag) + line_buffering = Py_True; + else + line_buffering = Py_False; + + Py_CLEAR(raw); + Py_CLEAR(text); + +#ifdef MS_WINDOWS + /* sys.stdin: enable universal newline mode, translate "\r\n" and "\r" + newlines to "\n". + sys.stdout and sys.stderr: translate "\n" to "\r\n". */ + newline = NULL; +#else + /* sys.stdin: split lines at "\n". + sys.stdout and sys.stderr: don't translate newlines (use "\n"). */ + newline = "\n"; +#endif + + stream = _PyObject_CallMethodId(io, &PyId_TextIOWrapper, "OsssO", + buf, encoding, errors, + newline, line_buffering); + Py_CLEAR(buf); + if (stream == NULL) + goto error; + + if (write_mode) + mode = "w"; + else + mode = "r"; + text = PyUnicode_FromString(mode); + if (!text || _PyObject_SetAttrId(stream, &PyId_mode, text) < 0) + goto error; + Py_CLEAR(text); + return stream; + +error: + Py_XDECREF(buf); + Py_XDECREF(stream); + Py_XDECREF(text); + Py_XDECREF(raw); + return NULL; +} + +static int +is_valid_fd(int fd) +{ + int dummy_fd; + if (fd < 0 || !_PyVerify_fd(fd)) + return 0; + dummy_fd = dup(fd); + if (dummy_fd < 0) + return 0; + close(dummy_fd); + return 1; +} + +/* Initialize sys.stdin, stdout, stderr and builtins.open */ +static int +initstdio(void) +{ + PyObject *iomod = NULL, *wrapper; + PyObject *bimod = NULL; + PyObject *m; + PyObject *std = NULL; + int status = 0, fd; + PyObject * encoding_attr; + 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 */ + if ((m = PyImport_ImportModule("encodings.utf_8")) == NULL) { + goto error; + } + Py_DECREF(m); + + if (!(m = PyImport_ImportModule("encodings.latin_1"))) { + goto error; + } + Py_DECREF(m); + + if (!(bimod = PyImport_ImportModule("builtins"))) { + goto error; + } + + if (!(iomod = PyImport_ImportModule("io"))) { + goto error; + } + if (!(wrapper = PyObject_GetAttrString(iomod, "OpenWrapper"))) { + goto error; + } + + /* Set builtins.open */ + if (PyObject_SetAttrString(bimod, "open", wrapper) == -1) { + Py_DECREF(wrapper); + goto error; + } + Py_DECREF(wrapper); + + encoding = _Py_StandardStreamEncoding; + errors = _Py_StandardStreamErrors; + if (!encoding || !errors) { + if (!errors) { + /* When the LC_CTYPE locale is the POSIX locale ("C locale"), + stdin and stdout use the surrogateescape error handler by + default, instead of the strict error handler. */ + char *loc = setlocale(LC_CTYPE, NULL); + if (loc != NULL && strcmp(loc, "C") == 0) + errors = "surrogateescape"; + } + + 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 && !_Py_StandardStreamErrors) { + errors = err; + } + } + if (*pythonioencoding && !encoding) { + encoding = pythonioencoding; + } + } + } + + /* Set sys.stdin */ + fd = fileno(stdin); + /* Under some conditions stdin, stdout and stderr may not be connected + * and fileno() may point to an invalid file descriptor. For example + * GUI apps don't have valid standard streams by default. + */ + if (!is_valid_fd(fd)) { + std = Py_None; + Py_INCREF(std); + } + else { + std = create_stdio(iomod, fd, 0, "<stdin>", encoding, errors); + if (std == NULL) + goto error; + } /* if (fd < 0) */ + PySys_SetObject("__stdin__", std); + _PySys_SetObjectId(&PyId_stdin, std); + Py_DECREF(std); + + /* Set sys.stdout */ + fd = fileno(stdout); + if (!is_valid_fd(fd)) { + std = Py_None; + Py_INCREF(std); + } + else { + std = create_stdio(iomod, fd, 1, "<stdout>", encoding, errors); + if (std == NULL) + goto error; + } /* if (fd < 0) */ + PySys_SetObject("__stdout__", std); + _PySys_SetObjectId(&PyId_stdout, std); + Py_DECREF(std); + +#if 1 /* Disable this if you have trouble debugging bootstrap stuff */ + /* Set sys.stderr, replaces the preliminary stderr */ + fd = fileno(stderr); + if (!is_valid_fd(fd)) { + std = Py_None; + Py_INCREF(std); + } + else { + std = create_stdio(iomod, fd, 1, "<stderr>", encoding, "backslashreplace"); + if (std == NULL) + goto error; + } /* if (fd < 0) */ + + /* Same as hack above, pre-import stderr's codec to avoid recursion + when import.c tries to write to stderr in verbose mode. */ + encoding_attr = PyObject_GetAttrString(std, "encoding"); + if (encoding_attr != NULL) { + 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 */ + + if (PySys_SetObject("__stderr__", std) < 0) { + Py_DECREF(std); + goto error; + } + if (_PySys_SetObjectId(&PyId_stderr, std) < 0) { + Py_DECREF(std); + goto error; + } + Py_DECREF(std); +#endif + + if (0) { + error: + status = -1; + } + + /* 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; +} + + +/* Print fatal error message and abort */ + +void +Py_FatalError(const char *msg) +{ + const int fd = fileno(stderr); + PyThreadState *tstate; + + fprintf(stderr, "Fatal Python error: %s\n", msg); + fflush(stderr); /* it helps in Windows debug build */ + if (PyErr_Occurred()) { + PyErr_PrintEx(0); + } + else { + tstate = (PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current); + if (tstate != NULL) { + fputc('\n', stderr); + fflush(stderr); + _Py_DumpTracebackThreads(fd, tstate->interp, tstate); + } + _PyFaulthandler_Fini(); + } + +#ifdef MS_WINDOWS + { + size_t len = strlen(msg); + WCHAR* buffer; + size_t i; + + /* Convert the message to wchar_t. This uses a simple one-to-one + conversion, assuming that the this error message actually uses ASCII + only. If this ceases to be true, we will have to convert. */ + buffer = alloca( (len+1) * (sizeof *buffer)); + for( i=0; i<=len; ++i) + buffer[i] = msg[i]; + OutputDebugStringW(L"Fatal Python error: "); + OutputDebugStringW(buffer); + OutputDebugStringW(L"\n"); + } +#ifdef _DEBUG + DebugBreak(); +#endif +#endif /* MS_WINDOWS */ + abort(); +} + +/* Clean up and exit */ + +#ifdef WITH_THREAD +#include "pythread.h" +#endif + +static void (*pyexitfunc)(void) = NULL; +/* For the atexit module. */ +void _Py_PyAtExit(void (*func)(void)) +{ + pyexitfunc = func; +} + +static void +call_py_exitfuncs(void) +{ + if (pyexitfunc == NULL) + return; + + (*pyexitfunc)(); + PyErr_Clear(); +} + +/* Wait until threading._shutdown completes, provided + the threading module was imported in the first place. + The shutdown routine will wait until all non-daemon + "threading" threads have completed. */ +static void +wait_for_thread_shutdown(void) +{ +#ifdef WITH_THREAD + _Py_IDENTIFIER(_shutdown); + PyObject *result; + PyThreadState *tstate = PyThreadState_GET(); + PyObject *threading = PyMapping_GetItemString(tstate->interp->modules, + "threading"); + if (threading == NULL) { + /* threading not imported */ + PyErr_Clear(); + return; + } + result = _PyObject_CallMethodId(threading, &PyId__shutdown, ""); + if (result == NULL) { + PyErr_WriteUnraisable(threading); + } + else { + Py_DECREF(result); + } + Py_DECREF(threading); +#endif +} + +#define NEXITFUNCS 32 +static void (*exitfuncs[NEXITFUNCS])(void); +static int nexitfuncs = 0; + +int Py_AtExit(void (*func)(void)) +{ + if (nexitfuncs >= NEXITFUNCS) + return -1; + exitfuncs[nexitfuncs++] = func; + return 0; +} + +static void +call_ll_exitfuncs(void) +{ + while (nexitfuncs > 0) + (*exitfuncs[--nexitfuncs])(); + + fflush(stdout); + fflush(stderr); +} + +void +Py_Exit(int sts) +{ + Py_Finalize(); + + exit(sts); +} + +static void +initsigs(void) +{ +#ifdef SIGPIPE + PyOS_setsig(SIGPIPE, SIG_IGN); +#endif +#ifdef SIGXFZ + PyOS_setsig(SIGXFZ, SIG_IGN); +#endif +#ifdef SIGXFSZ + PyOS_setsig(SIGXFSZ, SIG_IGN); +#endif + PyOS_InitInterrupts(); /* May imply initsignal() */ + if (PyErr_Occurred()) { + Py_FatalError("Py_Initialize: can't import signal"); + } +} + + +/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. + * + * All of the code in this function must only use async-signal-safe functions, + * listed at `man 7 signal` or + * http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html. + */ +void +_Py_RestoreSignals(void) +{ +#ifdef SIGPIPE + PyOS_setsig(SIGPIPE, SIG_DFL); +#endif +#ifdef SIGXFZ + PyOS_setsig(SIGXFZ, SIG_DFL); +#endif +#ifdef SIGXFSZ + PyOS_setsig(SIGXFSZ, SIG_DFL); +#endif +} + + +/* + * The file descriptor fd is considered ``interactive'' if either + * a) isatty(fd) is TRUE, or + * b) the -i flag was given, and the filename associated with + * the descriptor is NULL or "<stdin>" or "???". + */ +int +Py_FdIsInteractive(FILE *fp, const char *filename) +{ + if (isatty((int)fileno(fp))) + return 1; + if (!Py_InteractiveFlag) + return 0; + return (filename == NULL) || + (strcmp(filename, "<stdin>") == 0) || + (strcmp(filename, "???") == 0); +} + + +/* Wrappers around sigaction() or signal(). */ + +PyOS_sighandler_t +PyOS_getsig(int sig) +{ +#ifdef HAVE_SIGACTION + struct sigaction context; + if (sigaction(sig, NULL, &context) == -1) + return SIG_ERR; + return context.sa_handler; +#else + PyOS_sighandler_t handler; +/* Special signal handling for the secure CRT in Visual Studio 2005 */ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + switch (sig) { + /* Only these signals are valid */ + case SIGINT: + case SIGILL: + case SIGFPE: + case SIGSEGV: + case SIGTERM: + case SIGBREAK: + case SIGABRT: + break; + /* Don't call signal() with other values or it will assert */ + default: + return SIG_ERR; + } +#endif /* _MSC_VER && _MSC_VER >= 1400 */ + handler = signal(sig, SIG_IGN); + if (handler != SIG_ERR) + signal(sig, handler); + return handler; +#endif +} + +/* + * All of the code in this function must only use async-signal-safe functions, + * listed at `man 7 signal` or + * http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html. + */ +PyOS_sighandler_t +PyOS_setsig(int sig, PyOS_sighandler_t handler) +{ +#ifdef HAVE_SIGACTION + /* Some code in Modules/signalmodule.c depends on sigaction() being + * used here if HAVE_SIGACTION is defined. Fix that if this code + * changes to invalidate that assumption. + */ + struct sigaction context, ocontext; + context.sa_handler = handler; + sigemptyset(&context.sa_mask); + context.sa_flags = 0; + if (sigaction(sig, &context, &ocontext) == -1) + return SIG_ERR; + return ocontext.sa_handler; +#else + PyOS_sighandler_t oldhandler; + oldhandler = signal(sig, handler); +#ifdef HAVE_SIGINTERRUPT + siginterrupt(sig, 1); +#endif + return oldhandler; +#endif +} + +#ifdef __cplusplus +} +#endif diff --git a/Python/pystate.c b/Python/pystate.c index 2ac2fd5..32a635c 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -403,7 +403,7 @@ tstate_delete_common(PyThreadState *tstate) void PyThreadState_Delete(PyThreadState *tstate) { - if (tstate == _Py_atomic_load_relaxed(&_PyThreadState_Current)) + if (tstate == (PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current)) Py_FatalError("PyThreadState_Delete: tstate is still current"); #ifdef WITH_THREAD if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate) @@ -662,7 +662,7 @@ PyThreadState_IsCurrent(PyThreadState *tstate) { /* Must be the tstate for this thread */ assert(PyGILState_GetThisThreadState()==tstate); - return tstate == _Py_atomic_load_relaxed(&_PyThreadState_Current); + return tstate == (PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current); } /* Internal initialization/finalization functions called by diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 0327830..992a5a3 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -15,6 +15,7 @@ #include "ast.h" #include "marshal.h" #include "osdefs.h" +#include <locale.h> #ifdef HAVE_SIGNAL_H #include <signal.h> @@ -25,18 +26,12 @@ #endif #ifdef HAVE_LANGINFO_H -#include <locale.h> #include <langinfo.h> #endif #ifdef MS_WINDOWS #undef BYTE #include "windows.h" -#define PATH_MAX MAXPATHLEN -#endif - -#ifdef __gnu_hurd__ -#define PATH_MAX MAXPATHLEN #endif _Py_IDENTIFIER(builtins); @@ -45,7 +40,6 @@ _Py_IDENTIFIER(flush); _Py_IDENTIFIER(last_traceback); _Py_IDENTIFIER(last_type); _Py_IDENTIFIER(last_value); -_Py_IDENTIFIER(name); _Py_IDENTIFIER(ps1); _Py_IDENTIFIER(ps2); _Py_IDENTIFIER(stdin); @@ -53,43 +47,13 @@ _Py_IDENTIFIER(stdout); _Py_IDENTIFIER(stderr); _Py_static_string(PyId_string, "<string>"); -#ifdef Py_REF_DEBUG -static -void _print_total_refs(void) { - PyObject *xoptions, *value; - _Py_IDENTIFIER(showrefcount); - - xoptions = PySys_GetXOptions(); - if (xoptions == NULL) - return; - value = _PyDict_GetItemId(xoptions, &PyId_showrefcount); - 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() _print_total_refs() -#endif - #ifdef __cplusplus extern "C" { #endif -extern wchar_t *Py_GetPath(void); - extern grammar _PyParser_Grammar; /* From graminit.c */ /* Forward */ -static void initmain(PyInterpreterState *interp); -static int initfsencoding(PyInterpreterState *interp); -static void initsite(void); -static int initstdio(void); static void flush_io(void); static PyObject *run_mod(mod_ty, PyObject *, PyObject *, PyObject *, PyCompilerFlags *, PyArena *); @@ -97,1182 +61,6 @@ static PyObject *run_pyc_file(FILE *, const char *, PyObject *, PyObject *, PyCompilerFlags *); static void err_input(perrdetail *); static void err_free(perrdetail *); -static void initsigs(void); -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); -extern int _PyFaulthandler_Init(void); -extern void _PyFaulthandler_Fini(void); -extern void _PyHash_Fini(void); -extern int _PyTraceMalloc_Init(void); -extern int _PyTraceMalloc_Fini(void); - -#ifdef WITH_THREAD -extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *); -extern void _PyGILState_Fini(void); -#endif /* WITH_THREAD */ - -int Py_DebugFlag; /* Needed by parser.c */ -int Py_VerboseFlag; /* Needed by import.c */ -int Py_QuietFlag; /* Needed by sysmodule.c */ -int Py_InteractiveFlag; /* Needed by Py_FdIsInteractive() below */ -int Py_InspectFlag; /* Needed to determine whether to exit at SystemExit */ -int Py_NoSiteFlag; /* Suppress 'import site' */ -int Py_BytesWarningFlag; /* Warn on str(bytes) and str(buffer) */ -int Py_DontWriteBytecodeFlag; /* Suppress writing bytecode files (*.py[co]) */ -int Py_UseClassExceptionsFlag = 1; /* Needed by bltinmodule.c: deprecated */ -int Py_FrozenFlag; /* Needed by getpath.c */ -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; - -/* Hack to force loading of object files */ -int (*_PyOS_mystrnicmp_hack)(const char *, const char *, Py_ssize_t) = \ - PyOS_mystrnicmp; /* Python/pystrcmp.o */ - -/* PyModule_GetWarningsModule is no longer necessary as of 2.6 -since _warnings is builtin. This API should not be used. */ -PyObject * -PyModule_GetWarningsModule(void) -{ - return PyImport_ImportModule("warnings"); -} - -static int initialized = 0; - -/* API to access the initialized flag -- useful for esoteric use */ - -int -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 - not return. On return, the first thread and interpreter state have - been created. - - Locking: you must hold the interpreter lock while calling this. - (If the lock has not yet been initialized, that's equivalent to - having the lock, but you cannot use multiple threads.) - -*/ - -static int -add_flag(int flag, const char *envs) -{ - int env = atoi(envs); - if (flag < env) - flag = env; - if (flag < 1) - flag = 1; - return flag; -} - -static char* -get_codec_name(const char *encoding) -{ - char *name_utf8, *name_str; - PyObject *codec, *name = NULL; - - codec = _PyCodec_Lookup(encoding); - if (!codec) - goto error; - - name = _PyObject_GetAttrId(codec, &PyId_name); - Py_CLEAR(codec); - if (!name) - goto error; - - name_utf8 = _PyUnicode_AsString(name); - if (name_utf8 == NULL) - goto error; - name_str = _PyMem_RawStrdup(name_utf8); - Py_DECREF(name); - if (name_str == NULL) { - PyErr_NoMemory(); - return NULL; - } - return name_str; - -error: - Py_XDECREF(codec); - Py_XDECREF(name); - return NULL; -} - -static char* -get_locale_encoding(void) -{ -#ifdef MS_WINDOWS - char codepage[100]; - PyOS_snprintf(codepage, sizeof(codepage), "cp%d", GetACP()); - return get_codec_name(codepage); -#elif defined(HAVE_LANGINFO_H) && defined(CODESET) - char* codeset = nl_langinfo(CODESET); - if (!codeset || codeset[0] == '\0') { - PyErr_SetString(PyExc_ValueError, "CODESET is not set or empty"); - return NULL; - } - return get_codec_name(codeset); -#else - PyErr_SetNone(PyExc_NotImplementedError); - return NULL; -#endif -} - -static void -import_init(PyInterpreterState *interp, PyObject *sysmod) -{ - PyObject *importlib; - PyObject *impmod; - PyObject *sys_modules; - PyObject *value; - - /* Import _importlib through its frozen version, _frozen_importlib. */ - if (PyImport_ImportFrozenModule("_frozen_importlib") <= 0) { - Py_FatalError("Py_Initialize: can't import _frozen_importlib"); - } - else if (Py_VerboseFlag) { - PySys_FormatStderr("import _frozen_importlib # frozen\n"); - } - importlib = PyImport_AddModule("_frozen_importlib"); - if (importlib == NULL) { - Py_FatalError("Py_Initialize: couldn't get _frozen_importlib from " - "sys.modules"); - } - interp->importlib = importlib; - Py_INCREF(interp->importlib); - - /* Install _importlib as __import__ */ - impmod = PyInit_imp(); - if (impmod == NULL) { - Py_FatalError("Py_Initialize: can't import imp"); - } - else if (Py_VerboseFlag) { - PySys_FormatStderr("import imp # builtin\n"); - } - sys_modules = PyImport_GetModuleDict(); - if (Py_VerboseFlag) { - PySys_FormatStderr("import sys # builtin\n"); - } - if (PyDict_SetItemString(sys_modules, "_imp", impmod) < 0) { - Py_FatalError("Py_Initialize: can't save _imp to sys.modules"); - } - - value = PyObject_CallMethod(importlib, "_install", "OO", sysmod, impmod); - if (value == NULL) { - PyErr_Print(); - Py_FatalError("Py_Initialize: importlib install failed"); - } - Py_DECREF(value); - Py_DECREF(impmod); - - _PyImportZip_Init(); -} - - -void -_Py_InitializeEx_Private(int install_sigs, int install_importlib) -{ - PyInterpreterState *interp; - PyThreadState *tstate; - PyObject *bimod, *sysmod, *pstderr; - char *p; - extern void _Py_ReadyTypes(void); - - if (initialized) - return; - initialized = 1; - _Py_Finalizing = NULL; - -#if defined(HAVE_LANGINFO_H) && defined(HAVE_SETLOCALE) - /* Set up the LC_CTYPE locale, so we can obtain - the locale's charset without having to switch - locales. */ - setlocale(LC_CTYPE, ""); -#endif - - if ((p = Py_GETENV("PYTHONDEBUG")) && *p != '\0') - Py_DebugFlag = add_flag(Py_DebugFlag, p); - if ((p = Py_GETENV("PYTHONVERBOSE")) && *p != '\0') - Py_VerboseFlag = add_flag(Py_VerboseFlag, p); - if ((p = Py_GETENV("PYTHONOPTIMIZE")) && *p != '\0') - Py_OptimizeFlag = add_flag(Py_OptimizeFlag, p); - if ((p = Py_GETENV("PYTHONDONTWRITEBYTECODE")) && *p != '\0') - Py_DontWriteBytecodeFlag = add_flag(Py_DontWriteBytecodeFlag, p); - /* The variable is only tested for existence here; _PyRandom_Init will - check its value further. */ - if ((p = Py_GETENV("PYTHONHASHSEED")) && *p != '\0') - Py_HashRandomizationFlag = add_flag(Py_HashRandomizationFlag, p); - - _PyRandom_Init(); - - interp = PyInterpreterState_New(); - if (interp == NULL) - Py_FatalError("Py_Initialize: can't make first interpreter"); - - tstate = PyThreadState_New(interp); - if (tstate == NULL) - Py_FatalError("Py_Initialize: can't make first thread"); - (void) PyThreadState_Swap(tstate); - -#ifdef WITH_THREAD - /* We can't call _PyEval_FiniThreads() in Py_Finalize because - destroying the GIL might fail when it is being referenced from - another running thread (see issue #9901). - Instead we destroy the previously created GIL here, which ensures - that we can call Py_Initialize / Py_Finalize multiple times. */ - _PyEval_FiniThreads(); - - /* Auto-thread-state API */ - _PyGILState_Init(interp, tstate); -#endif /* WITH_THREAD */ - - _Py_ReadyTypes(); - - if (!_PyFrame_Init()) - Py_FatalError("Py_Initialize: can't init frames"); - - if (!_PyLong_Init()) - Py_FatalError("Py_Initialize: can't init longs"); - - if (!PyByteArray_Init()) - Py_FatalError("Py_Initialize: can't init bytearray"); - - if (!_PyFloat_Init()) - Py_FatalError("Py_Initialize: can't init float"); - - interp->modules = PyDict_New(); - if (interp->modules == NULL) - Py_FatalError("Py_Initialize: can't make modules dictionary"); - - /* 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) - Py_FatalError("Py_Initialize: can't initialize builtins modules"); - _PyImport_FixupBuiltin(bimod, "builtins"); - interp->builtins = PyModule_GetDict(bimod); - if (interp->builtins == NULL) - Py_FatalError("Py_Initialize: can't initialize builtins dict"); - Py_INCREF(interp->builtins); - - /* initialize builtin exceptions */ - _PyExc_Init(bimod); - - sysmod = _PySys_Init(); - if (sysmod == NULL) - Py_FatalError("Py_Initialize: can't initialize sys"); - interp->sysdict = PyModule_GetDict(sysmod); - if (interp->sysdict == NULL) - Py_FatalError("Py_Initialize: can't initialize sys dict"); - Py_INCREF(interp->sysdict); - _PyImport_FixupBuiltin(sysmod, "sys"); - PySys_SetPath(Py_GetPath()); - PyDict_SetItemString(interp->sysdict, "modules", - interp->modules); - - /* Set up a preliminary stderr printer until we have enough - infrastructure for the io module in place. */ - pstderr = PyFile_NewStdPrinter(fileno(stderr)); - if (pstderr == NULL) - Py_FatalError("Py_Initialize: can't set preliminary stderr"); - _PySys_SetObjectId(&PyId_stderr, pstderr); - PySys_SetObject("__stderr__", pstderr); - Py_DECREF(pstderr); - - _PyImport_Init(); - - _PyImportHooks_Init(); - - /* Initialize _warnings. */ - _PyWarnings_Init(); - - if (!install_importlib) - return; - - import_init(interp, sysmod); - - /* initialize the faulthandler module */ - if (_PyFaulthandler_Init()) - Py_FatalError("Py_Initialize: can't initialize faulthandler"); - - _PyTime_Init(); - - if (initfsencoding(interp) < 0) - Py_FatalError("Py_Initialize: unable to load the file system codec"); - - if (install_sigs) - initsigs(); /* Signal handling stuff, including initintr() */ - - if (_PyTraceMalloc_Init() < 0) - Py_FatalError("Py_Initialize: can't initialize tracemalloc"); - - initmain(interp); /* Module __main__ */ - if (initstdio() < 0) - Py_FatalError( - "Py_Initialize: can't initialize sys standard streams"); - - /* Initialize warnings. */ - if (PySys_HasWarnOptions()) { - PyObject *warnings_module = PyImport_ImportModule("warnings"); - if (warnings_module == NULL) { - fprintf(stderr, "'import warnings' failed; traceback:\n"); - PyErr_Print(); - } - Py_XDECREF(warnings_module); - } - - if (!Py_NoSiteFlag) - initsite(); /* Module site */ -} - -void -Py_InitializeEx(int install_sigs) -{ - _Py_InitializeEx_Private(install_sigs, 1); -} - -void -Py_Initialize(void) -{ - Py_InitializeEx(1); -} - - -#ifdef COUNT_ALLOCS -extern void dump_counts(FILE*); -#endif - -/* Flush stdout and stderr */ - -static int -file_is_closed(PyObject *fobj) -{ - int r; - PyObject *tmp = PyObject_GetAttrString(fobj, "closed"); - if (tmp == NULL) { - PyErr_Clear(); - return 0; - } - r = PyObject_IsTrue(tmp); - Py_DECREF(tmp); - if (r < 0) - PyErr_Clear(); - return r > 0; -} - -static void -flush_std_files(void) -{ - PyObject *fout = _PySys_GetObjectId(&PyId_stdout); - PyObject *ferr = _PySys_GetObjectId(&PyId_stderr); - PyObject *tmp; - - if (fout != NULL && fout != Py_None && !file_is_closed(fout)) { - tmp = _PyObject_CallMethodId(fout, &PyId_flush, ""); - if (tmp == NULL) - PyErr_WriteUnraisable(fout); - else - Py_DECREF(tmp); - } - - if (ferr != NULL && ferr != Py_None && !file_is_closed(ferr)) { - tmp = _PyObject_CallMethodId(ferr, &PyId_flush, ""); - if (tmp == NULL) - PyErr_Clear(); - else - Py_DECREF(tmp); - } -} - -/* Undo the effect of Py_Initialize(). - - Beware: if multiple interpreter and/or thread states exist, these - are not wiped out; only the current thread and interpreter state - are deleted. But since everything else is deleted, those other - interpreter and thread states should no longer be used. - - (XXX We should do better, e.g. wipe out all interpreters and - threads.) - - Locking: as above. - -*/ - -void -Py_Finalize(void) -{ - PyInterpreterState *interp; - PyThreadState *tstate; - - if (!initialized) - return; - - wait_for_thread_shutdown(); - - /* The interpreter is still entirely intact at this point, and the - * exit funcs may be relying on that. In particular, if some thread - * or exit func is still waiting to do an import, the import machinery - * expects Py_IsInitialized() to return true. So don't say the - * interpreter is uninitialized until after the exit funcs have run. - * Note that Threading.py uses an exit func to do a join on all the - * threads created thru it, so this also protects pending imports in - * the threads created via Threading. - */ - call_py_exitfuncs(); - - /* Get current thread state and interpreter pointer */ - tstate = PyThreadState_GET(); - interp = tstate->interp; - - /* Remaining threads (e.g. daemon threads) will automatically exit - after taking the GIL (in PyEval_RestoreThread()). */ - _Py_Finalizing = tstate; - initialized = 0; - - /* Flush stdout+stderr */ - flush_std_files(); - - /* Disable signal handling */ - PyOS_FiniInterrupts(); - - /* Collect garbage. This may call finalizers; it's nice to call these - * before all modules are destroyed. - * XXX If a __del__ or weakref callback is triggered here, and tries to - * XXX import a module, bad things can happen, because Python no - * XXX longer believes it's initialized. - * XXX Fatal Python error: Interpreter not initialized (version mismatch?) - * XXX is easy to provoke that way. I've also seen, e.g., - * XXX Exception exceptions.ImportError: 'No module named sha' - * XXX in <function callback at 0x008F5718> ignored - * XXX but I'm unclear on exactly how that one happens. In any case, - * XXX I haven't seen a real-life report of either of these. - */ - PyGC_Collect(); -#ifdef COUNT_ALLOCS - /* With COUNT_ALLOCS, it helps to run GC multiple times: - each collection might release some types from the type - list, so they become garbage. */ - while (PyGC_Collect() > 0) - /* nothing */; -#endif - /* Destroy all modules */ - PyImport_Cleanup(); - - /* Flush stdout+stderr (again, in case more was printed) */ - flush_std_files(); - - /* Collect final garbage. This disposes of cycles created by - * class definitions, for example. - * XXX This is disabled because it caused too many problems. If - * XXX a __del__ or weakref callback triggers here, Python code has - * XXX a hard time running, because even the sys module has been - * XXX cleared out (sys.stdout is gone, sys.excepthook is gone, etc). - * XXX One symptom is a sequence of information-free messages - * XXX coming from threads (if a __del__ or callback is invoked, - * XXX other threads can execute too, and any exception they encounter - * XXX triggers a comedy of errors as subsystem after subsystem - * XXX fails to find what it *expects* to find in sys to help report - * XXX the exception and consequent unexpected failures). I've also - * XXX seen segfaults then, after adding print statements to the - * XXX Python code getting called. - */ -#if 0 - PyGC_Collect(); -#endif - - /* Disable tracemalloc after all Python objects have been destroyed, - so it is possible to use tracemalloc in objects destructor. */ - _PyTraceMalloc_Fini(); - - /* Destroy the database used by _PyImport_{Fixup,Find}Extension */ - _PyImport_Fini(); - - /* Cleanup typeobject.c's internal caches. */ - _PyType_Fini(); - - /* unload faulthandler module */ - _PyFaulthandler_Fini(); - - /* Debugging stuff */ -#ifdef COUNT_ALLOCS - dump_counts(stdout); -#endif - /* dump hash stats */ - _PyHash_Fini(); - - PRINT_TOTAL_REFS(); - -#ifdef Py_TRACE_REFS - /* Display all objects still alive -- this can invoke arbitrary - * __repr__ overrides, so requires a mostly-intact interpreter. - * Alas, a lot of stuff may still be alive now that will be cleaned - * up later. - */ - if (Py_GETENV("PYTHONDUMPREFS")) - _Py_PrintReferences(stderr); -#endif /* Py_TRACE_REFS */ - - /* Clear interpreter state and all thread states. */ - PyInterpreterState_Clear(interp); - - /* Now we decref the exception classes. After this point nothing - can raise an exception. That's okay, because each Fini() method - below has been checked to make sure no exceptions are ever - raised. - */ - - _PyExc_Fini(); - - /* Sundry finalizers */ - PyMethod_Fini(); - PyFrame_Fini(); - PyCFunction_Fini(); - PyTuple_Fini(); - PyList_Fini(); - PySet_Fini(); - PyBytes_Fini(); - PyByteArray_Fini(); - PyLong_Fini(); - PyFloat_Fini(); - PyDict_Fini(); - PySlice_Fini(); - _PyGC_Fini(); - _PyRandom_Fini(); - - /* Cleanup Unicode implementation */ - _PyUnicode_Fini(); - - /* reset file system default encoding */ - if (!Py_HasFileSystemDefaultEncoding && Py_FileSystemDefaultEncoding) { - PyMem_RawFree((char*)Py_FileSystemDefaultEncoding); - Py_FileSystemDefaultEncoding = NULL; - } - - /* XXX Still allocated: - - various static ad-hoc pointers to interned strings - - int and float free list blocks - - whatever various modules and libraries allocate - */ - - 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 - * above by _Py_PrintReferences. - */ - if (Py_GETENV("PYTHONDUMPREFS")) - _Py_PrintReferenceAddresses(stderr); -#endif /* Py_TRACE_REFS */ -#ifdef PYMALLOC_DEBUG - if (Py_GETENV("PYTHONMALLOCSTATS")) - _PyObject_DebugMallocStats(stderr); -#endif - - call_ll_exitfuncs(); -} - -/* Create and initialize a new interpreter and thread, and return the - new thread. This requires that Py_Initialize() has been called - first. - - Unsuccessful initialization yields a NULL pointer. Note that *no* - exception information is available even in this case -- the - exception information is held in the thread, and there is no - thread. - - Locking: as above. - -*/ - -PyThreadState * -Py_NewInterpreter(void) -{ - PyInterpreterState *interp; - PyThreadState *tstate, *save_tstate; - PyObject *bimod, *sysmod; - - if (!initialized) - Py_FatalError("Py_NewInterpreter: call Py_Initialize first"); - - interp = PyInterpreterState_New(); - if (interp == NULL) - return NULL; - - tstate = PyThreadState_New(interp); - if (tstate == NULL) { - PyInterpreterState_Delete(interp); - return NULL; - } - - save_tstate = PyThreadState_Swap(tstate); - - /* XXX The following is lax in error checking */ - - interp->modules = PyDict_New(); - - bimod = _PyImport_FindBuiltin("builtins"); - if (bimod != NULL) { - interp->builtins = PyModule_GetDict(bimod); - if (interp->builtins == NULL) - goto handle_error; - Py_INCREF(interp->builtins); - } - - /* initialize builtin exceptions */ - _PyExc_Init(bimod); - - sysmod = _PyImport_FindBuiltin("sys"); - if (bimod != NULL && sysmod != NULL) { - PyObject *pstderr; - - interp->sysdict = PyModule_GetDict(sysmod); - if (interp->sysdict == NULL) - goto handle_error; - Py_INCREF(interp->sysdict); - PySys_SetPath(Py_GetPath()); - PyDict_SetItemString(interp->sysdict, "modules", - interp->modules); - /* Set up a preliminary stderr printer until we have enough - infrastructure for the io module in place. */ - pstderr = PyFile_NewStdPrinter(fileno(stderr)); - if (pstderr == NULL) - Py_FatalError("Py_Initialize: can't set preliminary stderr"); - _PySys_SetObjectId(&PyId_stderr, pstderr); - PySys_SetObject("__stderr__", pstderr); - Py_DECREF(pstderr); - - _PyImportHooks_Init(); - - import_init(interp, sysmod); - - if (initfsencoding(interp) < 0) - goto handle_error; - - if (initstdio() < 0) - Py_FatalError( - "Py_Initialize: can't initialize sys standard streams"); - initmain(interp); - if (!Py_NoSiteFlag) - initsite(); - } - - if (!PyErr_Occurred()) - return tstate; - -handle_error: - /* Oops, it didn't work. Undo it all. */ - - PyErr_PrintEx(0); - PyThreadState_Clear(tstate); - PyThreadState_Swap(save_tstate); - PyThreadState_Delete(tstate); - PyInterpreterState_Delete(interp); - - return NULL; -} - -/* Delete an interpreter and its last thread. This requires that the - given thread state is current, that the thread has no remaining - frames, and that it is its interpreter's only remaining thread. - It is a fatal error to violate these constraints. - - (Py_Finalize() doesn't have these constraints -- it zaps - everything, regardless.) - - Locking: as above. - -*/ - -void -Py_EndInterpreter(PyThreadState *tstate) -{ - PyInterpreterState *interp = tstate->interp; - - if (tstate != PyThreadState_GET()) - 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"); - - PyImport_Cleanup(); - PyInterpreterState_Clear(interp); - PyThreadState_Swap(NULL); - PyInterpreterState_Delete(interp); -} - -#ifdef MS_WINDOWS -static wchar_t *progname = L"python"; -#else -static wchar_t *progname = L"python3"; -#endif - -void -Py_SetProgramName(wchar_t *pn) -{ - if (pn && *pn) - progname = pn; -} - -wchar_t * -Py_GetProgramName(void) -{ - return progname; -} - -static wchar_t *default_home = NULL; -static wchar_t env_home[MAXPATHLEN+1]; - -void -Py_SetPythonHome(wchar_t *home) -{ - default_home = home; -} - -wchar_t * -Py_GetPythonHome(void) -{ - wchar_t *home = default_home; - if (home == NULL && !Py_IgnoreEnvironmentFlag) { - char* chome = Py_GETENV("PYTHONHOME"); - if (chome) { - size_t size = Py_ARRAY_LENGTH(env_home); - size_t r = mbstowcs(env_home, chome, size); - if (r != (size_t)-1 && r < size) - home = env_home; - } - - } - return home; -} - -/* Create __main__ module */ - -static void -initmain(PyInterpreterState *interp) -{ - PyObject *m, *d, *loader; - m = PyImport_AddModule("__main__"); - if (m == NULL) - Py_FatalError("can't create __main__ module"); - d = PyModule_GetDict(m); - if (PyDict_GetItemString(d, "__builtins__") == NULL) { - PyObject *bimod = PyImport_ImportModule("builtins"); - if (bimod == NULL) { - Py_FatalError("Failed to retrieve builtins module"); - } - if (PyDict_SetItemString(d, "__builtins__", bimod) < 0) { - Py_FatalError("Failed to initialize __main__.__builtins__"); - } - Py_DECREF(bimod); - } - /* Main is a little special - imp.is_builtin("__main__") will return - * False, but BuiltinImporter is still the most appropriate initial - * setting for its __loader__ attribute. A more suitable value will - * be set if __main__ gets further initialized later in the startup - * process. - */ - loader = PyDict_GetItemString(d, "__loader__"); - if (loader == NULL || loader == Py_None) { - PyObject *loader = PyObject_GetAttrString(interp->importlib, - "BuiltinImporter"); - if (loader == NULL) { - Py_FatalError("Failed to retrieve BuiltinImporter"); - } - if (PyDict_SetItemString(d, "__loader__", loader) < 0) { - Py_FatalError("Failed to initialize __main__.__loader__"); - } - Py_DECREF(loader); - } -} - -static int -initfsencoding(PyInterpreterState *interp) -{ - PyObject *codec; - - if (Py_FileSystemDefaultEncoding == NULL) - { - Py_FileSystemDefaultEncoding = get_locale_encoding(); - if (Py_FileSystemDefaultEncoding == NULL) - Py_FatalError("Py_Initialize: Unable to get the locale encoding"); - - Py_HasFileSystemDefaultEncoding = 0; - interp->fscodec_initialized = 1; - return 0; - } - - /* the encoding is mbcs, utf-8 or ascii */ - codec = _PyCodec_Lookup(Py_FileSystemDefaultEncoding); - if (!codec) { - /* Such error can only occurs in critical situations: no more - * memory, import a module of the standard library failed, - * etc. */ - return -1; - } - Py_DECREF(codec); - interp->fscodec_initialized = 1; - return 0; -} - -/* Import the site module (not into __main__ though) */ - -static void -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); - } - else { - Py_DECREF(m); - } -} - -static PyObject* -create_stdio(PyObject* io, - int fd, int write_mode, char* name, - char* encoding, char* errors) -{ - PyObject *buf = NULL, *stream = NULL, *text = NULL, *raw = NULL, *res; - const char* mode; - const char* newline; - PyObject *line_buffering; - int buffering, isatty; - _Py_IDENTIFIER(open); - _Py_IDENTIFIER(isatty); - _Py_IDENTIFIER(TextIOWrapper); - _Py_IDENTIFIER(mode); - - /* stdin is always opened in buffered mode, first because it shouldn't - make a difference in common use cases, second because TextIOWrapper - depends on the presence of a read1() method which only exists on - buffered streams. - */ - if (Py_UnbufferedStdioFlag && write_mode) - buffering = 0; - else - buffering = -1; - if (write_mode) - mode = "wb"; - else - mode = "rb"; - buf = _PyObject_CallMethodId(io, &PyId_open, "isiOOOi", - fd, mode, buffering, - Py_None, Py_None, Py_None, 0); - if (buf == NULL) - goto error; - - if (buffering) { - _Py_IDENTIFIER(raw); - raw = _PyObject_GetAttrId(buf, &PyId_raw); - if (raw == NULL) - goto error; - } - else { - raw = buf; - Py_INCREF(raw); - } - - text = PyUnicode_FromString(name); - if (text == NULL || _PyObject_SetAttrId(raw, &PyId_name, text) < 0) - goto error; - res = _PyObject_CallMethodId(raw, &PyId_isatty, ""); - if (res == NULL) - goto error; - isatty = PyObject_IsTrue(res); - Py_DECREF(res); - if (isatty == -1) - goto error; - if (isatty || Py_UnbufferedStdioFlag) - line_buffering = Py_True; - else - line_buffering = Py_False; - - Py_CLEAR(raw); - Py_CLEAR(text); - -#ifdef MS_WINDOWS - /* sys.stdin: enable universal newline mode, translate "\r\n" and "\r" - newlines to "\n". - sys.stdout and sys.stderr: translate "\n" to "\r\n". */ - newline = NULL; -#else - /* sys.stdin: split lines at "\n". - sys.stdout and sys.stderr: don't translate newlines (use "\n"). */ - newline = "\n"; -#endif - - stream = _PyObject_CallMethodId(io, &PyId_TextIOWrapper, "OsssO", - buf, encoding, errors, - newline, line_buffering); - Py_CLEAR(buf); - if (stream == NULL) - goto error; - - if (write_mode) - mode = "w"; - else - mode = "r"; - text = PyUnicode_FromString(mode); - if (!text || _PyObject_SetAttrId(stream, &PyId_mode, text) < 0) - goto error; - Py_CLEAR(text); - return stream; - -error: - Py_XDECREF(buf); - Py_XDECREF(stream); - Py_XDECREF(text); - Py_XDECREF(raw); - return NULL; -} - -static int -is_valid_fd(int fd) -{ - int dummy_fd; - if (fd < 0 || !_PyVerify_fd(fd)) - return 0; - dummy_fd = dup(fd); - if (dummy_fd < 0) - return 0; - close(dummy_fd); - return 1; -} - -/* Initialize sys.stdin, stdout, stderr and builtins.open */ -static int -initstdio(void) -{ - PyObject *iomod = NULL, *wrapper; - PyObject *bimod = NULL; - PyObject *m; - PyObject *std = NULL; - int status = 0, fd; - PyObject * encoding_attr; - 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 */ - if ((m = PyImport_ImportModule("encodings.utf_8")) == NULL) { - goto error; - } - Py_DECREF(m); - - if (!(m = PyImport_ImportModule("encodings.latin_1"))) { - goto error; - } - Py_DECREF(m); - - if (!(bimod = PyImport_ImportModule("builtins"))) { - goto error; - } - - if (!(iomod = PyImport_ImportModule("io"))) { - goto error; - } - if (!(wrapper = PyObject_GetAttrString(iomod, "OpenWrapper"))) { - goto error; - } - - /* Set builtins.open */ - if (PyObject_SetAttrString(bimod, "open", wrapper) == -1) { - Py_DECREF(wrapper); - goto error; - } - Py_DECREF(wrapper); - - 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; - } - } - } - - /* Set sys.stdin */ - fd = fileno(stdin); - /* Under some conditions stdin, stdout and stderr may not be connected - * and fileno() may point to an invalid file descriptor. For example - * GUI apps don't have valid standard streams by default. - */ - if (!is_valid_fd(fd)) { - std = Py_None; - Py_INCREF(std); - } - else { - std = create_stdio(iomod, fd, 0, "<stdin>", encoding, errors); - if (std == NULL) - goto error; - } /* if (fd < 0) */ - PySys_SetObject("__stdin__", std); - _PySys_SetObjectId(&PyId_stdin, std); - Py_DECREF(std); - - /* Set sys.stdout */ - fd = fileno(stdout); - if (!is_valid_fd(fd)) { - std = Py_None; - Py_INCREF(std); - } - else { - std = create_stdio(iomod, fd, 1, "<stdout>", encoding, errors); - if (std == NULL) - goto error; - } /* if (fd < 0) */ - PySys_SetObject("__stdout__", std); - _PySys_SetObjectId(&PyId_stdout, std); - Py_DECREF(std); - -#if 1 /* Disable this if you have trouble debugging bootstrap stuff */ - /* Set sys.stderr, replaces the preliminary stderr */ - fd = fileno(stderr); - if (!is_valid_fd(fd)) { - std = Py_None; - Py_INCREF(std); - } - else { - std = create_stdio(iomod, fd, 1, "<stderr>", encoding, "backslashreplace"); - if (std == NULL) - goto error; - } /* if (fd < 0) */ - - /* Same as hack above, pre-import stderr's codec to avoid recursion - when import.c tries to write to stderr in verbose mode. */ - encoding_attr = PyObject_GetAttrString(std, "encoding"); - if (encoding_attr != NULL) { - 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 */ - - if (PySys_SetObject("__stderr__", std) < 0) { - Py_DECREF(std); - goto error; - } - if (_PySys_SetObjectId(&PyId_stderr, std) < 0) { - Py_DECREF(std); - goto error; - } - Py_DECREF(std); -#endif - - if (0) { - error: - status = -1; - } - - /* 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; -} /* Parse input from a file and execute it */ @@ -1322,7 +110,7 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename_str, PyCompilerFlags * err = -1; for (;;) { ret = PyRun_InteractiveOneObject(fp, filename, flags); - PRINT_TOTAL_REFS(); + _PY_DEBUG_PRINT_TOTAL_REFS(); if (ret == E_EOF) { err = 0; break; @@ -1729,7 +517,7 @@ print_error_text(PyObject *f, int offset, PyObject *text_obj) return; if (offset >= 0) { - if (offset > 0 && offset == strlen(text) && text[offset - 1] == '\n') + if (offset > 0 && (size_t)offset == strlen(text) && text[offset - 1] == '\n') offset--; for (;;) { nl = strchr(text, '\n'); @@ -2587,192 +1375,6 @@ cleanup: } } -/* Print fatal error message and abort */ - -void -Py_FatalError(const char *msg) -{ - const int fd = fileno(stderr); - PyThreadState *tstate; - - fprintf(stderr, "Fatal Python error: %s\n", msg); - fflush(stderr); /* it helps in Windows debug build */ - if (PyErr_Occurred()) { - PyErr_PrintEx(0); - } - else { - tstate = _Py_atomic_load_relaxed(&_PyThreadState_Current); - if (tstate != NULL) { - fputc('\n', stderr); - fflush(stderr); - _Py_DumpTracebackThreads(fd, tstate->interp, tstate); - } - _PyFaulthandler_Fini(); - } - -#ifdef MS_WINDOWS - { - size_t len = strlen(msg); - WCHAR* buffer; - size_t i; - - /* Convert the message to wchar_t. This uses a simple one-to-one - conversion, assuming that the this error message actually uses ASCII - only. If this ceases to be true, we will have to convert. */ - buffer = alloca( (len+1) * (sizeof *buffer)); - for( i=0; i<=len; ++i) - buffer[i] = msg[i]; - OutputDebugStringW(L"Fatal Python error: "); - OutputDebugStringW(buffer); - OutputDebugStringW(L"\n"); - } -#ifdef _DEBUG - DebugBreak(); -#endif -#endif /* MS_WINDOWS */ - abort(); -} - -/* Clean up and exit */ - -#ifdef WITH_THREAD -#include "pythread.h" -#endif - -static void (*pyexitfunc)(void) = NULL; -/* For the atexit module. */ -void _Py_PyAtExit(void (*func)(void)) -{ - pyexitfunc = func; -} - -static void -call_py_exitfuncs(void) -{ - if (pyexitfunc == NULL) - return; - - (*pyexitfunc)(); - PyErr_Clear(); -} - -/* Wait until threading._shutdown completes, provided - the threading module was imported in the first place. - The shutdown routine will wait until all non-daemon - "threading" threads have completed. */ -static void -wait_for_thread_shutdown(void) -{ -#ifdef WITH_THREAD - _Py_IDENTIFIER(_shutdown); - PyObject *result; - PyThreadState *tstate = PyThreadState_GET(); - PyObject *threading = PyMapping_GetItemString(tstate->interp->modules, - "threading"); - if (threading == NULL) { - /* threading not imported */ - PyErr_Clear(); - return; - } - result = _PyObject_CallMethodId(threading, &PyId__shutdown, ""); - if (result == NULL) { - PyErr_WriteUnraisable(threading); - } - else { - Py_DECREF(result); - } - Py_DECREF(threading); -#endif -} - -#define NEXITFUNCS 32 -static void (*exitfuncs[NEXITFUNCS])(void); -static int nexitfuncs = 0; - -int Py_AtExit(void (*func)(void)) -{ - if (nexitfuncs >= NEXITFUNCS) - return -1; - exitfuncs[nexitfuncs++] = func; - return 0; -} - -static void -call_ll_exitfuncs(void) -{ - while (nexitfuncs > 0) - (*exitfuncs[--nexitfuncs])(); - - fflush(stdout); - fflush(stderr); -} - -void -Py_Exit(int sts) -{ - Py_Finalize(); - - exit(sts); -} - -static void -initsigs(void) -{ -#ifdef SIGPIPE - PyOS_setsig(SIGPIPE, SIG_IGN); -#endif -#ifdef SIGXFZ - PyOS_setsig(SIGXFZ, SIG_IGN); -#endif -#ifdef SIGXFSZ - PyOS_setsig(SIGXFSZ, SIG_IGN); -#endif - PyOS_InitInterrupts(); /* May imply initsignal() */ - if (PyErr_Occurred()) { - Py_FatalError("Py_Initialize: can't import signal"); - } -} - - -/* Restore signals that the interpreter has called SIG_IGN on to SIG_DFL. - * - * All of the code in this function must only use async-signal-safe functions, - * listed at `man 7 signal` or - * http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html. - */ -void -_Py_RestoreSignals(void) -{ -#ifdef SIGPIPE - PyOS_setsig(SIGPIPE, SIG_DFL); -#endif -#ifdef SIGXFZ - PyOS_setsig(SIGXFZ, SIG_DFL); -#endif -#ifdef SIGXFSZ - PyOS_setsig(SIGXFSZ, SIG_DFL); -#endif -} - - -/* - * The file descriptor fd is considered ``interactive'' if either - * a) isatty(fd) is TRUE, or - * b) the -i flag was given, and the filename associated with - * the descriptor is NULL or "<stdin>" or "???". - */ -int -Py_FdIsInteractive(FILE *fp, const char *filename) -{ - if (isatty((int)fileno(fp))) - return 1; - if (!Py_InteractiveFlag) - return 0; - return (filename == NULL) || - (strcmp(filename, "<stdin>") == 0) || - (strcmp(filename, "???") == 0); -} - #if defined(USE_STACKCHECK) #if defined(WIN32) && defined(_MSC_VER) @@ -2811,73 +1413,6 @@ PyOS_CheckStack(void) #endif /* USE_STACKCHECK */ - -/* Wrappers around sigaction() or signal(). */ - -PyOS_sighandler_t -PyOS_getsig(int sig) -{ -#ifdef HAVE_SIGACTION - struct sigaction context; - if (sigaction(sig, NULL, &context) == -1) - return SIG_ERR; - return context.sa_handler; -#else - PyOS_sighandler_t handler; -/* Special signal handling for the secure CRT in Visual Studio 2005 */ -#if defined(_MSC_VER) && _MSC_VER >= 1400 - switch (sig) { - /* Only these signals are valid */ - case SIGINT: - case SIGILL: - case SIGFPE: - case SIGSEGV: - case SIGTERM: - case SIGBREAK: - case SIGABRT: - break; - /* Don't call signal() with other values or it will assert */ - default: - return SIG_ERR; - } -#endif /* _MSC_VER && _MSC_VER >= 1400 */ - handler = signal(sig, SIG_IGN); - if (handler != SIG_ERR) - signal(sig, handler); - return handler; -#endif -} - -/* - * All of the code in this function must only use async-signal-safe functions, - * listed at `man 7 signal` or - * http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html. - */ -PyOS_sighandler_t -PyOS_setsig(int sig, PyOS_sighandler_t handler) -{ -#ifdef HAVE_SIGACTION - /* Some code in Modules/signalmodule.c depends on sigaction() being - * used here if HAVE_SIGACTION is defined. Fix that if this code - * changes to invalidate that assumption. - */ - struct sigaction context, ocontext; - context.sa_handler = handler; - sigemptyset(&context.sa_mask); - context.sa_flags = 0; - if (sigaction(sig, &context, &ocontext) == -1) - return SIG_ERR; - return ocontext.sa_handler; -#else - PyOS_sighandler_t oldhandler; - oldhandler = signal(sig, handler); -#ifdef HAVE_SIGINTERRUPT - siginterrupt(sig, 1); -#endif - return oldhandler; -#endif -} - /* Deprecated C API functions still provided for binary compatiblity */ #undef PyParser_SimpleParseFile diff --git a/Python/pytime.c b/Python/pytime.c index de6a41f..a8460c6 100644 --- a/Python/pytime.c +++ b/Python/pytime.c @@ -3,29 +3,24 @@ #include <windows.h> #endif -#if defined(__APPLE__) && defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME) - /* - * _PyTime_gettimeofday falls back to ftime when getttimeofday fails because the latter - * might fail on some platforms. This fallback is unwanted on MacOSX because - * that makes it impossible to use a binary build on OSX 10.4 on earlier - * releases of the OS. Therefore claim we don't support ftime. - */ -# undef HAVE_FTIME +#if defined(__APPLE__) +#include <mach/mach_time.h> /* mach_absolute_time(), mach_timebase_info() */ #endif -#if defined(HAVE_FTIME) && !defined(MS_WINDOWS) -#include <sys/timeb.h> -extern int ftime(struct timeb *); +#ifdef MS_WINDOWS +static OSVERSIONINFOEX winver; #endif -static void -pygettimeofday(_PyTime_timeval *tp, _Py_clock_info_t *info) +static int +pygettimeofday(_PyTime_timeval *tp, _Py_clock_info_t *info, int raise) { #ifdef MS_WINDOWS FILETIME system_time; ULARGE_INTEGER large; ULONGLONG microseconds; + assert(info == NULL || raise); + GetSystemTimeAsFileTime(&system_time); large.u.LowPart = system_time.dwLowDateTime; large.u.HighPart = system_time.dwHighDateTime; @@ -37,80 +32,244 @@ pygettimeofday(_PyTime_timeval *tp, _Py_clock_info_t *info) tp->tv_usec = microseconds % 1000000; if (info) { DWORD timeAdjustment, timeIncrement; - BOOL isTimeAdjustmentDisabled; + BOOL isTimeAdjustmentDisabled, ok; info->implementation = "GetSystemTimeAsFileTime()"; info->monotonic = 0; - (void) GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement, - &isTimeAdjustmentDisabled); + ok = GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement, + &isTimeAdjustmentDisabled); + if (!ok) { + PyErr_SetFromWindowsErr(0); + return -1; + } info->resolution = timeIncrement * 1e-7; info->adjustable = 1; } -#else - /* There are three ways to get the time: - (1) gettimeofday() -- resolution in microseconds - (2) ftime() -- resolution in milliseconds - (3) time() -- resolution in seconds - In all cases the return value in a timeval struct. - Since on some systems (e.g. SCO ODT 3.0) gettimeofday() may - fail, so we fall back on ftime() or time(). - Note: clock resolution does not imply clock accuracy! */ - -#ifdef HAVE_GETTIMEOFDAY + +#else /* MS_WINDOWS */ int err; +#ifdef HAVE_CLOCK_GETTIME + struct timespec ts; +#endif + + assert(info == NULL || raise); + +#ifdef HAVE_CLOCK_GETTIME + err = clock_gettime(CLOCK_REALTIME, &ts); + if (err) { + if (raise) + PyErr_SetFromErrno(PyExc_OSError); + return -1; + } + tp->tv_sec = ts.tv_sec; + tp->tv_usec = ts.tv_nsec / 1000; + + if (info) { + struct timespec res; + info->implementation = "clock_gettime(CLOCK_REALTIME)"; + info->monotonic = 0; + info->adjustable = 1; + if (clock_getres(CLOCK_REALTIME, &res) == 0) + info->resolution = res.tv_sec + res.tv_nsec * 1e-9; + else + info->resolution = 1e-9; + } +#else /* HAVE_CLOCK_GETTIME */ + + /* test gettimeofday() */ #ifdef GETTIMEOFDAY_NO_TZ err = gettimeofday(tp); #else err = gettimeofday(tp, (struct timezone *)NULL); #endif - if (err == 0) { - if (info) { - info->implementation = "gettimeofday()"; - info->resolution = 1e-6; - info->monotonic = 0; - info->adjustable = 1; - } - return; - } -#endif /* HAVE_GETTIMEOFDAY */ - -#if defined(HAVE_FTIME) - { - struct timeb t; - ftime(&t); - tp->tv_sec = t.time; - tp->tv_usec = t.millitm * 1000; - if (info) { - info->implementation = "ftime()"; - info->resolution = 1e-3; - info->monotonic = 0; - info->adjustable = 1; - } + if (err) { + if (raise) + PyErr_SetFromErrno(PyExc_OSError); + return -1; } -#else /* !HAVE_FTIME */ - tp->tv_sec = time(NULL); - tp->tv_usec = 0; + if (info) { - info->implementation = "time()"; - info->resolution = 1.0; + info->implementation = "gettimeofday()"; + info->resolution = 1e-6; info->monotonic = 0; info->adjustable = 1; } -#endif /* !HAVE_FTIME */ - -#endif /* MS_WINDOWS */ +#endif /* !HAVE_CLOCK_GETTIME */ +#endif /* !MS_WINDOWS */ + assert(0 <= tp->tv_usec && tp->tv_usec < 1000 * 1000); + return 0; } void _PyTime_gettimeofday(_PyTime_timeval *tp) { - pygettimeofday(tp, NULL); + if (pygettimeofday(tp, NULL, 0) < 0) { + /* cannot happen, _PyTime_Init() checks that pygettimeofday() works */ + assert(0); + tp->tv_sec = 0; + tp->tv_usec = 0; + } } -void +int _PyTime_gettimeofday_info(_PyTime_timeval *tp, _Py_clock_info_t *info) { - pygettimeofday(tp, info); + return pygettimeofday(tp, info, 1); +} + +static int +pymonotonic(_PyTime_timeval *tp, _Py_clock_info_t *info, int raise) +{ +#ifdef Py_DEBUG + static _PyTime_timeval last = {0, -1}; +#endif +#if defined(MS_WINDOWS) + static ULONGLONG (*GetTickCount64) (void) = NULL; + static ULONGLONG (CALLBACK *Py_GetTickCount64)(void); + static int has_gettickcount64 = -1; + ULONGLONG result; + + assert(info == NULL || raise); + + if (has_gettickcount64 == -1) { + /* GetTickCount64() was added to Windows Vista */ + has_gettickcount64 = (winver.dwMajorVersion >= 6); + if (has_gettickcount64) { + HINSTANCE hKernel32; + hKernel32 = GetModuleHandleW(L"KERNEL32"); + *(FARPROC*)&Py_GetTickCount64 = GetProcAddress(hKernel32, + "GetTickCount64"); + assert(Py_GetTickCount64 != NULL); + } + } + + if (has_gettickcount64) { + result = Py_GetTickCount64(); + } + else { + static DWORD last_ticks = 0; + static DWORD n_overflow = 0; + DWORD ticks; + + ticks = GetTickCount(); + if (ticks < last_ticks) + n_overflow++; + last_ticks = ticks; + + result = (ULONGLONG)n_overflow << 32; + result += ticks; + } + + tp->tv_sec = result / 1000; + tp->tv_usec = (result % 1000) * 1000; + + if (info) { + DWORD timeAdjustment, timeIncrement; + BOOL isTimeAdjustmentDisabled, ok; + if (has_gettickcount64) + info->implementation = "GetTickCount64()"; + else + info->implementation = "GetTickCount()"; + info->monotonic = 1; + ok = GetSystemTimeAdjustment(&timeAdjustment, &timeIncrement, + &isTimeAdjustmentDisabled); + if (!ok) { + PyErr_SetFromWindowsErr(0); + return -1; + } + info->resolution = timeIncrement * 1e-7; + info->adjustable = 0; + } + +#elif defined(__APPLE__) + static mach_timebase_info_data_t timebase; + uint64_t time; + + if (timebase.denom == 0) { + /* According to the Technical Q&A QA1398, mach_timebase_info() cannot + fail: https://developer.apple.com/library/mac/#qa/qa1398/ */ + (void)mach_timebase_info(&timebase); + } + + time = mach_absolute_time(); + + /* nanoseconds => microseconds */ + time /= 1000; + /* apply timebase factor */ + time *= timebase.numer; + time /= timebase.denom; + tp->tv_sec = time / (1000 * 1000); + tp->tv_usec = time % (1000 * 1000); + + if (info) { + info->implementation = "mach_absolute_time()"; + info->resolution = (double)timebase.numer / timebase.denom * 1e-9; + info->monotonic = 1; + info->adjustable = 0; + } + +#else + struct timespec ts; +#ifdef CLOCK_HIGHRES + const clockid_t clk_id = CLOCK_HIGHRES; + const char *implementation = "clock_gettime(CLOCK_HIGHRES)"; +#else + const clockid_t clk_id = CLOCK_MONOTONIC; + const char *implementation = "clock_gettime(CLOCK_MONOTONIC)"; +#endif + + assert(info == NULL || raise); + + if (clock_gettime(clk_id, &ts) != 0) { + if (raise) { + PyErr_SetFromErrno(PyExc_OSError); + return -1; + } + tp->tv_sec = 0; + tp->tv_usec = 0; + return -1; + } + + if (info) { + struct timespec res; + info->monotonic = 1; + info->implementation = implementation; + info->adjustable = 0; + if (clock_getres(clk_id, &res) != 0) { + PyErr_SetFromErrno(PyExc_OSError); + return -1; + } + info->resolution = res.tv_sec + res.tv_nsec * 1e-9; + } + tp->tv_sec = ts.tv_sec; + tp->tv_usec = ts.tv_nsec / 1000; +#endif + assert(0 <= tp->tv_usec && tp->tv_usec < 1000 * 1000); +#ifdef Py_DEBUG + /* monotonic clock cannot go backward */ + assert(last.tv_usec == -1 + || tp->tv_sec > last.tv_sec + || (tp->tv_sec == last.tv_sec && tp->tv_usec >= last.tv_usec)); + last = *tp; +#endif + return 0; +} + +void +_PyTime_monotonic(_PyTime_timeval *tp) +{ + if (pymonotonic(tp, NULL, 0) < 0) { + /* cannot happen, _PyTime_Init() checks that pymonotonic() works */ + assert(0); + tp->tv_sec = 0; + tp->tv_usec = 0; + } +} + +int +_PyTime_monotonic_info(_PyTime_timeval *tp, _Py_clock_info_t *info) +{ + return pymonotonic(tp, info, 1); } static void @@ -245,8 +404,25 @@ _PyTime_ObjectToTimeval(PyObject *obj, time_t *sec, long *usec, return _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round); } -void -_PyTime_Init() +int +_PyTime_Init(void) { - /* Do nothing. Needed to force linking. */ + _PyTime_timeval tv; + +#ifdef MS_WINDOWS + winver.dwOSVersionInfoSize = sizeof(winver); + if (!GetVersionEx((OSVERSIONINFO*)&winver)) { + PyErr_SetFromWindowsErr(0); + return -1; + } +#endif + + /* ensure that the system clock works */ + if (_PyTime_gettimeofday_info(&tv, NULL) < 0) + return -1; + + /* ensure that the operating system provides a monotonic clock */ + if (_PyTime_monotonic_info(&tv, NULL) < 0) + return -1; + return 0; } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 290eec1..0639231 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -1121,6 +1121,16 @@ PyDoc_STRVAR(sys_clear_type_cache__doc__, "_clear_type_cache() -> None\n\ Clear the internal type lookup cache."); +static PyObject * +sys_is_finalizing(PyObject* self, PyObject* args) +{ + return PyBool_FromLong(_Py_Finalizing != NULL); +} + +PyDoc_STRVAR(is_finalizing_doc, +"is_finalizing()\n\ +Return True if Python is exiting."); + static PyMethodDef sys_methods[] = { /* Might as well keep this in alphabetic order */ @@ -1167,6 +1177,7 @@ static PyMethodDef sys_methods[] = { getwindowsversion_doc}, #endif /* MS_WINDOWS */ {"intern", sys_intern, METH_VARARGS, intern_doc}, + {"is_finalizing", sys_is_finalizing, METH_NOARGS, is_finalizing_doc}, #ifdef USE_MALLOPT {"mdebug", sys_mdebug, METH_VARARGS}, #endif @@ -1681,7 +1692,7 @@ _PySys_Init(void) } #endif - /* stdin/stdout/stderr are now set by pythonrun.c */ + /* stdin/stdout/stderr are set in pylifecycle.c */ SET_SYS_FROM_STRING_BORROW("__displayhook__", PyDict_GetItemString(sysdict, "displayhook")); diff --git a/Python/thread.c b/Python/thread.c index 4e695ae..44c071e 100644 --- a/Python/thread.c +++ b/Python/thread.c @@ -431,7 +431,7 @@ PyThread_GetInfo(void) && defined(_CS_GNU_LIBPTHREAD_VERSION)) value = NULL; len = confstr(_CS_GNU_LIBPTHREAD_VERSION, buffer, sizeof(buffer)); - if (1 < len && len < sizeof(buffer)) { + if (1 < len && (size_t)len < sizeof(buffer)) { value = PyUnicode_DecodeFSDefaultAndSize(buffer, len-1); if (value == NULL) PyErr_Clear(); diff --git a/Python/thread_foobar.h b/Python/thread_foobar.h index d2b78c5..ea96f9c 100644 --- a/Python/thread_foobar.h +++ b/Python/thread_foobar.h @@ -1,4 +1,3 @@ - /* * Initialization. */ @@ -61,10 +60,18 @@ PyThread_free_lock(PyThread_type_lock lock) int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag) { + return PyThread_acquire_lock_timed(lock, waitflag ? -1 : 0, 0); +} + +PyLockStatus +PyThread_acquire_lock_timed(PyThread_type_lock lock, PY_TIMEOUT_T microseconds, + int intr_flag) +{ int success; - dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag)); - dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success)); + dprintf(("PyThread_acquire_lock_timed(%p, %lld, %d) called\n", lock, microseconds, intr_flag)); + dprintf(("PyThread_acquire_lock_timed(%p, %lld, %d) -> %d\n", + lock, microseconds, intr_flag, success)); return success; } @@ -73,3 +80,53 @@ PyThread_release_lock(PyThread_type_lock lock) { dprintf(("PyThread_release_lock(%p) called\n", lock)); } + +/* The following are only needed if native TLS support exists */ +#define Py_HAVE_NATIVE_TLS + +#ifdef Py_HAVE_NATIVE_TLS +int +PyThread_create_key(void) +{ + int result; + return result; +} + +void +PyThread_delete_key(int key) +{ + +} + +int +PyThread_set_key_value(int key, void *value) +{ + int ok; + + /* A failure in this case returns -1 */ + if (!ok) + return -1; + return 0; +} + +void * +PyThread_get_key_value(int key) +{ + void *result; + + return result; +} + +void +PyThread_delete_key_value(int key) +{ + +} + +void +PyThread_ReInitTLS(void) +{ + +} + +#endif diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h index d9f7c76..27e0dc8 100644 --- a/Python/thread_pthread.h +++ b/Python/thread_pthread.h @@ -608,7 +608,15 @@ PyThread_create_key(void) { pthread_key_t key; int fail = pthread_key_create(&key, NULL); - return fail ? -1 : key; + if (fail) + return -1; + if (key > INT_MAX) { + /* Issue #22206: handle integer overflow */ + pthread_key_delete(key); + errno = ENOMEM; + return -1; + } + return (int)key; } void diff --git a/Python/traceback.c b/Python/traceback.c index c2aba52..e3adc96 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -231,7 +231,7 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject * } strcpy(namebuf, PyBytes_AS_STRING(path)); Py_DECREF(path); - if (strlen(namebuf) != len) + if (strlen(namebuf) != (size_t)len) continue; /* v contains '\0' */ if (len > 0 && namebuf[len-1] != SEP) namebuf[len++] = SEP; @@ -575,15 +575,16 @@ dump_ascii(int fd, PyObject *text) ch = PyUnicode_READ(kind, data, i); else ch = wstr[i]; - if (ch < 128) { + if (' ' <= ch && ch <= 126) { + /* printable ASCII character */ char c = (char)ch; write(fd, &c, 1); } - else if (ch < 0xff) { + else if (ch <= 0xff) { PUTS(fd, "\\x"); dump_hexadecimal(fd, ch, 2); } - else if (ch < 0xffff) { + else if (ch <= 0xffff) { PUTS(fd, "\\u"); dump_hexadecimal(fd, ch, 4); } @@ -678,7 +679,7 @@ write_thread_id(int fd, PyThreadState *tstate, int is_current) PUTS(fd, "Current thread 0x"); else PUTS(fd, "Thread 0x"); - dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(long)*2); + dump_hexadecimal(fd, (unsigned long)tstate->thread_id, sizeof(unsigned long)*2); PUTS(fd, " (most recent call first):\n"); } |