LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDAzLDIwMDQsMjAwNywyMDA4IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKiBDb3B5cmlnaHQgMjAxMCBKb3PpIFJvc3RhZ25vCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJzaHJlc2RlZi5oIgoKTEFOR1VBR0UgTEFOR19TUEFOSVNILCBTVUJMQU5HX05FVVRSQUwKCk1FTlVfMDAxIE1FTlUKQkVHSU4KCU1FTlVJVEVNICJJY29ub3MgJmdyYW5kZXMiLAlGQ0lETV9TSFZJRVdfQklHSUNPTgoJTUVOVUlURU0gIkljb25vcyAmcGVxdWXxb3MiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCglNRU5VSVRFTSAiJkxpc3RhIiwJCUZDSURNX1NIVklFV19MSVNUVklFVwoJTUVOVUlURU0gIiZEZXRhbGxlcyIsCQlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwpFTkQKCi8qCiBzaGVsbHZpZXcgYmFja2dyb3VuZCBtZW51CiovCk1FTlVfMDAyIE1FTlUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBQT1BVUCAiJlZlciIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiSWNvbm9zICZncmFuZGVzIiwgICAgIEZDSURNX1NIVklFV19CSUdJQ09OCgkgICAgTUVOVUlURU0gIkljb25vcyAmcGVxdWXxb3MiLCAgICBGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIiZMaXN0YSIsICAgICAgICAgICAgICBGQ0lETV9TSFZJRVdfTElTVFZJRVcKCSAgICBNRU5VSVRFTSAiJkRldGFsbGVzIiwgICAgICAgICAgIEZDSURNX1NIVklFV19SRVBPUlRWSUVXCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIk9yZGVuYXIgJmljb25vcyIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiUG9yICZub21icmUiLAkweDMwCS8qIGNvbHVtbiAwICovCgkgICAgTUVOVUlURU0gIlBvciAmdGlwbyIsCTB4MzIJLyogY29sdW1uIDIgKi8KCSAgICBNRU5VSVRFTSAiUG9yIHQmYW1h8W8iLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICJQb3IgJmZlY2hhIiwJMHgzMwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICAgIE1FTlVJVEVNICImT3JkZW5hciBhdXRvbeF0aWNhbWVudGUiLAlGQ0lETV9TSFZJRVdfQVVUT0FSUkFOR0UKCSAgRU5ECgkgIE1FTlVJVEVNICJBbGluZWFyIGljb25vcyIsCQlGQ0lETV9TSFZJRVdfU05BUFRPR1JJRAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkFjdHVhbGl6YXIiLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJQZWdhciIsCQkJRkNJRE1fU0hWSUVXX0lOU0VSVAoJICBNRU5VSVRFTSAiUGVnYXIgYWNjZXNvIGRpcmVjdG8iLAlGQ0lETV9TSFZJRVdfSU5TRVJUTElOSwoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIk51ZXZvIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJOdWV2YSAmY2FycGV0YSIsCQlGQ0lETV9TSFZJRVdfTkVXRk9MREVSCgkgICAgTUVOVUlURU0gIk51ZXZvICZhY2Nlc28gZGlyZWN0byIsCUZDSURNX1NIVklFV19ORVdMSU5LCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIlByb3BpZWRhZGVzIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCi8qCiBzaGVsbHZpZXcgaXRlbSBtZW51CiovCk1FTlVfU0hWX0ZJTEUgTUVOVQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIE1FTlVJVEVNICImU2VsZWNjaW9uYXIiCQlGQ0lETV9TSFZJRVdfT1BFTgoJICBNRU5VSVRFTSAiRSZ4cGxvcmFyIiwJCQlGQ0lETV9TSFZJRVdfRVhQTE9SRQoJICBNRU5VSVRFTSAiJkFicmlyIiwJCQlGQ0lETV9TSFZJRVdfT1BFTgoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkMmb3J0YXIiLAkJCUZDSURNX1NIVklFV19DVVQKCSAgTUVOVUlURU0gIiZDb3BpYXIiLAkJCUZDSURNX1NIVklFV19DT1BZCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiQyZyZWFyIGFjY2VzbyBkaXJlY3RvIiwJRkNJRE1fU0hWSUVXX0NSRUFURUxJTksKCSAgTUVOVUlURU0gIiZFbGltaW5hciIsCQkJRkNJRE1fU0hWSUVXX0RFTEVURQoJICBNRU5VSVRFTSAiUmUmbm9tYnJhciIsCQlGQ0lETV9TSFZJRVdfUkVOQU1FCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiJlByb3BpZWRhZGVzIiwJCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgpNRU5VX0NQQU5FTCBNRU5VCkJFR0lOCiAgICBQT1BVUCAiJkFyY2hpdm8iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTJmFsaXIiLCBJRE1fQ1BBTkVMX0VYSVQKICAgIEVORAoKICAgIFBPUFVQICImVmVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiSWNvbm9zICZncmFuZGVzIiwgRkNJRE1fU0hWSUVXX0JJR0lDT04KICAgICAgICBNRU5VSVRFTSAiSWNvbm9zICZwZXF1ZfFvcyIsIEZDSURNX1NIVklFV19TTUFMTElDT04KICAgICAgICBNRU5VSVRFTSAiJkxpc3RhIiwgRkNJRE1fU0hWSUVXX0xJU1RWSUVXCiAgICAgICAgTUVOVUlURU0gIiZEZXRhbGxlcyIsIEZDSURNX1NIVklFV19SRVBPUlRWSUVXCiAgICBFTkQKCiAgICBQT1BVUCAiJkF5dWRhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFjZXJjYSBkZSBQYW5lbCBkZSBDb250cm9sLi4uIiwgSURNX0NQQU5FTF9BQk9VVAogICAgRU5ECkVORAoKU0hCUlNGT1JGT0xERVJfTVNHQk9YIERJQUxPRyAxNSwgNDAsIDE4OCwgMTkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIkV4cGxvcmFyIGNhcnBldGEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiQWNlcHRhciIsIDEsIDgwLCAxNzYsIDUwLCAxMiwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQ2FuY2VsYXIiLCAyLCAxMzQsIDE3NiwgNTAsIDEyLCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIExURVhUICIiLCBJRERfVElUTEUsIDQsIDQsIDE4MCwgMTIKIExURVhUICIiLCBJRERfU1RBVFVTLCA0LCAyNSwgMTgwLCAxMgogQ09OVFJPTCAiIiwgSUREX1RSRUVWSUVXLCAiU3lzVHJlZVZpZXczMiIsCiAJVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAoJV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKCTQsIDQwLCAxODAsIDEyMAp9CgpTSE5FV0JSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIDE1LCA0MCwgMjE4LCAxOTYKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VIHwgV1NfU0laRUJPWCB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIkV4cGxvcmFyIGNhcnBldGEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogTFRFWFQgIiIsIElERF9USVRMRSwgMTAsIDgsIDE5OCwgMjQKIExURVhUICIiLCBJRERfU1RBVFVTLCAxMCwgMjUsIDE5OCwgMTIKIExURVhUICJDYXJwZXRhOiIsIElERF9GT0xERVIsIDEwLCAxNTYsIDQwLCAxMgogQ09OVFJPTCAiIiwgSUREX1RSRUVWSUVXLCAiU3lzVHJlZVZpZXczMiIsCiAgICAgICBUVlNfSEFTQlVUVE9OUyB8IFRWU19IQVNMSU5FUyB8IFRWU19MSU5FU0FUUk9PVCB8CiAgICAgICBXU19CT1JERVIgfCBXU19UQUJTVE9QLAogICAgICAgMTIsIDM4LCAxOTQsIDEwNQogRURJVFRFWFQgSUREX0ZPTERFUlRFWFQsIDQ2LCAxNTAsIDE2MCwgMTQsIFdTX0JPUkRFUiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJkhhY2VyIG51ZXZhIGNhcnBldGEiLCBJRERfTUFLRU5FV0ZPTERFUiwgMTIsIDE3NCwgNzAsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIERFRlBVU0hCVVRUT04gIkFjZXB0YXIiLCBJRE9LLCAxMDIsIDE3NCwgNTAsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJDYW5jZWxhciIsIElEQ0FOQ0VMLCAxNTYsIDE3NCwgNTAsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKfQoKU0hFTExfWUVTVE9BTExfTVNHQk9YIERJQUxPRyAyMDAsIDEwMCwgMjgwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTWVuc2FqZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBERUZQVVNIQlVUVE9OICImU+0iLCBJRFlFUywgMzQsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiU+0gYSAmdG9kbyIsIElERF9ZRVNUT0FMTCwgOTIsIDY5LCA2NSwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiJk5vIiwgSUROTywgMTYyLCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIiZDYW5jZWxhciIsIElEQ0FOQ0VMLCAyMjAsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgSUNPTiAiIiwgSUREX0lDT04sIDEwLCAxMCwgMTYsIDE2CiAgICBMVEVYVCAiIiwgSUREX01FU1NBR0UsIDQwLCAxMCwgMjM4LCA1MiwgMAp9CgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIDE1LCA0MCwgMjIwLCAxNTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkFjZXJjYSBkZSAlcyIKRk9OVCAxMCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiQWNlcHRhciIsIElET0ssIDE1MywgMTMzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZMaWNlbmNpYSBkZSBXaW5lLi4uIiwgSURDX0FCT1VUX0xJQ0VOU0UsIDE1MywgMTEzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggSURDX0FCT1VUX0xJU1RCT1gsIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgc3RjMSwgMTAsIDEwLCAzMCwgMzAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQxLCA0MiwgMTAsIDE3MCwgMTAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQyLCA0MiwgMjIsIDE3MCwgMTAKIExURVhUICJFamVjdXThbmRvc2UgZW4gJXMiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQzLCA0MiwgMzQsIDE3MCwgMTAKIExURVhUICJXaW5lIGxlIGhhIHNpZG8gcHJvcG9yY2lvbmFkbyBwb3I6IiwgSURDX0FCT1VUX1dJTkVfVEVYVCwgOCwgNTQsIDIwNCwgMTAKfQoKU0hFTExfUlVOX0RMRyBESUFMT0cgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIElDT04gIiIsIDEyMjk3LCA3LCAxMSwgMTgsIDIwLCBXU19WSVNJQkxFCiBMVEVYVCAiSW50cm9kdXpjYSBlbCBub21icmUgZGUgdW4gcHJvZ3JhbWEsIGNhcnBldGEsIGRvY3VtZW50byBvIHJlY3Vyc28gZGUgSW50ZXJuZXQ7IHkgV2luZSBsbyBhYnJpcuEgcGFyYSB1c3RlZC4iLCAxMjI4OSwgMzYsIDExLCAxODIsIDE4CiBMVEVYVCAiJkFicmlyOiIsIDEyMzA1LCA3LCAzOSwgMjQsIDEwCiBDT05UUk9MICIiLCAxMjI5OCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCiBERUZQVVNIQlVUVE9OICJBY2VwdGFyIiwgSURPSywgNjIsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIkNhbmNlbGFyIiwgSURDQU5DRUwsIDExNiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJkV4YW1pbmFyLi4uIiwgMTIyODgsIDE3MCwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAp9CgpTVFJJTkdUQUJMRQp7CiAgICAgICAgLyogY29sdW1ucyBpbiB0aGUgc2hlbGx2aWV3ICovCglJRFNfU0hWX0NPTFVNTjEgICAgICAgICAiQXJjaGl2byIKCUlEU19TSFZfQ09MVU1OMiAgICAgICAgICJUYW1h8W8iCglJRFNfU0hWX0NPTFVNTjMgICAgICAgICAiVGlwbyIKCUlEU19TSFZfQ09MVU1ONCAgICAgICAgICJNb2RpZmljYWRvIgoJSURTX1NIVl9DT0xVTU41ICAgICAgICAgIkF0cmlidXRvcyIKCUlEU19TSFZfQ09MVU1ONiAgICAgICAgICJUYW1h8W8iCglJRFNfU0hWX0NPTFVNTjcgICAgICAgICAiVGFtYfFvIGRpc3BvbmlibGUiCglJRFNfU0hWX0NPTFVNTjggICAgICAgICAiTm9tYnJlIgoJSURTX1NIVl9DT0xVTU45ICAgICAgICAgIkNvbWVudGFyaW9zIgoJSURTX1NIVl9DT0xVTU4xMCAgICAgICAgIlByb3BpZXRhcm8iCglJRFNfU0hWX0NPTFVNTjExICAgICAgICAiR3J1cG8iCglJRFNfU0hWX0NPTFVNTl9ERUxGUk9NICAiTHVnYXIgb3JpZ2luYWwiCglJRFNfU0hWX0NPTFVNTl9ERUxEQVRFICAiRmVjaGEgZGUgYm9ycmFkbyIKCUlEU19TSFZfQ09MX0RPQ1MgICAgICAgICJEb2N1bWVudG9zIgoJSURTX1NIVl9DT0xfU1RBVFVTICAgICAgIkVzdGFkbyIKCUlEU19TSFZfQ09MX0xPQ0FUSU9OICAgICJVYmljYWNp824iCglJRFNfU0hWX0NPTF9NT0RFTCAgICAgICAiTW9kZWxvIgoKICAgICAgICAvKiBzcGVjaWFsIGZvbGRlcnMgKi8KCUlEU19ERVNLVE9QCQkiRXNjcml0b3JpbyIKCUlEU19NWUNPTVBVVEVSCQkiTWkgUEMiCiAgICAgICAgSURTX1JFQ1lDTEVCSU5fRk9MREVSX05BTUUgIlBhcGVsZXJhIGRlIHJlY2ljbGFqZSIKCUlEU19DT05UUk9MUEFORUwJIlBhbmVsIGRlIENvbnRyb2wiCgogICAgICAgIC8qIGNvbnRleHQgbWVudXMgKi8KCUlEU19WSUVXX0xBUkdFCQkiSWNvbm9zICZncmFuZGVzIgoJSURTX1ZJRVdfU01BTEwJCSJJY29ub3MgJnBlcXVl8W9zIgoJSURTX1ZJRVdfTElTVAkJIiZMaXN0YSIKCUlEU19WSUVXX0RFVEFJTFMJIiZEZXRhbGxlcyIKCUlEU19TRUxFQ1QJCSJTZWxlY2Npb25hciIKCUlEU19PUEVOCQkiQWJyaXIiCgoJSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIk5vIHNlIHB1ZWRlIGNyZWFyIG51ZXZhIGNhcnBldGE6IFBlcm1pc28gZGVuZWdhZG8uIgoJSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICJFcnJvciBkdXJhbnRlIGxhIGNyZWFjafNuIGRlIHVuYSBudWV2YSBjYXJwZXRhIgoJSURTX0RFTEVURUlURU1fQ0FQVElPTiAiQ29uZmlybWFyIGVsaW1pbmFjafNuIGRlIGFyY2hpdm8iCglJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIkNvbmZpcm1hciBlbGltaW5hY2nzbiBkZSBjYXJwZXRhIgoJSURTX0RFTEVURUlURU1fVEVYVCAiv1NlZ3VybyBxdWUgZGVzZWEgZWxpbWluYXIgJyUxJz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAiv1NlZ3VybyBxdWUgZGVzZWEgZWxpbWluYXIgZXN0b3MgJTEgZWxlbWVudG9zPyIKCUlEU19ERUxFVEVTRUxFQ1RFRF9URVhUICK/U2VndXJvIHF1ZSBkZXNlYSBlbGltaW5hciBlbCAobG9zKSBlbGVtZW50byhzKSBzZWxlY2Npb25hZG8ocyk/IgoJSURTX1RSQVNISVRFTV9URVhUICK/U2VndXJvIHF1ZSBkZXNlYSBlbnZpYXIgJyUxJyBhIGxhIHBhcGVsZXJhIGRlIHJlY2ljbGFqZT8iCglJRFNfVFJBU0hGT0xERVJfVEVYVCAiv1NlZ3VybyBxdWUgZGVzZWEgZW52aWFyICclMScgeSB0b2RvIHN1IGNvbnRlbmlkbyBhIGxhIHBhcGVsZXJhIGRlIHJlY2ljbGFqZT8iCglJRFNfVFJBU0hNVUxUSVBMRV9URVhUICK/U2VndXJvIHF1ZSBkZXNlYSBlbnZpYXIgZXN0b3MgJTEgZWxlbWVudG9zIGEgbGEgcGFwZWxlcmEgZGUgcmVjaWNsYWplPyIKCUlEU19DQU5UVFJBU0hfVEVYVCAiRWwgZWxlbWVudG8gJyUxJyBubyBwdWVkZSBlbnZpYXJzZSBhIGxhIHBhcGVsZXJhIGRlIHJlY2ljbGFqZS4gv0Rlc2VhIGVsaW1pbmFybG8gZW4gc3UgbHVnYXI/IgoJSURTX09WRVJXUklURUZJTEVfVEVYVCAiRXN0YSBjYXJwZXRhIHlhIGNvbnRpZW5lIHVuIGFyY2hpdm8gbGxhbWFkbyAnJTEnLlxuXG6/RGVzZWEgcmVlbXBsYXphcmxvPyIKCUlEU19PVkVSV1JJVEVGSUxFX0NBUFRJT04gIkNvbmZpcm1hciBzb2JyZWVzY3JpdHVyYSBkZSBhcmNoaXZvIgoJSURTX09WRVJXUklURUZPTERFUl9URVhUICJFc3RhIGNhcnBldGEgeWEgY29udGllbmUgdW5hIGNhcnBldGEgbGxhbWFkYSAnJTEnLlxuXG4iXAoJICAgICJTaSBsb3MgYXJjaGl2b3MgZGUgbGEgY2FycGV0YSBkZSBkZXN0aW5vIHRpZW5lbiBsb3MgbWlzbW9zIG5vbWJyZXMgcXVlIGxvc1xuIlwKCSAgICAiZGUgbGEgY2FycGV0YSBzZWxlY2Npb25hZGEsIOlzdG9zIHNlcuFuIHJlZW1wbGF6YWRvcy4gv1RvZGF27WEgZGVzZWEgbW92ZXJcbiJcCgkgICAgIm8gY29waWFyIGxhIGNhcnBldGE/IgoKICAgICAgICAvKiBtZXNzYWdlIGJveCBzdHJpbmdzICovCiAgICAgICAgSURTX1JFU1RBUlRfVElUTEUJIlJlaW5pY2lhciIKICAgICAgICBJRFNfUkVTVEFSVF9QUk9NUFQJIr9EZXNlYSBzaW11bGFyIHVuIHJlaW5pY2lvIGRlIFdpbmRvd3M/IgogICAgICAgIElEU19TSFVURE9XTl9USVRMRQkiQXBhZ2FyIgogICAgICAgIElEU19TSFVURE9XTl9QUk9NUFQJIr9EZXNlYSB0ZXJtaW5hciBzdSBzZXNp824gZGUgV2luZT8iCgogICAgICAgIC8qIFJ1biBGaWxlIGRpYWxvZyAqLwogICAgICAgIElEU19SVU5ETEdfRVJST1IgICAgICAgICAgICJObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGN1YWRybyBkZSBkaeFsb2dvIGVqZWN1dGFyIGFyY2hpdm8gKGVycm9yIGludGVybm8pIgogICAgICAgIElEU19SVU5ETEdfQlJPV1NFX0VSUk9SICAgICJObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGN1YWRybyBkZSBkaeFsb2dvIEV4YW1pbmFyIChlcnJvciBpbnRlcm5vKSIKICAgICAgICBJRFNfUlVORExHX0JST1dTRV9DQVBUSU9OICAiRXhhbWluYXIiCiAgICAgICAgSURTX1JVTkRMR19CUk9XU0VfRklMVEVSICAgIkFyY2hpdm9zIGVqZWN1dGFibGVzXDAqLmV4ZVwwVG9kb3MgbG9zIGFyY2hpdm9zXDAqLipcMFwwIgoKICAgICAgICAvKiBzaGVsbCBmb2xkZXIgcGF0aCBkZWZhdWx0IHZhbHVlcyAqLwoJSURTX1BST0dSQU1TICAgICAgICAgICAgICAgICJNZW76IEluaWNpb1xcUHJvZ3JhbWFzIgoJSURTX1BFUlNPTkFMICAgICAgICAgICAgICAgICJNaXMgZG9jdW1lbnRvcyIKCUlEU19GQVZPUklURVMgICAgICAgICAgICAgICAiRmF2b3JpdG9zIgoJSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJNZW76IEluaWNpb1xcUHJvZ3JhbWFzXFxJbmljaW8iCglJRFNfUkVDRU5UICAgICAgICAgICAgICAgICAgIlJlY2llbnRlcyIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiRW52aWFyIGEiCglJRFNfU1RBUlRNRU5VICAgICAgICAgICAgICAgIk1lbvogSW5pY2lvIgoJSURTX01ZTVVTSUMgICAgICAgICAgICAgICAgICJNaSBt+nNpY2EiCglJRFNfTVlWSURFTyAgICAgICAgICAgICAgICAgIk1pcyB27WRlb3MiCglJRFNfREVTS1RPUERJUkVDVE9SWSAgICAgICAgIkVzY3JpdG9yaW8iCglJRFNfTkVUSE9PRCAgICAgICAgICAgICAgICAgIkVudG9ybm8gZGUgcmVkIgoJSURTX1RFTVBMQVRFUyAgICAgICAgICAgICAgICJQbGFudGlsbGFzIgoJSURTX0FQUERBVEEgICAgICAgICAgICAgICAgICJEYXRvcyBkZSBwcm9ncmFtYSIKCUlEU19QUklOVEhPT0QgICAgICAgICAgICAgICAiVmVjaW5kYXJpbyBkZSBpbXByZXNp824iCglJRFNfTE9DQUxfQVBQREFUQSAgICAgICAgICAgIkNvbmZpZ3VyYWNp824gbG9jYWxcXERhdG9zIGRlIHByb2dyYW1hIgoJSURTX0lOVEVSTkVUX0NBQ0hFICAgICAgICAgICJDb25maWd1cmFjafNuIGxvY2FsXFxBcmNoaXZvcyB0ZW1wb3JhbGVzIGRlIEludGVybmV0IgoJSURTX0NPT0tJRVMgICAgICAgICAgICAgICAgICJDb29raWVzIgoJSURTX0hJU1RPUlkgICAgICAgICAgICAgICAgICJDb25maWd1cmFjafNuIGxvY2FsXFxIaXN0b3JpYWwiCglJRFNfUFJPR1JBTV9GSUxFUyAgICAgICAgICAgIkFyY2hpdm9zIGRlIHByb2dyYW1hIgoJSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJNaXMgaW3hZ2VuZXMiCglJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIkFyY2hpdm9zIGRlIHByb2dyYW1hXFxBcmNoaXZvcyBjb211bmVzIgoJSURTX0NPTU1PTl9ET0NVTUVOVFMgICAgICAgICJEb2N1bWVudG9zIgoJSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJNZW76IEluaWNpb1xcUHJvZ3JhbWFzXFxBY2Nlc29yaW9zXFxIZXJyYW1pZW50YXMgZGVsIHNpc3RlbWEiCglJRFNfQ09NTU9OX01VU0lDICAgICAgICAgICAgIkRvY3VtZW50b3NcXE1pIG36c2ljYSIKCUlEU19DT01NT05fUElDVFVSRVMgICAgICAgICAiRG9jdW1lbnRvc1xcTWlzIGlt4WdlbmVzIgoJSURTX0NPTU1PTl9WSURFTyAgICAgICAgICAgICJEb2N1bWVudG9zXFxNaXMgdu1kZW9zIgoJSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJDb25maWd1cmFjafNuIGxvY2FsXFxEYXRvcyBkZSBwcm9ncmFtYVxcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgoKCUlEU19ORVdGT0xERVIJCSJOdWV2YSBjYXJwZXRhIgoKCUlEU19DUEFORUxfVElUTEUgICAgICAgICAgICAiUGFuZWwgZGUgQ29udHJvbCBkZSBXaW5lIgoJSURTX0NQQU5FTF9OQU1FICAgICAgICAgICAgICJOb21icmUiCglJRFNfQ1BBTkVMX0RFU0NSSVBUSU9OICAgICAgIkRlc2NyaXBjafNuIgoKICAgICAgICBJRFNfU0hMRVhFQ19OT0FTU09DICAgICAgICAgIk5vIGhheSB1biBwcm9ncmFtYSBkZSBXaW5kb3dzIGNvbmZpZ3VyYWRvIHBhcmEgYWJyaXIgZXN0ZSB0aXBvIGRlIGFyY2hpdm8uIgp9CgpTVFJJTkdUQUJMRQp7CklEU19MSUNFTlNFX0NBUFRJT04sICAgICAgICAgICAgIkxpY2VuY2lhIGRlIFdpbmUiCklEU19MSUNFTlNFLAoiV2luZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgXAptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIFwKdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cblwKV2luZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBcCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIFwKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgXApMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG5cCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFsb25nIHdpdGggV2luZTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBcCkZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuIgp9Cg==