mirror of
				https://github.com/python/cpython.git
				synced 2025-11-01 06:01:29 +00:00 
			
		
		
		
	Issue #15166: Re-implement imp.get_tag() using sys.implementation.
Also eliminates some C code in Python/import.c as well. Patch by Eric Snow with verification by comparing against another patch from Jeff Knupp.
This commit is contained in:
		
							parent
							
								
									8e2f5564b3
								
							
						
					
					
						commit
						98979b85e7
					
				
					 5 changed files with 194 additions and 195 deletions
				
			
		|  | @ -11,7 +11,7 @@ | ||||||
|                   init_builtin, init_frozen, is_builtin, is_frozen, |                   init_builtin, init_frozen, is_builtin, is_frozen, | ||||||
|                   _fix_co_filename, extension_suffixes) |                   _fix_co_filename, extension_suffixes) | ||||||
| # Could move out of _imp, but not worth the code | # Could move out of _imp, but not worth the code | ||||||
| from _imp import get_magic, get_tag | from _imp import get_magic | ||||||
| 
 | 
 | ||||||
| from importlib._bootstrap import new_module | from importlib._bootstrap import new_module | ||||||
| from importlib._bootstrap import cache_from_source | from importlib._bootstrap import cache_from_source | ||||||
|  | @ -37,6 +37,11 @@ | ||||||
| IMP_HOOK = 9 | IMP_HOOK = 9 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def get_tag(): | ||||||
|  |     """Return the magic tag for .pyc or .pyo files.""" | ||||||
|  |     return sys.implementation.cache_tag | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def get_suffixes(): | def get_suffixes(): | ||||||
|     warnings.warn('imp.get_suffixes() is deprecated; use the constants ' |     warnings.warn('imp.get_suffixes() is deprecated; use the constants ' | ||||||
|                   'defined on importlib.machinery instead', |                   'defined on importlib.machinery instead', | ||||||
|  |  | ||||||
|  | @ -1452,7 +1452,7 @@ def _setup(sys_module, _imp_module): | ||||||
|     # Constants |     # Constants | ||||||
|     setattr(self_module, '_relax_case', _make_relax_case()) |     setattr(self_module, '_relax_case', _make_relax_case()) | ||||||
|     setattr(self_module, '_MAGIC_NUMBER', _imp_module.get_magic()) |     setattr(self_module, '_MAGIC_NUMBER', _imp_module.get_magic()) | ||||||
|     setattr(self_module, '_TAG', _imp.get_tag()) |     setattr(self_module, '_TAG', sys.implementation.cache_tag) | ||||||
|     if builtin_os == 'nt': |     if builtin_os == 'nt': | ||||||
|         SOURCE_SUFFIXES.append('.pyw') |         SOURCE_SUFFIXES.append('.pyw') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -17,6 +17,8 @@ Core and Builtins | ||||||
| Library | Library | ||||||
| ------- | ------- | ||||||
| 
 | 
 | ||||||
|  | - Issue #15166: Implement imp.get_tag() using sys.implementation.cache_tag. | ||||||
|  | 
 | ||||||
| - Issue #15210: Catch KeyError when imprortlib.__init__ can't find | - Issue #15210: Catch KeyError when imprortlib.__init__ can't find | ||||||
|   _frozen_importlib in sys.modules, not ImportError. |   _frozen_importlib in sys.modules, not ImportError. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -112,23 +112,11 @@ typedef unsigned short mode_t; | ||||||
| /* MAGIC must change whenever the bytecode emitted by the compiler may no
 | /* MAGIC must change whenever the bytecode emitted by the compiler may no
 | ||||||
|    longer be understood by older implementations of the eval loop (usually |    longer be understood by older implementations of the eval loop (usually | ||||||
|    due to the addition of new opcodes) |    due to the addition of new opcodes) | ||||||
|    TAG must change for each major Python release. The magic number will take |  | ||||||
|    care of any bytecode changes that occur during development. |  | ||||||
| */ | */ | ||||||
| #define QUOTE(arg) #arg |  | ||||||
| #define STRIFY(name) QUOTE(name) |  | ||||||
| #define MAJOR STRIFY(PY_MAJOR_VERSION) |  | ||||||
| #define MINOR STRIFY(PY_MINOR_VERSION) |  | ||||||
| #define MAGIC (3230 | ((long)'\r'<<16) | ((long)'\n'<<24)) | #define MAGIC (3230 | ((long)'\r'<<16) | ((long)'\n'<<24)) | ||||||
| #define TAG "cpython-" MAJOR MINOR; |  | ||||||
| #define CACHEDIR "__pycache__" | #define CACHEDIR "__pycache__" | ||||||
| /* Current magic word and string tag as globals. */ | /* Current magic word and string tag as globals. */ | ||||||
| static long pyc_magic = MAGIC; | static long pyc_magic = MAGIC; | ||||||
| static const char *pyc_tag = TAG; |  | ||||||
| #undef QUOTE |  | ||||||
| #undef STRIFY |  | ||||||
| #undef MAJOR |  | ||||||
| #undef MINOR |  | ||||||
| 
 | 
 | ||||||
| /* See _PyImport_FixupExtensionObject() below */ | /* See _PyImport_FixupExtensionObject() below */ | ||||||
| static PyObject *extensions = NULL; | static PyObject *extensions = NULL; | ||||||
|  | @ -534,9 +522,22 @@ PyImport_GetMagicNumber(void) | ||||||
| const char * | const char * | ||||||
| PyImport_GetMagicTag(void) | PyImport_GetMagicTag(void) | ||||||
| { | { | ||||||
|     return pyc_tag; |     PyObject *impl, *tag; | ||||||
|  |     const char *raw_tag; | ||||||
|  | 
 | ||||||
|  |     /* We could also pull it from imp or importlib. */ | ||||||
|  |     impl = PySys_GetObject("implementation"); | ||||||
|  |     if (impl == NULL) | ||||||
|  |         return NULL; | ||||||
|  |     tag = PyObject_GetAttrString(impl, "cache_tag"); | ||||||
|  |     if (tag == NULL) | ||||||
|  |         return NULL; | ||||||
|  |     raw_tag = PyUnicode_DATA(tag); | ||||||
|  |     Py_DECREF(tag); | ||||||
|  |     return raw_tag; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /* Magic for extension modules (built-in as well as dynamically
 | /* Magic for extension modules (built-in as well as dynamically
 | ||||||
|    loaded).  To prevent initializing an extension module more than |    loaded).  To prevent initializing an extension module more than | ||||||
|    once, we keep a static dictionary 'extensions' keyed by module name |    once, we keep a static dictionary 'extensions' keyed by module name | ||||||
|  | @ -1846,12 +1847,6 @@ imp_get_magic(PyObject *self, PyObject *noargs) | ||||||
|     return imp_make_magic(pyc_magic); |     return imp_make_magic(pyc_magic); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static PyObject * |  | ||||||
| imp_get_tag(PyObject *self, PyObject *noargs) |  | ||||||
| { |  | ||||||
|     return PyUnicode_FromString(pyc_tag); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static PyObject * | static PyObject * | ||||||
| imp_extension_suffixes(PyObject *self, PyObject *noargs) | imp_extension_suffixes(PyObject *self, PyObject *noargs) | ||||||
| { | { | ||||||
|  | @ -2002,10 +1997,6 @@ PyDoc_STRVAR(doc_get_magic, | ||||||
| "get_magic() -> string\n\
 | "get_magic() -> string\n\
 | ||||||
| Return the magic number for .pyc or .pyo files."); | Return the magic number for .pyc or .pyo files."); | ||||||
| 
 | 
 | ||||||
| PyDoc_STRVAR(doc_get_tag, |  | ||||||
| "get_tag() -> string\n\
 |  | ||||||
| Return the magic tag for .pyc or .pyo files."); |  | ||||||
| 
 |  | ||||||
| PyDoc_STRVAR(doc_extension_suffixes, | PyDoc_STRVAR(doc_extension_suffixes, | ||||||
| "extension_suffixes() -> list of strings\n\
 | "extension_suffixes() -> list of strings\n\
 | ||||||
| Returns the list of file suffixes used to identify extension modules."); | Returns the list of file suffixes used to identify extension modules."); | ||||||
|  | @ -2029,7 +2020,6 @@ On platforms without threads, this function does nothing."); | ||||||
| 
 | 
 | ||||||
| static PyMethodDef imp_methods[] = { | static PyMethodDef imp_methods[] = { | ||||||
|     {"get_magic",        imp_get_magic,    METH_NOARGS,  doc_get_magic}, |     {"get_magic",        imp_get_magic,    METH_NOARGS,  doc_get_magic}, | ||||||
|     {"get_tag",          imp_get_tag,      METH_NOARGS,  doc_get_tag}, |  | ||||||
|     {"extension_suffixes", imp_extension_suffixes, METH_NOARGS, |     {"extension_suffixes", imp_extension_suffixes, METH_NOARGS, | ||||||
|         doc_extension_suffixes}, |         doc_extension_suffixes}, | ||||||
|     {"lock_held",        imp_lock_held,    METH_NOARGS,  doc_lock_held}, |     {"lock_held",        imp_lock_held,    METH_NOARGS,  doc_lock_held}, | ||||||
|  |  | ||||||
|  | @ -3051,8 +3051,8 @@ unsigned char _Py_M__importlib[] = { | ||||||
|     99,1,0,0,0,0,0,0,0,1,0,0,0,4,0,0, |     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, |     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, |     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,1,0,124,0, |     0,0,131,1,1,130,1,0,110,0,0,136,0,0,124,0, | ||||||
|     0,136,0,0,140,1,0,83,40,3,0,0,0,117,45,0, |     0,136,1,0,140,1,0,83,40,3,0,0,0,117,45,0, | ||||||
|     0,0,80,97,116,104,32,104,111,111,107,32,102,111,114,32, |     0,0,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, |     105,109,112,111,114,116,108,105,98,46,109,97,99,104,105,110, | ||||||
|     101,114,121,46,70,105,108,101,70,105,110,100,101,114,46,117, |     101,114,121,46,70,105,108,101,70,105,110,100,101,114,46,117, | ||||||
|  | @ -3062,8 +3062,8 @@ unsigned char _Py_M__importlib[] = { | ||||||
|     117,11,0,0,0,95,112,97,116,104,95,105,115,100,105,114, |     117,11,0,0,0,95,112,97,116,104,95,105,115,100,105,114, | ||||||
|     117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114, |     117,11,0,0,0,73,109,112,111,114,116,69,114,114,111,114, | ||||||
|     40,1,0,0,0,117,4,0,0,0,112,97,116,104,40,2, |     40,1,0,0,0,117,4,0,0,0,112,97,116,104,40,2, | ||||||
|     0,0,0,117,14,0,0,0,108,111,97,100,101,114,95,100, |     0,0,0,117,3,0,0,0,99,108,115,117,14,0,0,0, | ||||||
|     101,116,97,105,108,115,117,3,0,0,0,99,108,115,40,0, |     108,111,97,100,101,114,95,100,101,116,97,105,108,115,40,0, | ||||||
|     0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, |     0,0,0,117,29,0,0,0,60,102,114,111,122,101,110,32, | ||||||
|     105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, |     105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, | ||||||
|     116,114,97,112,62,117,24,0,0,0,112,97,116,104,95,104, |     116,114,97,112,62,117,24,0,0,0,112,97,116,104,95,104, | ||||||
|  | @ -3077,9 +3077,9 @@ unsigned char _Py_M__importlib[] = { | ||||||
|     0,0,0,108,111,97,100,101,114,95,100,101,116,97,105,108, |     0,0,0,108,111,97,100,101,114,95,100,101,116,97,105,108, | ||||||
|     115,117,24,0,0,0,112,97,116,104,95,104,111,111,107,95, |     115,117,24,0,0,0,112,97,116,104,95,104,111,111,107,95, | ||||||
|     102,111,114,95,70,105,108,101,70,105,110,100,101,114,40,0, |     102,111,114,95,70,105,108,101,70,105,110,100,101,114,40,0, | ||||||
|     0,0,0,40,2,0,0,0,117,14,0,0,0,108,111,97, |     0,0,0,40,2,0,0,0,117,3,0,0,0,99,108,115, | ||||||
|     100,101,114,95,100,101,116,97,105,108,115,117,3,0,0,0, |     117,14,0,0,0,108,111,97,100,101,114,95,100,101,116,97, | ||||||
|     99,108,115,117,29,0,0,0,60,102,114,111,122,101,110,32, |     105,108,115,117,29,0,0,0,60,102,114,111,122,101,110,32, | ||||||
|     105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, |     105,109,112,111,114,116,108,105,98,46,95,98,111,111,116,115, | ||||||
|     116,114,97,112,62,117,9,0,0,0,112,97,116,104,95,104, |     116,114,97,112,62,117,9,0,0,0,112,97,116,104,95,104, | ||||||
|     111,111,107,134,4,0,0,115,4,0,0,0,0,10,21,6, |     111,111,107,134,4,0,0,115,4,0,0,0,0,10,21,6, | ||||||
|  | @ -3635,8 +3635,8 @@ unsigned char _Py_M__importlib[] = { | ||||||
|     124,3,0,100,22,0,116,15,0,131,0,0,131,3,0,1, |     124,3,0,100,22,0,116,15,0,131,0,0,131,3,0,1, | ||||||
|     116,8,0,124,3,0,100,23,0,124,1,0,106,16,0,131, |     116,8,0,124,3,0,100,23,0,124,1,0,106,16,0,131, | ||||||
|     0,0,131,3,0,1,116,8,0,124,3,0,100,24,0,116, |     0,0,131,3,0,1,116,8,0,124,3,0,100,24,0,116, | ||||||
|     0,0,106,17,0,131,0,0,131,3,0,1,124,7,0,100, |     1,0,106,17,0,106,18,0,131,3,0,1,124,7,0,100, | ||||||
|     8,0,107,2,0,114,120,2,116,18,0,106,19,0,100,25, |     8,0,107,2,0,114,120,2,116,19,0,106,20,0,100,25, | ||||||
|     0,131,1,0,1,110,0,0,100,26,0,83,40,28,0,0, |     0,131,1,0,1,110,0,0,100,26,0,83,40,28,0,0, | ||||||
|     0,117,250,0,0,0,83,101,116,117,112,32,105,109,112,111, |     0,117,250,0,0,0,83,101,116,117,112,32,105,109,112,111, | ||||||
|     114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105, |     114,116,108,105,98,32,98,121,32,105,109,112,111,114,116,105, | ||||||
|  | @ -3687,7 +3687,7 @@ unsigned char _Py_M__importlib[] = { | ||||||
|     0,0,117,3,0,0,0,95,105,111,117,9,0,0,0,95, |     0,0,117,3,0,0,0,95,105,111,117,9,0,0,0,95, | ||||||
|     119,97,114,110,105,110,103,115,117,8,0,0,0,98,117,105, |     119,97,114,110,105,110,103,115,117,8,0,0,0,98,117,105, | ||||||
|     108,116,105,110,115,117,7,0,0,0,109,97,114,115,104,97, |     108,116,105,110,115,117,7,0,0,0,109,97,114,115,104,97, | ||||||
|     108,40,20,0,0,0,117,4,0,0,0,95,105,109,112,117, |     108,40,21,0,0,0,117,4,0,0,0,95,105,109,112,117, | ||||||
|     3,0,0,0,115,121,115,117,7,0,0,0,104,97,115,97, |     3,0,0,0,115,121,115,117,7,0,0,0,104,97,115,97, | ||||||
|     116,116,114,117,15,0,0,0,66,117,105,108,116,105,110,73, |     116,116,114,117,15,0,0,0,66,117,105,108,116,105,110,73, | ||||||
|     109,112,111,114,116,101,114,117,10,0,0,0,95,95,108,111, |     109,112,111,114,116,101,114,117,10,0,0,0,95,95,108,111, | ||||||
|  | @ -3701,163 +3701,165 @@ unsigned char _Py_M__importlib[] = { | ||||||
|     111,114,117,4,0,0,0,78,111,110,101,117,3,0,0,0, |     111,114,117,4,0,0,0,78,111,110,101,117,3,0,0,0, | ||||||
|     115,101,116,117,16,0,0,0,95,109,97,107,101,95,114,101, |     115,101,116,117,16,0,0,0,95,109,97,107,101,95,114,101, | ||||||
|     108,97,120,95,99,97,115,101,117,9,0,0,0,103,101,116, |     108,97,120,95,99,97,115,101,117,9,0,0,0,103,101,116, | ||||||
|     95,109,97,103,105,99,117,7,0,0,0,103,101,116,95,116, |     95,109,97,103,105,99,117,14,0,0,0,105,109,112,108,101, | ||||||
|     97,103,117,15,0,0,0,83,79,85,82,67,69,95,83,85, |     109,101,110,116,97,116,105,111,110,117,9,0,0,0,99,97, | ||||||
|     70,70,73,88,69,83,117,6,0,0,0,97,112,112,101,110, |     99,104,101,95,116,97,103,117,15,0,0,0,83,79,85,82, | ||||||
|     100,40,13,0,0,0,117,10,0,0,0,115,121,115,95,109, |     67,69,95,83,85,70,70,73,88,69,83,117,6,0,0,0, | ||||||
|     111,100,117,108,101,117,11,0,0,0,95,105,109,112,95,109, |     97,112,112,101,110,100,40,13,0,0,0,117,10,0,0,0, | ||||||
|     111,100,117,108,101,117,6,0,0,0,109,111,100,117,108,101, |     115,121,115,95,109,111,100,117,108,101,117,11,0,0,0,95, | ||||||
|     117,11,0,0,0,115,101,108,102,95,109,111,100,117,108,101, |     105,109,112,95,109,111,100,117,108,101,117,6,0,0,0,109, | ||||||
|     117,12,0,0,0,98,117,105,108,116,105,110,95,110,97,109, |     111,100,117,108,101,117,11,0,0,0,115,101,108,102,95,109, | ||||||
|     101,117,14,0,0,0,98,117,105,108,116,105,110,95,109,111, |     111,100,117,108,101,117,12,0,0,0,98,117,105,108,116,105, | ||||||
|     100,117,108,101,117,10,0,0,0,111,115,95,100,101,116,97, |     110,95,110,97,109,101,117,14,0,0,0,98,117,105,108,116, | ||||||
|     105,108,115,117,10,0,0,0,98,117,105,108,116,105,110,95, |     105,110,95,109,111,100,117,108,101,117,10,0,0,0,111,115, | ||||||
|     111,115,117,15,0,0,0,112,97,116,104,95,115,101,112,97, |     95,100,101,116,97,105,108,115,117,10,0,0,0,98,117,105, | ||||||
|     114,97,116,111,114,115,117,8,0,0,0,112,97,116,104,95, |     108,116,105,110,95,111,115,117,15,0,0,0,112,97,116,104, | ||||||
|     115,101,112,117,9,0,0,0,111,115,95,109,111,100,117,108, |     95,115,101,112,97,114,97,116,111,114,115,117,8,0,0,0, | ||||||
|     101,117,13,0,0,0,116,104,114,101,97,100,95,109,111,100, |     112,97,116,104,95,115,101,112,117,9,0,0,0,111,115,95, | ||||||
|     117,108,101,117,14,0,0,0,119,101,97,107,114,101,102,95, |     109,111,100,117,108,101,117,13,0,0,0,116,104,114,101,97, | ||||||
|     109,111,100,117,108,101,40,0,0,0,0,40,0,0,0,0, |     100,95,109,111,100,117,108,101,117,14,0,0,0,119,101,97, | ||||||
|     117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, |     107,114,101,102,95,109,111,100,117,108,101,40,0,0,0,0, | ||||||
|     111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, |     40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, | ||||||
|     112,62,117,6,0,0,0,95,115,101,116,117,112,116,5,0, |     110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, | ||||||
|     0,115,82,0,0,0,0,9,6,1,6,2,19,1,15,1, |     116,115,116,114,97,112,62,117,6,0,0,0,95,115,101,116, | ||||||
|     16,2,13,1,13,1,15,1,18,2,13,1,20,2,48,1, |     117,112,116,5,0,0,115,82,0,0,0,0,9,6,1,6, | ||||||
|     19,2,31,1,10,1,15,1,13,1,4,2,3,1,15,2, |     2,19,1,15,1,16,2,13,1,13,1,15,1,18,2,13, | ||||||
|     27,1,13,1,5,1,13,1,12,2,12,2,3,1,19,1, |     1,20,2,48,1,19,2,31,1,10,1,15,1,13,1,4, | ||||||
|     13,2,11,1,15,2,16,1,16,1,16,1,16,1,22,2, |     2,3,1,15,2,27,1,13,1,5,1,13,1,12,2,12, | ||||||
|     19,1,22,1,22,1,12,1,117,6,0,0,0,95,115,101, |     2,3,1,19,1,13,2,11,1,15,2,16,1,16,1,16, | ||||||
|     116,117,112,99,2,0,0,0,0,0,0,0,6,0,0,0, |     1,16,1,22,2,19,1,22,1,22,1,12,1,117,6,0, | ||||||
|     4,0,0,0,67,0,0,0,115,136,0,0,0,116,0,0, |     0,0,95,115,101,116,117,112,99,2,0,0,0,0,0,0, | ||||||
|     124,0,0,124,1,0,131,2,0,1,116,1,0,124,1,0, |     0,6,0,0,0,4,0,0,0,67,0,0,0,115,136,0, | ||||||
|     106,2,0,131,0,0,100,2,0,102,3,0,125,2,0,116, |     0,0,116,0,0,124,0,0,124,1,0,131,2,0,1,116, | ||||||
|     4,0,116,5,0,100,3,0,102,3,0,125,3,0,116,7, |     1,0,124,1,0,106,2,0,131,0,0,100,2,0,102,3, | ||||||
|     0,116,8,0,100,3,0,102,3,0,125,4,0,124,2,0, |     0,125,2,0,116,4,0,116,5,0,100,3,0,102,3,0, | ||||||
|     124,3,0,124,4,0,103,3,0,125,5,0,116,9,0,106, |     125,3,0,116,7,0,116,8,0,100,3,0,102,3,0,125, | ||||||
|     10,0,106,11,0,116,12,0,106,13,0,124,5,0,140,0, |     4,0,124,2,0,124,3,0,124,4,0,103,3,0,125,5, | ||||||
|     0,103,1,0,131,1,0,1,116,9,0,106,14,0,106,11, |     0,116,9,0,106,10,0,106,11,0,116,12,0,106,13,0, | ||||||
|     0,116,15,0,116,16,0,116,17,0,103,3,0,131,1,0, |     124,5,0,140,0,0,103,1,0,131,1,0,1,116,9,0, | ||||||
|     1,100,1,0,83,40,4,0,0,0,117,50,0,0,0,73, |     106,14,0,106,11,0,116,15,0,116,16,0,116,17,0,103, | ||||||
|     110,115,116,97,108,108,32,105,109,112,111,114,116,108,105,98, |     3,0,131,1,0,1,100,1,0,83,40,4,0,0,0,117, | ||||||
|     32,97,115,32,116,104,101,32,105,109,112,108,101,109,101,110, |     50,0,0,0,73,110,115,116,97,108,108,32,105,109,112,111, | ||||||
|     116,97,116,105,111,110,32,111,102,32,105,109,112,111,114,116, |     114,116,108,105,98,32,97,115,32,116,104,101,32,105,109,112, | ||||||
|     46,78,70,84,40,18,0,0,0,117,6,0,0,0,95,115, |     108,101,109,101,110,116,97,116,105,111,110,32,111,102,32,105, | ||||||
|     101,116,117,112,117,19,0,0,0,69,120,116,101,110,115,105, |     109,112,111,114,116,46,78,70,84,40,18,0,0,0,117,6, | ||||||
|     111,110,70,105,108,101,76,111,97,100,101,114,117,18,0,0, |     0,0,0,95,115,101,116,117,112,117,19,0,0,0,69,120, | ||||||
|     0,101,120,116,101,110,115,105,111,110,95,115,117,102,102,105, |     116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, | ||||||
|     120,101,115,117,5,0,0,0,70,97,108,115,101,117,16,0, |     114,117,18,0,0,0,101,120,116,101,110,115,105,111,110,95, | ||||||
|     0,0,83,111,117,114,99,101,70,105,108,101,76,111,97,100, |     115,117,102,102,105,120,101,115,117,5,0,0,0,70,97,108, | ||||||
|     101,114,117,15,0,0,0,83,79,85,82,67,69,95,83,85, |     115,101,117,16,0,0,0,83,111,117,114,99,101,70,105,108, | ||||||
|     70,70,73,88,69,83,117,4,0,0,0,84,114,117,101,117, |     101,76,111,97,100,101,114,117,15,0,0,0,83,79,85,82, | ||||||
|     20,0,0,0,83,111,117,114,99,101,108,101,115,115,70,105, |     67,69,95,83,85,70,70,73,88,69,83,117,4,0,0,0, | ||||||
|     108,101,76,111,97,100,101,114,117,17,0,0,0,66,89,84, |     84,114,117,101,117,20,0,0,0,83,111,117,114,99,101,108, | ||||||
|     69,67,79,68,69,95,83,85,70,70,73,88,69,83,117,3, |     101,115,115,70,105,108,101,76,111,97,100,101,114,117,17,0, | ||||||
|     0,0,0,115,121,115,117,10,0,0,0,112,97,116,104,95, |     0,0,66,89,84,69,67,79,68,69,95,83,85,70,70,73, | ||||||
|     104,111,111,107,115,117,6,0,0,0,101,120,116,101,110,100, |     88,69,83,117,3,0,0,0,115,121,115,117,10,0,0,0, | ||||||
|     117,10,0,0,0,70,105,108,101,70,105,110,100,101,114,117, |     112,97,116,104,95,104,111,111,107,115,117,6,0,0,0,101, | ||||||
|     9,0,0,0,112,97,116,104,95,104,111,111,107,117,9,0, |     120,116,101,110,100,117,10,0,0,0,70,105,108,101,70,105, | ||||||
|     0,0,109,101,116,97,95,112,97,116,104,117,15,0,0,0, |     110,100,101,114,117,9,0,0,0,112,97,116,104,95,104,111, | ||||||
|     66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,117, |     111,107,117,9,0,0,0,109,101,116,97,95,112,97,116,104, | ||||||
|     14,0,0,0,70,114,111,122,101,110,73,109,112,111,114,116, |     117,15,0,0,0,66,117,105,108,116,105,110,73,109,112,111, | ||||||
|     101,114,117,10,0,0,0,80,97,116,104,70,105,110,100,101, |     114,116,101,114,117,14,0,0,0,70,114,111,122,101,110,73, | ||||||
|     114,40,6,0,0,0,117,10,0,0,0,115,121,115,95,109, |     109,112,111,114,116,101,114,117,10,0,0,0,80,97,116,104, | ||||||
|     111,100,117,108,101,117,11,0,0,0,95,105,109,112,95,109, |     70,105,110,100,101,114,40,6,0,0,0,117,10,0,0,0, | ||||||
|     111,100,117,108,101,117,10,0,0,0,101,120,116,101,110,115, |     115,121,115,95,109,111,100,117,108,101,117,11,0,0,0,95, | ||||||
|     105,111,110,115,117,6,0,0,0,115,111,117,114,99,101,117, |     105,109,112,95,109,111,100,117,108,101,117,10,0,0,0,101, | ||||||
|     8,0,0,0,98,121,116,101,99,111,100,101,117,17,0,0, |     120,116,101,110,115,105,111,110,115,117,6,0,0,0,115,111, | ||||||
|     0,115,117,112,112,111,114,116,101,100,95,108,111,97,100,101, |     117,114,99,101,117,8,0,0,0,98,121,116,101,99,111,100, | ||||||
|     114,115,40,0,0,0,0,40,0,0,0,0,117,29,0,0, |     101,117,17,0,0,0,115,117,112,112,111,114,116,101,100,95, | ||||||
|     0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,108, |     108,111,97,100,101,114,115,40,0,0,0,0,40,0,0,0, | ||||||
|     105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,8, |     0,117,29,0,0,0,60,102,114,111,122,101,110,32,105,109, | ||||||
|     0,0,0,95,105,110,115,116,97,108,108,180,5,0,0,115, |     112,111,114,116,108,105,98,46,95,98,111,111,116,115,116,114, | ||||||
|     14,0,0,0,0,2,13,1,21,1,15,1,15,1,15,1, |     97,112,62,117,8,0,0,0,95,105,110,115,116,97,108,108, | ||||||
|     28,1,117,8,0,0,0,95,105,110,115,116,97,108,108,78, |     180,5,0,0,115,14,0,0,0,0,2,13,1,21,1,15, | ||||||
|     40,3,0,0,0,117,3,0,0,0,119,105,110,117,6,0, |     1,15,1,15,1,28,1,117,8,0,0,0,95,105,110,115, | ||||||
|     0,0,99,121,103,119,105,110,117,6,0,0,0,100,97,114, |     116,97,108,108,78,40,3,0,0,0,117,3,0,0,0,119, | ||||||
|     119,105,110,40,65,0,0,0,117,7,0,0,0,95,95,100, |     105,110,117,6,0,0,0,99,121,103,119,105,110,117,6,0, | ||||||
|     111,99,95,95,117,27,0,0,0,95,67,65,83,69,95,73, |     0,0,100,97,114,119,105,110,40,65,0,0,0,117,7,0, | ||||||
|     78,83,69,78,83,73,84,73,86,69,95,80,76,65,84,70, |     0,0,95,95,100,111,99,95,95,117,27,0,0,0,95,67, | ||||||
|     79,82,77,83,117,16,0,0,0,95,109,97,107,101,95,114, |     65,83,69,95,73,78,83,69,78,83,73,84,73,86,69,95, | ||||||
|     101,108,97,120,95,99,97,115,101,117,7,0,0,0,95,119, |     80,76,65,84,70,79,82,77,83,117,16,0,0,0,95,109, | ||||||
|     95,108,111,110,103,117,7,0,0,0,95,114,95,108,111,110, |     97,107,101,95,114,101,108,97,120,95,99,97,115,101,117,7, | ||||||
|     103,117,10,0,0,0,95,112,97,116,104,95,106,111,105,110, |     0,0,0,95,119,95,108,111,110,103,117,7,0,0,0,95, | ||||||
|     117,11,0,0,0,95,112,97,116,104,95,115,112,108,105,116, |     114,95,108,111,110,103,117,10,0,0,0,95,112,97,116,104, | ||||||
|     117,18,0,0,0,95,112,97,116,104,95,105,115,95,109,111, |     95,106,111,105,110,117,11,0,0,0,95,112,97,116,104,95, | ||||||
|     100,101,95,116,121,112,101,117,12,0,0,0,95,112,97,116, |     115,112,108,105,116,117,18,0,0,0,95,112,97,116,104,95, | ||||||
|     104,95,105,115,102,105,108,101,117,11,0,0,0,95,112,97, |     105,115,95,109,111,100,101,95,116,121,112,101,117,12,0,0, | ||||||
|     116,104,95,105,115,100,105,114,117,13,0,0,0,95,119,114, |     0,95,112,97,116,104,95,105,115,102,105,108,101,117,11,0, | ||||||
|     105,116,101,95,97,116,111,109,105,99,117,5,0,0,0,95, |     0,0,95,112,97,116,104,95,105,115,100,105,114,117,13,0, | ||||||
|     119,114,97,112,117,4,0,0,0,116,121,112,101,117,8,0, |     0,0,95,119,114,105,116,101,95,97,116,111,109,105,99,117, | ||||||
|     0,0,95,95,99,111,100,101,95,95,117,10,0,0,0,95, |     5,0,0,0,95,119,114,97,112,117,4,0,0,0,116,121, | ||||||
|     99,111,100,101,95,116,121,112,101,117,10,0,0,0,110,101, |     112,101,117,8,0,0,0,95,95,99,111,100,101,95,95,117, | ||||||
|     119,95,109,111,100,117,108,101,117,13,0,0,0,95,109,111, |     10,0,0,0,95,99,111,100,101,95,116,121,112,101,117,10, | ||||||
|     100,117,108,101,95,108,111,99,107,115,117,12,0,0,0,95, |     0,0,0,110,101,119,95,109,111,100,117,108,101,117,13,0, | ||||||
|     98,108,111,99,107,105,110,103,95,111,110,117,12,0,0,0, |     0,0,95,109,111,100,117,108,101,95,108,111,99,107,115,117, | ||||||
|     82,117,110,116,105,109,101,69,114,114,111,114,117,14,0,0, |     12,0,0,0,95,98,108,111,99,107,105,110,103,95,111,110, | ||||||
|     0,95,68,101,97,100,108,111,99,107,69,114,114,111,114,117, |     117,12,0,0,0,82,117,110,116,105,109,101,69,114,114,111, | ||||||
|     11,0,0,0,95,77,111,100,117,108,101,76,111,99,107,117, |     114,117,14,0,0,0,95,68,101,97,100,108,111,99,107,69, | ||||||
|     16,0,0,0,95,68,117,109,109,121,77,111,100,117,108,101, |     114,114,111,114,117,11,0,0,0,95,77,111,100,117,108,101, | ||||||
|     76,111,99,107,117,16,0,0,0,95,103,101,116,95,109,111, |     76,111,99,107,117,16,0,0,0,95,68,117,109,109,121,77, | ||||||
|     100,117,108,101,95,108,111,99,107,117,19,0,0,0,95,108, |     111,100,117,108,101,76,111,99,107,117,16,0,0,0,95,103, | ||||||
|     111,99,107,95,117,110,108,111,99,107,95,109,111,100,117,108, |     101,116,95,109,111,100,117,108,101,95,108,111,99,107,117,19, | ||||||
|     101,117,8,0,0,0,95,80,89,67,65,67,72,69,117,15, |     0,0,0,95,108,111,99,107,95,117,110,108,111,99,107,95, | ||||||
|     0,0,0,83,79,85,82,67,69,95,83,85,70,70,73,88, |     109,111,100,117,108,101,117,8,0,0,0,95,80,89,67,65, | ||||||
|     69,83,117,23,0,0,0,68,69,66,85,71,95,66,89,84, |     67,72,69,117,15,0,0,0,83,79,85,82,67,69,95,83, | ||||||
|     69,67,79,68,69,95,83,85,70,70,73,88,69,83,117,27, |     85,70,70,73,88,69,83,117,23,0,0,0,68,69,66,85, | ||||||
|     0,0,0,79,80,84,73,77,73,90,69,68,95,66,89,84, |     71,95,66,89,84,69,67,79,68,69,95,83,85,70,70,73, | ||||||
|     69,67,79,68,69,95,83,85,70,70,73,88,69,83,117,17, |     88,69,83,117,27,0,0,0,79,80,84,73,77,73,90,69, | ||||||
|     0,0,0,66,89,84,69,67,79,68,69,95,83,85,70,70, |     68,95,66,89,84,69,67,79,68,69,95,83,85,70,70,73, | ||||||
|     73,88,69,83,117,4,0,0,0,78,111,110,101,117,17,0, |     88,69,83,117,17,0,0,0,66,89,84,69,67,79,68,69, | ||||||
|     0,0,99,97,99,104,101,95,102,114,111,109,95,115,111,117, |     95,83,85,70,70,73,88,69,83,117,4,0,0,0,78,111, | ||||||
|     114,99,101,117,16,0,0,0,95,118,101,114,98,111,115,101, |     110,101,117,17,0,0,0,99,97,99,104,101,95,102,114,111, | ||||||
|     95,109,101,115,115,97,103,101,117,11,0,0,0,115,101,116, |     109,95,115,111,117,114,99,101,117,16,0,0,0,95,118,101, | ||||||
|     95,112,97,99,107,97,103,101,117,10,0,0,0,115,101,116, |     114,98,111,115,101,95,109,101,115,115,97,103,101,117,11,0, | ||||||
|     95,108,111,97,100,101,114,117,17,0,0,0,109,111,100,117, |     0,0,115,101,116,95,112,97,99,107,97,103,101,117,10,0, | ||||||
|     108,101,95,102,111,114,95,108,111,97,100,101,114,117,11,0, |     0,0,115,101,116,95,108,111,97,100,101,114,117,17,0,0, | ||||||
|     0,0,95,99,104,101,99,107,95,110,97,109,101,117,17,0, |     0,109,111,100,117,108,101,95,102,111,114,95,108,111,97,100, | ||||||
|     0,0,95,114,101,113,117,105,114,101,115,95,98,117,105,108, |     101,114,117,11,0,0,0,95,99,104,101,99,107,95,110,97, | ||||||
|     116,105,110,117,16,0,0,0,95,114,101,113,117,105,114,101, |     109,101,117,17,0,0,0,95,114,101,113,117,105,114,101,115, | ||||||
|     115,95,102,114,111,122,101,110,117,15,0,0,0,66,117,105, |     95,98,117,105,108,116,105,110,117,16,0,0,0,95,114,101, | ||||||
|     108,116,105,110,73,109,112,111,114,116,101,114,117,14,0,0, |     113,117,105,114,101,115,95,102,114,111,122,101,110,117,15,0, | ||||||
|     0,70,114,111,122,101,110,73,109,112,111,114,116,101,114,117, |     0,0,66,117,105,108,116,105,110,73,109,112,111,114,116,101, | ||||||
|     13,0,0,0,95,76,111,97,100,101,114,66,97,115,105,99, |     114,117,14,0,0,0,70,114,111,122,101,110,73,109,112,111, | ||||||
|     115,117,12,0,0,0,83,111,117,114,99,101,76,111,97,100, |     114,116,101,114,117,13,0,0,0,95,76,111,97,100,101,114, | ||||||
|     101,114,117,10,0,0,0,70,105,108,101,76,111,97,100,101, |     66,97,115,105,99,115,117,12,0,0,0,83,111,117,114,99, | ||||||
|     114,117,16,0,0,0,83,111,117,114,99,101,70,105,108,101, |     101,76,111,97,100,101,114,117,10,0,0,0,70,105,108,101, | ||||||
|     76,111,97,100,101,114,117,20,0,0,0,83,111,117,114,99, |     76,111,97,100,101,114,117,16,0,0,0,83,111,117,114,99, | ||||||
|     101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,117, |     101,70,105,108,101,76,111,97,100,101,114,117,20,0,0,0, | ||||||
|     19,0,0,0,69,120,116,101,110,115,105,111,110,70,105,108, |     83,111,117,114,99,101,108,101,115,115,70,105,108,101,76,111, | ||||||
|     101,76,111,97,100,101,114,117,14,0,0,0,95,78,97,109, |     97,100,101,114,117,19,0,0,0,69,120,116,101,110,115,105, | ||||||
|     101,115,112,97,99,101,80,97,116,104,117,15,0,0,0,78, |     111,110,70,105,108,101,76,111,97,100,101,114,117,14,0,0, | ||||||
|     97,109,101,115,112,97,99,101,76,111,97,100,101,114,117,10, |     0,95,78,97,109,101,115,112,97,99,101,80,97,116,104,117, | ||||||
|     0,0,0,80,97,116,104,70,105,110,100,101,114,117,10,0, |     15,0,0,0,78,97,109,101,115,112,97,99,101,76,111,97, | ||||||
|     0,0,70,105,108,101,70,105,110,100,101,114,117,18,0,0, |     100,101,114,117,10,0,0,0,80,97,116,104,70,105,110,100, | ||||||
|     0,95,73,109,112,111,114,116,76,111,99,107,67,111,110,116, |     101,114,117,10,0,0,0,70,105,108,101,70,105,110,100,101, | ||||||
|     101,120,116,117,13,0,0,0,95,114,101,115,111,108,118,101, |     114,117,18,0,0,0,95,73,109,112,111,114,116,76,111,99, | ||||||
|     95,110,97,109,101,117,12,0,0,0,95,102,105,110,100,95, |     107,67,111,110,116,101,120,116,117,13,0,0,0,95,114,101, | ||||||
|     109,111,100,117,108,101,117,13,0,0,0,95,115,97,110,105, |     115,111,108,118,101,95,110,97,109,101,117,12,0,0,0,95, | ||||||
|     116,121,95,99,104,101,99,107,117,8,0,0,0,95,69,82, |     102,105,110,100,95,109,111,100,117,108,101,117,13,0,0,0, | ||||||
|     82,95,77,83,71,117,23,0,0,0,95,102,105,110,100,95, |     95,115,97,110,105,116,121,95,99,104,101,99,107,117,8,0, | ||||||
|     97,110,100,95,108,111,97,100,95,117,110,108,111,99,107,101, |     0,0,95,69,82,82,95,77,83,71,117,23,0,0,0,95, | ||||||
|     100,117,14,0,0,0,95,102,105,110,100,95,97,110,100,95, |     102,105,110,100,95,97,110,100,95,108,111,97,100,95,117,110, | ||||||
|     108,111,97,100,117,11,0,0,0,95,103,99,100,95,105,109, |     108,111,99,107,101,100,117,14,0,0,0,95,102,105,110,100, | ||||||
|     112,111,114,116,117,16,0,0,0,95,104,97,110,100,108,101, |     95,97,110,100,95,108,111,97,100,117,11,0,0,0,95,103, | ||||||
|     95,102,114,111,109,108,105,115,116,117,17,0,0,0,95,99, |     99,100,95,105,109,112,111,114,116,117,16,0,0,0,95,104, | ||||||
|     97,108,99,95,95,95,112,97,99,107,97,103,101,95,95,117, |     97,110,100,108,101,95,102,114,111,109,108,105,115,116,117,17, | ||||||
|     10,0,0,0,95,95,105,109,112,111,114,116,95,95,117,13, |     0,0,0,95,99,97,108,99,95,95,95,112,97,99,107,97, | ||||||
|     0,0,0,95,77,65,71,73,67,95,78,85,77,66,69,82, |     103,101,95,95,117,10,0,0,0,95,95,105,109,112,111,114, | ||||||
|     117,4,0,0,0,95,84,65,71,117,6,0,0,0,95,115, |     116,95,95,117,13,0,0,0,95,77,65,71,73,67,95,78, | ||||||
|     101,116,117,112,117,8,0,0,0,95,105,110,115,116,97,108, |     85,77,66,69,82,117,4,0,0,0,95,84,65,71,117,6, | ||||||
|     108,40,0,0,0,0,40,0,0,0,0,40,0,0,0,0, |     0,0,0,95,115,101,116,117,112,117,8,0,0,0,95,105, | ||||||
|     117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112, |     110,115,116,97,108,108,40,0,0,0,0,40,0,0,0,0, | ||||||
|     111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97, |     40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,101, | ||||||
|     112,62,117,8,0,0,0,60,109,111,100,117,108,101,62,8, |     110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,111, | ||||||
|     0,0,0,115,120,0,0,0,6,21,6,3,12,13,12,16, |     116,115,116,114,97,112,62,117,8,0,0,0,60,109,111,100, | ||||||
|     12,13,12,12,12,12,12,10,12,6,12,7,12,21,12,8, |     117,108,101,62,8,0,0,0,115,120,0,0,0,6,21,6, | ||||||
|     15,3,12,12,6,2,6,3,22,4,19,68,19,23,12,17, |     3,12,13,12,16,12,13,12,12,12,12,12,10,12,6,12, | ||||||
|     12,21,6,2,9,2,9,1,9,2,6,4,15,22,12,8, |     7,12,21,12,8,15,3,12,12,6,2,6,3,22,4,19, | ||||||
|     12,13,12,11,12,51,12,18,12,11,12,13,19,57,19,54, |     68,19,23,12,17,12,21,6,2,9,2,9,1,9,2,6, | ||||||
|     19,79,22,111,19,29,25,38,25,24,19,40,19,55,19,18, |     4,15,22,12,8,12,13,12,11,12,51,12,18,12,11,12, | ||||||
|     19,81,19,135,19,13,12,9,12,17,12,17,6,2,12,46, |     13,19,57,19,54,19,79,22,111,19,29,25,38,25,24,19, | ||||||
|     12,13,18,25,12,23,12,15,24,30,6,1,6,3,12,64, |     40,19,55,19,18,19,81,19,135,19,13,12,9,12,17,12, | ||||||
|  |     17,6,2,12,46,12,13,18,25,12,23,12,15,24,30,6, | ||||||
|  |     1,6,3,12,64, | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Brett Cannon
						Brett Cannon