LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogRnJlbmNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDUtMjAwNiBKb25hdGhhbiBFcm5zdAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19ORVVUUkFMCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiQ29uZmlndXJlciIsIElEQ19BVURJT19DT05GSUdVUkUKICAgIEVORApFTkQKCklERF9BQk9VVENGRyBESUFMT0dFWCAwLCAwLCAyNjAsIDI3MApTVFlMRSBXU19DSElMRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgUEFDS0FHRV9TVFJJTkcsSURDX1NUQVRJQywxMTksMTcsMTIwLDgKICAgIENPTlRST0wgICAgICAgICBJREJfV0lORSxJRENfU1RBVElDLCJTdGF0aWMiLFNTX0JJVE1BUCAsMTUsMTcsMTU3LDExMQogICAgTFRFWFQgICAgICAgICAgICJodHRwOi8vd3d3LndpbmVocS5vcmcvIixJRENfU1RBVElDLDExOSwzMSwxMDYsOAogICAgTFRFWFQgICAgICAgICAgICJDZXR0ZSBiaWJsaW90aOhxdWUgZXN0IHVuIGxvZ2ljaWVsIGxpYnJloDsgdm91cyBwb3V2ZXogbGEgcmVkaXN0cmlidWVyIGV0L291IGxhIG1vZGlmaWVyIGNvbmZvcm3pbWVudCBhdXggZGlzcG9zaXRpb25zIGRlIGxhIExpY2VuY2UgUHVibGlxdWUgR+lu6XJhbGUgR05VLCB0ZWxsZSBxdWUgcHVibGnpZSBwYXIgbGEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uoDsgdmVyc2lvbiAyLjEgZGUgbGEgbGljZW5jZSwgb3UgZW5jb3JlICjgIHZvdHJlIGNob2l4KSB0b3V0ZSB2ZXJzaW9uIHVsdOlyaWV1cmUuIgogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTE5LDQ0LDEyNCw3MgpFTkQKCklERF9BUFBDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFBhcmFt6HRyZXMgZGVzIGFwcGxpY2F0aW9ucyAiLElEQ19TVEFUSUMsIDgsNCwyNDQsMjQwCiAgICBMVEVYVCAgICAgICAgICAgIldpbmUgcGV1dCBpbWl0ZXIgZGlmZulyZW50ZXMgdmVyc2lvbnMgZGUgV2luZG93cyBwb3VyIGNoYXF1ZSBhcHBsaWNhdGlvbi4gIENldCBvbmdsZXQgZXN0IGxp6SBhdXggb25nbGV0cyBCaWJsaW90aOhxdWVzIGV0IEFmZmljaGFnZSBwb3VyIHZvdXMgcGVybWV0dHJlIGRlIGNoYW5nZXIgZGVzIHBhcmFt6HRyZXMgZ2xvYmF1eCBvdSBwYXIgYXBwbGljYXRpb24gZGFucyBjZXMgb25nbGV0cy4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDQwCiAgICBDT05UUk9MICAgICAgICAgIkFwcGxpY2F0aW9ucyIsSURDX0FQUF9MSVNUVklFVywiU3lzTGlzdFZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExWU19MSVNUIHwgTFZTX1NJTkdMRVNFTCB8IExWU19TSE9XU0VMQUxXQVlTLAogICAgICAgICAgICAgICAgICAgIDE1LDYwLDIzMCwxNDAKICAgIFBVU0hCVVRUT04JICAgICImQWpvdXRlciB1bmUgYXBwbGljYXRpb24uLi4iLElEQ19BUFBfQUREQVBQLCA3MCwyMDQsODUsMTQKICAgIFBVU0hCVVRUT04JICAgICImRW5sZXZlciB1bmUgYXBwbGljYXRpb24iLElEQ19BUFBfUkVNT1ZFQVBQLCAxNjAsMjA0LDg1LDE0CiAgICBMVEVYVCAgICAgICAgICAgIlZlcnNpb24gZGUgJldpbmRvd3M6IixJRENfU1RBVElDLDE3LDIyNCw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1dJTlZFUiw5NSwyMjIsMTUxLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFBhcmFt6HRyZXMgZGVzIGZlbup0cmVzICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE4MAoKICAgIENPTlRST0wJICAgICJQZXJtZXR0cmUgYXV4IGFwcGxpY2F0aW9ucyBEaXJlY3RYIGQnZW1w6mNoZXIgbGEgc291cmlzIGRlIHF1aXR0ZXIgbGV1ciBmZW7qdHJlIixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDE0LDIzMCw4CiAgICBDT05UUk9MCSAgICAiQWN0aXZlciBsYSBkb3VibGUgbWlzZSBlbiB0YW1wb24gZHUgYnVyZWF1IixJRENfRE9VQkxFX0JVRkZFUiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDI0LDIzMCw4CiAgICBMVEVYVCAJICAgICJTaSBsZXMgZmVu6nRyZXMgc29udCBn6XLpZXMgcGFyIHZvdHJlIGdlc3Rpb25uYWlyZSBkZSBmZW7qdHJlcywgZWxsZXMgYXVyb250IGRlcyBib3JkdXJlcyBzdGFuZGFyZHMsIGVsbGVzIHJlc3BlY3Rlcm9ucyB2b3RyZSBidXJlYXUgdmlydHVlbCBldCBhcHBhcmHudHJvbnQgZGFucyBsYSBsaXN0ZSBkZXMgZmVu6nRlcy4gXG5cblNpIGxlcyBmZW7qdHJlcyBuZSBzb250IHBhcyBn6XLpZXMsIGVsbGVzIHNlcm9udCBk6WNvbm5lY3TpZXMgZGUgdm90cmUgZ2VzdGlvbm5haXJlIGRlIGZlbup0cmVzLiBDZWNpIHNpZ25pZmllIHF1J2VsbGUgbmUgc2Vyb250IHBhcyBwYXJmYWl0ZW1lbnQgaW506Wdy6WVzIOAgdm90cmUgYnVyZWF1LCBtYWlzIHF1ZSBsJ+ltdWxhdGlvbiBzZXJhIHBsdXMgcHLpY2lzZSBjZSBxdWkgcGVybWV0IOAgY2VydGFpbnMgcHJvZ3JhbW1lcyBkZSBtaWV1eCBmb25jdGlvbm5lci4iLAogICAgCQkgICAgSURDX1NUQVRJQywxNSwzNywyMjgsODAKICAgIENPTlRST0wJICAgICJQZXJtZXR0cmUgYXUgZ2VzdGlvbm5haXJlIGRlIGZlbup0cmVzIGRlIGNvbnRyb2xsZXIgbGVzIGZlbup0cmVzIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMzIsMjMwLDgKICAgIAogICAgLyogRklYTUU6IHRoZSB3b3JkaW5nIG9mIHRoaXMgZXhwbGFuYXRpb24gY291bGQgYmUgYSBsb3QgYmV0dGVyICovCiAgICBMVEVYVCAgICAgICAgICAgIlZvdXMgYXZleiBsZSBjaG9peCBlbnRyZSBsJ+ltdWxhdGlvbiBkJ3VuIGJ1cmVhdSBXaW5kb3dzIG/5IHRvdXRlcyBsZXMgZmVu6nRyZXMgZGUgdm9zIHByb2dyYW1tZSBzd2luZG93cyBzb250IGNvbmZpbullcyBvdSBiaWVuIGQnYWZmaWNoZXIgbGVzIGZlbup0cmVzIGRlIGNlcyBwcm9ncmFtbWVzIHN1ciB2b3RyZSBidXJlYXUgc3RhbmRhcmQuIiwKICAgICAgICAgICAgICAgICAgICBJRENfU1RBVElDLDE1LDE0NiwyMjgsMjgKICAgIExURVhUICAgICAgICAgICAiVGFpbGxlIGR1IGJ1cmVhdToiLElEQ19ERVNLVE9QX1NJWkUsMTUsMTE1LDYwLDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiWCIsSURDX0RFU0tUT1BfQlksMTI5LDExNSw4LDgsV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiRW11bGVyIHVuIGJ1cmVhdSB2aXJ0dWVsIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMDUsMjMwLDEwCgkJICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19ERVNLVE9QX1dJRFRILDg0LDExNSw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfSEVJR0hULDEzNywxMTUsNDAsMTIsRVNfQVVUT0hTQ1JPTEwgfCBFU19OVU1CRVIgfCBXU19ESVNBQkxFRAogCiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3QzRCAiLElEQ19TVEFUSUMsOCwxODksMjQ0LDUwCgogICAgTFRFWFQJICAgICJTdXBwb3J0IGR1IFZlcnRleCBTaGFkZXI6ICIsSURDX1NUQVRJQywxNSwyMDAsMTAwLDMwCiAgICBDT01CT0JPWAkgICAgSURDX0QzRF9WU0hBREVSX01PREUsMTEwLDIwMCwxMDAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJQZXJtZXR0cmUgbGUgUGl4ZWwgU2hhZGVyIChzaSBzdXBwb3J06SBwYXIgbGUgbWF06XJpZWwpIixJRENfRDNEX1BTSEFERVJfTU9ERSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIxNSwyMzAsMTAKRU5ECgpJRERfRExMQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBTdXJjbGFzc2FnZSBkZSBETExzICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJJbCBlc3QgcG9zc2libGUgZGUgc3DpY2lmaWVyIHNpIFdpbmUgZG9pdCB1dGlsaXNlciB1bmUgdmVyc2lvbiBuYXRpdmUgKGltcG9ydOllIGRlcHVpcyBXaW5kb3dzIG91IGluc3RhbGzpZSBwYXIgbCdhcHBsaWNhdGlvbikgb3UgYmllbiB1bmUgdmVyc2lvbiBpbmNsdWUgKGRpc3RyaWJ16WUgYXZlYyBXaW5lKSBkZSBjaGFxdWUgRExMIChEeW5hbWljIExpbmsgTGlicmFyaWVzKSB1dGlsaXPpZSBwYXIgdW4gcHJvZ3JhbW1lLiIKICAgICAgICAgICAgICAgICAgICAsIElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgIiZOb3V2ZWF1IHN1Y2xhc3NhZ2UgcG91cjoiLElEQ19TVEFUSUMsMTYsNTgsMTAwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRExMQ09NQk8sMTYsNjgsMTQwLDE0LENCU19EUk9QRE9XTiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQgfCBDQlNfTE9XRVJDQVNFCiAgICBQVVNIQlVUVE9OICAgICAgIiZBam91dGVyIHN1cmNsYXNzYWdlIixJRENfRExMU19BRERETEwsIDE2NCw2OCw4MiwxMyxCU19ERUZQVVNIQlVUVE9OIAogICAgTFRFWFQgICAgICAgICAgICJTdXJjbGFzc2FnZXMgZXhpc3RhbnRzOiIsSURDX1NUQVRJQywxNiw4NiwxMDAsOAogICAgTElTVEJPWCAgICAgICAgIElEQ19ETExTX0xJU1QsMTYsOTYsMTQwLDE0MCxXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfVlNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICImRWRpdGVyIHN1cmNsYXNzYWdlIixJRENfRExMU19FRElURExMLDE2NCw5Niw4MiwxNAogICAgUFVTSEJVVFRPTiAgICAgICImU3VwcHJpbWVyIHN1cmNsYXNzYWdlIixJRENfRExMU19SRU1PVkVETEwsMTY0LDExNCw4MiwxNCAKRU5ECgpJRERfTE9BRE9SREVSIERJQUxPRyBESVNDQVJEQUJMRSA4MCwgOTAsIDExMCwgOTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXQgT3ZlcnJpZGUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIE9yZHJlIGRlIGNoYXJnZW1lbnQgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICImSW5jbHVlIChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImTmF0aXZlIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImSW5jbHVlIHB1aXMgbmF0aXZlIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aSZ2ZSBwdWlzIGluY2x1ZSIsSURDX1JBRF9OQVRJVkVfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDQ0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZE6XNhY3RpdukiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDU0LDc1LDEwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiQW5udWxlciIsSURDQU5DRUwsNTcsNzQsNDUsMTQsV1NfR1JPVVAKRU5ECgpJRERfRFJJVkVDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFzc2lnbmF0aW9uIGRlcyBsZWN0ZXVycyAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX0RSSVZFUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxOCwyMzIsNzYKICAgIFBVU0hCVVRUT04gICAgICAiJkFqb3V0ZXIuLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZTdXBwcmltZXIiLElEQ19CVVRUT05fUkVNT1ZFLDU2LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF1dG8mZOl0ZWN0aW9uLi4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTkxLDk4LDU1LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIiZDaGVtaW46IixJRENfU1RBVElDLDE1LDEyMywyNCw5ICAgIAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1BBVEgsNDMsMTIwLDE1OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gICAgICAiJlBhcmNvdXJpci4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCiAgICAKICAgIExURVhUICAgICAgICAgICAiJlR5cGU6IixJRENfU1RBVElDX1RZUEUsMTUsMTM4LDIxLDEwCiAgICBDT01CT0JPWCAgICAgICAgSURDX0NPTUJPX1RZUEUsNDMsMTM1LDc3LDYwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgCiAgICBMVEVYVCAgICAgICAgICAgIkxhYmVsIGV0IG51belybyBkZSBz6XJpZSIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKICAgIAogICAgUFVTSEJVVFRPTiAgICAgICImQWZmaWNoYWdlIGF2YW5j6SIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJBdXRvZOl0ZWN0aW9uIGRlcHVpcyBsZSAmbGVjdGV1cjoiLElEQ19SQURJT19BVVRPREVURUNULCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxNjYsOTMsMTAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9ERVZJQ0UsMjcsMTc2LDE3NCwxMyxFU19BVVRPSFNDUk9MTAogICAgUFVTSEJVVFRPTiAgICAgICJQYSZyY291cmlyLi4uIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJBc3NpZ25lciAmbWFudWVsbGVtZW50OiIsSURDX1JBRElPX0FTU0lHTiwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTk1LDY5LDEwCgogICAgTFRFWFQgICAgICAgICAgICImTGFiZWw6IixJRENfU1RBVElDX0xBQkVMLDMzLDIwOCwyOSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0xBQkVMLDYzLDIwNSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiTrAgZGUgc+lyaWU6IixJRENfU1RBVElDX1NFUklBTCwzMywyMjUsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9TRVJJQUwsNjMsMjIxLDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiTW9udHJlciBsZXMgZmljaGllcnMgY2FjaOlzIixJRENfU0hPV19ET1RfRklMRVMsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw4LDI2MCwyMzAsOCAgICAgICAgICAgICAgICAgICAgCkVORAoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBT6WxlY3Rpb24gZHUgcGlsb3RlICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJT6WxlY3Rpb25uZXogdW4gcGlsb3RlIGF1ZGlvIGVuIGNvY2hhbnQgbGEgY2FzZSBlbiByZWdhcmQgZHUgcGlsb3RlIGTpc2ly6S4gIETpc2FjdGl2ZXogbGUgc29uIGVuIG5lIHPpbGVjdGlvbm5hbnQgYXVjdW4gcG9sb3RlLiBMYSBz6WxlY3Rpb24gZGUgcGlsb3RlcyBtdWx0aXBsZXMgbidlc3QgcGFzIHJlY29tbWFuZOkuIENvbmZpZ3VyZXogbGUgcGlsb3RlIGVuIGVmZmVjdHVhbnQgdW4gY2xpY2sgZHJvaXQgZGVzc3VzLiIsSURDX1NUQVRJQywxNSwyMCwyMjcsNjAKICAgIENPTlRST0wgICAgICAgICAiTWF06XJpZWwiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDYwLDE0MCwxMzAgCiAgICBQVVNIQlVUVE9OCSAgICAiUGFubmVhdSBkZSBjb25maWd1cmF0aW9uIixJRENfQVVESU9fQ09OVFJPTF9QQU5FTCwxNjAsNjAsODYsMTQKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdFNvdW5kICIsSURDX1NUQVRJQyw4LDIwNSwyNDQsNjAKICAgIExURVhUCSAgICAiQWNj6WzpcmF0aW9uIG1hdOlyaWVsbGU6ICIsSURDX1NUQVRJQywxNSwyMTUsOTAsMTAKICAgIENPTUJPQk9YCSAgICBJRENfRFNPVU5EX0hXX0FDQ0VMLDEwMCwyMTMsNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlRhdXggZCfpY2hhbnRpbGxvbmFnZSAoZOlmYXV0KToiLElEQ19TVEFUSUMsMTUsMjMyLDEzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUywxMTcsMjMwLDM4LDc2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJCaXRzIHBhciDpY2hhbnRpbGxvbjoiLElEQ19TVEFUSUMsMTYwLDIzMiw4MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9CSVRTLDIyMywyMzAsMjUsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAgICAgIkVtdWxhdGlvbiBwaWxvdGUiLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIEFwcGFyZW5jZSAiLElEQ19TVEFUSUMsOCw0LDI0NCwxMDYKICAgIExURVhUICAgICAgICAgICAiVGjobWU6IixJRENfU1RBVElDLDE1LDE2LDIzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMjMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICJJbnN0YWxsZXIgdW4gdGjobWUuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwzOCw5MywxNAogICAgTFRFWFQgICAgICAgICAgICJDb3VsZXVyOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw1NCwyMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDYyLDIzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVGFpbGxlOiIsSURDX1RIRU1FX1NJWkVURVhULDE1LDgwLDIzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1NJWkVDT01CTywxNSw4OCwyMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIiBEb3NzaWVycyBzeXN06G1lICIsSURDX1NUQVRJQyw4LDExNCwyNDQsMTAwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIkxp6SDgOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1MCwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNjUsMTk1LDE0NSwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIlBhcmNvdXJpciIsSURDX0JST1dTRV9TRlBBVEgsMjE1LDE5NSwzMCwxMyxXU19ESVNBQkxFRApFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfV0lORV9WRVJTSU9OICAgICAgICAiQ1ZTIgogICAgSURTX1RBQl9BUFBMSUNBVElPTlMgICAgIkFwcGxpY2F0aW9ucyIKICAgIElEU19UQUJfRExMUyAgICAgICAgICAgICJCaWJsaW90aOhxdWVzIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIkxlY3RldXJzIgogICAgSURTX0NIT09TRV9QQVRIICAgICAgICAgIlZldWlsbGV6IHPpbGVjdGlvbm5lciBsZSBy6XBlcnRvaXJlIGRlIGRlc3RpbmF0aW9uLiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJDYWNoZXIgYXZhbmPpcyIKICAgIElEU19TSE9XX0FEVkFOQ0VEICAgICAgICJNb250cmVyIGF2YW5j6XMiCiAgICBJRFNfTk9USEVNRSAgICAgICAgICAgICAiKFBhcyBkZSB0aOhtZSkiCiAgICBJRFNfVEFCX0dSQVBISUNTICAgICAgICAiQWZmaWNoYWdlIgogICAgSURTX1RBQl9ERVNLVE9QX0lOVEVHUkFUSU9OICJJbnTpZ3JhdGlvbiBhdmVjIGxlIGJ1cmVhdSIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICJBdWRpbyIKICAgIElEU19UQUJfQUJPVVQgICAgICAgICAgICLAIHByb3BvcyIKICAgIElEU19XSU5FQ0ZHX1RJVExFICAgICAgICJDb25maWd1cmF0aW9uIGRlIFdpbmUiCiAgICBJRFNfV0lORUNGR19USVRMRV9BUFAgICAiQ29uZmlndXJhdGlvbiBkZSBXaW5lIHBvdXIgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAiRmljaGllcnMgZGUgdGjobWVzIgogICAgSURTX1RIRU1FRklMRV9TRUxFQ1QgICAgIlPpbGVjdGlvbm5leiB1biBmaWNoaWVyIGRlIHRo6G1lIgogICAgSURTX0FVRElPX01JU1NJTkcgICAgICAgIkF1Y3VuIHBpbG90ZSBhdWRpbyBuJ2VzdCBhY3R1ZWxsZW1lbnQgZOlmaW5pLlxuXG5MZSBwaWxvdGUgcmVjb21tYW5k6SBhIOl06SBz6WxlY3Rpb25u6SBwb3VyIHZvdXMuXG5Wb3VzIHBvdXZleiB1dGlsaXNlciBjZSBwaWxvdGUgb3UgZW4gc+lsZWN0aW9ubmVyIHVuIGF1dHJlIHNpIGRpc3BvbmlibGUuXG5cblZvdXMgZGV2ZXogY2xpcXVlciBzdXIgQXBwbGlxdWVyIHBvdXIgcXVlIGxhIHPpbGVjdGlvbiBwcmVubmUgZWZmZXQuIgogICAgSURTX1NIRUxMX0ZPTERFUiAgICAgICAgIkRvc3NpZXIgc3lzdOhtZSIKICAgIElEU19MSU5LU19UTyAgICAgICAgICAgICJMaekg4CIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RMTF9XQVJOSU5HICAgICAgICAgIkxhIG1vZGlmaWNhdGlvbiBkZSBsJ29yZHJlIGRlIGNoYXJnZW1lbnQgZGUgY2V0dGUgYmlibGlvdGjocXVlIG4nZXN0IHBhcyByZWNvbW1hbmTpLlxuynRlcy12b3VzIHP7ciBkZSB2b3Vsb2lyIGxlIGZhaXJlID8iCiAgICBJRFNfRExMX1dBUk5JTkdfQ0FQVElPTiAiQXR0ZW50aW9uOiBiaWJsaW90aOhxdWUgc3lzdOhtZSIKICAgIElEU19ETExfTkFUSVZFICAgICAgICAgICJuYXRpdmUiCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAiaW5jbHVlIgogICAgSURTX0RMTF9OQVRJVkVfQlVJTFRJTiAgIm5hdGl2ZSwgaW5jbHVlIgogICAgSURTX0RMTF9CVUlMVElOX05BVElWRSAgImluY2x1ZSwgbmF0aXZlIgogICAgSURTX0RMTF9ESVNBQkxFRCAgICAgICAgImTpc2FjdGl26WUiCiAgICBJRFNfREVGQVVMVF9TRVRUSU5HUyAgICAiUGFyYW3odHJlcyBwYXIgZOlmYXV0IgogICAgSURTX0VYRUNVVEFCTEVfRklMVEVSICAgIlByb2dyYW1tZXMgZGUgV2luZSAoKi5leGUsKi5leGUuc28pXDAqLmV4ZTsqLmV4ZS5zb1wwIgogICAgSURTX1VTRV9HTE9CQUxfU0VUVElOR1MgIlV0aWxpc2VyIGxlcyBwYXJhbeh0cmVzIGdsb2JhdXgiCiAgICBJRFNfU0VMRUNUX0VYRUNVVEFCTEUgICAiU+lsZWN0aW9ubmV6IHVuIGZpY2hpZXIgZXjpY3V0YWJsZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJNYXTpcmllbCIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiQXVjdW4iCiAgICBJRFNfU0hBREVSX01PREVfRU1VTEFUSU9OICAgIsltdWxhdGlvbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RSSVZFX1VOS05PV04gICAgICAgICAgICJE6XRlY3Rpb24gYXV0by4iCiAgICBJRFNfRFJJVkVfRklYRUQgICAgICAgICAgICAgIkRpc3F1ZSBkdXIgbG9jYWwiCiAgICBJRFNfRFJJVkVfUkVNT1RFICAgICAgICAgICAgIlBhcnRhZ2UgculzZWF1IgogICAgSURTX0RSSVZFX1JFTU9WQUJMRSAgICAgICAgICJMZWN0ZXVyIGRlIGRpc3F1ZXR0ZSIKICAgIElEU19EUklWRV9DRFJPTSAgICAgICAgICAgICAiQ0QtUk9NIgogICAgSURTX0RSSVZFX0xFVFRFUlNfRVhDRUVERUQgICJWb3VzIG5lIHBvdXZleiBwYXMgYWpvdXRlciBwbHVzIGRlIGxlY3RldXJzLlxuXG5VbmUgbGV0dHJlIGRlIEEg4CBaIGRvaXQg6nRyZSBhc3NpZ27pZSDgIGNoYXF1ZSBsZWN0ZXVyIDsgdm91cyBuZSBwb3V2ZXogZG9uYyBwYXMgZW4gYXZvaXIgcGx1cyBkZSAyNi4iCiAgICBJRFNfU1lTVEVNX0RSSVZFX0xBQkVMICAgICAgIkxlY3RldXIgc3lzdOhtZSIKICAgIElEU19DT05GSVJNX0RFTEVURV9DICAgICAgICAiynRlcy12b3VzIHP7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBsZSBsZWN0ZXVyIEOgP1xuXG5MYSBwbHVwYXJ0IGRlcyBhcHBsaWNhdGlvbnMgV2luZG93cyBjb21wdGVudCBzdXIgbCdleGlzdGVuY2UgZGUgY2UgbGVjdGV1ciBldCBuZSBmb25jdGlvbm5lcm9udCBwYXMgcydpbCBuJ2V4aXN0ZSBwYXMuIFNpIHZvdXMgY29udGludWV6LCBuJ291YmxpZXogcGFzIGRlIGxlIHJlY3LpZXKgISIKICAgIElEU19DT0xfRFJJVkVMRVRURVIgICAgICAgICAiTGV0dHJlIgogICAgSURTX0NPTF9EUklWRU1BUFBJTkcgICAgICAgICJBc3NpZ25hdGlvbiIKICAgIElEU19OT19EUklWRV9DICAgICAgICAgICAgICAiVm91cyBuZSBkaXNwb3NleiBwYXMgZGUgbGVjdGV1ciBDIGNlIHF1aSBwZXV0IHBvc2VyIGRlcyBwcm9ibOhtZXMuXG5cbk4nb3VibGlleiBwYXMgZCdlbiByZWNy6WVyIHVuIGVuIGNsaXF1YW50IHN1ciBsZSBib3V0b24gq6BBam91dGVyoLsgZGFucyBsJ29uZ2xldCCroExlY3RldXJzoLugIVxuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQUNDRUxfRlVMTCAgICAgICAgICAgICAgIkNvbXBs6HRlIgogICAgSURTX0FDQ0VMX1NUQU5EQVJEICAgICAgICAgICJTdGFuZGFyZCIKICAgIElEU19BQ0NFTF9CQVNJQyAgICAgICAgICAgICAiQmFzaXF1ZSIKICAgIElEU19BQ0NFTF9FTVVMQVRJT04gICAgICAgICAiyW11bGF0aW9uIgogICAgSURTX0RSSVZFUl9BTFNBICAgICAgICAgICAgICJQaWxvdGUgQUxTQSIKICAgIElEU19EUklWRVJfQVJUUyAgICAgICAgICAgICAiUGlsb3RlIGFSdHMiCiAgICBJRFNfRFJJVkVSX0VTT1VORCAgICAgICAgICAgIlBpbG90ZSBFc291bkQiCiAgICBJRFNfRFJJVkVSX09TUyAgICAgICAgICAgICAgIlBpbG90ZSBPU1MiCiAgICBJRFNfRFJJVkVSX0pBQ0sgICAgICAgICAgICAgIlBpbG90ZSBKQUNLIgogICAgSURTX0RSSVZFUl9OQVMgICAgICAgICAgICAgICJQaWxvdGUgTkFTIgogICAgSURTX0RSSVZFUl9BVURJT0lPICAgICAgICAgICJQaWxvdGUgQXVkaW8gSU8gKFNvbGFyaXMpIgogICAgSURTX0RSSVZFUl9DT1JFQVVESU8gICAgICAgICJQaWxvdGUgQ29yZUF1ZGlvIgogICAgSURTX09QRU5fRFJJVkVSX0VSUk9SICAgICAgICJJbXBvc3NpYmxlIGQnb3V2cmlyICVzoCEiCiAgICBJRFNfU09VTkREUklWRVJTICAgICAgICAgICAgIlBpbG90ZXMgYXVkaW8iCiAgICBJRFNfREVWSUNFU19XQVZFT1VUICAgICAgICAgIlDpcmlwaOlyaXF1ZXMgZGUgc29ydGllIFdhdmUiCiAgICBJRFNfREVWSUNFU19XQVZFSU4gICAgICAgICAgIlDpcmlwaOlyaXF1ZXMgZCdlbnRy6WUgV2F2ZSIKICAgIElEU19ERVZJQ0VTX01JRElPVVQgICAgICAgICAiUOlyaXBo6XJpcXVlcyBkZSBzb3J0aWUgTUlESSIKICAgIElEU19ERVZJQ0VTX01JRElJTiAgICAgICAgICAiUOlyaXBo6XJpcXVlcyBkJ2VudHLpZSBNSURJIgogICAgSURTX0RFVklDRVNfQVVYICAgICAgICAgICAgICJQ6XJpcGjpcmlxdWVzIEF1eCIKICAgIElEU19ERVZJQ0VTX01JWEVSICAgICAgICAgICAiUOlyaXBo6XJpcXVlcyBkZSBtaXhhZ2UiCiAgICBJRFNfVU5BVkFJTEFCTEVfRFJJVkVSICAgICAgIlVuIHBpbG90ZSBub24gZGlzcG9uaWJsZSBhIOl06SB0cm91dukgZGFucyBsYSBiYXNlIGRlIHJlZ2lzdHJloCFcblxuU291aGFpdGV6LXZvdXMgc3VwcHJpbWVyIKugJXOguyBkZSBsYSBiYXNlIGRlIHJlZ2lzdHJloD8iCiAgICBJRFNfV0FSTklORyAgICAgICAgICAgICAgICAgIkF0dGVudGlvbiIKRU5ECg==