LyoKICogQ29weXJpZ2h0IDIwMDUgS2ltbW8gTXlsbHl2aXJ0YQogKiBDb3B5cmlnaHQgMjAxMCBMYXVyaSBLZW50dOQKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInNocmVzZGVmLmgiCgpMQU5HVUFHRSBMQU5HX0ZJTk5JU0gsIFNVQkxBTkdfREVGQVVMVAoKTUVOVV8wMDEgTUVOVQpCRUdJTgoJTUVOVUlURU0gIiZTdXVyZXQga3V2YWtrZWV0IiwJCUZDSURNX1NIVklFV19CSUdJQ09OCglNRU5VSVRFTSAiJlBpZW5ldCBrdXZha2tlZXQiLAkJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJTUVOVUlURU0gIiZMaXN0YSIsCQkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCglNRU5VSVRFTSAiJlRpZWRvdCIsCQkJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKRU5ECgovKgogc2hlbGx2aWV3IGJhY2tncm91bmQgbWVudQoqLwpNRU5VXzAwMiBNRU5VCkJFR0lOCglQT1BVUCAiIgoJQkVHSU4KCSAgUE9QVVAgIiZO5Gt5beQiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIiZQaWVuZXQga3V2YWtrZWV0IiwJRkNJRE1fU0hWSUVXX0JJR0lDT04KCSAgICBNRU5VSVRFTSAiJlN1dXJldCBrdXZha2tlZXQiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIiZMaXN0YSIsCQkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCgkgICAgTUVOVUlURU0gIiZUaWVkb3QiLAkJCUZDSURNX1NIVklFV19SRVBPUlRWSUVXCgkgIEVORAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgIiZK5HJqZXN05CBrdXZha2tlZXQiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIiZOaW1lbiBtdWthYW4iLAkJMHgzMAkvKiBjb2x1bW4gMCAqLwoJICAgIE1FTlVJVEVNICImVHl5cGluIG11a2FhbiIsCQkweDMyCS8qIGNvbHVtbiAyICovCgkgICAgTUVOVUlURU0gIiZLb29uIG11a2FhbiIsCQkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICImUORpduRt5ORy5G4gbXVrYWFuIiwJMHgzMwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICAgIE1FTlVJVEVNICJK5HJqZXN05CAmYXV0b21hYXR0aXNlc3RpIiwgRkNJRE1fU0hWSUVXX0FVVE9BUlJBTkdFCgkgIEVORAoJICBNRU5VSVRFTSAiSuRyamVzdOQga3V2YWtrZWV0IHJpdmlpbiIsCUZDSURNX1NIVklFV19TTkFQVE9HUklECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiUORpdml05CIsCQkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJMaWl05CIsCQkJRkNJRE1fU0hWSUVXX0lOU0VSVAoJICBNRU5VSVRFTSAiTGlpdOQgbGlua2lrc2kiLAkJRkNJRE1fU0hWSUVXX0lOU0VSVExJTksKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIFBPUFVQICJVdXNpIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICJVdXNpICZrYW5zaW8iLAkJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgoJICAgIE1FTlVJVEVNICJVdXNpICZsaW5ra2kiLAkJRkNJRE1fU0hWSUVXX05FV0xJTksKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiT21pbmFpc3V1ZGV0IiwJCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgovKgogc2hlbGx2aWV3IGl0ZW0gbWVudQoqLwpNRU5VX1NIVl9GSUxFIE1FTlUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBNRU5VSVRFTSAiJlZhbGl0c2UiCQkJRkNJRE1fU0hWSUVXX09QRU4KCSAgTUVOVUlURU0gIiZTZWxhYSIsCQkJRkNJRE1fU0hWSUVXX0VYUExPUkUKCSAgTUVOVUlURU0gIiZBdmFhIiwJCQlGQ0lETV9TSFZJRVdfT1BFTgoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZMZWlra2FhIiwJCQlGQ0lETV9TSFZJRVdfQ1VUCgkgIE1FTlVJVEVNICImS29waW9pIiwJCQlGQ0lETV9TSFZJRVdfQ09QWQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkx1Jm8gbGlua2tpIiwJCUZDSURNX1NIVklFV19DUkVBVEVMSU5LCgkgIE1FTlVJVEVNICImUG9pc3RhIiwJCQlGQ0lETV9TSFZJRVdfREVMRVRFCgkgIE1FTlVJVEVNICImTmltZeQgdXVkZWxsZWVuIiwJCUZDSURNX1NIVklFV19SRU5BTUUKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICImT21pbmFpc3V1ZGV0IiwJCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgpNRU5VX0NQQU5FTCBNRU5VCkJFR0lOCiAgICBQT1BVUCAiJlRpZWRvc3RvIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiUyZ1bGplIiwgSURNX0NQQU5FTF9FWElUCiAgICBFTkQKCiAgICBQT1BVUCAiJk7keXTkIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlN1dXJldCBrdXZha2tlZXQiLCBGQ0lETV9TSFZJRVdfQklHSUNPTgogICAgICAgIE1FTlVJVEVNICImUGllbmV0IGt1dmFra2VldCIsIEZDSURNX1NIVklFV19TTUFMTElDT04KICAgICAgICBNRU5VSVRFTSAiJkxpc3RhIiwgRkNJRE1fU0hWSUVXX0xJU1RWSUVXCiAgICAgICAgTUVOVUlURU0gIlQmaWVkb3QiLCBGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwogICAgRU5ECgogICAgUE9QVVAgIiZPaGplIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiVGkmZXRvamEgT2hqYXVzcGFuZWVsaXN0YS4uLiIsIElETV9DUEFORUxfQUJPVVQKICAgIEVORApFTkQKClNIQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgMTUsIDQwLCAxODgsIDE5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJWYWxpdHNlIGthbnNpbyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIDEsIDgwLCAxNzYsIDUwLCAxMiwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiUGVydXV0YSIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgIiIsIElERF9USVRMRSwgNCwgNCwgMTgwLCAxMgogTFRFWFQgIiIsIElERF9TVEFUVVMsIDQsIDI1LCAxODAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKIAlUVlNfSEFTQlVUVE9OUyB8IFRWU19IQVNMSU5FUyB8IFRWU19MSU5FU0FUUk9PVCB8CglXU19CT1JERVIgfCBXU19UQUJTVE9QLAoJNCwgNDAsIDE4MCwgMTIwCn0KClNITkVXQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgMTUsIDQwLCAyMTgsIDE5NgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBXU19TSVpFQk9YIHwgRFNfTU9EQUxGUkFNRSB8IERTX1NFVEZPTlQgfCBEU18zRExPT0sKQ0FQVElPTiAiVmFsaXRzZSBrYW5zaW8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogTFRFWFQgIiIsIElERF9USVRMRSwgMTAsIDgsIDE5OCwgMjQKIExURVhUICIiLCBJRERfU1RBVFVTLCAxMCwgMjUsIDE5OCwgMTIKIExURVhUICJLYW5zaW86IiwgSUREX0ZPTERFUiwgMTAsIDE1NiwgNDAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKCVRWU19IQVNCVVRUT05TIHwgVFZTX0hBU0xJTkVTIHwgVFZTX0xJTkVTQVRST09UIHwKCVdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsCgkxMiwgMzgsIDE5NCwgMTA1CiBFRElUVEVYVCBJRERfRk9MREVSVEVYVCwgNDYsIDE1MCwgMTYwLCAxNCwgV1NfQk9SREVSIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImTHVvIHV1c2kga2Fuc2lvIiwgSUREX01BS0VORVdGT0xERVIsIDEyLCAxNzQsIDcwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDEwMiwgMTc0LCA1MCwgMTQsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIlBlcnV1dGEiLCBJRENBTkNFTCwgMTU2LCAxNzQsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClNIRUxMX1lFU1RPQUxMX01TR0JPWCBESUFMT0cgMjAwLCAxMDAsIDI4MCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlZpZXN0aSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBERUZQVVNIQlVUVE9OICImS3lsbOQiLCBJRFlFUywgMzQsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiS3lsbOQgayZhaWtraWluIiwgSUREX1lFU1RPQUxMLCA5MiwgNjksIDY1LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICImRWkiLCBJRE5PLCAxNjIsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAiJlBlcnV1dGEiLCBJRENBTkNFTCwgMjIwLCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIElDT04gIiIsIElERF9JQ09OLCAxMCwgMTAsIDE2LCAxNgogICAgTFRFWFQgIiIsIElERF9NRVNTQUdFLCA0MCwgMTAsIDIzOCwgNTIsIDAKfQoKU0hFTExfQUJPVVRfTVNHQk9YIERJQUxPRyAxNSwgNDAsIDIyMCwgMTUyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJUaWV0b2phIG9oamVsbWFzdGEgJXMiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgMTUzLCAxMzMsIDYwLCAxMiwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiV2luZW4gJmxpc2Vuc3NpLi4uIiwgSURDX0FCT1VUX0xJQ0VOU0UsIDE1MywgMTEzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggSURDX0FCT1VUX0xJU1RCT1gsIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgc3RjMSwgMTAsIDEwLCAzMCwgMzAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQxLCA0MCwgMTAsIDE3MCwgMTAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQyLCA0MCwgMjIsIDE3MCwgMTAKIExURVhUICJL5Hl09nNz5CBvbiB2ZXJzaW8gJXMiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQzLCA0MiwgMzQsIDE3MCwgMTAKIExURVhUICJXaW5lbiBvdmF0IHRlaG5lZXQ6IiwgSURDX0FCT1VUX1dJTkVfVEVYVCwgOCwgNTQsIDIwNCwgMTAKfQoKU0hFTExfUlVOX0RMRyBESUFMT0cgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIElDT04gIiIsIDEyMjk3LCA3LCAxMSwgMTgsIDIwLCBXU19WSVNJQkxFCiBMVEVYVCAiQW5uYSBvaGplbG1hLCBkb2t1bWVudHRpIHRhaSBJbnRlcm5ldC1vc29pdGUsIG5paW4gV2luZSBhdmFhIHNlbi4iLCAxMjI4OSwgMzYsIDExLCAxODIsIDE4CiBMVEVYVCAiJkF2YWE6IiwgMTIzMDUsIDcsIDM5LCAyNCwgMTAKIENPTlRST0wgIiIsIDEyMjk4LCAiQ09NQk9CT1giLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBXU19WU0NST0xMIHwgV1NfVklTSUJMRSB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfRFJPUERPV04sIDM2LCAzNywgMTgzLCAxMDAKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgNjIsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIlBlcnV1dGEiLCBJRENBTkNFTCwgMTE2LCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImU2VsYWEuLi4iLCAxMjI4OCwgMTcwLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCn0KClNUUklOR1RBQkxFCnsKICAgICAgICAvKiBjb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcgKi8KCUlEU19TSFZfQ09MVU1OMQkJIlRpZWRvc3RvIgoJSURTX1NIVl9DT0xVTU4yCQkiS29rbyIKCUlEU19TSFZfQ09MVU1OMwkJIlR5eXBwaSIKCUlEU19TSFZfQ09MVU1ONAkJIk11b2thdHR1IgoJSURTX1NIVl9DT0xVTU41CQkiT21pbmFpc3V1ZGV0IgoJSURTX1NIVl9DT0xVTU42CQkiS29rbyIKCUlEU19TSFZfQ09MVU1ONwkJIlRpbGFhIGrkbGplbGzkIgoJSURTX1NIVl9DT0xVTU44CQkiTmltaSIKCUlEU19TSFZfQ09MVU1OOQkJIktvbW1lbnRpdCIKCUlEU19TSFZfQ09MVU1OMTAJIk9taXN0YWphIgoJSURTX1NIVl9DT0xVTU4xMQkiUnlobeQiCglJRFNfU0hWX0NPTFVNTl9ERUxGUk9NCSJBbGt1cGVy5GluZW4gc2lqYWludGkiCglJRFNfU0hWX0NPTFVNTl9ERUxEQVRFCSJQb2lzdG9haWthIgoJSURTX1NIVl9DT0xfRE9DUwkiQXNpYWtpcmphdCIKCUlEU19TSFZfQ09MX1NUQVRVUwkiVGlsYSIKCUlEU19TSFZfQ09MX0xPQ0FUSU9OCSJTaWphaW50aSIKCUlEU19TSFZfQ09MX01PREVMCSJNYWxsaSIKCiAgICAgICAgLyogc3BlY2lhbCBmb2xkZXJzICovCglJRFNfREVTS1RPUAkJIlR59nD2eXTkIgoJSURTX01ZQ09NUFVURVIJCSJPbWEgdGlldG9rb25lIgoJSURTX1JFQ1lDTEVCSU5fRk9MREVSX05BTUUgICAgICAiUm9za2Frb3JpIgoJSURTX0NPTlRST0xQQU5FTAkiT2hqYXVzcGFuZWVsaSIKCiAgICAgICAgLyogY29udGV4dCBtZW51cyAqLwoJSURTX1ZJRVdfTEFSR0UJCSImU3V1cmV0IGt1dmFra2VldCIKCUlEU19WSUVXX1NNQUxMCQkiJlBpZW5ldCBrdXZha2tlZXQiCglJRFNfVklFV19MSVNUCQkiJkxpc3RhIgoJSURTX1ZJRVdfREVUQUlMUwkiJlRpZWRvdCIKCUlEU19TRUxFQ1QJCSJWYWxpdHNlIgoJSURTX09QRU4JCSJBdmFhIgoKCUlEU19DUkVBVEVGT0xERVJfREVOSUVEICJVdXR0YSBrYW5zaW90YSBlaSB2b2l0dSBsdW9kYTogT2lrZXVkZXQgZWl25HQgcmlpdOQuIgoJSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICJWaXJoZSBsdW90YWVzc2EgdXV0dGEga2Fuc2lvdGEiCglJRFNfREVMRVRFSVRFTV9DQVBUSU9OICJWYWh2aXN0YSB0aWVkb3N0b24gdHVob2FtaW5lbiIKCUlEU19ERUxFVEVGT0xERVJfQ0FQVElPTiAiVmFodmlzdGEga2Fuc2lvbiB0dWhvYW1pbmVuIgoJSURTX0RFTEVURUlURU1fVEVYVCAiSGFsdWF0a28gdmFybWFzdGkgdHVob3RhIGtvaHRlZW4gJyUxJz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAiSGFsdWF0a28gdmFybWFzdGkgdHVob3RhIG7kbeQgJTE/IgoJSURTX0RFTEVURVNFTEVDVEVEX1RFWFQgIkhhbHVhdGtvIHZhcm1hc3RpIHR1aG90YSB2YWxpdHV0IGtvaHRlZXQ/IgoJSURTX1RSQVNISVRFTV9URVhUICJIYWx1YXRrbyB2YXJtYXN0aSBzaWlydOTkIGtvaHRlZW4gJyUxJyBSb3NrYWtvcmlpbj8iCglJRFNfVFJBU0hGT0xERVJfVEVYVCAiSGFsdWF0a28gdmFybWFzdGkgc2lpcnTk5CBrb2h0ZWVuICclMScgamEga2Fpa2VuIHNlbiBzaXPkbGz2biBSb3NrYWtvcmlpbj8iCglJRFNfVFJBU0hNVUxUSVBMRV9URVhUICJIYWx1YXRrbyB2YXJtYXN0aSBzaWlydOTkIG7kbeQgJTEga29oZGV0dGEgcm9za2Frb3JpaW4/IgoJSURTX0NBTlRUUkFTSF9URVhUICJLb2hkZXR0YSAnJTEnIGVpIHZvaWRhIHNpaXJ05OQgUm9za2Frb3JpaW4uIEhhbHVhdGtvIHNlbiBzaWphYW4gcG9pc3RhYSBzZW4ga29rb25hYW4/IgoJSURTX09WRVJXUklURUZJTEVfVEVYVCAiVORzc+Qga2Fuc2lvc3NhIG9uIGpvIHRpZWRvc3RvIG5pbWVsdOQgJyUxJy5cblxuS29ydmF0YWFua28gZW50aW5lbiB0aWVkb3N0bz8iCglJRFNfT1ZFUldSSVRFRklMRV9DQVBUSU9OICJWYWh2aXN0YSB0aWVkb3N0b24geWxpa2lyam9pdHVzIgoJSURTX09WRVJXUklURUZPTERFUl9URVhUICJU5HNz5CBrYW5zaW9zc2Egb24gam8ga2Fuc2lvIG5pbWVsdOQgJyUxJy5cblxuIlwKCSAgICAiSm9zIGtvaGRla2Fuc2lvc3NhIG9uIHNhbWFubmltaXNp5CB0aWVkb3N0b2phIGt1aW4gdmFsaXR1c3NhIGthbnNpb3NzYSxcbiJcCgkgICAgIm5lIGtvcnZhdGFhbiB1dXNpbGxhLiBKYXRrZXRhYW5rbz8iCgogICAgICAgIC8qIG1lc3NhZ2UgYm94IHN0cmluZ3MgKi8KICAgICAgICBJRFNfUkVTVEFSVF9USVRMRSAgICAgICAiS+R5bm5pc3TkIHV1ZGVsbGVlbiIKICAgICAgICBJRFNfUkVTVEFSVF9QUk9NUFQgICAgICAiSGFsdWF0a28gc2ltdWxvaWRhIFdpbmRvd3NpbiB1dWRlbGxlZW5r5HlubmlzdORtaXN05D8iCiAgICAgICAgSURTX1NIVVRET1dOX1RJVExFICAgICAgIlNhbW11dGEiCiAgICAgICAgSURTX1NIVVRET1dOX1BST01QVCAgICAgIkhhbHVhdGtvIGxvcGV0dGFhIFdpbmUtaXN0dW5ub24/IgoKICAgICAgICAvKiBSdW4gRmlsZSBkaWFsb2cgKi8KICAgICAgICBJRFNfUlVORExHX0VSUk9SICAgICAgICAgICAiU3Vvcml0YSB0aWVkb3N0byAtdmFsaW50YWlra3VuYWEgZWkgdm9pZGEgbuR5dHTk5CAoc2lz5GluZW4gdmlyaGUpIgogICAgICAgIElEU19SVU5ETEdfQlJPV1NFX0VSUk9SICAgICJTZWxhYS12YWxpbnRhaWtrdW5hYSBlaSB2b2lkYSBu5Hl0dOTkIChzaXPkaW5lbiB2aXJoZSkiCiAgICAgICAgSURTX1JVTkRMR19CUk9XU0VfQ0FQVElPTiAgIlNlbGFhIgogICAgICAgIElEU19SVU5ETEdfQlJPV1NFX0ZJTFRFUiAgICJTdW9yaXRldHRhdmF0IHRpZWRvc3RvdFwwKi5leGVcMEthaWtraSB0aWVkb3N0b3RcMCouKlwwXDAiCgogICAgICAgIC8qIHNoZWxsIGZvbGRlciBwYXRoIGRlZmF1bHQgdmFsdWVzICovCglJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIkvkeW5uaXN05C12YWxpa2tvXFxPaGplbG1hdCIKCUlEU19QRVJTT05BTCAgICAgICAgICAgICAgICAiT21hdCB0aWVkb3N0b3QiCglJRFNfRkFWT1JJVEVTICAgICAgICAgICAgICAgIlN1b3Npa2l0IgoJSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJL5HlubmlzdOQtdmFsaWtrb1xcT2hqZWxtYXRcXEvkeW5uaXN0eXMiCglJRFNfUkVDRU5UICAgICAgICAgICAgICAgICAgIsRza2V0dORpbiBr5Hl0ZXR5dCIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiTORoZXTkIgoJSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICJL5HlubmlzdOQtdmFsaWtrbyIKCUlEU19NWU1VU0lDICAgICAgICAgICAgICAgICAiT21hdCBtdXNpaWtraXRpZWRvc3RvdCIKCUlEU19NWVZJREVPICAgICAgICAgICAgICAgICAiT21hdCB2aWRlb3RpZWRvc3RvdCIKCUlEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAiVHn2cPZ5dOQiCglJRFNfTkVUSE9PRCAgICAgICAgICAgICAgICAgIlZlcmtrb3ltcORyaXN09iIKCUlEU19URU1QTEFURVMgICAgICAgICAgICAgICAiTWFsbGl0IgoJSURTX0FQUERBVEEgICAgICAgICAgICAgICAgICJPaGplbG1pZW4gdGllZG90IgoJSURTX1BSSU5USE9PRCAgICAgICAgICAgICAgICJUdWxvc3RpbnltcORyaXN09iIKCUlEU19MT0NBTF9BUFBEQVRBICAgICAgICAgICAiUGFpa2FsbGlzZXQgYXNldHVrc2V0XFxPaGplbG1pZW4gdGllZG90IgoJSURTX0lOVEVSTkVUX0NBQ0hFICAgICAgICAgICJQYWlrYWxsaXNldCBhc2V0dWtzZXRcXFbkbGlhaWthaXNldCBJbnRlcm5ldC10aWVkb3N0b3QiCglJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkV25HN0ZWV0IgoJSURTX0hJU1RPUlkgICAgICAgICAgICAgICAgICJQYWlrYWxsaXNldCBhc2V0dWtzZXRcXEhpc3RvcmlhIgoJSURTX1BST0dSQU1fRklMRVMgICAgICAgICAgICJPaGplbG1hdGllZG9zdG90IgoJSURTX1BST0dSQU1fRklMRVNYODYgICAgICAgICJPaGplbG1hdGllZG9zdG90ICh4ODYpIgoJSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJPbWF0IGt1dmF0aWVkb3N0b3QiCglJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIk9oamVsbWF0aWVkb3N0b3RcXFlodGVpc2V0IHRpZWRvc3RvdCIKCUlEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTlg4NiAiT2hqZWxtYXRpZWRvc3RvdCAoeDg2KVxcWWh0ZWlzZXQgdGllZG9zdG90IgoJSURTX0NPTU1PTl9ET0NVTUVOVFMgICAgICAgICJUaWVkb3N0b3QiCglJRFNfQURNSU5UT09MUyAgICAgICAgICAgICAgIkvkeW5uaXN05C12YWxpa2tvXFxPaGplbG1hdFxcSGFsbGludGF0efZrYWx1dCIKCUlEU19DT01NT05fTVVTSUMgICAgICAgICAgICAiTXVzaWlra2kiCglJRFNfQ09NTU9OX1BJQ1RVUkVTICAgICAgICAgIkt1dmF0IgoJSURTX0NPTU1PTl9WSURFTyAgICAgICAgICAgICJWaWRlb3QiCglJRFNfQ0RCVVJOX0FSRUEgICAgICAgICAgICAgIlBhaWthbGxpc2V0IGFzZXR1a3NldFxcT2hqZWxtaWVuIHRpZWRvdFxcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgoJSURTX0NPTlRBQ1RTICAgICAgICAgICAgICAgICJLb250YWt0aXQiCglJRFNfTElOS1MgICAgICAgICAgICAgICAgICAgIkxpbmtpdCIKCUlEU19QSE9UT19BTEJVTVMgICAgICAgICAgICAiS3V2YXRcXERpYWVzaXR5a3NldCIKCUlEU19QTEFZTElTVFMgICAgICAgICAgICAgICAiTXVzaWlra2lcXFNvaXR0b2xpc3RhdCIKCUlEU19QVUJMSUNfRE9XTkxPQURTICAgICAgICAiTGF0YXVrc2V0IgoJSURTX1BVQkxJQ19HQU1FX1RBU0tTICAgICAgICJNaWNyb3NvZnRcXFdpbmRvd3NcXEdhbWVFeHBsb3JlciIKCUlEU19QVUJMSUNfTElCUkFSSUVTICAgICAgICAiTWljcm9zb2Z0XFxXaW5kb3dzXFxMaWJyYXJpZXMiCglJRFNfUFVCTElDX1JJTkdUT05FUyAgICAgICAgIk1pY3Jvc29mdFxcV2luZG93c1xcU29pdHRv5ORuZXQiCglJRFNfU0FNUExFX01VU0lDICAgICAgICAgICAgIk11c2lpa2tpXFxFc2ltZXJra2ltdXNpaWtraSIKCUlEU19TQU1QTEVfUElDVFVSRVMgICAgICAgICAiS3V2YXRcXEVzaW1lcmtraWt1dmF0IgoJSURTX1NBTVBMRV9QTEFZTElTVFMgICAgICAgICJNdXNpaWtraVxcRXNpbWVya2tpc29pdHRvbGlzdGF0IgoJSURTX1NBTVBMRV9WSURFT1MgICAgICAgICAgICJWaWRlb3RcXEVzaW1lcmtraXZpZGVvdCIKCUlEU19TQVZFRF9HQU1FUyAgICAgICAgICAgICAiVGFsbGVubmV0dXQgcGVsaXQiCglJRFNfU0FWRURfU0VBUkNIRVMgICAgICAgICAgIkhhdXQiCglJRFNfVVNFUl9QUk9GSUxFUyAgICAgICAgICAgIkvkeXR05GrkdCIKCUlEU19DT01NT05fT0VNX0xJTktTICAgICAgICAiT0VNIExpbmtzIgoJSURTX0RPQ1VNRU5UUyAgICAgICAgICAgICAgICJUaWVkb3N0b3QiCglJRFNfRE9XTkxPQURTICAgICAgICAgICAgICAgIkxhdGF1a3NldCIKCUlEU19MT0NBTF9BUFBEQVRBX0xPVyAgICAgICAiQXBwRGF0YVxcTG9jYWxMb3ciCgoJSURTX05FV0ZPTERFUgkJIlV1c2kga2Fuc2lvIgoKCUlEU19DUEFORUxfVElUTEUgICAgICAgICAgICAiV2luZW4gT2hqYXVzcGFuZWVsaSIKCUlEU19DUEFORUxfTkFNRSAgICAgICAgICAgICAiTmltaSIKCUlEU19DUEFORUxfREVTQ1JJUFRJT04gICAgICAiS3V2YXVzIgoKICAgICAgICBJRFNfU0hMRVhFQ19OT0FTU09DICAgICAgICAgIlTkbeRuIHRpZWRvc3RvdHl5cGluIGF2YWFtaXNlZW4gZWkgb2xlIGt5dGtldHR5IG1pdOTkbiBXaW5kb3dzLW9oamVsbWFhLiIKfQoKU1RSSU5HVEFCTEUKewpJRFNfTElDRU5TRV9DQVBUSU9OLCAgICAgICAgICAgICJXaW5lbiBsaXNlbnNzaSIKSURTX0xJQ0VOU0UsCiJXaW5lIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBcCm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgXAp2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuXApXaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIFwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgXApNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cblwKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBcCkxpY2Vuc2UgYWxvbmcgd2l0aCBXaW5lOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIFwKRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4iCn0K