LyoKICogQ29weXJpZ2h0IDIwMDYgYnkgUGhpbCBLcnlsb3YKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19SVVNTSUFOLCBTVUJMQU5HX0RFRkFVTFQKCk1BSU5NRU5VIE1FTlUgRElTQ0FSREFCTEUgCkJFR0lOCiAgICBQT1BVUCAiJtTg6esiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLR7ufkJuDy/Fx0Q3RybCtOIiwgICBJRF9GSUxFX05FVwogICAgICAgIE1FTlVJVEVNICImzvLq8Pvy/C4uLlx0Q3RybCtPIixJRF9GSUxFX09QRU4KICAgICAgICBNRU5VSVRFTSAiJtHu9fDg7ejy/Fx0Q3RybCtTIiwgSURfRklMRV9TQVZFCiAgICAgICAgTUVOVUlURU0gItHu9fDg7ejy/CAm6uDqLi4uIiwgIElEX0ZJTEVfU0FWRUFTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsIm+/Xu5CIsICAgICBJRF9GSUxFX0VYSVQKICAgIEVORAogICAgUE9QVVAgIibP8ODi6uAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImzvLs5e3o8vxcdEN0cmwrWiIsICAgICAgICAgICBJRF9FRElUX1VORE8KICAgICAgICBNRU5VSVRFTSAiJs/u4vLu8Ojy/Fx0Q3RybCtZIiwgICAgICAgICAgSURfRURJVF9SRURPCiAgICAgICAgTUVOVUlURU0gIsL75OXr6PL8IOIm8eVcdEN0cmwrQSIsICAgICAgIElEX0VESVRfU0VMRUNUQUxMCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibC+/Dl5+Dy/Fx0Q3RybCtYIiwgICAgICAgICAgIElEX0VESVRfQ1VUCiAgICAgICAgTUVOVUlURU0gIibK7u/o8O7i4PL8XHRDdHJsK0MiLCAgICAgICAgIElEX0VESVRfQ09QWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRmluZCAuIC4gLlx0Q3J0bCtGIiwgICAgICAgICBJRF9GSU5ECiAgICAgICAgTUVOVUlURU0gIkZpbmQgJm5leHRcdEYzIiwgICAgICAgICAgICAgIElEX0ZJTkRfTkVYVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0u7r/OruIOTr/yD38uXt6P8iLCAgICAgICAgICBJRF9FRElUX1JFQURPTkxZCiAgICAgICAgTUVOVUlURU0gIibI5+zl7eXtIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZJRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJsTu7+7r7ejy5ev87e4iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibI7fTu8Ozg9uj/IO4g4vvk5evl7ejoIiwgICAgICAgICBJRF9FRElUX1NFTEVDVElPTklORk8KICAgICAgICAgICAgTUVOVUlURU0gIibU7vDs4PIg8ejs4u7r7uIiLCAgICAgICAgICAgICAgICBJRF9FRElUX0NIQVJGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gItTu8Ozg8iDx6Ozi7uvu4iAm7+4g8+zu6/fg7ej+IiwgICBJRF9FRElUX0RFRkNIQVJGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gItTu8Ozg8iAm4OHn4PbgIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX1BBUkFGT1JNQVQKICAgICAgICAgICAgTUVOVUlURU0gIs8m7uvz9+jy/CDy5erx8iIsICAgICAgICAgICAgICAgICBJRF9FRElUX0dFVFRFWFQKICAgICAgICBFTkQKICAgIEVORAogICAgUE9QVVAgIiZWaWV3IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlRvb2xiYXIiLCAgICAgICAgSURfVE9HR0xFX1RPT0xCQVIKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGJhciIsICAgICAgSURfVE9HR0xFX0ZPUk1BVEJBUgogICAgICAgIE1FTlVJVEVNICImU3RhdHVzYmFyIiwgICAgICBJRF9UT0dHTEVfU1RBVFVTQkFSCiAgICBFTkQKICAgIFBPUFVQICImSW5zZXJ0IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkRhdGUgYW5kIHRpbWUgLiAuIC4iLCAgSURfREFURVRJTUUKICAgIEVORAogICAgUE9QVVAgItTu8Cbs4PIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJCJnVsbGV0IHBvaW50cyIgICAgICAgICAgICAgICAgSURfQlVMTEVUCiAgICAgICAgUE9QVVAgIibU7u0iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIibR6PHy5ezt++lcdEN0cmwrMSIsICAgICAgICAgICAgICBJRF9CQUNLXzEKICAgICAgICAgICAgTUVOVUlURU0gIibG5evy7uLg8vvpIFBvc3RUaGF0XHRDdHJsKzIiLCAgICBJRF9CQUNLXzIKICAgICAgICBFTkQKICAgICAgICBQT1BVUCAiJsL78ODi7eji4O3o5SIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiwibr5eLuXHRDdHJsK0wiLCAgICAgICAgICBJRF9BTElHTl9MRUZUCiAgICAgICAgICAgIE1FTlVJVEVNICLP7iAm9uXt8vDzXHRDdHJsK0UiLCAgICAgIElEX0FMSUdOX0NFTlRFUgogICAgICAgICAgICBNRU5VSVRFTSAiwibv8ODi7lx0Q3RybCtSIiwgICAgICAgICBJRF9BTElHTl9SSUdIVAogICAgICAgIEVORAogICAgRU5ECkVORAoKSUREX0RBVEVUSU1FIERJQUxPRyBESVNDQVJEQUJMRSAzMCwgMjAsIDEzMCwgODAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRhdGUgYW5kIHRpbWUiCkZPTlQgMTAsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgTFRFWFQgICAgICAgICJBdmFpbGFibGUgZm9ybWF0cyIsMCwzLDIsMTAwLDE1CiAgICBMSVNUQk9YICAgICAgSURDX0RBVEVUSU1FLDMsMTIsODAsNjUsTEJTX05PSU5URUdSQUxIRUlHSFQKICAgIFBVU0hCVVRUT04gICAiJk9LIixJRE9LLDg3LDEyLDQwLDEyCiAgICBQVVNIQlVUVE9OICAgIiZDYW5jZWwiLElEQ0FOQ0VMLDg3LDI2LDQwLDEyCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19SSUNIVEVYVF9GSUxFU19SVEYsICAiUmljaCB0ZXh0IGZvcm1hdCAoKi5ydGYpIgogICAgU1RSSU5HX1RFWFRfRklMRVNfVFhULCAgICAgICJUZXh0IGZpbGVzICgqLnR4dCkiCiAgICBTVFJJTkdfQUxMX0ZJTEVTLCAgICAgICAgICAgIkFsbCBkb2N1bWVudHMgKCouKikiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFNUUklOR19ERUZBVUxUX0ZJTEVOQU1FLCAgICAgIkRvY3VtZW50IgogICAgU1RSSU5HX1BST01QVF9TQVZFX0NIQU5HRVMsICAiU2F2ZSBjaGFuZ2VzIHRvICclcyc/IgogICAgU1RSSU5HX1NFQVJDSF9GSU5JU0hFRCwgICAgICAiRmluaXNoZWQgc2VhcmNoaW5nIHRoZSBkb2N1bWVudC4iCiAgICBTVFJJTkdfTE9BRF9SSUNIRURfRkFJTEVELCAgICJGYWlsZWQgdG8gbG9hZCB0aGUgUmljaEVkaXQgbGlicmFyeS4iCkVORAo=