diff --git a/src/Sarif.Converters/ConverterResources.Designer.cs b/src/Sarif.Converters/ConverterResources.Designer.cs
index 1fc8f2ad6..622debbb7 100644
--- a/src/Sarif.Converters/ConverterResources.Designer.cs
+++ b/src/Sarif.Converters/ConverterResources.Designer.cs
@@ -312,6 +312,15 @@ internal static string FortifyNotValidResult {
}
}
+ ///
+ /// Looks up a localized string similar to FxCop does not provide messages for suppressed results..
+ ///
+ internal static string FxCopNoMessage {
+ get {
+ return ResourceManager.GetString("FxCopNoMessage", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to The value "{0}" in the {1} field is not an integer..
///
diff --git a/src/Sarif.Converters/ConverterResources.resx b/src/Sarif.Converters/ConverterResources.resx
index 65bd18507..5698c1292 100644
--- a/src/Sarif.Converters/ConverterResources.resx
+++ b/src/Sarif.Converters/ConverterResources.resx
@@ -210,4 +210,7 @@
The root URI of the web site that was analyzed.
+
+ FxCop does not provide messages for suppressed results.
+
\ No newline at end of file
diff --git a/src/Sarif.Converters/FxCopConverter.cs b/src/Sarif.Converters/FxCopConverter.cs
index 178700968..d4d525fab 100644
--- a/src/Sarif.Converters/FxCopConverter.cs
+++ b/src/Sarif.Converters/FxCopConverter.cs
@@ -121,7 +121,8 @@ internal Result CreateResult(FxCopLogReader.Context context)
}
result.RuleId = context.CheckId;
- result.Message = new Message { Arguments = context.Items, Id = context.ResolutionName, Text = context.Message };
+ string messageText = context.Message ?? ConverterResources.FxCopNoMessage;
+ result.Message = new Message { Arguments = context.Items, Id = context.ResolutionName, Text = messageText };
var location = new Location();
string sourceFile = GetFilePath(context);
diff --git a/src/Test.FunctionalTests.Sarif/v2/ConverterTestData/FxCop/SarifSdkTest.xml.sarif b/src/Test.FunctionalTests.Sarif/v2/ConverterTestData/FxCop/SarifSdkTest.xml.sarif
index aa572b68f..fc3218f9d 100644
--- a/src/Test.FunctionalTests.Sarif/v2/ConverterTestData/FxCop/SarifSdkTest.xml.sarif
+++ b/src/Test.FunctionalTests.Sarif/v2/ConverterTestData/FxCop/SarifSdkTest.xml.sarif
@@ -1,8073 +1,24836 @@
{
- "$schema": "http://json.schemastore.org/sarif-2.0.0-csd.2.beta.2018-09-26",
- "version": "2.0.0-csd.2.beta.2018-09-26",
+ "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.4.json",
+ "version": "2.1.0",
"runs": [
{
- "tool": {
- "name": "FxCop"
- },
- "files": {
- "#$(ProjectDir)#../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll": {
- "mimeType": "application/octet-stream"
- },
- "#$(ProjectDir)#../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll": {
- "mimeType": "application/octet-stream"
- },
- "#$(ProjectDir)#../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll": {
- "mimeType": "application/octet-stream"
- },
- "#$(ProjectDir)#../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Sarif.Converters.dll": {
- "mimeType": "application/octet-stream"
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/AndroidStudioConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5JbW11dGFibGU7DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgU3lzdGVtLlRleHQ7DQp1c2luZyBTeXN0ZW0uWG1sOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBDb252ZXJ0cyBhbiB4bWwgbG9nIGZpbGUgb2YgdGhlIEFuZHJvaWQgU3R1ZGlvIGZvcm1hdCBpbnRvIHRoZSBTQVJJRiBmb3JtYXQNCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIGludGVybmFsIGNsYXNzIEFuZHJvaWRTdHVkaW9Db252ZXJ0ZXIgOiBUb29sRmlsZUNvbnZlcnRlckJhc2UNCiAgICB7DQogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgTmFtZVRhYmxlIF9uYW1lVGFibGU7DQogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgQW5kcm9pZFN0dWRpb1N0cmluZ3MgX3N0cmluZ3M7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQW5kcm9pZFN0dWRpb0NvbnZlcnRlciIvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEFuZHJvaWRTdHVkaW9Db252ZXJ0ZXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICBfbmFtZVRhYmxlID0gbmV3IE5hbWVUYWJsZSgpOw0KICAgICAgICAgICAgX3N0cmluZ3MgPSBuZXcgQW5kcm9pZFN0dWRpb1N0cmluZ3MoX25hbWVUYWJsZSk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDb252ZXJ0cyBhbiBBbmRyb2lkIFN0dWRpbyBmb3JtYXR0ZWQgbG9nIGFzIGlucHV0IGludG8gYSBTQVJJRiBTYXJpZkxvZyB1c2luZyB0aGUgb3V0cHV0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlucHV0Ij5UaGUgQW5kcm9pZCBTdHVkaW8gZm9ybWF0dGVkIGxvZy48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im91dHB1dCI+VGhlIFNhcmlmTG9nIHRvIHdyaXRlIHRoZSBvdXRwdXQgdG8uPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkYXRhVG9JbnNlcnQiPk9wdGlvbmFsbHkgZW1pdHRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9nLjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIENvbnZlcnQoU3RyZWFtIGlucHV0LCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGlucHV0ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoaW5wdXQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG91dHB1dCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBMb2dpY2FsTG9jYXRpb25zRGljdGlvbmFyeS5DbGVhcigpOw0KDQogICAgICAgICAgICBYbWxSZWFkZXJTZXR0aW5ncyBzZXR0aW5ncyA9IG5ldyBYbWxSZWFkZXJTZXR0aW5ncw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIElnbm9yZVdoaXRlc3BhY2UgPSB0cnVlLA0KICAgICAgICAgICAgICAgIElnbm9yZUNvbW1lbnRzID0gdHJ1ZSwNCiAgICAgICAgICAgICAgICBJZ25vcmVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25zID0gdHJ1ZSwNCiAgICAgICAgICAgICAgICBOYW1lVGFibGUgPSBfbmFtZVRhYmxlLA0KICAgICAgICAgICAgICAgIER0ZFByb2Nlc3NpbmcgPSBEdGRQcm9jZXNzaW5nLklnbm9yZSwNCiAgICAgICAgICAgICAgICBYbWxSZXNvbHZlciA9IG51bGwNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIElTZXQ8UmVzdWx0PiByZXN1bHRzOw0KICAgICAgICAgICAgdXNpbmcgKFhtbFJlYWRlciB4bWxSZWFkZXIgPSBYbWxSZWFkZXIuQ3JlYXRlKGlucHV0LCBzZXR0aW5ncykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0cyA9IFByb2Nlc3NBbmRyb2lkU3R1ZGlvTG9nKHhtbFJlYWRlcik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciB0b29sID0gbmV3IFRvb2wNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOYW1lID0gIkFuZHJvaWRTdHVkaW8iDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICB2YXIgZmlsZUluZm9GYWN0b3J5ID0gbmV3IEZpbGVJbmZvRmFjdG9yeShudWxsLCBkYXRhVG9JbnNlcnQpOw0KICAgICAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPiBmaWxlRGljdGlvbmFyeSA9IGZpbGVJbmZvRmFjdG9yeS5DcmVhdGUocmVzdWx0cyk7DQoNCiAgICAgICAgICAgIHZhciBydW4gPSBuZXcgUnVuKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBUb29sID0gdG9vbA0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgb3V0cHV0LkluaXRpYWxpemUocnVuKTsNCg0KICAgICAgICAgICAgaWYgKGZpbGVEaWN0aW9uYXJ5ICE9IG51bGwgJiYgZmlsZURpY3Rpb25hcnkuQW55KCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlRmlsZXMoZmlsZURpY3Rpb25hcnkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoTG9naWNhbExvY2F0aW9uc0RpY3Rpb25hcnkgIT0gbnVsbCAmJiBMb2dpY2FsTG9jYXRpb25zRGljdGlvbmFyeS5BbnkoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBvdXRwdXQuV3JpdGVMb2dpY2FsTG9jYXRpb25zKExvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgb3V0cHV0Lk9wZW5SZXN1bHRzKCk7DQogICAgICAgICAgICBvdXRwdXQuV3JpdGVSZXN1bHRzKHJlc3VsdHMpOw0KICAgICAgICAgICAgb3V0cHV0LkNsb3NlUmVzdWx0cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PlByb2Nlc3NlcyBhbiBBbmRyb2lkIFN0dWRpbyBsb2cgYW5kIHdyaXRlcyBpc3N1ZXMgdGhlcmVpbiB0byBhbiBpbnN0YW5jZSBvZg0KICAgICAgICAvLy8gPHNlZSBjcmVmPSJJUmVzdWx0TG9nV3JpdGVyIi8+Ljwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ4bWxSZWFkZXIiPlRoZSBYTUwgcmVhZGVyIGZyb20gd2hpY2ggQW5kcm9pZFN0dWRpbyBmb3JtYXQgc2hhbGwgYmUgcmVhZC48L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+DQogICAgICAgIC8vLyBBIGxpc3Qgb2YgdGhlIDxzZWUgY3JlZj0iUmVzdWx0Ii8+IG9iamVjdHMgdHJhbnNsYXRlZCBmcm9tIHRoZSBBbmRyb2lkU3R1ZGlvIGZvcm1hdC4NCiAgICAgICAgLy8vIDwvcmV0dXJucz4NCiAgICAgICAgcHJpdmF0ZSBJU2V0PFJlc3VsdD4gUHJvY2Vzc0FuZHJvaWRTdHVkaW9Mb2coWG1sUmVhZGVyIHhtbFJlYWRlcikNCiAgICAgICAgew0KICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBuZXcgSGFzaFNldDxSZXN1bHQ+KFJlc3VsdC5WYWx1ZUNvbXBhcmVyKTsNCg0KICAgICAgICAgICAgaW50IHByb2JsZW1zRGVwdGggPSB4bWxSZWFkZXIuRGVwdGg7DQogICAgICAgICAgICB4bWxSZWFkZXIuUmVhZFN0YXJ0RWxlbWVudChfc3RyaW5ncy5Qcm9ibGVtcyk7DQoNCiAgICAgICAgICAgIHdoaWxlICh4bWxSZWFkZXIuRGVwdGggPiBwcm9ibGVtc0RlcHRoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBwcm9ibGVtID0gQW5kcm9pZFN0dWRpb1Byb2JsZW0uUGFyc2UoeG1sUmVhZGVyLCBfc3RyaW5ncyk7DQogICAgICAgICAgICAgICAgaWYgKHByb2JsZW0gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuQWRkKENvbnZlcnRQcm9ibGVtVG9TYXJpZlJlc3VsdChwcm9ibGVtKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB4bWxSZWFkZXIuUmVhZEVuZEVsZW1lbnQoKTsgLy8gPC9wcm9ibGVtcz4NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgUmVzdWx0IENvbnZlcnRQcm9ibGVtVG9TYXJpZlJlc3VsdChBbmRyb2lkU3R1ZGlvUHJvYmxlbSBwcm9ibGVtKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlc3VsdCgpOw0KICAgICAgICAgICAgcmVzdWx0LlJ1bGVJZCA9IHByb2JsZW0uUHJvYmxlbUNsYXNzOw0KICAgICAgICAgICAgc3RyaW5nIGRlc2NyaXB0aW9uID0gQW5kcm9pZFN0dWRpb0NvbnZlcnRlci5HZXRTaG9ydERlc2NyaXB0aW9uRm9yUHJvYmxlbShwcm9ibGVtKTsNCiAgICAgICAgICAgIGlmIChwcm9ibGVtLkhpbnRzLklzRW1wdHkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0Lk1lc3NhZ2UgPSBuZXcgTWVzc2FnZSB7IFRleHQgPSBkZXNjcmlwdGlvbiB9Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdC5NZXNzYWdlID0gbmV3IE1lc3NhZ2UgeyBUZXh0ID0gR2VuZXJhdGVGdWxsTWVzc2FnZShkZXNjcmlwdGlvbiwgcHJvYmxlbS5IaW50cykgfTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgU2V0U2FyaWZSZXN1bHRQcm9wZXJ0aWVzRm9yUHJvYmxlbShyZXN1bHQsIHByb2JsZW0pOw0KICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IExvY2F0aW9uKCk7DQogICAgICAgICAgICBsb2NhdGlvbi5GdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lID0gQ3JlYXRlRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZShwcm9ibGVtKTsNCg0KICAgICAgICAgICAgVXJpIHVyaTsNCiAgICAgICAgICAgIHN0cmluZyBmaWxlID0gcHJvYmxlbS5GaWxlOw0KICAgICAgICAgICAgaWYgKCFTdHJpbmcuSXNOdWxsT3JFbXB0eShmaWxlKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBsb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24oKSwNCiAgICAgICAgICAgICAgICAgICAgUmVnaW9uID0gcHJvYmxlbS5MaW5lIDw9IDAgPyBudWxsIDogRXh0ZW5zaW9ucy5DcmVhdGVSZWdpb24ocHJvYmxlbS5MaW5lKQ0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBSZW1vdmVCYWRSb290KGZpbGUsIG91dCB1cmkpOw0KICAgICAgICAgICAgICAgIGxvY2F0aW9uLlBoeXNpY2FsTG9jYXRpb24uRmlsZUxvY2F0aW9uLlVyaSA9IHVyaTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmVzdWx0LkxvY2F0aW9ucyA9IG5ldyBMaXN0PExvY2F0aW9uPiB7IGxvY2F0aW9uIH07DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0cmluZyBDcmVhdGVGdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lKEFuZHJvaWRTdHVkaW9Qcm9ibGVtIHByb2JsZW0pDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXkgPSBudWxsOw0KDQogICAgICAgICAgICBwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXkgPSBBZGRMb2dpY2FsTG9jYXRpb24ocGFyZW50TG9naWNhbExvY2F0aW9uS2V5LCBwcm9ibGVtLk1vZHVsZSwgTG9naWNhbExvY2F0aW9uS2luZC5Nb2R1bGUpOw0KICAgICAgICAgICAgcGFyZW50TG9naWNhbExvY2F0aW9uS2V5ID0gQWRkTG9naWNhbExvY2F0aW9uKHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSwgcHJvYmxlbS5QYWNrYWdlLCBMb2dpY2FsTG9jYXRpb25LaW5kLlBhY2thZ2UpOw0KDQogICAgICAgICAgICBpZiAocHJvYmxlbS5FbnRyeVBvaW50TmFtZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICgiY2xhc3MiLkVxdWFscyhwcm9ibGVtLkVudHJ5UG9pbnRUeXBlLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSA9IEFkZExvZ2ljYWxMb2NhdGlvbihwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXksIHByb2JsZW0uRW50cnlQb2ludE5hbWUsIExvZ2ljYWxMb2NhdGlvbktpbmQuVHlwZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCJtZXRob2QiLkVxdWFscyhwcm9ibGVtLkVudHJ5UG9pbnRUeXBlLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSA9IEFkZExvZ2ljYWxMb2NhdGlvbihwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXksIHByb2JsZW0uRW50cnlQb2ludE5hbWUsIExvZ2ljYWxMb2NhdGlvbktpbmQuTWVtYmVyKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0cmluZyBBZGRMb2dpY2FsTG9jYXRpb24oc3RyaW5nIHBhcmVudEtleSwgc3RyaW5nIHZhbHVlLCBzdHJpbmcga2luZCwgc3RyaW5nIGRlbGltaXRlciA9IEAiXCIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghU3RyaW5nLklzTnVsbE9yRW1wdHkodmFsdWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBsb2dpY2FsTG9jYXRpb24gPSBuZXcgTG9naWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBQYXJlbnRLZXkgPSBwYXJlbnRLZXksDQogICAgICAgICAgICAgICAgICAgIEtpbmQgPSBraW5kLA0KICAgICAgICAgICAgICAgICAgICBOYW1lID0gdmFsdWUNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgcmV0dXJuIEFkZExvZ2ljYWxMb2NhdGlvbihsb2dpY2FsTG9jYXRpb24sIGRlbGltaXRlcik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcGFyZW50S2V5Ow0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PkdlbmVyYXRlcyBhIHVzZXItZmFjaW5nIGRlc2NyaXB0aW9uIGZvciBhIHByb2JsZW0sIHVzaW5nIHRoZSBkZXNjcmlwdGlvbiBzdXBwbGllZCBhdA0KICAgICAgICAvLy8gY29uc3RydWN0aW9uIHRpbWUgaWYgaXQgaXMgcHJlc2VudDsgb3RoZXJ3aXNlLCBnZW5lcmF0ZXMgYSBkZXNjcmlwdGlvbiBmcm9tIHRoZSBwcm9ibGVtIHR5cGUuPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb2JsZW0iPlRoZSBwcm9ibGVtLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz5BIHVzZXIgdXNhYmxlIGRlc2NyaXB0aW9uIG1lc3NhZ2UuPC9yZXR1cm5zPg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHZXRTaG9ydERlc2NyaXB0aW9uRm9yUHJvYmxlbShBbmRyb2lkU3R1ZGlvUHJvYmxlbSBwcm9ibGVtKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgZGVzYyA9IHByb2JsZW0uRGVzY3JpcHRpb247DQogICAgICAgICAgICBpZiAoZGVzYyA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuRm9ybWF0KEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUsIENvbnZlcnRlclJlc291cmNlcy5BbmRyb2lkU3R1ZGlvRGVzY3JpcHRpb25Vbmtub3duLCBwcm9ibGVtLlByb2JsZW1DbGFzcyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBkZXNjOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBTZXRTYXJpZlJlc3VsdFByb3BlcnRpZXNGb3JQcm9ibGVtKFJlc3VsdCByZXN1bHQsIEFuZHJvaWRTdHVkaW9Qcm9ibGVtIHByb2JsZW0pDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChwcm9ibGVtLlNldmVyaXR5ICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJzZXZlcml0eSIsIHByb2JsZW0uU2V2ZXJpdHkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvYmxlbS5BdHRyaWJ1dGVLZXkgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXN1bHQuU2V0UHJvcGVydHkoImF0dHJpYnV0ZUtleSIsIHByb2JsZW0uQXR0cmlidXRlS2V5KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBHZW5lcmF0ZUZ1bGxNZXNzYWdlKHN0cmluZyBkZXNjcmlwdGlvbiwgSW1tdXRhYmxlQXJyYXk8c3RyaW5nPiBoaW50cykNCiAgICAgICAgew0KICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQogICAgICAgICAgICBzYi5BcHBlbmQoZGVzY3JpcHRpb24pOw0KICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGhpbnQgaW4gaGludHMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc2IuQXBwZW5kTGluZSgpOw0KICAgICAgICAgICAgICAgIHNiLkFwcGVuZEZvcm1hdChDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLCBDb252ZXJ0ZXJSZXNvdXJjZXMuQW5kcm9pZFN0dWRpb0hpbnRTdGFwbGUsIGhpbnQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gc2IuVG9TdHJpbmcoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIFBST0pFQ1RfRElSID0gIiRQUk9KRUNUX0RJUiQiOw0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIGJvb2wgUmVtb3ZlQmFkUm9vdChzdHJpbmcgcGF0aCwgb3V0IFVyaSB1cmkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGNvbnN0IHN0cmluZyBiYWRSb290ID0gImZpbGU6Ly8iICsgUFJPSkVDVF9ESVIgKyIvIjsNCiAgICAgICAgICAgIGJvb2wgcmVtb3ZlZEJhZFJvb3Q7DQogICAgICAgICAgICBzdHJpbmcgcmVtb3ZlZDsNCiAgICAgICAgICAgIGlmIChwYXRoLlN0YXJ0c1dpdGgoYmFkUm9vdCwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZW1vdmVkID0gcGF0aC5TdWJzdHJpbmcoYmFkUm9vdC5MZW5ndGgpOw0KICAgICAgICAgICAgICAgIHJlbW92ZWRCYWRSb290ID0gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZW1vdmVkID0gcGF0aDsNCiAgICAgICAgICAgICAgICByZW1vdmVkQmFkUm9vdCA9IGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB1cmkgPSBuZXcgVXJpKHJlbW92ZWQsIFVyaUtpbmQuUmVsYXRpdmVPckFic29sdXRlKTsNCiAgICAgICAgICAgIHJldHVybiByZW1vdmVkQmFkUm9vdDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ "results": [
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "3562F58BD918D44B51356B602D0C322D",
- "algorithm": "md5"
- },
- {
- "value": "CC2CA93566C7901E75517C537CDAAEF13869D7F8",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "2F411F04128E0697F7CE35D3E104A9E244CB1BF521261093CA55E27206F67059",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 0,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/ClangAnalyzerConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5YbWw7DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLldyaXRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMNCnsNCiAgICBwdWJsaWMgY2xhc3MgQ2xhbmdBbmFseXplckNvbnZlcnRlciA6IFRvb2xGaWxlQ29udmVydGVyQmFzZQ0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSBJTGlzdDxvYmplY3Q+IF9maWxlcyA9IG51bGw7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PkNvbnZlcnQgYSBDbGFuZyBwbGlzdCByZXBvcnQgaW50byB0aGUgU0FSSUYgZm9ybWF0Ljwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj5UaHJvd24gd2hlbiBvbmUgb3IgbW9yZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIG51bGwuPC9leGNlcHRpb24+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaW5wdXQiPkNMYW5nIGxvZyBmaWxlIHN0cmVhbS48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im91dHB1dCI+UmVzdWx0IGxvZyB3cml0ZXIuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkYXRhVG9JbnNlcnQiPk9wdGlvbmFsbHkgZW1pdHRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9nLjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIENvbnZlcnQoU3RyZWFtIGlucHV0LCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gVG9EbyByZW1vdmUgdGhpcyBjb21tZW50IGFmdGVyIGFsbCBpc3N1ZXMgYXJlIHJlc29sdmVkLg0KICAgICAgICAgICAgLy8gUm9kbmV5IGlzIHRhc2tlZCB3aXRoIGJyaW5naW5nIENsYW5nIGFuYWx5emVyIHJlc3VsdHMgaW50byB0aGUgU0FSSUYgZm9sZC4NCiAgICAgICAgICAgIC8vIE9uY2UgdGhpcyB3b3JrIGlzIGNvbXBsZXRlLCBoZSBjYW4gY2xvc2UgdGhlIGZvbGxvd2luZyB0YXNrOg0KICAgICAgICAgICAgLy8gaHR0cDovL3R3Y3NlYy10ZnMwMTo4MDgwL3Rmcy9EZWZhdWx0Q29sbGVjdGlvbi9TZWNEZXZUb29scy9fd29ya2l0ZW1zI19hPWVkaXQmaWQ9MTM0MDkNCiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGlucHV0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChvdXRwdXQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdXRwdXQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdHJ5DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgWG1sUmVhZGVyU2V0dGluZ3Mgc2V0dGluZ3MgPSBuZXcgWG1sUmVhZGVyU2V0dGluZ3MNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIElnbm9yZVdoaXRlc3BhY2UgPSB0cnVlLA0KICAgICAgICAgICAgICAgICAgICBEdGRQcm9jZXNzaW5nID0gRHRkUHJvY2Vzc2luZy5JZ25vcmUsDQogICAgICAgICAgICAgICAgICAgIFhtbFJlc29sdmVyID0gbnVsbA0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCg0KICAgICAgICAgICAgICAgIHVzaW5nIChYbWxSZWFkZXIgeG1sUmVhZGVyID0gWG1sUmVhZGVyLkNyZWF0ZShpbnB1dCwgc2V0dGluZ3MpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgeG1sUmVhZGVyLk1vdmVUb0NvbnRlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgeG1sUmVhZGVyLlJlYWRTdGFydEVsZW1lbnQoQ2xhbmdTY2hlbWFTdHJpbmdzLlBsaXN0TmFtZSk7DQogICAgICAgICAgICAgICAgICAgIGlmICh4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRWxlbWVudCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBwTGlzdFJlYWRlciA9IHhtbFJlYWRlci5SZWFkU3VidHJlZSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVhZFBsaXN0KHBMaXN0UmVhZGVyLCByZXN1bHRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHZhciB0b29sID0gbmV3IFRvb2wNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIE5hbWUgPSAiQ2xhbmciDQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHZhciBmaWxlSW5mb0ZhY3RvcnkgPSBuZXcgRmlsZUluZm9GYWN0b3J5KE1pbWVUeXBlLkRldGVybWluZUZyb21GaWxlRXh0ZW5zaW9uLCBkYXRhVG9JbnNlcnQpOw0KICAgICAgICAgICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBGaWxlRGF0YT4gZmlsZURpY3Rpb25hcnkgPSBmaWxlSW5mb0ZhY3RvcnkuQ3JlYXRlKHJlc3VsdHMpOw0KDQoNCiAgICAgICAgICAgICAgICB2YXIgcnVuID0gbmV3IFJ1bigpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBUb29sID0gdG9vbA0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBvdXRwdXQuSW5pdGlhbGl6ZShydW4pOw0KDQogICAgICAgICAgICAgICAgaWYgKGZpbGVEaWN0aW9uYXJ5ICE9IG51bGwgJiYgZmlsZURpY3Rpb25hcnkuQ291bnQgPiAwKSB7IG91dHB1dC5Xcml0ZUZpbGVzKGZpbGVEaWN0aW9uYXJ5KTsgfQ0KDQogICAgICAgICAgICAgICAgb3V0cHV0Lk9wZW5SZXN1bHRzKCk7DQogICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlUmVzdWx0cyhyZXN1bHRzKTsNCiAgICAgICAgICAgICAgICBvdXRwdXQuQ2xvc2VSZXN1bHRzKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmaW5hbGx5DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgX2ZpbGVzID0gbnVsbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBGaW5kRGljdGlvbmFyeShJRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gZGljdGlvbmFyeSwgc3RyaW5nIGtleSkNCiAgICAgICAgew0KICAgICAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gdmFsdWUgPSBudWxsOw0KDQogICAgICAgICAgICBpZiAoZGljdGlvbmFyeS5UcnlHZXRWYWx1ZShrZXksIG91dCBvYmplY3QgZ2V0T2JqZWN0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldE9iamVjdCBhcyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8/IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IEZpbmRJbnQoSURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IGRpY3Rpb25hcnksIHN0cmluZyBrZXkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyB2YWx1ZSA9IG51bGw7DQogICAgICAgICAgICBpbnQgcmV0dXJuVmFsdWUgPSAwOw0KDQogICAgICAgICAgICBpZiAoZGljdGlvbmFyeS5UcnlHZXRWYWx1ZShrZXksIG91dCBvYmplY3QgZ2V0T2JqZWN0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldE9iamVjdCBhcyBzdHJpbmc7DQogICAgICAgICAgICAgICAgaWYgKCFpbnQuVHJ5UGFyc2UodmFsdWUsIG91dCByZXR1cm5WYWx1ZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGFFeGNlcHRpb24oIkV4cGVjdGVkIGFuIGludCB2YWx1ZSBmb3IgIiArIGtleSArICIgZm91bmQgOiAiICsgdmFsdWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIEZpbmRTdHJpbmcoSURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IGRpY3Rpb25hcnksIHN0cmluZyBrZXkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyB2YWx1ZSA9IG51bGw7DQoNCiAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5LlRyeUdldFZhbHVlKGtleSwgb3V0IG9iamVjdCBnZXRPYmplY3QpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0T2JqZWN0IGFzIHN0cmluZzsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8/IHN0cmluZy5FbXB0eTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgUmVzdWx0IENyZWF0ZVJlc3VsdChJRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gaXNzdWVEYXRhKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoaXNzdWVEYXRhICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gVXNlZCBmb3IgUmVzdWx0LkZ1bGxNZXNzYWdlIA0KICAgICAgICAgICAgICAgIHN0cmluZyBkZXNjcmlwdGlvbiA9IEZpbmRTdHJpbmcoaXNzdWVEYXRhLCAiZGVzY3JpcHRpb24iKTsNCg0KICAgICAgICAgICAgICAgIC8vIFVzZWQgYXMgcnVsZSBpZC4gDQogICAgICAgICAgICAgICAgc3RyaW5nIGlzc3VlVHlwZSA9IEZpbmRTdHJpbmcoaXNzdWVEYXRhLCAidHlwZSIpOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIC8vIFRoaXMgZGF0YSBwZXJzaXN0ZWQgdG8gcmVzdWx0IHByb3BlcnR5IGJhZw0KICAgICAgICAgICAgICAgIHN0cmluZyBjYXRlZ29yeSA9IEZpbmRTdHJpbmcoaXNzdWVEYXRhLCAiY2F0ZWdvcnkiKTsNCiAgICAgICAgICAgICAgICBzdHJpbmcgaXNzdWVDb250ZXh0S2luZCA9IEZpbmRTdHJpbmcoaXNzdWVEYXRhLCAiaXNzdWVfY29udGV4dF9raW5kIik7DQogICAgICAgICAgICAgICAgc3RyaW5nIGlzc3VlQ29udGV4dCA9IEZpbmRTdHJpbmcoaXNzdWVEYXRhLCAiaXNzdWVfY29udGV4dCIpOw0KICAgICAgICAgICAgICAgIHN0cmluZyBpc3N1ZUhhc2ggPSBGaW5kU3RyaW5nKGlzc3VlRGF0YSwgImlzc3VlX2hhc2giKTsNCg0KICAgICAgICAgICAgICAgIGludCBpc3N1ZUxpbmUgPSAwOw0KICAgICAgICAgICAgICAgIGludCBpc3N1ZUNvbHVtbiA9IDA7DQogICAgICAgICAgICAgICAgc3RyaW5nIGZpbGVOYW1lID0gbnVsbDsNCg0KICAgICAgICAgICAgICAgIElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBsb2NhdGlvbiA9IEZpbmREaWN0aW9uYXJ5KGlzc3VlRGF0YSwgImxvY2F0aW9uIik7DQogICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpc3N1ZUxpbmUgPSBGaW5kSW50KGxvY2F0aW9uLCAibGluZSIpOw0KICAgICAgICAgICAgICAgICAgICBpc3N1ZUNvbHVtbiA9IEZpbmRJbnQobG9jYXRpb24sICJjb2wiKTsNCiAgICAgICAgICAgICAgICAgICAgaW50IGZpbGVOdW1iZXIgPSBGaW5kSW50KGxvY2F0aW9uLCAiZmlsZSIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoX2ZpbGVzICE9IG51bGwgJiYgZmlsZU51bWJlciA8IF9maWxlcy5Db3VudCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUgPSBfZmlsZXNbZmlsZU51bWJlcl0gYXMgc3RyaW5nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSZXN1bHQNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFJ1bGVJZCA9IGlzc3VlVHlwZSwNCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IGRlc2NyaXB0aW9uIH0sDQogICAgICAgICAgICAgICAgICAgIExvY2F0aW9ucyA9IG5ldyBMaXN0PExvY2F0aW9uPg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXJpID0gbmV3IFVyaShmaWxlTmFtZSwgVXJpS2luZC5SZWxhdGl2ZU9yQWJzb2x1dGUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lvbiA9IG5ldyBSZWdpb24oKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydExpbmUgPSBpc3N1ZUxpbmUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydENvbHVtbiA9IGlzc3VlQ29sdW1uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHJlc3VsdC5TZXRQcm9wZXJ0eSgiY2F0ZWdvcnkiLCBjYXRlZ29yeSk7DQogICAgICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJpc3N1ZV9jb250ZXh0X2tpbmQiLCBpc3N1ZUNvbnRleHRLaW5kKTsNCiAgICAgICAgICAgICAgICByZXN1bHQuU2V0UHJvcGVydHkoImlzc3VlQ29udGV4dCIsIGlzc3VlQ29udGV4dCk7DQogICAgICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJpc3N1ZUhhc2giLCBpc3N1ZUhhc2gpOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIElMaXN0PG9iamVjdD4gUmVhZEFycmF5KFhtbFJlYWRlciB4bWxSZWFkZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIExpc3Q8b2JqZWN0PiBsaXN0ID0gbmV3IExpc3Q8b2JqZWN0PigpOw0KICAgICAgICAgICAgYm9vbCByZWFkZXJNb3ZlZCA9IGZhbHNlOyAvLyBSZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZyBtb3ZlcyB0aGUgcmVhZGVyIHNvIHByZXZlbnQgZG91YmxlIG1vdmVzLg0KDQogICAgICAgICAgICB4bWxSZWFkZXIuUmVhZCgpOyAvLyBSZWFkIHBhc3QgdGhlICJhcnJheSIgZWxlbWVudCBzdGFydC4NCg0KICAgICAgICAgICAgd2hpbGUgKHJlYWRlck1vdmVkIHx8IHhtbFJlYWRlci5SZWFkKCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVhZGVyTW92ZWQgPSBmYWxzZTsNCg0KICAgICAgICAgICAgICAgIGlmICh4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRWxlbWVudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoeG1sUmVhZGVyLk5hbWUpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLlN0cmluZ05hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENsYW5nU2NoZW1hU3RyaW5ncy5JbnRlZ2VyTmFtZToNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLlJlYWxOYW1lOg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGFuZ1NjaGVtYVN0cmluZ3MuRGF0YU5hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENsYW5nU2NoZW1hU3RyaW5ncy5EYXRlTmFtZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZSA9IHhtbFJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXJNb3ZlZCA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuQWRkKHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENsYW5nU2NoZW1hU3RyaW5ncy5BcnJheU5hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyAodmFyIHN1YlRyZWVSZWFkZXIgPSB4bWxSZWFkZXIuUmVhZFN1YnRyZWUoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUxpc3Q8b2JqZWN0PiBhcnJheSA9IFJlYWRBcnJheShzdWJUcmVlUmVhZGVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QuQWRkKGFycmF5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLkRpY3Rpb25hcnlOYW1lOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBzdWJUcmVlUmVhZGVyID0geG1sUmVhZGVyLlJlYWRTdWJ0cmVlKCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBkaWN0aW9uYXJ5ID0gUmVhZERpY3Rpb25hcnkoc3ViVHJlZVJlYWRlcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LkFkZChkaWN0aW9uYXJ5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoeG1sUmVhZGVyLk5vZGVUeXBlID09IFhtbE5vZGVUeXBlLkVuZEVsZW1lbnQgJiYgKHhtbFJlYWRlci5OYW1lID09IENsYW5nU2NoZW1hU3RyaW5ncy5BcnJheU5hbWUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbGlzdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIElEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiBSZWFkRGljdGlvbmFyeShYbWxSZWFkZXIgeG1sUmVhZGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBJRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gZGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOw0KICAgICAgICAgICAgc3RyaW5nIGtleU5hbWUgPSBzdHJpbmcuRW1wdHk7DQogICAgICAgICAgICBib29sIHJlYWRlck1vdmVkID0gZmFsc2U7ICAgICAgIC8vIFJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nIHJlYWRzIHRvIG5leHQgZWxlbWVudA0KDQogICAgICAgICAgICB4bWxSZWFkZXIuUmVhZCgpOyAgICAgICAgICAgICAgIC8vIHJlYWQgcGFzdCB0aGUgZGljdGlvbmFyeSBlbGVtZW50Ow0KICAgICAgICAgICAgd2hpbGUgKHJlYWRlck1vdmVkIHx8IHhtbFJlYWRlci5SZWFkKCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVhZGVyTW92ZWQgPSBmYWxzZTsNCg0KICAgICAgICAgICAgICAgIGlmICh4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRWxlbWVudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoeG1sUmVhZGVyLk5hbWUpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLktleU5hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0geG1sUmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlck1vdmVkID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENsYW5nU2NoZW1hU3RyaW5ncy5TdHJpbmdOYW1lOg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGFuZ1NjaGVtYVN0cmluZ3MuSW50ZWdlck5hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENsYW5nU2NoZW1hU3RyaW5ncy5SZWFsTmFtZToNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLkRhdGFOYW1lOg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGFuZ1NjaGVtYVN0cmluZ3MuRGF0ZU5hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoa2V5TmFtZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0YUV4Y2VwdGlvbigiRXhwZWN0ZWQga2V5IHZhbHVlIGJlZm9yZSBkaWN0aW9uYXJ5IGRhdGEuIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgdmFsdWUgPSB4bWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyTW92ZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LkFkZChrZXlOYW1lLCB2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleU5hbWUgPSBzdHJpbmcuRW1wdHk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGFuZ1NjaGVtYVN0cmluZ3MuQXJyYXlOYW1lOg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGtleU5hbWUpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZERhdGFFeGNlcHRpb24oIkV4cGVjdGVkIGtleSB2YWx1ZSBiZWZvcmUgZGljdGlvbmFyeSBkYXRhLiIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBzdWJUcmVlUmVhZGVyID0geG1sUmVhZGVyLlJlYWRTdWJ0cmVlKCkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElMaXN0PG9iamVjdD4gYXJyYXkgPSBSZWFkQXJyYXkoc3ViVHJlZVJlYWRlcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LkFkZChrZXlOYW1lLCBhcnJheSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gc3RyaW5nLkVtcHR5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGFuZ1NjaGVtYVN0cmluZ3MuRGljdGlvbmFyeU5hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoa2V5TmFtZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0YUV4Y2VwdGlvbigiRXhwZWN0ZWQga2V5IHZhbHVlIGJlZm9yZSBkaWN0aW9uYXJ5IGRhdGEuIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyAodmFyIHN1YlRyZWVSZWFkZXIgPSB4bWxSZWFkZXIuUmVhZFN1YnRyZWUoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IGNoaWxkID0gUmVhZERpY3Rpb25hcnkoc3ViVHJlZVJlYWRlcik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5LkFkZChrZXlOYW1lLCBjaGlsZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gc3RyaW5nLkVtcHR5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmICh4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRW5kRWxlbWVudCAmJiB4bWxSZWFkZXIuTmFtZSA9PSBDbGFuZ1NjaGVtYVN0cmluZ3MuRGljdGlvbmFyeU5hbWUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFJlYWRQbGlzdERpY3Rpb25hcnkoWG1sUmVhZGVyIHhtbFJlYWRlciwgSUxpc3Q8UmVzdWx0PiByZXN1bHRzKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcga2V5TmFtZSA9IHN0cmluZy5FbXB0eTsNCiAgICAgICAgICAgIGJvb2wgcmVhZGVyTW92ZWQgPSBmYWxzZTsgICAgICAgLy8gUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcgcmVhZHMgdG8gbmV4dCBlbGVtZW50DQoNCiAgICAgICAgICAgIHhtbFJlYWRlci5SZWFkKCk7ICAgICAgICAgICAgICAgLy8gcmVhZCBwYXN0IHRoZSBkaWN0aW9uYXJ5IGVsZW1lbnQ7DQogICAgICAgICAgICB3aGlsZSAocmVhZGVyTW92ZWQgfHwgeG1sUmVhZGVyLlJlYWQoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZWFkZXJNb3ZlZCA9IGZhbHNlOw0KDQogICAgICAgICAgICAgICAgaWYgKHhtbFJlYWRlci5Ob2RlVHlwZSA9PSBYbWxOb2RlVHlwZS5FbGVtZW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh4bWxSZWFkZXIuTmFtZSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDbGFuZ1NjaGVtYVN0cmluZ3MuS2V5TmFtZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleU5hbWUgPSB4bWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyTW92ZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLlN0cmluZ05hbWU6DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoa2V5TmFtZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkRGF0YUV4Y2VwdGlvbigiRXhwZWN0ZWQga2V5IHZhbHVlIGJlZm9yZSBkaWN0aW9uYXJ5IGRhdGEuIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyTW92ZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gc3RyaW5nLkVtcHR5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2xhbmdTY2hlbWFTdHJpbmdzLkFycmF5TmFtZToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShrZXlOYW1lKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWREYXRhRXhjZXB0aW9uKCJFeHBlY3RlZCBrZXkgdmFsdWUgYmVmb3JlIGRpY3Rpb25hcnkgZGF0YS4iKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nICh2YXIgc3ViVHJlZVJlYWRlciA9IHhtbFJlYWRlci5SZWFkU3VidHJlZSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5TmFtZS5FcXVhbHMoImZpbGVzIikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZpbGVzID0gUmVhZEFycmF5KHN1YlRyZWVSZWFkZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5TmFtZS5FcXVhbHMoImRpYWdub3N0aWNzIikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZERpYWdub3N0aWNzKHN1YlRyZWVSZWFkZXIsIHJlc3VsdHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlOYW1lID0gc3RyaW5nLkVtcHR5Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmICh4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRW5kRWxlbWVudCAmJiB4bWxSZWFkZXIuTmFtZSA9PSBDbGFuZ1NjaGVtYVN0cmluZ3MuRGljdGlvbmFyeU5hbWUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUmVhZERpYWdub3N0aWNzKFhtbFJlYWRlciB4bWxSZWFkZXIsIElMaXN0PFJlc3VsdD4gcmVzdWx0cykNCiAgICAgICAgew0KICAgICAgICAgICAgeG1sUmVhZGVyLlJlYWQoKTsgLy8gUmVhZCBwYXN0IHRoZSAiYXJyYXkiIGVsZW1lbnQgc3RhcnQuDQoNCiAgICAgICAgICAgIHdoaWxlICh4bWxSZWFkZXIuUmVhZCgpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICh4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRWxlbWVudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh4bWxSZWFkZXIuTmFtZS5FcXVhbHMoQ2xhbmdTY2hlbWFTdHJpbmdzLkRpY3Rpb25hcnlOYW1lKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBzdWJUcmVlUmVhZGVyID0geG1sUmVhZGVyLlJlYWRTdWJ0cmVlKCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSURpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IGRpY3Rpb25hcnkgPSBSZWFkRGljdGlvbmFyeShzdWJUcmVlUmVhZGVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgcmVzdWx0ID0gdGhpcy5DcmVhdGVSZXN1bHQoZGljdGlvbmFyeSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5BZGQocmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoeG1sUmVhZGVyLk5vZGVUeXBlID09IFhtbE5vZGVUeXBlLkVuZEVsZW1lbnQgJiYgeG1sUmVhZGVyLk5hbWUgPT0gQ2xhbmdTY2hlbWFTdHJpbmdzLkFycmF5TmFtZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBSZWFkUGxpc3QoWG1sUmVhZGVyIHhtbFJlYWRlciwgSUxpc3Q8UmVzdWx0PiByZXN1bHRzKQ0KICAgICAgICB7DQogICAgICAgICAgICB3aGlsZSAoeG1sUmVhZGVyLlJlYWQoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoeG1sUmVhZGVyLk5vZGVUeXBlID09IFhtbE5vZGVUeXBlLkVsZW1lbnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoeG1sUmVhZGVyLk5hbWUuRXF1YWxzKENsYW5nU2NoZW1hU3RyaW5ncy5EaWN0aW9uYXJ5TmFtZSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nICh2YXIgc3ViVHJlZVJlYWRlciA9IHhtbFJlYWRlci5SZWFkU3VidHJlZSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUmVhZFBsaXN0RGljdGlvbmFyeShzdWJUcmVlUmVhZGVyLCByZXN1bHRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIENsYW5nU2NoZW1hU3RyaW5ncw0KICAgICAgICB7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEFycmF5TmFtZSA9ICJhcnJheSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIERhdGFOYW1lID0gImRhdGEiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBEYXRlTmFtZSA9ICJkYXRlIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRGljdGlvbmFyeU5hbWUgPSAiZGljdCI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEludGVnZXJOYW1lID0gImludGVnZXIiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBLZXlOYW1lID0gImtleSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIFBsaXN0TmFtZSA9ICJwbGlzdCI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIFJlYWxOYW1lID0gInJlYWwiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBTdHJpbmdOYW1lID0gInN0cmluZyI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIFZlcnNpb25OYW1lID0gInZlcnNpb24iOw0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysis.Sarif.Baseline' with another namespace."
},
- "hashes": [
- {
- "value": "7A73E6161A07804745FC02381CD74041",
- "algorithm": "md5"
- },
- {
- "value": "F3A391CCCEB8498C5C3F35C2A9EA8361B088187C",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "02ECEA972BD59B48ECCB838AF3CF6E160ABD9E27E233E131284B888499611FF1",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 1,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Baseline"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/CppCheckConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5YbWw7DQoNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuV3JpdGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycw0Kew0KICAgIHB1YmxpYyBjbGFzcyBDcHBDaGVja0NvbnZlcnRlciA6IFRvb2xGaWxlQ29udmVydGVyQmFzZQ0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBOYW1lVGFibGUgX25hbWVUYWJsZTsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBDcHBDaGVja1N0cmluZ3MgX3N0cmluZ3M7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PkluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkNwcENoZWNrQ29udmVydGVyIi8+IGNsYXNzLjwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIENwcENoZWNrQ29udmVydGVyKCkNCiAgICAgICAgew0KICAgICAgICAgICAgX25hbWVUYWJsZSA9IG5ldyBOYW1lVGFibGUoKTsNCiAgICAgICAgICAgIF9zdHJpbmdzID0gbmV3IENwcENoZWNrU3RyaW5ncyhfbmFtZVRhYmxlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHRha2VzIGEgQ3BwQ2hlY2tlciBsb2cgc3RyZWFtIGFuZCBjb252ZXJ0cyBpdHMgZGF0YSB0byBhIFNBUklGIGpzb24gc3RyZWFtLg0KICAgICAgICAvLy8gUmVhZCBpbiBDcHBDaGVja2VyIGRhdGEgZnJvbSBhbiBpbnB1dCBzdHJlYW0gYW5kIHdyaXRlIFJlc3VsdCBvYmplY3RzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlucHV0Ij5TdHJlYW0gb2YgYSBDcHBDaGVja2VyIGxvZzwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3V0cHV0Ij5TQVJJRiBqc29uIHN0cmVhbSBvZiB0aGUgY29udmVydGVkIENwcENoZWNrZXIgbG9nPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkYXRhVG9JbnNlcnQiPk9wdGlvbmFsbHkgZW1pdHRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9nLjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIENvbnZlcnQoU3RyZWFtIGlucHV0LCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGlucHV0ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoaW5wdXQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG91dHB1dCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBYbWxSZWFkZXJTZXR0aW5ncyBzZXR0aW5ncyA9IG5ldyBYbWxSZWFkZXJTZXR0aW5ncw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIElnbm9yZVdoaXRlc3BhY2UgPSB0cnVlLA0KICAgICAgICAgICAgICAgIER0ZFByb2Nlc3NpbmcgPSBEdGRQcm9jZXNzaW5nLklnbm9yZSwNCiAgICAgICAgICAgICAgICBOYW1lVGFibGUgPSBfbmFtZVRhYmxlLA0KICAgICAgICAgICAgICAgIFhtbFJlc29sdmVyID0gbnVsbA0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdXNpbmcgKFhtbFJlYWRlciB4bWxSZWFkZXIgPSBYbWxSZWFkZXIuQ3JlYXRlKGlucHV0LCBzZXR0aW5ncykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvY2Vzc0NwcENoZWNrTG9nKHhtbFJlYWRlciwgb3V0cHV0LCBkYXRhVG9JbnNlcnQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFByb2Nlc3NDcHBDaGVja0xvZyhYbWxSZWFkZXIgcmVhZGVyLCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVhZGVyLlJlYWRTdGFydEVsZW1lbnQoX3N0cmluZ3MuUmVzdWx0cyk7DQoNCiAgICAgICAgICAgIGlmICghU3RyaW5nUmVmZXJlbmNlLkFyZUVxdWFsKHJlYWRlci5Mb2NhbE5hbWUsIF9zdHJpbmdzLkNwcENoZWNrKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyByZWFkZXIuQ3JlYXRlRXhjZXB0aW9uKENvbnZlcnRlclJlc291cmNlcy5DcHBDaGVja0NwcENoZWNrRWxlbWVudE1pc3NpbmcpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBzdHJpbmcgdmVyc2lvbiA9IHJlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuVmVyc2lvbik7DQoNCiAgICAgICAgICAgIGlmICh2ZXJzaW9uICE9IG51bGwgJiYgIXZlcnNpb24uSXNTZW1hbnRpY1ZlcnNpb25pbmdDb21wYXRpYmxlKCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gVGhpcyBsb2dpYyBvbmx5IGZpeGVzIHVwIHNpbXBsZSBjYXNlcywgc3VjaCBhcyBiZWluZyBwYXNzZWQNCiAgICAgICAgICAgICAgICAvLyAxLjY2LCB3aGVyZSBTZW1hbnRpYyBWZXJzaW9uaW5nIDIuMCByZXF1aXJlcyAxLjY2LjAuIEFsc28NCiAgICAgICAgICAgICAgICAvLyBzdHJpcHMgUmV2aXNpb24gbWVtYmVyIGlmIHBhc3NlZCBhIGNvbXBsZXRlIC5ORVQgdmVyc2lvbi4NCiAgICAgICAgICAgICAgICBWZXJzaW9uIGRvdE5ldFZlcnNpb247DQogICAgICAgICAgICAgICAgaWYgKFZlcnNpb24uVHJ5UGFyc2UodmVyc2lvbiwgb3V0IGRvdE5ldFZlcnNpb24pKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IA0KICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5NYXgoMCwgZG90TmV0VmVyc2lvbi5NYWpvcikgKyAiLiIgKyANCiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguTWF4KDAsIGRvdE5ldFZlcnNpb24uTWlub3IpICsgIi4iICsgDQogICAgICAgICAgICAgICAgICAgICAgICBNYXRoLk1heCgwLCBkb3ROZXRWZXJzaW9uLkJ1aWxkKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChTdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHZlcnNpb24pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IHJlYWRlci5DcmVhdGVFeGNlcHRpb24oQ29udmVydGVyUmVzb3VyY2VzLkNwcENoZWNrQ3BwQ2hlY2tFbGVtZW50TWlzc2luZyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJlYWRlci5Ta2lwKCk7IC8vIDxjcHBjaGVjayAvPg0KDQogICAgICAgICAgICBpZiAoIVN0cmluZ1JlZmVyZW5jZS5BcmVFcXVhbChyZWFkZXIuTG9jYWxOYW1lLCBfc3RyaW5ncy5FcnJvcnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IHJlYWRlci5DcmVhdGVFeGNlcHRpb24oQ29udmVydGVyUmVzb3VyY2VzLkNwcENoZWNrRXJyb3JzRWxlbWVudE1pc3NpbmcpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCiAgICAgICAgICAgIGlmIChyZWFkZXIuSXNFbXB0eUVsZW1lbnQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVhZGVyLlNraXAoKTsgLy8gPGVycm9ycyAvPg0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGludCBlcnJvcnNEZXB0aCA9IHJlYWRlci5EZXB0aDsNCiAgICAgICAgICAgICAgICByZWFkZXIuUmVhZCgpOyAvLyA8ZXJyb3JzPg0KDQogICAgICAgICAgICAgICAgd2hpbGUgKHJlYWRlci5EZXB0aCA+IGVycm9yc0RlcHRoKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnNlZEVycm9yID0gQ3BwQ2hlY2tFcnJvci5QYXJzZShyZWFkZXIsIF9zdHJpbmdzKTsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5BZGQocGFyc2VkRXJyb3IuVG9TYXJpZklzc3VlKCkpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHJlYWRlci5SZWFkRW5kRWxlbWVudCgpOyAvLyA8L2Vycm9ycz4NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmVhZGVyLlJlYWRFbmRFbGVtZW50KCk7IC8vIDwvcmVzdWx0cz4NCg0KICAgICAgICAgICAgdmFyIHRvb2wgPSBuZXcgVG9vbA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE5hbWUgPSAiQ3BwQ2hlY2siLA0KICAgICAgICAgICAgICAgIFZlcnNpb24gPSB2ZXJzaW9uLA0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIGZpbGVJbmZvRmFjdG9yeSA9IG5ldyBGaWxlSW5mb0ZhY3RvcnkodXJpID0+IE1pbWVUeXBlLkNwcCwgZGF0YVRvSW5zZXJ0KTsNCiAgICAgICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBGaWxlRGF0YT4gZmlsZURpY3Rpb25hcnkgPSBmaWxlSW5mb0ZhY3RvcnkuQ3JlYXRlKHJlc3VsdHMpOw0KDQogICAgICAgICAgICB2YXIgcnVuID0gbmV3IFJ1bigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVG9vbCA9IHRvb2wNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIG91dHB1dC5Jbml0aWFsaXplKHJ1bik7DQoNCiAgICAgICAgICAgIGlmIChmaWxlRGljdGlvbmFyeSAhPSBudWxsICYmIGZpbGVEaWN0aW9uYXJ5LkNvdW50ID4gMCkgeyBvdXRwdXQuV3JpdGVGaWxlcyhmaWxlRGljdGlvbmFyeSk7IH0NCg0KICAgICAgICAgICAgb3V0cHV0Lk9wZW5SZXN1bHRzKCk7DQogICAgICAgICAgICBvdXRwdXQuV3JpdGVSZXN1bHRzKHJlc3VsdHMpOw0KICAgICAgICAgICAgb3V0cHV0LkNsb3NlUmVzdWx0cygpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Baseline'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "034EB22574ABF9E8243CAB64E545A2D6",
- "algorithm": "md5"
- },
- {
- "value": "C0A196A4DB5F9E8527F8C8FD7265E8397A219BAD",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "E3613DF357FF33177A5FDED22EF2C729FF8E4E2A6F6B8608B11A91DD12FE4EDF",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 1,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Baseline"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/Extensions.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOw0KdXNpbmcgU3lzdGVtLlhtbDsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycw0Kew0KICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRXh0ZW5zaW9ucw0KICAgIHsNCiAgICAgICAgLy8gQ29tcGFyZSB0b29sIGZvcm1hdCBzdHJpbmdzIHdpdGggYXBwcm9wcmlhdGUgY29tcGFyaXNvbiB0eXBlLg0KICAgICAgICBwdWJsaWMgc3RhdGljIGJvb2wgTWF0Y2hlc1Rvb2xGb3JtYXQodGhpcyBzdHJpbmcgdG9vbEZvcm1hdCwgc3RyaW5nIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdG9vbEZvcm1hdC5FcXVhbHMob3RoZXIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYSB0eXBlIGhhcyBhIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgbm8gYXJndW1lbnRzLg0KICAgICAgICBwdWJsaWMgc3RhdGljIGJvb2wgSGFzRGVmYXVsdENvbnN0cnVjdG9yKHRoaXMgVHlwZSB0eXBlKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdHlwZS5HZXRDb25zdHJ1Y3RvcigNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kaW5nRmxhZ3MuSW5zdGFuY2UgfCBCaW5kaW5nRmxhZ3MuUHVibGljLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRlcjogbnVsbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlczogbmV3IFR5cGVbMF0sIC8vIFRoZSB0eXBlcyBvZiB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczogbmV3IFBhcmFtZXRlck1vZGlmaWVyWzBdKSAhPSBudWxsOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gRW5mb3JjZSB0aGUgY29udmVudGlvbiB0aGF0IHRoZSBjb252ZXJ0ZXIgdHlwZSBuYW1lIGlzIGRlcml2ZWQgZnJvbSB0aGUgdG9vbCBuYW1lLg0KICAgICAgICAvLyBJdCBjYW4gcmVzaWRlIGluIGFueSBuYW1lc3BhY2UuDQogICAgICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIENvbnZlcnRlclR5cGVOYW1lKHRoaXMgc3RyaW5nIHRvb2xGb3JtYXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiB0b29sRm9ybWF0ICsgIkNvbnZlcnRlciI7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+QW4gWG1sUmVhZGVyIGV4dGVuc2lvbiBtZXRob2QgdGhhdCByZWFkcyBvcHRpb25hbCBlbGVtZW50J3MgY29udGVudCBhcyBzdHJpbmcuPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InhtbFJlYWRlciI+VGhlIHhtbFJlYWRlciBmcm9tIHdoaWNoIGxpbmUgZGF0YSBzaGFsbCBiZSByZXRyaWV2ZWQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlbGVtZW50TmFtZSI+TmFtZSBvZiB0aGUgZWxlbWVudCBleHBlY3RlZC48L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+VGhlIG9wdGlvbmFsIGVsZW1lbnQgY29udGVudCBhcyBzdHJpbmcgaWYgdGhlIGVsZW1lbnQgaXMgcHJlc2VudDsgb3RoZXJ3aXNlLCBudWxsLjwvcmV0dXJucz4NCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHN0cmluZyBSZWFkT3B0aW9uYWxFbGVtZW50Q29udGVudEFzU3RyaW5nKHRoaXMgWG1sUmVhZGVyIHhtbFJlYWRlciwgc3RyaW5nIGVsZW1lbnROYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoeG1sUmVhZGVyLk5vZGVUeXBlID09IFhtbE5vZGVUeXBlLkVsZW1lbnQgJiYgU3RyaW5nUmVmZXJlbmNlLkFyZUVxdWFsKHhtbFJlYWRlci5Mb2NhbE5hbWUsIGVsZW1lbnROYW1lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4geG1sUmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhbiBleGNlcHRpb24gd2l0aCBsaW5lIG51bWJlciBhbmQgcG9zaXRpb24gZGF0YSBmcm9tIGFuIDxzZWUgY3JlZj0iWG1sUmVhZGVyIi8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InhtbFJlYWRlciI+VGhlIHhtbFJlYWRlciBmcm9tIHdoaWNoIGxpbmUgZGF0YSBzaGFsbCBiZSByZXRyaWV2ZWQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj5UaGUgbWVzc2FnZSB0byBhdHRhY2ggdG8gdGhlIGV4Y2VwdGlvbi48L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+DQogICAgICAgIC8vLyBUaGUgbmV3IGV4Y2VwdGlvbiB3aXRoIDxwYXJhbXJlZiBuYW1lPSJtZXNzYWdlIi8+LCBhbmQgZmlsZSBhbmQgbGluZSBpbmZvcm1hdGlvbiBmcm9tDQogICAgICAgIC8vLyA8cGFyYW1yZWYgbmFtZT0ieG1sUmVhZGVyIi8+Lg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgWG1sRXhjZXB0aW9uIENyZWF0ZUV4Y2VwdGlvbih0aGlzIFhtbFJlYWRlciB4bWxSZWFkZXIsIHN0cmluZyBtZXNzYWdlKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcG9zaXRpb25JbmZvID0geG1sUmVhZGVyIGFzIElYbWxMaW5lSW5mbzsNCiAgICAgICAgICAgIGlmIChwb3NpdGlvbkluZm8gPT0gbnVsbCB8fCAhcG9zaXRpb25JbmZvLkhhc0xpbmVJbmZvKCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBYbWxFeGNlcHRpb24obWVzc2FnZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBYbWxFeGNlcHRpb24obWVzc2FnZSwgbnVsbCwgcG9zaXRpb25JbmZvLkxpbmVOdW1iZXIsIHBvc2l0aW9uSW5mby5MaW5lUG9zaXRpb24pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PkNyZWF0ZXMgYW4gZXhjZXB0aW9uIHdpdGggbGluZSBudW1iZXIgYW5kIHBvc2l0aW9uIGRhdGEgZnJvbSBhbg0KICAgICAgICAvLy8gPHNlZSBjcmVmPSJYbWxSZWFkZXIiLz4uPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InhtbFJlYWRlciI+VGhlIHhtbFJlYWRlciBmcm9tIHdoaWNoIGxpbmUgZGF0YSBzaGFsbCBiZSByZXRyaWV2ZWQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj5UaGUgbWVzc2FnZSB0byBhdHRhY2ggdG8gdGhlIGV4Y2VwdGlvbi48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFyZ3MiPkEgdmFyaWFibGUtbGVuZ3RoIHBhcmFtZXRlcnMgbGlzdCBjb250YWluaW5nIGFyZ3VtZW50cyBmb3JtYXR0ZWQgaW50bw0KICAgICAgICAvLy8gPHBhcmFtcmVmIG5hbWU9Im1lc3NhZ2UiLz4uPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPlRoZSBuZXcgZXhjZXB0aW9uIHdpdGggPHBhcmFtcmVmIG5hbWU9Im1lc3NhZ2UiLz4sIGFuZCBmaWxlIGFuZCBsaW5lIGluZm9ybWF0aW9uIGZyb20NCiAgICAgICAgLy8vIDxwYXJhbXJlZiBuYW1lPSJ4bWxSZWFkZXIiLz4uPC9yZXR1cm5zPg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgWG1sRXhjZXB0aW9uIENyZWF0ZUV4Y2VwdGlvbih0aGlzIFhtbFJlYWRlciB4bWxSZWFkZXIsIHN0cmluZyBtZXNzYWdlLCBwYXJhbXMgb2JqZWN0W10gYXJncykNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIHhtbFJlYWRlci5DcmVhdGVFeGNlcHRpb24oU3RyaW5nLkZvcm1hdChDdWx0dXJlSW5mby5DdXJyZW50Q3VsdHVyZSwgbWVzc2FnZSwgYXJncykpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PkFzc2VydHMgdGhhdCB0aGUgbG9jYWwgbmFtZSBvZiBhIGdpdmVuIGVsZW1lbnQgaXMgdGhlIG5hbWUgaW5kaWNhdGVkLCBhbmQgaWdub3JlcyB0aGUNCiAgICAgICAgLy8vIGVsZW1lbnQncyBjb250ZW50cy48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IlhtbEV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gdGhlIFhNTCBjb250ZW50IHBvaW50ZWQgdG8gYnkNCiAgICAgICAgLy8vIDxwYXJhbXJlZiBuYW1lPSJ4bWxSZWFkZXIiLz4gZG9lcyBub3QgbWF0Y2ggdGhlIGluZGljYXRlZCA8cGFyYW1yZWYgbmFtZT0iZWxlbWVudE5hbWUiLz4gYW5kDQogICAgICAgIC8vLyA8cGFyYW1yZWYgbmFtZT0ib3B0aW9ucyIvPi48L2V4Y2VwdGlvbj4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ4bWxSZWFkZXIiPlRoZSBYTUwgcmVhZGVyIGZyb20gd2hpY2ggdGhlIGVsZW1lbnQgc2hhbGwgYmUgcmVhZC48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImVsZW1lbnROYW1lIj5OYW1lIG9mIHRoZSBlbGVtZW50LjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3B0aW9ucyI+T3B0aW9ucyBkZWNpZGluZyB3aGF0IGNvbnRlbnQgdG8gc2tpcC48L3BhcmFtPg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgdm9pZCBJZ25vcmVFbGVtZW50KHRoaXMgWG1sUmVhZGVyIHhtbFJlYWRlciwgc3RyaW5nIGVsZW1lbnROYW1lLCBJZ25vcmVPcHRpb25zIG9wdGlvbnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghSXNPbkVsZW1lbnQoeG1sUmVhZGVyLCBlbGVtZW50TmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuSGFzRmxhZyhJZ25vcmVPcHRpb25zLk9wdGlvbmFsKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgeG1sUmVhZGVyLkNyZWF0ZUV4Y2VwdGlvbihDb252ZXJ0ZXJSZXNvdXJjZXMuRXhwZWN0ZWRFbGVtZW50TmFtZWQsIGVsZW1lbnROYW1lKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHhtbFJlYWRlci5Ta2lwKCk7DQogICAgICAgICAgICBpZiAob3B0aW9ucy5IYXNGbGFnKElnbm9yZU9wdGlvbnMuTXVsdGlwbGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHdoaWxlIChJc09uRWxlbWVudCh4bWxSZWFkZXIsIGVsZW1lbnROYW1lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHhtbFJlYWRlci5Ta2lwKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU2FtZSBhcyBYbWxSZWFkZXIuSXNTdGFydEVsZW1lbnQgZXhjZXB0IGRvZXMgbm90IGNhbGwgTW92ZVRvQ29udGVudCBmaXJzdC4NCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBJc09uRWxlbWVudChYbWxSZWFkZXIgeG1sUmVhZGVyLCBzdHJpbmcgZWxlbWVudE5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiB4bWxSZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRWxlbWVudCAmJiBTdHJpbmdSZWZlcmVuY2UuQXJlRXF1YWwoeG1sUmVhZGVyLkxvY2FsTmFtZSwgZWxlbWVudE5hbWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIG5ldyByZWdpb24gd2l0aCB0aGUgc3RhcnQgbGluZSBmaWxsZWQgb3V0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXJ0TGluZSI+VGhlIGxpbmUgdG8gc2V0IGluIHRoZSByZWdpb24uPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPkEgPHNlZSBjcmVmPSJSZWdpb24iLz4gd2l0aCA8c2VlIGNyZWY9IlJlZ2lvbi5TdGFydExpbmUiLz4gZmlsbGVkIG91dC48L3JldHVybnM+DQogICAgICAgIGludGVybmFsIHN0YXRpYyBSZWdpb24gQ3JlYXRlUmVnaW9uKGludCBzdGFydExpbmUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnaW9uDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RhcnRMaW5lID0gc3RhcnRMaW5lDQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysis.Sarif.Baseline.DefaultBaseline' with another namespace."
},
- "hashes": [
- {
- "value": "B6852CB5FFBE15421CCCDA9390042ACF",
- "algorithm": "md5"
- },
- {
- "value": "84814144ECEA14B754FD656B9C126078F6BE4551",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "7354460BC465D9413635288ECC9EA611D2EB6C0B6B4EB5E4B6C9D907E699613D",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 2,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Baseline.DefaultBaseline"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/FortifyConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOw0KdXNpbmcgU3lzdGVtLklPOw0KdXNpbmcgU3lzdGVtLkxpbnE7DQp1c2luZyBTeXN0ZW0uWG1sOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Xcml0ZXJzOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgRm9ydGlmeUNvbnZlcnRlciA6IFRvb2xGaWxlQ29udmVydGVyQmFzZQ0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBOYW1lVGFibGUgX25hbWVUYWJsZTsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBGb3J0aWZ5U3RyaW5ncyBfc3RyaW5nczsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+SW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRm9ydGlmeUNvbnZlcnRlciIvPiBjbGFzcy48L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGb3J0aWZ5Q29udmVydGVyKCkNCiAgICAgICAgew0KICAgICAgICAgICAgX25hbWVUYWJsZSA9IG5ldyBOYW1lVGFibGUoKTsNCiAgICAgICAgICAgIF9zdHJpbmdzID0gbmV3IEZvcnRpZnlTdHJpbmdzKF9uYW1lVGFibGUpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGZvciBjb252ZXJ0aW5nIGEgc3RyZWFtIG9mIEZvcnRpZnkgcmVwb3J0IGluIFhNTCBmb3JtYXQgdG8gYQ0KICAgICAgICAvLy8gU0FSSUYganNvbiBmb3JtYXQgc3RyZWFtLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPlRocm93biB3aGVuIG9uZSBvciBtb3JlIHJlcXVpcmVkIGFyZ3VtZW50cyBhcmUgbnVsbC48L2V4Y2VwdGlvbj4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpbnB1dCI+U3RyZWFtIG9mIHRoZSBGb3J0aWZ5IHJlcG9ydC48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im91dHB1dCI+U3RyZWFtIG9mIFNBUklGIGpzb24uPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkYXRhVG9JbnNlcnQiPk9wdGlvbmFsbHkgZW1pdHRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9nLjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIENvbnZlcnQoU3RyZWFtIGlucHV0LCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGlucHV0ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoaW5wdXQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG91dHB1dCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSBuZXcgWG1sUmVhZGVyU2V0dGluZ3MNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEdGRQcm9jZXNzaW5nID0gRHRkUHJvY2Vzc2luZy5JZ25vcmUsDQogICAgICAgICAgICAgICAgSWdub3JlV2hpdGVzcGFjZSA9IHRydWUsDQogICAgICAgICAgICAgICAgTmFtZVRhYmxlID0gX25hbWVUYWJsZSwNCiAgICAgICAgICAgICAgICBYbWxSZXNvbHZlciA9IG51bGwNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHN0cmluZyBydW5EZXNjcmlwdGlvbiA9IG51bGw7DQogICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCg0KICAgICAgICAgICAgdXNpbmcgKFhtbFJlYWRlciByZWFkZXIgPSBYbWxSZWFkZXIuQ3JlYXRlKGlucHV0LCBzZXR0aW5ncykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgd2hpbGUgKHJlYWRlci5SZWFkKCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAocnVuRGVzY3JpcHRpb24gPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZXhlY3V0aXZlIHN1bW1hcnkgPFJlcG9ydFNlY3Rpb24+IGVsZW1lbnQNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmdSZWZlcmVuY2UuQXJlRXF1YWwocmVhZGVyLkxvY2FsTmFtZSwgX3N0cmluZ3MuUmVwb3J0U2VjdGlvbikgJiYgcmVhZGVyLklzU3RhcnRFbGVtZW50KCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLlJlYWQoKTsgLy8gTW92ZSB0byBUaXRsZSBlbGVtZW50DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKF9zdHJpbmdzLlRpdGxlLCBTdHJpbmcuRW1wdHkpID09ICJFeGVjdXRpdmUgU3VtbWFyeSIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIuUmVhZCgpOyAvLyBNb3ZlIHRvIFN1YlNlY3Rpb24gZWxlbWVudA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIuSWdub3JlRWxlbWVudChfc3RyaW5ncy5UaXRsZSwgSWdub3JlT3B0aW9ucy5SZXF1aXJlZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5JZ25vcmVFbGVtZW50KF9zdHJpbmdzLkRlc2NyaXB0aW9uLCBJZ25vcmVPcHRpb25zLlJlcXVpcmVkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuRGVzY3JpcHRpb24gPSByZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoX3N0cmluZ3MuVGV4dCwgU3RyaW5nLkVtcHR5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoU3RyaW5nUmVmZXJlbmNlLkFyZUVxdWFsKHJlYWRlci5Mb2NhbE5hbWUsIF9zdHJpbmdzLklzc3VlKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3J0aWZ5SXNzdWUgZm9ydGlmeSA9IEZvcnRpZnlJc3N1ZS5QYXJzZShyZWFkZXIsIF9zdHJpbmdzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLkFkZChDb252ZXJ0Rm9ydGlmeUlzc3VlVG9TYXJpZklzc3VlKGZvcnRpZnkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdmFyIHRvb2wgPSBuZXcgVG9vbA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE5hbWUgPSAiRm9ydGlmeSINCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHZhciBmaWxlSW5mb0ZhY3RvcnkgPSBuZXcgRmlsZUluZm9GYWN0b3J5KE1pbWVUeXBlLkRldGVybWluZUZyb21GaWxlRXh0ZW5zaW9uLCBkYXRhVG9JbnNlcnQpOw0KICAgICAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPiBmaWxlRGljdGlvbmFyeSA9IGZpbGVJbmZvRmFjdG9yeS5DcmVhdGUocmVzdWx0cyk7DQoNCiAgICAgICAgICAgIHZhciBydW4gPSBuZXcgUnVuKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9IG5ldyBNZXNzYWdlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBUZXh0ID0gcnVuRGVzY3JpcHRpb24NCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIFRvb2wgPSB0b29sDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBvdXRwdXQuSW5pdGlhbGl6ZShydW4pOw0KDQogICAgICAgICAgICBpZiAoZmlsZURpY3Rpb25hcnkgIT0gbnVsbCAmJiBmaWxlRGljdGlvbmFyeS5Db3VudCA+IDApIHsgb3V0cHV0LldyaXRlRmlsZXMoZmlsZURpY3Rpb25hcnkpOyB9DQoNCiAgICAgICAgICAgIG91dHB1dC5PcGVuUmVzdWx0cygpOw0KICAgICAgICAgICAgb3V0cHV0LldyaXRlUmVzdWx0cyhyZXN1bHRzKTsNCiAgICAgICAgICAgIG91dHB1dC5DbG9zZVJlc3VsdHMoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5Db252ZXJ0cyBhIEZvcnRpZnkgcmVzdWx0IHRvIGEgc3RhdGljIGFuYWx5c2lzIHJlc3VsdHMgaW50ZXJjaGFuZ2UgZm9ybWF0IHJlc3VsdC48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9ydGlmeSI+VGhlIEZvcnRpZnkgcmVzdWx0IGNvbnZlcnQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPg0KICAgICAgICAvLy8gQSBTQVJJRiByZXN1bHQgPHNlZSBjcmVmPSJSZXN1bHQiLz4gY29udGFpbmluZyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSBzdXBwbGllZA0KICAgICAgICAvLy8gPHNlZSBjcmVmPSJGb3J0aWZ5SXNzdWUiLz4uDQogICAgICAgIC8vLyA8L3JldHVybnM+DQogICAgICAgIHB1YmxpYyBzdGF0aWMgUmVzdWx0IENvbnZlcnRGb3J0aWZ5SXNzdWVUb1NhcmlmSXNzdWUoRm9ydGlmeUlzc3VlIGZvcnRpZnkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgUmVzdWx0KCk7DQogICAgICAgICAgICByZXN1bHQuUnVsZUlkID0gZm9ydGlmeS5DYXRlZ29yeTsNCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGZvcnRpZnkuSW5zdGFuY2VJZCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5QYXJ0aWFsRmluZ2VycHJpbnRzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQuUGFydGlhbEZpbmdlcnByaW50cyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPigpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFNhcmlmVXRpbGl0aWVzLkFkZE9yVXBkYXRlRGljdGlvbmFyeUVudHJ5KHJlc3VsdC5QYXJ0aWFsRmluZ2VycHJpbnRzLCAiSW5zdGFuY2VJZCIsIGZvcnRpZnkuSW5zdGFuY2VJZCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIExpc3Q8c3RyaW5nPiBtZXNzYWdlQ29tcG9uZW50cyA9IG5ldyBMaXN0PHN0cmluZz4oKTsNCiAgICAgICAgICAgIGlmIChmb3J0aWZ5LkFic3RyYWN0ICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbWVzc2FnZUNvbXBvbmVudHMuQWRkKGZvcnRpZnkuQWJzdHJhY3QpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZm9ydGlmeS5BYnN0cmFjdEN1c3RvbSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2VDb21wb25lbnRzLkFkZChmb3J0aWZ5LkFic3RyYWN0Q3VzdG9tKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG1lc3NhZ2VDb21wb25lbnRzLkNvdW50ID09IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0Lk1lc3NhZ2UgPSBuZXcgTWVzc2FnZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgVGV4dCA9IFN0cmluZy5Gb3JtYXQoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwgQ29udmVydGVyUmVzb3VyY2VzLkZvcnRpZnlGYWxsYmFja01lc3NhZ2UsIHJlc3VsdC5SdWxlSWQpDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXN1bHQuTWVzc2FnZSA9IG5ldyBNZXNzYWdlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBUZXh0ID0gU3RyaW5nLkpvaW4oRW52aXJvbm1lbnQuTmV3TGluZSwgbWVzc2FnZUNvbXBvbmVudHMpDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJraW5nZG9tIiwgZm9ydGlmeS5LaW5nZG9tKTsNCiAgICAgICAgICAgIGlmIChmb3J0aWZ5LlByaW9yaXR5ICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJwcmlvcml0eSIsIGZvcnRpZnkuUHJpb3JpdHkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIWZvcnRpZnkuQ3dlSWRzLklzRGVmYXVsdE9yRW1wdHkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJjd2UiLCBTdHJpbmcuSm9pbigiLCAiLA0KICAgICAgICAgICAgICAgICAgICBmb3J0aWZ5LkN3ZUlkcy5TZWxlY3QoaWQgPT4gaWQuVG9TdHJpbmcoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSkpKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChmb3J0aWZ5LlJ1bGVJZCAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdC5TZXRQcm9wZXJ0eSgiZm9ydGlmeVJ1bGVJZCIsIGZvcnRpZnkuUnVsZUlkKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiBwcmltYXJ5T3JTaW5rID0gQ29udmVydEZvcnRpZnlMb2NhdGlvblRvUGh5c2ljYWxMb2NhdGlvbihmb3J0aWZ5LlByaW1hcnlPclNpbmspOw0KICAgICAgICAgICAgcmVzdWx0LkxvY2F0aW9ucyA9IG5ldyBMaXN0PExvY2F0aW9uPg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5ldyBMb2NhdGlvbg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IHByaW1hcnlPclNpbmsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBpZiAoZm9ydGlmeS5Tb3VyY2UgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uIHNvdXJjZSA9IENvbnZlcnRGb3J0aWZ5TG9jYXRpb25Ub1BoeXNpY2FsTG9jYXRpb24oZm9ydGlmeS5Tb3VyY2UpOw0KDQogICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9ucyA9IG5ldyBMaXN0PFRocmVhZEZsb3dMb2NhdGlvbj4oKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgbmV3IFRocmVhZEZsb3dMb2NhdGlvbiB7IExvY2F0aW9uID0gbmV3IExvY2F0aW9uIHsgUGh5c2ljYWxMb2NhdGlvbiA9IHNvdXJjZSB9IH0sDQogICAgICAgICAgICAgICAgICAgIG5ldyBUaHJlYWRGbG93TG9jYXRpb24geyBMb2NhdGlvbiA9IG5ldyBMb2NhdGlvbiB7IFBoeXNpY2FsTG9jYXRpb24gPSBwcmltYXJ5T3JTaW5rIH0gfQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgcmVzdWx0LkNvZGVGbG93cyA9IG5ldyBMaXN0PENvZGVGbG93PigpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBTYXJpZlV0aWxpdGllcy5DcmVhdGVTaW5nbGVUaHJlYWRlZENvZGVGbG93KGxvY2F0aW9ucykNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUGh5c2ljYWxMb2NhdGlvbiBDb252ZXJ0Rm9ydGlmeUxvY2F0aW9uVG9QaHlzaWNhbExvY2F0aW9uKEZvcnRpZnlQYXRoRWxlbWVudCBlbGVtZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGaWxlTG9jYXRpb24gPSBuZXcgRmlsZUxvY2F0aW9uDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBVcmkgPSBuZXcgVXJpKGVsZW1lbnQuRmlsZVBhdGgsIFVyaUtpbmQuUmVsYXRpdmVPckFic29sdXRlKQ0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgUmVnaW9uID0gRXh0ZW5zaW9ucy5DcmVhdGVSZWdpb24oZWxlbWVudC5MaW5lU3RhcnQpDQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Baseline.DefaultBaseline'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "559B3E8B95DF86D716230FD8CF74F25E",
- "algorithm": "md5"
- },
- {
- "value": "1E8174678A9C7F8D6149913461D6F962CEDB71F8",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "DC6B16D68385508D9D04E47E0B2DF0EC731BCEED13D22AFC51A262213B42122A",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 2,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Baseline.DefaultBaseline"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/FortifyFprConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOw0KdXNpbmcgU3lzdGVtLklPOw0KdXNpbmcgU3lzdGVtLklPLkNvbXByZXNzaW9uOw0KdXNpbmcgU3lzdGVtLkxpbnE7DQp1c2luZyBTeXN0ZW0uVGV4dDsNCnVzaW5nIFN5c3RlbS5YbWw7DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLldyaXRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMNCnsNCiAgICBpbnRlcm5hbCBjbGFzcyBGb3J0aWZ5RnByQ29udmVydGVyIDogVG9vbEZpbGVDb252ZXJ0ZXJCYXNlDQogICAgew0KICAgICAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBGb3J0aWZ5VG9vbE5hbWUgPSAiSFAgRm9ydGlmeSBTdGF0aWMgQ29kZSBBbmFseXplciI7DQogICAgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIEZvcnRpZnlFeGVjdXRhYmxlID0gIltSRU1PVkVEXWluc291cmNlYW5hbHl6ZXIuZXhlIjsNCiAgICAgICAgcHJpdmF0ZSBjb25zdCBzdHJpbmcgUmVwbGFjZW1lbnRUb2tlbkZvcm1hdCA9ICI8UmVwbGFjZSBrZXk9XCJ7MH1cIi8+IjsNCiAgICAgICAgcHJpdmF0ZSBjb25zdCBzdHJpbmcgRW1iZWRkZWRMaW5rRm9ybWF0ID0gIlt7MH1dKDEpIjsNCg0KICAgICAgICBwcml2YXRlIHJlYWRvbmx5IE5hbWVUYWJsZSBfbmFtZVRhYmxlOw0KICAgICAgICBwcml2YXRlIHJlYWRvbmx5IEZvcnRpZnlGcHJTdHJpbmdzIF9zdHJpbmdzOw0KICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZ1tdIFN1cHBvcnRlZFJlcGxhY2VtZW50VG9rZW5zID0gbmV3W10geyAiUHJpbWFyeUxvY2F0aW9uLmZpbGUiLCAiUHJpbWFyeUxvY2F0aW9uLmxpbmUiIH07DQoNCiAgICAgICAgcHJpdmF0ZSBYbWxSZWFkZXIgX3JlYWRlcjsNCiAgICAgICAgcHJpdmF0ZSBJbnZvY2F0aW9uIF9pbnZvY2F0aW9uOw0KICAgICAgICBwcml2YXRlIHN0cmluZyBfcnVuSWQ7DQogICAgICAgIHByaXZhdGUgc3RyaW5nIF9hdXRvbWF0aW9uSWQ7DQogICAgICAgIHByaXZhdGUgTGlzdDxSZXN1bHQ+IF9yZXN1bHRzID0gbmV3IExpc3Q8UmVzdWx0PigpOw0KICAgICAgICBwcml2YXRlIExpc3Q8Tm90aWZpY2F0aW9uPiBfdG9vbE5vdGlmaWNhdGlvbnM7DQogICAgICAgIHByaXZhdGUgRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPiBfZmlsZURpY3Rpb25hcnk7DQogICAgICAgIHByaXZhdGUgRGljdGlvbmFyeTxzdHJpbmcsIElSdWxlPiBfcnVsZURpY3Rpb25hcnk7DQogICAgICAgIHByaXZhdGUgRGljdGlvbmFyeTxUaHJlYWRGbG93TG9jYXRpb24sIHN0cmluZz4gX3RmbFRvTm9kZUlkRGljdGlvbmFyeTsNCiAgICAgICAgcHJpdmF0ZSBEaWN0aW9uYXJ5PFRocmVhZEZsb3dMb2NhdGlvbiwgc3RyaW5nPiBfdGZsVG9TbmlwcGV0SWREaWN0aW9uYXJ5Ow0KICAgICAgICBwcml2YXRlIERpY3Rpb25hcnk8TG9jYXRpb24sIHN0cmluZz4gX2xvY2F0aW9uVG9TbmlwcGV0SWREaWN0aW9uYXJ5Ow0KICAgICAgICBwcml2YXRlIERpY3Rpb25hcnk8UmVzdWx0LCBzdHJpbmc+IF9yZXN1bHRUb1NuaXBwZXRJZERpY3Rpb25hcnk7DQogICAgICAgIHByaXZhdGUgRGljdGlvbmFyeTxSZXN1bHQsIERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+PiBfcmVzdWx0VG9SZXBsYWNlbWVudERlZmluaXRpb25EaWN0aW9uYXJ5Ow0KICAgICAgICBwcml2YXRlIERpY3Rpb25hcnk8c3RyaW5nLCBMb2NhdGlvbj4gX25vZGVJZFRvTG9jYXRpb25EaWN0aW9uYXJ5Ow0KICAgICAgICBwcml2YXRlIERpY3Rpb25hcnk8c3RyaW5nLCBSZWdpb25bXT4gX3NuaXBwZXRJZFRvUmVnaW9uc0RpY3Rpb25hcnk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PkluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZvcnRpZnlGcHJDb252ZXJ0ZXIiLz4gY2xhc3MuPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgRm9ydGlmeUZwckNvbnZlcnRlcigpDQogICAgICAgIHsNCiAgICAgICAgICAgIF9uYW1lVGFibGUgPSBuZXcgTmFtZVRhYmxlKCk7DQogICAgICAgICAgICBfc3RyaW5ncyA9IG5ldyBGb3J0aWZ5RnByU3RyaW5ncyhfbmFtZVRhYmxlKTsNCg0KICAgICAgICAgICAgX3Jlc3VsdHMgPSBuZXcgTGlzdDxSZXN1bHQ+KCk7DQogICAgICAgICAgICBfdG9vbE5vdGlmaWNhdGlvbnMgPSBuZXcgTGlzdDxOb3RpZmljYXRpb24+KCk7DQogICAgICAgICAgICBfZmlsZURpY3Rpb25hcnkgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPigpOw0KICAgICAgICAgICAgX3J1bGVEaWN0aW9uYXJ5ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBJUnVsZT4oKTsNCiAgICAgICAgICAgIF90ZmxUb05vZGVJZERpY3Rpb25hcnkgPSBuZXcgRGljdGlvbmFyeTxUaHJlYWRGbG93TG9jYXRpb24sIHN0cmluZz4oKTsNCiAgICAgICAgICAgIF90ZmxUb1NuaXBwZXRJZERpY3Rpb25hcnkgPSBuZXcgRGljdGlvbmFyeTxUaHJlYWRGbG93TG9jYXRpb24sIHN0cmluZz4oKTsNCiAgICAgICAgICAgIF9sb2NhdGlvblRvU25pcHBldElkRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PExvY2F0aW9uLCBzdHJpbmc+KCk7DQogICAgICAgICAgICBfcmVzdWx0VG9TbmlwcGV0SWREaWN0aW9uYXJ5ID0gbmV3IERpY3Rpb25hcnk8UmVzdWx0LCBzdHJpbmc+KCk7DQogICAgICAgICAgICBfcmVzdWx0VG9SZXBsYWNlbWVudERlZmluaXRpb25EaWN0aW9uYXJ5ID0gbmV3IERpY3Rpb25hcnk8UmVzdWx0LCBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPj4oKTsNCiAgICAgICAgICAgIF9ub2RlSWRUb0xvY2F0aW9uRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgTG9jYXRpb24+KCk7DQogICAgICAgICAgICBfc25pcHBldElkVG9SZWdpb25zRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgUmVnaW9uW10+KCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gZm9yIGNvbnZlcnRpbmcgYSBzdHJlYW0gaW4gRm9ydGlmeSBGUFIgZm9ybWF0IHRvIGEgc3RyZWFtIGluDQogICAgICAgIC8vLyBTQVJJRiBmb3JtYXQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIGFyZSBudWxsLjwvZXhjZXB0aW9uPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlucHV0Ij5TdHJlYW0gaW4gRm9ydGlmeSBGUFIgZm9ybWF0LjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3V0cHV0Ij5TdHJlYW0gaW4gU0FSSUYgZm9ybWF0LjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGF0YVRvSW5zZXJ0Ij5PcHRpb25hbGx5IGVtaXR0ZWQgcHJvcGVydGllcyB0aGF0IHNob3VsZCBiZSB3cml0dGVuIHRvIGxvZy48L3BhcmFtPg0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBDb252ZXJ0KFN0cmVhbSBpbnB1dCwgSVJlc3VsdExvZ1dyaXRlciBvdXRwdXQsIE9wdGlvbmFsbHlFbWl0dGVkRGF0YSBkYXRhVG9JbnNlcnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChpbnB1dCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGlucHV0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChvdXRwdXQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdXRwdXQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdmFyIHRvb2wgPSBuZXcgVG9vbA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE5hbWUgPSBGb3J0aWZ5VG9vbE5hbWUNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIF9pbnZvY2F0aW9uID0gbmV3IEludm9jYXRpb24oKTsNCiAgICAgICAgICAgIF9yZXN1bHRzLkNsZWFyKCk7DQogICAgICAgICAgICBfdG9vbE5vdGlmaWNhdGlvbnMuQ2xlYXIoKTsNCiAgICAgICAgICAgIF9maWxlRGljdGlvbmFyeS5DbGVhcigpOw0KICAgICAgICAgICAgX3J1bGVEaWN0aW9uYXJ5LkNsZWFyKCk7DQogICAgICAgICAgICBfdGZsVG9Ob2RlSWREaWN0aW9uYXJ5LkNsZWFyKCk7DQogICAgICAgICAgICBfdGZsVG9TbmlwcGV0SWREaWN0aW9uYXJ5LkNsZWFyKCk7DQogICAgICAgICAgICBfbG9jYXRpb25Ub1NuaXBwZXRJZERpY3Rpb25hcnkuQ2xlYXIoKTsNCiAgICAgICAgICAgIF9yZXN1bHRUb1NuaXBwZXRJZERpY3Rpb25hcnkuQ2xlYXIoKTsNCiAgICAgICAgICAgIF9yZXN1bHRUb1JlcGxhY2VtZW50RGVmaW5pdGlvbkRpY3Rpb25hcnkuQ2xlYXIoKTsNCiAgICAgICAgICAgIF9ub2RlSWRUb0xvY2F0aW9uRGljdGlvbmFyeS5DbGVhcigpOw0KICAgICAgICAgICAgX3NuaXBwZXRJZFRvUmVnaW9uc0RpY3Rpb25hcnkuQ2xlYXIoKTsNCg0KICAgICAgICAgICAgUGFyc2VGcHJGaWxlKGlucHV0KTsNCiAgICAgICAgICAgIEFkZE1lc3NhZ2VzVG9SZXN1bHRzKCk7DQogICAgICAgICAgICBBZGRTbmlwcGV0c1RvUmVzdWx0cygpOw0KICAgICAgICAgICAgQWRkTm9kZUxvY2F0aW9uc1RvVGhyZWFkRmxvd0xvY2F0aW9ucygpOw0KICAgICAgICAgICAgQWRkU25pcHBldHNUb1RocmVhZEZsb3dMb2NhdGlvbnMoKTsNCg0KICAgICAgICAgICAgdmFyIHJ1biA9IG5ldyBSdW4oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEluc3RhbmNlR3VpZCA9IF9ydW5JZCwNCiAgICAgICAgICAgICAgICBBdXRvbWF0aW9uTG9naWNhbElkID0gX2F1dG9tYXRpb25JZCwNCiAgICAgICAgICAgICAgICBUb29sID0gdG9vbCwNCiAgICAgICAgICAgICAgICBJbnZvY2F0aW9ucyA9IG5ld1tdIHsgX2ludm9jYXRpb24gfQ0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgb3V0cHV0LkluaXRpYWxpemUocnVuKTsNCg0KICAgICAgICAgICAgKG91dHB1dCBhcyBSZXN1bHRMb2dKc29uV3JpdGVyKS5Xcml0ZUludm9jYXRpb25zKHJ1bi5JbnZvY2F0aW9ucyk7DQoNCiAgICAgICAgICAgIGlmIChfZmlsZURpY3Rpb25hcnkuQW55KCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlRmlsZXMoX2ZpbGVEaWN0aW9uYXJ5KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgb3V0cHV0Lk9wZW5SZXN1bHRzKCk7DQogICAgICAgICAgICBvdXRwdXQuV3JpdGVSZXN1bHRzKF9yZXN1bHRzKTsNCiAgICAgICAgICAgIG91dHB1dC5DbG9zZVJlc3VsdHMoKTsNCg0KICAgICAgICAgICAgaWYgKF9ydWxlRGljdGlvbmFyeS5BbnkoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBvdXRwdXQuV3JpdGVSdWxlcyhfcnVsZURpY3Rpb25hcnkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoX3Rvb2xOb3RpZmljYXRpb25zLkFueSgpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG91dHB1dC5Xcml0ZVRvb2xOb3RpZmljYXRpb25zKF90b29sTm90aWZpY2F0aW9ucyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VGcHJGaWxlKFN0cmVhbSBpbnB1dCkNCiAgICAgICAgew0KICAgICAgICAgICAgdXNpbmcgKFppcEFyY2hpdmUgZnByQXJjaGl2ZSA9IG5ldyBaaXBBcmNoaXZlKGlucHV0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB1c2luZyAoU3RyZWFtIGF1ZGl0U3RyZWFtID0gT3BlbkF1ZGl0U3RyZWFtKGZwckFyY2hpdmUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUGFyc2VBdWRpdFN0cmVhbShhdWRpdFN0cmVhbSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyZWFtIE9wZW5BdWRpdFN0cmVhbShaaXBBcmNoaXZlIGZwckFyY2hpdmUpDQogICAgICAgIHsNCiAgICAgICAgICAgIFppcEFyY2hpdmVFbnRyeSBhdWRpdEVudHJ5ID0gZnByQXJjaGl2ZS5FbnRyaWVzLlNpbmdsZShlID0+IGUuRnVsbE5hbWUuRXF1YWxzKCJhdWRpdC5mdmRsIikpOw0KICAgICAgICAgICAgcmV0dXJuIGF1ZGl0RW50cnkuT3BlbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlQXVkaXRTdHJlYW0oU3RyZWFtIGF1ZGl0U3RyZWFtKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSBuZXcgWG1sUmVhZGVyU2V0dGluZ3MNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEdGRQcm9jZXNzaW5nID0gRHRkUHJvY2Vzc2luZy5JZ25vcmUsDQogICAgICAgICAgICAgICAgSWdub3JlV2hpdGVzcGFjZSA9IHRydWUsDQogICAgICAgICAgICAgICAgTmFtZVRhYmxlID0gX25hbWVUYWJsZSwNCiAgICAgICAgICAgICAgICBYbWxSZXNvbHZlciA9IG51bGwNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHVzaW5nIChfcmVhZGVyID0gWG1sUmVhZGVyLkNyZWF0ZShhdWRpdFN0cmVhbSwgc2V0dGluZ3MpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHdoaWxlIChfcmVhZGVyLlJlYWQoKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5VdWlkKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VVdWlkKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogQ3JlYXRlZFRTIGlzIGFuIGVtcHR5IGVsZW1lbnQgKGl0IGhhcyBvbmx5IGF0dHJpYnV0ZXMpLA0KICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBjYW4ndCBjYWxsIEF0U3RhcnRPZk5vbkVtcHR5IGhlcmUuDQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZihfc3RyaW5ncy5DcmVhdGVkVGltZXN0YW1wKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VDcmVhdGVkVGltZXN0YW1wKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuQnVpbGQpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUJ1aWxkKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuVnVsbmVyYWJpbGl0aWVzKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VWdWxuZXJhYmlsaXRpZXMoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5EZXNjcmlwdGlvbikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlUnVsZUZyb21EZXNjcmlwdGlvbigpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLlVuaWZpZWROb2RlUG9vbCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlTm9kZXMoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5TbmlwcGV0cykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlU25pcHBldHMoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5Db21tYW5kTGluZSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlQ29tbWFuZExpbmUoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5FcnJvcnMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBQYXJzZUVycm9ycygpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLk1hY2hpbmVJbmZvKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VNYWNoaW5lSW5mbygpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlVXVpZCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIF9ydW5JZCA9IF9yZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBQYXJzZUNyZWF0ZWRUaW1lc3RhbXAoKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgZGF0ZSA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLkRhdGVBdHRyaWJ1dGUpOw0KICAgICAgICAgICAgc3RyaW5nIHRpbWUgPSBfcmVhZGVyLkdldEF0dHJpYnV0ZShfc3RyaW5ncy5UaW1lQXR0cmlidXRlKTsNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZSkgJiYgIXN0cmluZy5Jc051bGxPckVtcHR5KHRpbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN0cmluZyBkYXRlVGltZSA9IGRhdGUgKyAiVCIgKyB0aW1lOw0KICAgICAgICAgICAgICAgIF9pbnZvY2F0aW9uLlN0YXJ0VGltZSA9IERhdGVUaW1lLlBhcnNlKGRhdGVUaW1lLCBDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gU3RlcCBwYXN0IHRoZSBlbXB0eSBlbGVtZW50Lg0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VCdWlsZCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgd2hpbGUgKCFBdEVuZE9mKF9zdHJpbmdzLkJ1aWxkKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuQnVpbGRJZCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBfYXV0b21hdGlvbklkID0gX3JlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5Tb3VyY2VGaWxlcykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBQYXJzZVNvdXJjZUZpbGVzKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBQYXJzZVNvdXJjZUZpbGVzKCkNCiAgICAgICAgew0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICB3aGlsZSAoIUF0RW5kT2YoX3N0cmluZ3MuU291cmNlRmlsZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5GaWxlKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFBhcnNlRmlsZSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VGaWxlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgaW50IGxlbmd0aCA9IDA7DQogICAgICAgICAgICBzdHJpbmcgc2l6ZUF0dHJpYnV0ZSA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLlNpemVBdHRyaWJ1dGUpOw0KICAgICAgICAgICAgaWYgKHNpemVBdHRyaWJ1dGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQuVHJ5UGFyc2Uoc2l6ZUF0dHJpYnV0ZSwgb3V0IGxlbmd0aCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0cmluZyBlbmNvZGluZyA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLkVuY29kaW5nQXR0cmlidXRlKTsNCg0KICAgICAgICAgICAgc3RyaW5nIGZpbGVOYW1lID0gbnVsbDsNCiAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgd2hpbGUgKCFBdEVuZE9mKF9zdHJpbmdzLkZpbGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5OYW1lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gVXJpSGVscGVyLk1ha2VWYWxpZFVyaShfcmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZmlsZU5hbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBmaWxlRGF0YSA9IG5ldyBGaWxlRGF0YQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgRW5jb2RpbmcgPSBlbmNvZGluZywNCiAgICAgICAgICAgICAgICAgICAgTWltZVR5cGUgPSBNaW1lVHlwZS5EZXRlcm1pbmVGcm9tRmlsZUV4dGVuc2lvbihmaWxlTmFtZSksDQogICAgICAgICAgICAgICAgICAgIExlbmd0aCA9IGxlbmd0aA0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBfZmlsZURpY3Rpb25hcnkuQWRkKGZpbGVOYW1lLCBmaWxlRGF0YSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VWdWxuZXJhYmlsaXRpZXMoKQ0KICAgICAgICB7DQogICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgIHdoaWxlICghQXRFbmRPZihfc3RyaW5ncy5WdWxuZXJhYmlsaXRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5WdWxuZXJhYmlsaXR5KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFBhcnNlVnVsbmVyYWJpbGl0eSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VWdWxuZXJhYmlsaXR5KCkNCiAgICAgICAgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBSZXN1bHQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBMb2NhdGlvbnMgPSBuZXcgTGlzdDxMb2NhdGlvbj4oKSwNCiAgICAgICAgICAgICAgICBSZWxhdGVkTG9jYXRpb25zID0gbmV3IExpc3Q8TG9jYXRpb24+KCksDQogICAgICAgICAgICAgICAgQ29kZUZsb3dzID0gbmV3IFtdDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBTYXJpZlV0aWxpdGllcy5DcmVhdGVTaW5nbGVUaHJlYWRlZENvZGVGbG93KCkNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgIHdoaWxlICghQXRFbmRPZihfc3RyaW5ncy5WdWxuZXJhYmlsaXR5KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuQ2xhc3NJZCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQuUnVsZUlkID0gX3JlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5SZXBsYWNlbWVudERlZmluaXRpb25zKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFBhcnNlUmVwbGFjZW1lbnREZWZpbml0aW9ucyhyZXN1bHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5UcmFjZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBQYXJzZUxvY2F0aW9uRnJvbVRyYWNlKHJlc3VsdCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF9yZXN1bHRzLkFkZChyZXN1bHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlTG9jYXRpb25Gcm9tVHJhY2UoUmVzdWx0IHJlc3VsdCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29kZUZsb3cgY29kZUZsb3cgPSByZXN1bHQuQ29kZUZsb3dzLkZpcnN0KCk7DQogICAgICAgICAgICBpbnQgc3RlcCA9IDA7DQogICAgICAgICAgICBzdHJpbmcgbm9kZUxhYmVsID0gbnVsbDsNCiAgICAgICAgICAgIHN0cmluZyBsYXN0Tm9kZUlkID0gbnVsbDsNCg0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQoNCiAgICAgICAgICAgIHdoaWxlICghQXRFbmRPZihfc3RyaW5ncy5UcmFjZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKEF0U3RhcnRPZihfc3RyaW5ncy5Ob2RlUmVmKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyBub2RlSWQgPSBfcmVhZGVyLkdldEF0dHJpYnV0ZShfc3RyaW5ncy5JZEF0dHJpYnV0ZSk7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKG5vZGVJZCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZmwgPSBuZXcgVGhyZWFkRmxvd0xvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RlcCA9ICsrc3RlcA0KICAgICAgICAgICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgX3RmbFRvTm9kZUlkRGljdGlvbmFyeS5BZGQodGZsLCBub2RlSWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29kZUZsb3cuVGhyZWFkRmxvd3NbMF0uTG9jYXRpb25zLkFkZCh0ZmwpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZihfc3RyaW5ncy5Ob2RlKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG5vZGVMYWJlbCA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLkxhYmVsQXR0cmlidXRlKTsNCiAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZihfc3RyaW5ncy5Tb3VyY2VMb2NhdGlvbikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBTb3VyY2VMb2NhdGlvbiBpcyBhbiBlbXB0eSBlbGVtZW50IChpdCBoYXMgb25seSBhdHRyaWJ1dGVzKSwNCiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgY2FuJ3QgY2FsbCBBdFN0YXJ0T2ZOb25FbXB0eSBoZXJlLg0KDQogICAgICAgICAgICAgICAgICAgIHN0cmluZyBzbmlwcGV0SWQgPSBfcmVhZGVyLkdldEF0dHJpYnV0ZShfc3RyaW5ncy5TbmlwcGV0QXR0cmlidXRlKTsNCiAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiBwaHlzaWNhbExvY2F0aW9uID0gUGFyc2VQaHlzaWNhbExvY2F0aW9uRnJvbVNvdXJjZUluZm8oKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBTdGVwIHBhc3QgdGhlIGVtcHR5IFNvdXJjZUxvY2F0aW9uIGVsZW1lbnQuDQogICAgICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsYWJlbCwgZ2V0IHRoZSA8QWN0aW9uPiB2YWx1ZQ0KICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShub2RlTGFiZWwpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlTGFiZWwgPSBfcmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICB2YXIgdGZsID0gbmV3IFRocmVhZEZsb3dMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBTdGVwID0gKytzdGVwLA0KICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24gPSBuZXcgTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgPSBub2RlTGFiZWwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNpY2FsTG9jYXRpb24gPSBwaHlzaWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIGlkIG9mIHRoZSBzbmlwcGV0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGxvY2F0aW9uLg0KICAgICAgICAgICAgICAgICAgICAvLyBXZSdsbCB1c2UgaXQgdG8gZmlsbCB0aGUgc25pcHBldCB0ZXh0IHdoZW4gd2UgcmVhZCB0aGUgU25pcHBldHMgZWxlbWVudCBsYXRlciBvbi4NCiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShzbmlwcGV0SWQpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBfdGZsVG9TbmlwcGV0SWREaWN0aW9uYXJ5LkFkZCh0ZmwsIHNuaXBwZXRJZCk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBjb2RlRmxvdy5UaHJlYWRGbG93c1swXS5Mb2NhdGlvbnMuQWRkKHRmbCk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgc25pcHBldCBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgbG9jYXRpb24gaW4gdGhlDQogICAgICAgICAgICAgICAgICAgIC8vIENvZGVGbG93OyB0aGF0J3MgdGhlIHNuaXBwZXQgdGhhdCB3ZSdsbCBhc3NvY2lhdGUgd2l0aCB0aGUgUmVzdWx0DQogICAgICAgICAgICAgICAgICAgIC8vIGFzIGEgd2hvbGUuDQogICAgICAgICAgICAgICAgICAgIGxhc3ROb2RlSWQgPSBzbmlwcGV0SWQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNvZGVGbG93LlRocmVhZEZsb3dzWzBdLkxvY2F0aW9ucy5BbnkoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXN1bHQuTG9jYXRpb25zLkFkZChuZXcgTG9jYXRpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IENvbmZpcm0gdGhhdCB0aGUgdHJhY2VzIGFyZSBvcmRlcmVkIGNocm9ub2xvZ2ljYWxseQ0KICAgICAgICAgICAgICAgICAgICAvLyAoc28gdGhhdCB3ZSByZWFsbHkgZG8gd2FudCB0byB1c2UgdGhlIGxhc3Qgb25lIGFzIHRoZQ0KICAgICAgICAgICAgICAgICAgICAvLyBvdmVyYWxsIHJlc3VsdCBsb2NhdGlvbikuDQogICAgICAgICAgICAgICAgICAgIFBoeXNpY2FsTG9jYXRpb24gPSBjb2RlRmxvdy5UaHJlYWRGbG93c1swXS5Mb2NhdGlvbnMuTGFzdCgpLkxvY2F0aW9uPy5QaHlzaWNhbExvY2F0aW9uLkRlZXBDbG9uZSgpDQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgcmVzdWx0LlJlbGF0ZWRMb2NhdGlvbnMuQWRkKG5ldyBMb2NhdGlvbg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gTGlua3MgZW1iZWRkZWQgaW4gdGhlIHJlc3VsdCBtZXNzYWdlIHJlZmVyIHRvIHJlbGF0ZWQgcGh5c2ljYWxMb2NhdGlvbi5pZA0KICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uID0gY29kZUZsb3cuVGhyZWFkRmxvd3NbMF0uTG9jYXRpb25zLkxhc3QoKS5Mb2NhdGlvbj8uUGh5c2ljYWxMb2NhdGlvbi5EZWVwQ2xvbmUoKQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgcmVzdWx0LlJlbGF0ZWRMb2NhdGlvbnMuTGFzdCgpLlBoeXNpY2FsTG9jYXRpb24uSWQgPSAxOw0KDQogICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShsYXN0Tm9kZUlkKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZXN1bHRUb1NuaXBwZXRJZERpY3Rpb25hcnkuQWRkKHJlc3VsdCwgbGFzdE5vZGVJZCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlUmVwbGFjZW1lbnREZWZpbml0aW9ucyhSZXN1bHQgcmVzdWx0KQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcmVwbGFjZW1lbnRzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KCk7DQogICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCg0KICAgICAgICAgICAgd2hpbGUgKCFBdEVuZE9mKF9zdHJpbmdzLlJlcGxhY2VtZW50RGVmaW5pdGlvbnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChfcmVhZGVyLk5hbWUgPT0gX3N0cmluZ3MuRGVmICYmICFBdEVuZE9mKF9zdHJpbmdzLkRlZikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcga2V5ID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuS2V5QXR0cmlidXRlKTsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHZhbHVlID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuVmFsdWVBdHRyaWJ1dGUpOw0KICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMuQWRkKGtleSwgdmFsdWUpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRzLkFueSgpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIF9yZXN1bHRUb1JlcGxhY2VtZW50RGVmaW5pdGlvbkRpY3Rpb25hcnkuQWRkKHJlc3VsdCwgcmVwbGFjZW1lbnRzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgUGh5c2ljYWxMb2NhdGlvbiBQYXJzZVBoeXNpY2FsTG9jYXRpb25Gcm9tU291cmNlSW5mbygpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBwYXRoID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuUGF0aEF0dHJpYnV0ZSk7DQoNCiAgICAgICAgICAgIHJldHVybiBuZXcgUGh5c2ljYWxMb2NhdGlvbg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkocGF0aCwgVXJpS2luZC5SZWxhdGl2ZSkNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIFJlZ2lvbiA9IFBhcnNlUmVnaW9uKCkNCiAgICAgICAgICAgIH07DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIFJlZ2lvbiBQYXJzZVJlZ2lvbigpDQogICAgICAgIHsNCiAgICAgICAgICAgIGludCBzdGFydExpbmUgPSAwOw0KICAgICAgICAgICAgc3RyaW5nIGxpbmVBdHRyID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuTGluZUF0dHJpYnV0ZSk7DQogICAgICAgICAgICBpZiAobGluZUF0dHIgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQuVHJ5UGFyc2UobGluZUF0dHIsIG91dCBzdGFydExpbmUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgZW5kTGluZSA9IDA7DQogICAgICAgICAgICBzdHJpbmcgbGluZWxFbmRBdHRyID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuTGluZUVuZEF0dHJpYnV0ZSk7DQogICAgICAgICAgICBpZiAobGluZWxFbmRBdHRyICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGxpbmVsRW5kQXR0ciwgb3V0IGVuZExpbmUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgc3RhcnRDb2x1bW4gPSAwOw0KICAgICAgICAgICAgc3RyaW5nIGNvbFN0YXJ0QXR0ciA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLkNvbFN0YXJ0QXR0cmlidXRlKTsNCiAgICAgICAgICAgIGlmIChjb2xTdGFydEF0dHIgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQuVHJ5UGFyc2UoY29sU3RhcnRBdHRyLCBvdXQgc3RhcnRDb2x1bW4pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgZW5kQ29sdW1uID0gMDsNCiAgICAgICAgICAgIHN0cmluZyBjb2xFbmRBdHRyID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuQ29sRW5kQXR0cmlidXRlKTsNCiAgICAgICAgICAgIGlmIChjb2xFbmRBdHRyICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGNvbEVuZEF0dHIsIG91dCBlbmRDb2x1bW4pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbmV3IFJlZ2lvbg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IHN0YXJ0TGluZSwNCiAgICAgICAgICAgICAgICBFbmRMaW5lID0gZW5kTGluZSwNCiAgICAgICAgICAgICAgICBTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uLA0KICAgICAgICAgICAgICAgIEVuZENvbHVtbiA9IGVuZENvbHVtbg0KICAgICAgICAgICAgfTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBQYXJzZVJ1bGVGcm9tRGVzY3JpcHRpb24oKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcnVsZSA9IG5ldyBSdWxlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSWQgPSBfcmVhZGVyLkdldEF0dHJpYnV0ZShfc3RyaW5ncy5DbGFzc0lkQXR0cmlidXRlKQ0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICB3aGlsZSAoIUF0RW5kT2YoX3N0cmluZ3MuRGVzY3JpcHRpb24pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5BYnN0cmFjdCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgY29udGVudCA9IF9yZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgICAgICAgICAgICAgcnVsZS5TaG9ydERlc2NyaXB0aW9uID0gbmV3IE1lc3NhZ2UgeyBUZXh0ID0gRm9ydGlmeVV0aWxpdGllcy5QYXJzZUZvcm1hdHRlZENvbnRlbnRUZXh0KGNvbnRlbnQpIH07DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLkV4cGxhbmF0aW9uKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb250ZW50ID0gX3JlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgICAgICBydWxlLkZ1bGxEZXNjcmlwdGlvbiA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IEZvcnRpZnlVdGlsaXRpZXMuUGFyc2VGb3JtYXR0ZWRDb250ZW50VGV4dChjb250ZW50KSB9Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5DdXN0b21EZXNjcmlwdGlvbikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIHRoZSBjdXN0b20gZGVzY3JpcHRpb24gYmxvY2sNCiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFBdEVuZE9mKF9zdHJpbmdzLkN1c3RvbURlc2NyaXB0aW9uKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBfcnVsZURpY3Rpb25hcnkuQWRkKHJ1bGUuSWQsIHJ1bGUpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlTm9kZXMoKQ0KICAgICAgICB7DQogICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgIHdoaWxlICghQXRFbmRPZihfc3RyaW5ncy5VbmlmaWVkTm9kZVBvb2wpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5Ob2RlKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFBhcnNlTm9kZSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VOb2RlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgc3RyaW5nIG5vZGVJZCA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLklkQXR0cmlidXRlKTsNCiAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgd2hpbGUgKCFBdEVuZE9mKF9zdHJpbmdzLk5vZGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2YoX3N0cmluZ3MuU291cmNlTG9jYXRpb24pKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiBwaHlzaWNhbExvY2F0aW9uID0gUGFyc2VQaHlzaWNhbExvY2F0aW9uRnJvbVNvdXJjZUluZm8oKTsNCg0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgc25pcHBldElkID0gX3JlYWRlci5HZXRBdHRyaWJ1dGUoX3N0cmluZ3MuU25pcHBldEF0dHJpYnV0ZSk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gU3RlcCBwYXN0IHRoZSBlbXB0eSBTb3VyY2VMb2NhdGlvbiBlbGVtZW50Lg0KICAgICAgICAgICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIG5vZGUgdGV4dCBmcm9tIHRoZSBBY3Rpb24gZWxlbWVudA0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbm9kZUxhYmVsID0gX3JlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgbG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPSBuZXcgTWVzc2FnZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgPSBub2RlTGFiZWwNCiAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uID0gcGh5c2ljYWxMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgICAgIF9ub2RlSWRUb0xvY2F0aW9uRGljdGlvbmFyeS5BZGQobm9kZUlkLCBsb2NhdGlvbik7DQogICAgICAgICAgICAgICAgICAgIF9sb2NhdGlvblRvU25pcHBldElkRGljdGlvbmFyeS5BZGQobG9jYXRpb24sIHNuaXBwZXRJZCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBQYXJzZVNuaXBwZXRzKCkNCiAgICAgICAgew0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICB3aGlsZSAoIUF0RW5kT2YoX3N0cmluZ3MuU25pcHBldHMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChBdFN0YXJ0T2ZOb25FbXB0eShfc3RyaW5ncy5TbmlwcGV0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFBhcnNlU25pcHBldCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VTbmlwcGV0KCkNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gRm9ybWF0OiA8Z3VpZD4jPGZpbGUgcGF0aD46PHN0YXJ0IGxpbmU+OjxlbmQgbGluZT4NCiAgICAgICAgICAgIHN0cmluZyBzbmlwcGV0SWQgPSBfcmVhZGVyLkdldEF0dHJpYnV0ZShfc3RyaW5ncy5JZEF0dHJpYnV0ZSk7DQogICAgICAgICAgICBpbnQgc25pcHBldFN0YXJ0TGluZSA9IDA7DQogICAgICAgICAgICBpbnQgc25pcHBldEVuZExpbmUgPSAwOw0KICAgICAgICAgICAgaW50IHJlZ2lvblN0YXJ0TGluZSA9IDA7DQogICAgICAgICAgICBpbnQgcmVnaW9uRW5kTGluZSA9IDA7DQoNCiAgICAgICAgICAgIHN0cmluZ1tdIHBhcnRzID0gc25pcHBldElkLlNwbGl0KCc6Jyk7DQoNCiAgICAgICAgICAgIGludC5UcnlQYXJzZShwYXJ0c1twYXJ0cy5MZW5ndGggLSAyXSwgb3V0IHJlZ2lvblN0YXJ0TGluZSk7DQogICAgICAgICAgICBpbnQuVHJ5UGFyc2UocGFydHNbcGFydHMuTGVuZ3RoIC0gMV0sIG91dCByZWdpb25FbmRMaW5lKTsNCiAgICAgICAgICAgIHN0cmluZyB0ZXh0ID0gbnVsbDsNCg0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQoNCiAgICAgICAgICAgIHdoaWxlICghQXRFbmRPZihfc3RyaW5ncy5TbmlwcGV0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuU3RhcnRMaW5lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZSA9IF9yZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKHZhbHVlLCBvdXQgc25pcHBldFN0YXJ0TGluZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLkVuZExpbmUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHZhbHVlID0gX3JlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgICAgICBpbnQuVHJ5UGFyc2UodmFsdWUsIG91dCBzbmlwcGV0RW5kTGluZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLlRleHQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IF9yZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBSZWdpb24gcmVnaW9uID0gbnVsbDsNCiAgICAgICAgICAgIFJlZ2lvbiBjb250ZXh0UmVnaW9uID0gbnVsbDsNCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHRleHQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlZ2lvbiA9IG5ldyBSZWdpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IHJlZ2lvblN0YXJ0TGluZSwNCiAgICAgICAgICAgICAgICAgICAgRW5kTGluZSA9IHJlZ2lvbkVuZExpbmUNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgY29udGV4dFJlZ2lvbiA9IG5ldyBSZWdpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IHNuaXBwZXRTdGFydExpbmUsDQogICAgICAgICAgICAgICAgICAgIEVuZExpbmUgPSBzbmlwcGV0RW5kTGluZSwNCiAgICAgICAgICAgICAgICAgICAgU25pcHBldCA9IG5ldyBGaWxlQ29udGVudA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBUZXh0ID0gdGV4dA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHVzaW5nIChTdHJpbmdSZWFkZXIgcmVhZGVyID0gbmV3IFN0cmluZ1JlYWRlcih0ZXh0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFJlYWQgZG93biB0byB0aGUgZmlyc3QgbGluZSB3ZSB3YW50IHRvIGluY2x1ZGUNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWdpb25TdGFydExpbmUgLSBzbmlwcGV0U3RhcnRMaW5lOyBpKyspDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5SZWFkTGluZSgpOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgdmFyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBHYXRoZXIgdGhlIGxpbmVzIHdlIHdhbnQNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gcmVnaW9uRW5kTGluZSAtIHJlZ2lvblN0YXJ0TGluZTsgaSsrKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBzYi5BcHBlbmRMaW5lKHJlYWRlci5SZWFkTGluZSgpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIFRyaW0gdGhlIHRyYWlsaW5nIGxpbmUgYnJlYWsNCiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHNiLlRvU3RyaW5nKCkuVHJpbUVuZChuZXdbXSB7ICdccicsICdcbicgfSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVnaW9uLlNuaXBwZXQgPSBuZXcgRmlsZUNvbnRlbnQgeyBUZXh0ID0gdGV4dCB9Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBSZWdpb25zWzBdID0+IHBoeXNpY2FsTG9jYXRpb24ucmVnaW9uDQogICAgICAgICAgICAvLyBSZWdpb25zWzFdID0+IHBoeXNpY2FsTG9jYXRpb24uY29udGV4dFJlZ2lvbg0KICAgICAgICAgICAgX3NuaXBwZXRJZFRvUmVnaW9uc0RpY3Rpb25hcnkuQWRkKHNuaXBwZXRJZCwgbmV3W10geyByZWdpb24sIGNvbnRleHRSZWdpb24gfSk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUGFyc2VDb21tYW5kTGluZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKEZvcnRpZnlFeGVjdXRhYmxlKTsNCiAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgd2hpbGUgKCFBdEVuZE9mKF9zdHJpbmdzLkNvbW1hbmRMaW5lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuQXJndW1lbnQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGFyZ3VtZW50ID0gX3JlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgICAgICBzYi5BcHBlbmQoJyAnKTsNCiAgICAgICAgICAgICAgICAgICAgc2IuQXBwZW5kKGFyZ3VtZW50KTsNCiAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5Nb3ZlVG9FbGVtZW50KCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgX2ludm9jYXRpb24uQ29tbWFuZExpbmUgPSBzYi5Ub1N0cmluZygpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlRXJyb3JzKCkNCiAgICAgICAgew0KICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICB3aGlsZSAoIUF0RW5kT2YoX3N0cmluZ3MuRXJyb3JzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoQXRTdGFydE9mTm9uRW1wdHkoX3N0cmluZ3MuRXJyb3IpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGVycm9yQ29kZSA9IF9yZWFkZXIuR2V0QXR0cmlidXRlKF9zdHJpbmdzLkNvZGVBdHRyaWJ1dGUpOw0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbWVzc2FnZSA9IF9yZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKTsNCg0KICAgICAgICAgICAgICAgICAgICBfdG9vbE5vdGlmaWNhdGlvbnMuQWRkKG5ldyBOb3RpZmljYXRpb24NCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgSWQgPSBlcnJvckNvZGUsDQogICAgICAgICAgICAgICAgICAgICAgICBMZXZlbCA9IE5vdGlmaWNhdGlvbkxldmVsLkVycm9yLA0KICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IG1lc3NhZ2UgfQ0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgX3JlYWRlci5SZWFkKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBhcnNlTWFjaGluZUluZm8oKQ0KICAgICAgICB7DQogICAgICAgICAgICBfcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgIHdoaWxlICghQXRFbmRPZihfc3RyaW5ncy5NYWNoaW5lSW5mbykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLkhvc3RuYW1lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9pbnZvY2F0aW9uLk1hY2hpbmUgPSBfcmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLlVzZXJuYW1lKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9pbnZvY2F0aW9uLkFjY291bnQgPSBfcmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKEF0U3RhcnRPZk5vbkVtcHR5KF9zdHJpbmdzLlBsYXRmb3JtKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9pbnZvY2F0aW9uLlNldFByb3BlcnR5KCJQbGF0Zm9ybSIsIF9yZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgYm9vbCBBdFN0YXJ0T2ZOb25FbXB0eShzdHJpbmcgZWxlbWVudE5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBBdFN0YXJ0T2YoZWxlbWVudE5hbWUpICYmICFfcmVhZGVyLklzRW1wdHlFbGVtZW50Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBib29sIEF0U3RhcnRPZihzdHJpbmcgZWxlbWVudE5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAhX3JlYWRlci5FT0YgJiYNCiAgICAgICAgICAgICAgICAoX3JlYWRlci5Ob2RlVHlwZSA9PSBYbWxOb2RlVHlwZS5FbGVtZW50ICYmIFN0cmluZ1JlZmVyZW5jZS5BcmVFcXVhbChfcmVhZGVyLkxvY2FsTmFtZSwgZWxlbWVudE5hbWUpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgYm9vbCBBdEVuZE9mKHN0cmluZyBlbGVtZW50TmFtZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIF9yZWFkZXIuRU9GIHx8DQogICAgICAgICAgICAgICAgKF9yZWFkZXIuTm9kZVR5cGUgPT0gWG1sTm9kZVR5cGUuRW5kRWxlbWVudCAmJiBTdHJpbmdSZWZlcmVuY2UuQXJlRXF1YWwoX3JlYWRlci5Mb2NhbE5hbWUsIGVsZW1lbnROYW1lKSk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgQWRkTWVzc2FnZXNUb1Jlc3VsdHMoKQ0KICAgICAgICB7DQogICAgICAgICAgICBmb3JlYWNoIChSZXN1bHQgcmVzdWx0IGluIF9yZXN1bHRzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIElSdWxlIHJ1bGU7DQogICAgICAgICAgICAgICAgaWYgKF9ydWxlRGljdGlvbmFyeS5UcnlHZXRWYWx1ZShyZXN1bHQuUnVsZUlkLCBvdXQgcnVsZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2UgPSBydWxlLlNob3J0RGVzY3JpcHRpb24gPz8gcnVsZS5GdWxsRGVzY3JpcHRpb247DQogICAgICAgICAgICAgICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IHJlcGxhY2VtZW50cyA9IG51bGw7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKF9yZXN1bHRUb1JlcGxhY2VtZW50RGVmaW5pdGlvbkRpY3Rpb25hcnkuVHJ5R2V0VmFsdWUocmVzdWx0LCBvdXQgcmVwbGFjZW1lbnRzKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2VUZXh0ID0gbWVzc2FnZT8uVGV4dDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHN0cmluZyBrZXkgaW4gcmVwbGFjZW1lbnRzLktleXMpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHZhbHVlID0gcmVwbGFjZW1lbnRzW2tleV07DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3VwcG9ydGVkUmVwbGFjZW1lbnRUb2tlbnMuQ29udGFpbnMoa2V5KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHRva2VuIHdpdGggYW4gZW1iZWRkZWQgaHlwZXJsaW5rDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gbWVzc2FnZVRleHQuUmVwbGFjZShzdHJpbmcuRm9ybWF0KFJlcGxhY2VtZW50VG9rZW5Gb3JtYXQsIGtleSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuRm9ybWF0KEVtYmVkZGVkTGlua0Zvcm1hdCwgdmFsdWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgdG9rZW4gd2l0aCBwbGFpbiB0ZXh0DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUZXh0ID0gbWVzc2FnZVRleHQuUmVwbGFjZShzdHJpbmcuRm9ybWF0KFJlcGxhY2VtZW50VG9rZW5Gb3JtYXQsIGtleSksIHZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLkRlZXBDbG9uZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5UZXh0ID0gbWVzc2FnZVRleHQ7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQuTWVzc2FnZSA9IG1lc3NhZ2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEFkZFNuaXBwZXRzVG9SZXN1bHRzKCkNCiAgICAgICAgew0KICAgICAgICAgICAgZm9yZWFjaCAoUmVzdWx0IHJlc3VsdCBpbiBfcmVzdWx0cykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBzdHJpbmcgc25pcHBldElkOw0KICAgICAgICAgICAgICAgIFJlZ2lvbltdIHJlZ2lvbnM7DQoNCiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LkxvY2F0aW9ucz9bMF0/LlBoeXNpY2FsTG9jYXRpb24/LlJlZ2lvbiAhPSBudWxsICYmDQogICAgICAgICAgICAgICAgICAgIF9yZXN1bHRUb1NuaXBwZXRJZERpY3Rpb25hcnkuVHJ5R2V0VmFsdWUocmVzdWx0LCBvdXQgc25pcHBldElkKSAmJg0KICAgICAgICAgICAgICAgICAgICBfc25pcHBldElkVG9SZWdpb25zRGljdGlvbmFyeS5UcnlHZXRWYWx1ZShzbmlwcGV0SWQsIG91dCByZWdpb25zKSAmJg0KICAgICAgICAgICAgICAgICAgICAhc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShyZWdpb25zWzBdPy5TbmlwcGV0LlRleHQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gUmVnaW9uc1swXSA9PiBwaHlzaWNhbExvY2F0aW9uLnJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICAvLyBSZWdpb25zWzFdID0+IHBoeXNpY2FsTG9jYXRpb24uY29udGV4dFJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQuTG9jYXRpb25zWzBdLlBoeXNpY2FsTG9jYXRpb24uUmVnaW9uID0gcmVnaW9uc1swXTsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkxvY2F0aW9uc1swXS5QaHlzaWNhbExvY2F0aW9uLkNvbnRleHRSZWdpb24gPSByZWdpb25zWzFdOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIExvY2F0ZXMgdGhlIHJlZ2lvbiAoaW5jbHVkaW5nIHNuaXBwZXQgdGV4dCkgZm9yIHRocmVhZEZsb3dMb2NhdGlvbnMgdGhhdA0KICAgICAgICAvLy8gd2VyZSBjcmVhdGVkIGZyb20gTm9kZSBlbGVtZW50cyB3aXRoaW4gYSBUcmFjZQ0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwcml2YXRlIHZvaWQgQWRkU25pcHBldHNUb1RocmVhZEZsb3dMb2NhdGlvbnMoKQ0KICAgICAgICB7DQogICAgICAgICAgICBmb3JlYWNoIChSZXN1bHQgcmVzdWx0IGluIF9yZXN1bHRzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuQ29kZUZsb3dzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChDb2RlRmxvdyBjb2RlRmxvdyBpbiByZXN1bHQuQ29kZUZsb3dzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZUZsb3cuVGhyZWFkRmxvd3NbMF0uTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoVGhyZWFkRmxvd0xvY2F0aW9uIHRmbCBpbiBjb2RlRmxvdy5UaHJlYWRGbG93c1swXS5Mb2NhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgc25pcHBldElkOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpb25bXSByZWdpb25zID0gbnVsbDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RmbFRvU25pcHBldElkRGljdGlvbmFyeS5UcnlHZXRWYWx1ZSh0ZmwsIG91dCBzbmlwcGV0SWQpICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc25pcHBldElkVG9SZWdpb25zRGljdGlvbmFyeS5UcnlHZXRWYWx1ZShzbmlwcGV0SWQsIG91dCByZWdpb25zKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaW9uc1swXSA9PiBwaHlzaWNhbExvY2F0aW9uLnJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaW9uc1sxXSA9PiBwaHlzaWNhbExvY2F0aW9uLmNvbnRleHRSZWdpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmbC5Mb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uLlJlZ2lvbiA9IHJlZ2lvbnNbMF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZmwuTG9jYXRpb24uUGh5c2ljYWxMb2NhdGlvbi5Db250ZXh0UmVnaW9uID0gcmVnaW9uc1sxXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIExvY2F0ZXMgdGhlIGxvY2F0aW9uIGFuZCByZWdpb24gKGluY2x1ZGluZyBzbmlwcGV0KSBmb3IgdGhyZWFkRmxvd0xvY2F0aW9ucw0KICAgICAgICAvLy8gdGhhdCB3ZXJlIGNyZWF0ZWQgZnJvbSBOb2RlUmVmIGVsZW1lbnRzDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHByaXZhdGUgdm9pZCBBZGROb2RlTG9jYXRpb25zVG9UaHJlYWRGbG93TG9jYXRpb25zKCkNCiAgICAgICAgew0KICAgICAgICAgICAgZm9yZWFjaCAoUmVzdWx0IHJlc3VsdCBpbiBfcmVzdWx0cykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LkNvZGVGbG93cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoQ29kZUZsb3cgY29kZUZsb3cgaW4gcmVzdWx0LkNvZGVGbG93cykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGVGbG93LlRocmVhZEZsb3dzWzBdLkxvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKFRocmVhZEZsb3dMb2NhdGlvbiB0ZmwgaW4gY29kZUZsb3cuVGhyZWFkRmxvd3NbMF0uTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIG5vZGVJZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHNuaXBwZXRJZDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaW9uW10gcmVnaW9ucyA9IG51bGw7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uIGxvY2F0aW9uID0gbnVsbDsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RmbFRvTm9kZUlkRGljdGlvbmFyeS5UcnlHZXRWYWx1ZSh0ZmwsIG91dCBub2RlSWQpICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbm9kZUlkVG9Mb2NhdGlvbkRpY3Rpb25hcnkuVHJ5R2V0VmFsdWUobm9kZUlkLCBvdXQgbG9jYXRpb24pICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9jYXRpb25Ub1NuaXBwZXRJZERpY3Rpb25hcnkuVHJ5R2V0VmFsdWUobG9jYXRpb24sIG91dCBzbmlwcGV0SWQpICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc25pcHBldElkVG9SZWdpb25zRGljdGlvbmFyeS5UcnlHZXRWYWx1ZShzbmlwcGV0SWQsIG91dCByZWdpb25zKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaW9uc1swXSA9PiBwaHlzaWNhbExvY2F0aW9uLnJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVnaW9uc1sxXSA9PiBwaHlzaWNhbExvY2F0aW9uLmNvbnRleHRSZWdpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLlBoeXNpY2FsTG9jYXRpb24uUmVnaW9uID0gcmVnaW9uc1swXTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLlBoeXNpY2FsTG9jYXRpb24uQ29udGV4dFJlZ2lvbiA9IHJlZ2lvbnNbMV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZmwuTG9jYXRpb24gPSBsb2NhdGlvbjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Converters'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "63F99F35F6471519204236EABE998A00",
- "algorithm": "md5"
- },
- {
- "value": "9B0ED6B0609582F5389AB409ACFA497637C411E4",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "45BB52F2A833D9D048C8B23E5FA94105711685EC4DE9624834B3C8E06BD272E2",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 3,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/FxCopConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsNCnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOw0KdXNpbmcgU3lzdGVtLklPOw0KdXNpbmcgU3lzdGVtLkxpbnE7DQp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCnVzaW5nIFN5c3RlbS5YbWw7DQp1c2luZyBTeXN0ZW0uWG1sLlNjaGVtYTsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuV3JpdGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycw0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gQ29udmVydHMgRnhDb3AgcmVwb3J0IGZpbGVzIHRvIHNhcmlmIGZvcm1hdA0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgLy8vPHJlbWFya3M+DQogICAgLy8vIEZ4Q29wIHByb2plY3QgZmlsZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIA0KICAgIC8vLyBsb3NzIG9mIHNvdXJjZSBsb2NhdGlvbiBpbmZvcm1hdGlvbg0KICAgIC8vLzwvcmVtYXJrcz4NCiAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgRnhDb3BDb252ZXJ0ZXIgOiBUb29sRmlsZUNvbnZlcnRlckJhc2UNCiAgICB7DQogICAgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIFByb2plY3REaXJlY3RvcnlWYXJpYWJsZSA9ICIkKFByb2plY3REaXIpIjsNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ29udmVydCBGeENvcCBsb2cgdG8gU0FSSUYgZm9ybWF0IHN0cmVhbQ0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlucHV0Ij5GeENvcCBsb2cgc3RyZWFtPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdXRwdXQiPm91dHB1dCBzdHJlYW08L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImRhdGFUb0luc2VydCI+T3B0aW9uYWxseSBlbWl0dGVkIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2cuPC9wYXJhbT4NCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgQ29udmVydChTdHJlYW0gaW5wdXQsIElSZXN1bHRMb2dXcml0ZXIgb3V0cHV0LCBPcHRpb25hbGx5RW1pdHRlZERhdGEgZGF0YVRvSW5zZXJ0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyAobmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoaW5wdXQpKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChvdXRwdXQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyAobmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3V0cHV0KSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBMb2dpY2FsTG9jYXRpb25zRGljdGlvbmFyeS5DbGVhcigpOw0KDQogICAgICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBGeENvcExvZ1JlYWRlci5Db250ZXh0KCk7DQoNCiAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IExpc3Q8UmVzdWx0PigpOw0KICAgICAgICAgICAgdmFyIHJ1bGVzID0gbmV3IExpc3Q8UnVsZT4oKTsNCiAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRnhDb3BMb2dSZWFkZXIoKTsNCiAgICAgICAgICAgIHJlYWRlci5SdWxlUmVhZCArPSAoRnhDb3BMb2dSZWFkZXIuQ29udGV4dCBjdXJyZW50KSA9PiB7IHJ1bGVzLkFkZChDcmVhdGVSdWxlKGN1cnJlbnQpKTsgfTsNCiAgICAgICAgICAgIHJlYWRlci5SZXN1bHRSZWFkICs9IChGeENvcExvZ1JlYWRlci5Db250ZXh0IGN1cnJlbnQpID0+IHsgcmVzdWx0cy5BZGQoQ3JlYXRlUmVzdWx0KGN1cnJlbnQpKTsgfTsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkKGNvbnRleHQsIGlucHV0KTsNCg0KICAgICAgICAgICAgVG9vbCB0b29sID0gbmV3IFRvb2wNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOYW1lID0gIkZ4Q29wIg0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIGZpbGVJbmZvRmFjdG9yeSA9IG5ldyBGaWxlSW5mb0ZhY3RvcnkoTWltZVR5cGUuRGV0ZXJtaW5lRnJvbUZpbGVFeHRlbnNpb24sIGRhdGFUb0luc2VydCk7DQogICAgICAgICAgICBEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+IGZpbGVEaWN0aW9uYXJ5ID0gZmlsZUluZm9GYWN0b3J5LkNyZWF0ZShyZXN1bHRzKTsNCg0KICAgICAgICAgICAgdmFyIHJ1biA9IG5ldyBSdW4oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFRvb2wgPSB0b29sDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBvdXRwdXQuSW5pdGlhbGl6ZShydW4pOw0KDQogICAgICAgICAgICBpZiAoZmlsZURpY3Rpb25hcnkgIT0gbnVsbCAmJiBmaWxlRGljdGlvbmFyeS5BbnkoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBvdXRwdXQuV3JpdGVGaWxlcyhmaWxlRGljdGlvbmFyeSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChMb2dpY2FsTG9jYXRpb25zRGljdGlvbmFyeSAhPSBudWxsICYmIExvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5LkFueSgpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG91dHB1dC5Xcml0ZUxvZ2ljYWxMb2NhdGlvbnMoTG9naWNhbExvY2F0aW9uc0RpY3Rpb25hcnkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBvdXRwdXQuT3BlblJlc3VsdHMoKTsNCiAgICAgICAgICAgIG91dHB1dC5Xcml0ZVJlc3VsdHMocmVzdWx0cyk7DQogICAgICAgICAgICBvdXRwdXQuQ2xvc2VSZXN1bHRzKCk7DQoNCiAgICAgICAgICAgIGlmIChydWxlcy5Db3VudCA+IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIHJ1bGVzRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgSVJ1bGU+KCk7DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoIChSdWxlIHJ1bGUgaW4gcnVsZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBydWxlc0RpY3Rpb25hcnlbcnVsZS5JZF0gPSBydWxlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIG91dHB1dC5Xcml0ZVJ1bGVzKHJ1bGVzRGljdGlvbmFyeSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpbnRlcm5hbCBSdWxlIENyZWF0ZVJ1bGUoRnhDb3BMb2dSZWFkZXIuQ29udGV4dCBjb250ZXh0KQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcnVsZSA9IG5ldyBSdWxlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSWQgPSBjb250ZXh0LkNoZWNrSWQsDQogICAgICAgICAgICAgICAgTmFtZSA9IGNvbnRleHQuUnVsZVR5cGVOYW1lLlRvTWVzc2FnZSgpLA0KICAgICAgICAgICAgICAgIE1lc3NhZ2VTdHJpbmdzID0gY29udGV4dC5SZXNvbHV0aW9ucw0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgcnVsZS5TZXRQcm9wZXJ0eSgiQ2F0ZWdvcnkiLCBjb250ZXh0LlJ1bGVDYXRlZ29yeSk7DQoNCiAgICAgICAgICAgIHJldHVybiBydWxlOw0KICAgICAgICB9DQoNCiAgICAgICAgaW50ZXJuYWwgUmVzdWx0IENyZWF0ZVJlc3VsdChGeENvcExvZ1JlYWRlci5Db250ZXh0IGNvbnRleHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIFJlc3VsdCByZXN1bHQgPSBuZXcgUmVzdWx0KCk7DQoNCiAgICAgICAgICAgIHN0cmluZyB1bmlxdWVJZCA9IGNvbnRleHQuR2V0VW5pcXVlSWQoKTsNCg0KICAgICAgICAgICAgaWYgKCFTdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVuaXF1ZUlkKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LlBhcnRpYWxGaW5nZXJwcmludHMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5QYXJ0aWFsRmluZ2VycHJpbnRzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgU2FyaWZVdGlsaXRpZXMuQWRkT3JVcGRhdGVEaWN0aW9uYXJ5RW50cnkocmVzdWx0LlBhcnRpYWxGaW5nZXJwcmludHMsICJVbmlxdWVJZCIsIHVuaXF1ZUlkKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RyaW5nIHN0YXR1cyA9IGNvbnRleHQuU3RhdHVzOw0KDQogICAgICAgICAgICBpZiAoIkV4Y2x1ZGVkSW5Tb3VyY2UiLkVxdWFscyhzdGF0dXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdC5TdXBwcmVzc2lvblN0YXRlcyA9IFN1cHByZXNzaW9uU3RhdGVzLlN1cHByZXNzZWRJblNvdXJjZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKCJFeGNsdWRlZEluUHJvamVjdCIuRXF1YWxzKHN0YXR1cykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVzdWx0LkJhc2VsaW5lU3RhdGUgPSBCYXNlbGluZVN0YXRlLkV4aXN0aW5nOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXN1bHQuUnVsZUlkID0gY29udGV4dC5DaGVja0lkOw0KICAgICAgICAgICAgcmVzdWx0Lk1lc3NhZ2UgPSBuZXcgTWVzc2FnZSB7IEFyZ3VtZW50cyA9IGNvbnRleHQuSXRlbXMsIE1lc3NhZ2VJZCA9IGNvbnRleHQuUmVzb2x1dGlvbk5hbWUsIFRleHQgPSBjb250ZXh0Lk1lc3NhZ2UgfTsNCiAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IG5ldyBMb2NhdGlvbigpOw0KDQogICAgICAgICAgICBzdHJpbmcgc291cmNlRmlsZSA9IEdldEZpbGVQYXRoKGNvbnRleHQpOw0KICAgICAgICAgICAgc3RyaW5nIHRhcmdldEZpbGUgPSBjb250ZXh0LlRhcmdldDsNCg0KICAgICAgICAgICAgLy8gSWYgYm90aCBzb3VyY2UgYW5kIHRhcmdldCBoYXZlIHZhbHVlcyBhbmQgdGhleSdyZSBkaWZmZXJlbnQsIHNldCBhbmFseXNpcyB0YXJnZXQNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzb3VyY2VGaWxlKSAmJg0KICAgICAgICAgICAgICAgICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHRhcmdldEZpbGUpICYmDQogICAgICAgICAgICAgICAgIXNvdXJjZUZpbGUuRXF1YWxzKHRhcmdldEZpbGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdC5BbmFseXNpc1RhcmdldCA9IEJ1aWxkRmlsZUxvY2F0aW9uRnJvbUZ4Q29wUmVmZXJlbmNlKHRhcmdldEZpbGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIE9uZSBvciB0aGUgb3RoZXIgb3IgYm90aCBpcyBudWxsLCBvciB0aGV5J3JlIGRpZmZlcmVudA0KICAgICAgICAgICAgICAgIHNvdXJjZUZpbGUgPSBzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHNvdXJjZUZpbGUpID8gdGFyZ2V0RmlsZSA6IHNvdXJjZUZpbGU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSB2YWx1ZSwgc2V0IHBoeXNpY2FsIGxvY2F0aW9uDQogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc291cmNlRmlsZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbG9jYXRpb24uUGh5c2ljYWxMb2NhdGlvbiA9IG5ldyBQaHlzaWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBGaWxlTG9jYXRpb24gPSBCdWlsZEZpbGVMb2NhdGlvbkZyb21GeENvcFJlZmVyZW5jZShzb3VyY2VGaWxlKSwNCiAgICAgICAgICAgICAgICAgICAgUmVnaW9uID0gY29udGV4dC5MaW5lID09IG51bGwgPyBudWxsIDogRXh0ZW5zaW9ucy5DcmVhdGVSZWdpb24oY29udGV4dC5MaW5lLlZhbHVlKQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGxvY2F0aW9uLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgPSBDcmVhdGVGdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lKGNvbnRleHQpOw0KDQogICAgICAgICAgICByZXN1bHQuTG9jYXRpb25zID0gbmV3IExpc3Q8TG9jYXRpb24+IHsgbG9jYXRpb24gfTsNCg0KICAgICAgICAgICAgYm9vbCBtYXBzRGlyZWN0bHlUb1NhcmlmTmFtZTsNCg0KICAgICAgICAgICAgcmVzdWx0LkxldmVsID0gQ29udmVydEZ4Q29wTGV2ZWxUb1Jlc3VsdExldmVsKGNvbnRleHQuTGV2ZWwsIG91dCBtYXBzRGlyZWN0bHlUb1NhcmlmTmFtZSk7DQoNCiAgICAgICAgICAgIGlmICghbWFwc0RpcmVjdGx5VG9TYXJpZk5hbWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBub3QgcmVjYXBpdHVsYXRlIEZ4Q29wIE1lc3NhZ2VMZXZlbCBuYW1lcyAoc3VjaCBhcyANCiAgICAgICAgICAgICAgICAvLyAiRXJyb3IiIGFuZCAiV2FybmluZyIpIGFzIGEgcHJvcGVydHkuIEZvciBuYW1lcyB0aGF0IGRpZmZlcg0KICAgICAgICAgICAgICAgIC8vIChzdWNoIGFzICJDcml0aWNhbFdhcm5pbmciIGFuZCAiSW5mb3JtYXRpb24iKSwgd2Ugd2lsbCBhbHNvIA0KICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgdGhlIEZ4Q29wLXNwZWNpZmljIHZhbHVlcyBpbiB0aGUgcHJvcGVydHkgYmFnLg0KICAgICAgICAgICAgICAgIEFkZFByb3BlcnR5KHJlc3VsdCwgY29udGV4dC5MZXZlbCwgIkxldmVsIik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEFkZFByb3BlcnR5KHJlc3VsdCwgY29udGV4dC5DYXRlZ29yeSwgIkNhdGVnb3J5Iik7DQogICAgICAgICAgICBBZGRQcm9wZXJ0eShyZXN1bHQsIGNvbnRleHQuRml4Q2F0ZWdvcnksICJGaXhDYXRlZ29yeSIpOw0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBGaWxlTG9jYXRpb24gQnVpbGRGaWxlTG9jYXRpb25Gcm9tRnhDb3BSZWZlcmVuY2Uoc3RyaW5nIGZpbGVSZWZlcmVuY2UpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyB1cmlCYXNlSWQgPSBudWxsOw0KDQogICAgICAgICAgICBpZiAoZmlsZVJlZmVyZW5jZS5TdGFydHNXaXRoKFByb2plY3REaXJlY3RvcnlWYXJpYWJsZSArICIvIikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdXJpQmFzZUlkID0gUHJvamVjdERpcmVjdG9yeVZhcmlhYmxlOw0KICAgICAgICAgICAgICAgIGZpbGVSZWZlcmVuY2UgPSBmaWxlUmVmZXJlbmNlLlN1YnN0cmluZyhQcm9qZWN0RGlyZWN0b3J5VmFyaWFibGUuTGVuZ3RoICsgMSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUxvY2F0aW9uKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBVcmlCYXNlSWQgPSB1cmlCYXNlSWQsDQogICAgICAgICAgICAgICAgVXJpID0gbmV3IFVyaShmaWxlUmVmZXJlbmNlLCBVcmlLaW5kLlJlbGF0aXZlT3JBYnNvbHV0ZSkNCiAgICAgICAgICAgIH07DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyBSZXN1bHRMZXZlbCBDb252ZXJ0RnhDb3BMZXZlbFRvUmVzdWx0TGV2ZWwoc3RyaW5nIGZ4Y29wTGV2ZWwsIG91dCBib29sIG1hcHNEaXJlY3RseVRvU2FyaWZOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBtYXBzRGlyZWN0bHlUb1NhcmlmTmFtZSA9IHRydWU7DQoNCiAgICAgICAgICAgIC8vIFZhbHVlcyBiZWxvdyBkZXJpdmVkIGZyb20gZGVmaW5pdGlvbiBvZiBGeENvcCBNZXNzYWdlTGV2ZWwgZW51bQ0KICAgICAgICAgICAgLy8gTWljcm9zb2Z0LlZpc3VhbFN0dWRpby5Db2RlQW5hbHlzaXMuRXh0ZW5zaWJpbGl0eS5NZXNzYWdlTGV2ZWwNCg0KICAgICAgICAgICAgc3dpdGNoIChmeGNvcExldmVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgIkVycm9yIjoNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHRMZXZlbC5FcnJvcjsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBjYXNlICJDcml0aWNhbEVycm9yIjoNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG1hcHNEaXJlY3RseVRvU2FyaWZOYW1lID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHRMZXZlbC5FcnJvcjsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBjYXNlICJXYXJuaW5nIjoNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHRMZXZlbC5XYXJuaW5nOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGNhc2UgIkNyaXRpY2FsV2FybmluZyI6DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBtYXBzRGlyZWN0bHlUb1NhcmlmTmFtZSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0TGV2ZWwuV2FybmluZzsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBjYXNlICJJbmZvcm1hdGlvbiI6DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBtYXBzRGlyZWN0bHlUb1NhcmlmTmFtZSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0TGV2ZWwuTm90ZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBJbiBzb21lIGNpcmN1bXN0YW5jZXMsIHN1Y2ggYXMgcmVwb3J0aW5nIGFuICdleGNsdWRlZCcgbWVzc2FnZSwNCiAgICAgICAgICAgIC8vIEZ4Q29wIHByb3ZpZGVzIG5vIE1lc3NhZ2VMZXZlbC4gRm9yIHRoZXNlIGlzc3Vlcywgd2Ugc2hvdWxkbid0DQogICAgICAgICAgICAvLyBlbWl0IGFueSB2YWx1ZSBhdCBhbGwNCiAgICAgICAgICAgIG1hcHNEaXJlY3RseVRvU2FyaWZOYW1lID0gZmFsc2U7DQogICAgICAgICAgICByZXR1cm4gUmVzdWx0TGV2ZWwuRGVmYXVsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBHZXRGaWxlUGF0aChGeENvcExvZ1JlYWRlci5Db250ZXh0IGNvbnRleHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChjb250ZXh0LlBhdGggPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5GaWxlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoY29udGV4dC5GaWxlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRGVidWcuRmFpbCgiRnhDb3Agd2l0aCBwYXRoIHNldCBidXQgZmlsZSB1bnNldC4iKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5QYXRoOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBQYXRoLkNvbWJpbmUoY29udGV4dC5QYXRoLCBjb250ZXh0LkZpbGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdHJpbmcgQ3JlYXRlRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZShGeENvcExvZ1JlYWRlci5Db250ZXh0IGNvbnRleHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXkgPSBudWxsOw0KICAgICAgICAgICAgc3RyaW5nIGRlbGltaXRlciA9IHN0cmluZy5FbXB0eTsNCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjb250ZXh0Lk1vZHVsZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcGFyZW50TG9naWNhbExvY2F0aW9uS2V5ID0gQWRkTG9naWNhbExvY2F0aW9uKHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSwgY29udGV4dC5Nb2R1bGUsIExvZ2ljYWxMb2NhdGlvbktpbmQuTW9kdWxlLCBkZWxpbWl0ZXIpOw0KICAgICAgICAgICAgICAgIGRlbGltaXRlciA9ICIhIjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjb250ZXh0LlJlc291cmNlKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXkgPSBBZGRMb2dpY2FsTG9jYXRpb24ocGFyZW50TG9naWNhbExvY2F0aW9uS2V5LCBjb250ZXh0LlJlc291cmNlLCBMb2dpY2FsTG9jYXRpb25LaW5kLlJlc291cmNlLCBkZWxpbWl0ZXIpOw0KICAgICAgICAgICAgICAgIGRlbGltaXRlciA9ICIuIjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjb250ZXh0Lk5hbWVzcGFjZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcGFyZW50TG9naWNhbExvY2F0aW9uS2V5ID0gQWRkTG9naWNhbExvY2F0aW9uKHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSwgY29udGV4dC5OYW1lc3BhY2UsIExvZ2ljYWxMb2NhdGlvbktpbmQuTmFtZXNwYWNlLCBkZWxpbWl0ZXIpOw0KICAgICAgICAgICAgICAgIGRlbGltaXRlciA9ICIuIjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjb250ZXh0LlR5cGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSA9IEFkZExvZ2ljYWxMb2NhdGlvbihwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXksIGNvbnRleHQuVHlwZSwgTG9naWNhbExvY2F0aW9uS2luZC5UeXBlLCBkZWxpbWl0ZXIpOw0KICAgICAgICAgICAgICAgIGRlbGltaXRlciA9ICIuIjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjb250ZXh0Lk1lbWJlcikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RyaW5nIG1lbWJlciA9IGNvbnRleHQuTWVtYmVyICE9IG51bGwgPyBjb250ZXh0Lk1lbWJlci5UcmltKCcjJykgOiBudWxsOw0KICAgICAgICAgICAgICAgIHBhcmVudExvZ2ljYWxMb2NhdGlvbktleSA9IEFkZExvZ2ljYWxMb2NhdGlvbihwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXksIG1lbWJlciwgTG9naWNhbExvY2F0aW9uS2luZC5NZW1iZXIsIGRlbGltaXRlcik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBwYXJlbnRMb2dpY2FsTG9jYXRpb25LZXk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0cmluZyBBZGRMb2dpY2FsTG9jYXRpb24oc3RyaW5nIHBhcmVudEtleSwgc3RyaW5nIHZhbHVlLCBzdHJpbmcga2luZCwgc3RyaW5nIGRlbGltaXRlciA9ICIuIikNCiAgICAgICAgew0KICAgICAgICAgICAgdmFyIGxvZ2ljYWxMb2NhdGlvbiA9IG5ldyBMb2dpY2FsTG9jYXRpb24NCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQYXJlbnRLZXkgPSBwYXJlbnRLZXksDQogICAgICAgICAgICAgICAgS2luZCA9IGtpbmQsDQogICAgICAgICAgICAgICAgTmFtZSA9IHZhbHVlDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICByZXR1cm4gQWRkTG9naWNhbExvY2F0aW9uKGxvZ2ljYWxMb2NhdGlvbiwgZGVsaW1pdGVyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgQWRkUHJvcGVydHkoUmVzdWx0IHJlc3VsdCwgc3RyaW5nIHZhbHVlLCBzdHJpbmcga2V5KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIVN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodmFsdWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdC5TZXRQcm9wZXJ0eShrZXksIHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gUGx1Z2dhYmxlIEZ4Q29wIGxvZyByZWFkZXINCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBGeENvcExvZ1JlYWRlcg0KICAgIHsNCiAgICAgICAgcHVibGljIGRlbGVnYXRlIHZvaWQgT25SdWxlUmVhZChDb250ZXh0IGNvbnRleHQpOw0KICAgICAgICBwdWJsaWMgZGVsZWdhdGUgdm9pZCBPbklzc3VlUmVhZChDb250ZXh0IGNvbnRleHQpOw0KDQogICAgICAgIHB1YmxpYyBldmVudCBPblJ1bGVSZWFkIFJ1bGVSZWFkOw0KICAgICAgICBwdWJsaWMgZXZlbnQgT25Jc3N1ZVJlYWQgUmVzdWx0UmVhZDsNCg0KICAgICAgICBwcml2YXRlIGJvb2wgX3JlYWRpbmdQcm9qZWN0RmlsZTsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBTcGFyc2VSZWFkZXJEaXNwYXRjaFRhYmxlIF9kaXNwYXRjaFRhYmxlOw0KDQogICAgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIEZ4Q29wUmVwb3J0U2NoZW1hID0gIk1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycy5TY2hlbWF0YS5GeENvcFJlcG9ydC54c2QiOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEN1cnJlbnQgY29udGV4dCBvZiB0aGUgcmVzdWx0IA0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHJlbWFya3M+DQogICAgICAgIC8vLyBUaGUgY29udGV4dCBhY2N1bXVsYXRlcyBpbiBtZW1vcnkgZHVyaW5nIHRoZSBzdHJlYW1pbmcsDQogICAgICAgIC8vLyBidXQgdGhlIGluZm9ybWF0aW9uIHdlIGdhdGhlciBpcyB2ZXJ5IGxpbWl0ZWQsDQogICAgICAgIC8vLyBhbmQgdGhlcmUgaXMgb25seSBvbmUgY29udGV4dCBvYmplY3QgcGVyIGlucHV0IGZpbGUNCiAgICAgICAgLy8vIGN1cnJlbnRseSBjb25zdHJ1Y3RlZA0KICAgICAgICAvLy8gPC9yZW1hcmtzPg0KICAgICAgICBpbnRlcm5hbCBjbGFzcyBDb250ZXh0DQogICAgICAgIHsNCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgUmVwb3J0IHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIGJvb2wgRXhjZXB0aW9uIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBFeGNlcHRpb25UeXBlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBFeGNlcHRpb25NZXNzYWdlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBTdGFja1RyYWNlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBJbm5lckV4Y2VwdGlvblR5cGUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIElubmVyRXhjZXB0aW9uTWVzc2FnZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgSW5uZXJTdGFja1RyYWNlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBFeGNlcHRpb25UYXJnZXQgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFRhcmdldCB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgTW9kdWxlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBOYW1lc3BhY2UgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFJlc291cmNlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBNZW1iZXIgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFR5cGUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIENoZWNrSWQgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIE1lc3NhZ2VJZCB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgQ2F0ZWdvcnkgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFR5cGVuYW1lIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBGaXhDYXRlZ29yeSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgU3RhdHVzIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBNZXNzYWdlIHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIElMaXN0PHN0cmluZz4gSXRlbXMgeyBnZXQ7IHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBSZXNvbHV0aW9uTmFtZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgQ2VydGFpbnR5IHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KICAgICAgICAgICAgcHVibGljIHN0cmluZyBMZXZlbCB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgUGF0aCB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgRmlsZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBpbnQ/IExpbmUgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gUmVzb2x1dGlvbnMgeyBnZXQ7IHByaXZhdGUgc2V0OyB9DQogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVUeXBlTmFtZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0NCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgUnVsZUNhdGVnb3J5IHsgZ2V0OyBwcml2YXRlIHNldDsgfQ0KDQogICAgICAgICAgICAvLyBjYWxjdWxhdGUgcmVzdWx0J3MgdW5pcXVlIGlkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbnRleHQNCiAgICAgICAgICAgIHB1YmxpYyBzdHJpbmcgR2V0VW5pcXVlSWQoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChFeGNlcHRpb24pDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ3JlYXRlSWQoRXhjZXB0aW9uVGFyZ2V0LCBFeGNlcHRpb25UeXBlLCBNZXNzYWdlSWQsIFJlc29sdXRpb25OYW1lKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIENyZWF0ZUlkKE1lc3NhZ2VJZCwgUmVzb2x1dGlvbk5hbWUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgQ3JlYXRlSWQocGFyYW1zIHN0cmluZ1tdIHBhcnRzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciB1cGRhdGVkID0gcGFydHMNCiAgICAgICAgICAgICAgICAgICAgLldoZXJlKHBhcnQgPT4gIVN0cmluZy5Jc051bGxPckVtcHR5KHBhcnQpKQ0KICAgICAgICAgICAgICAgICAgICAuU2VsZWN0KHBhcnQgPT4gcGFydC5UcmltU3RhcnQoJyMnKSk7DQoNCiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLkpvaW4oIiMiLCB1cGRhdGVkLlRvQXJyYXkoKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIFJlZmluZVJlcG9ydChzdHJpbmcgcmVwb3J0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlcG9ydCA9IHJlcG9ydDsNCiAgICAgICAgICAgICAgICBDbGVhclRhcmdldCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBSZWZpbmVSdWxlKHN0cmluZyB0eXBlTmFtZSwgc3RyaW5nIGNhdGVnb3J5LCBzdHJpbmcgY2hlY2tJZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSdWxlVHlwZU5hbWUgPSB0eXBlTmFtZTsNCiAgICAgICAgICAgICAgICBSdWxlQ2F0ZWdvcnkgPSBjYXRlZ29yeTsNCiAgICAgICAgICAgICAgICBDaGVja0lkID0gY2hlY2tJZDsNCiAgICAgICAgICAgICAgICBDbGVhclJlc29sdXRpb25zKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIFJlZmluZVRhcmdldChzdHJpbmcgdGFyZ2V0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFRhcmdldCA9IHRhcmdldDsNCiAgICAgICAgICAgICAgICBDbGVhck1vZHVsZSgpOw0KICAgICAgICAgICAgICAgIENsZWFyUmVzb3VyY2UoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lUmVzb3VyY2Uoc3RyaW5nIHJlc291cmNlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlc291cmNlID0gcmVzb3VyY2U7DQogICAgICAgICAgICAgICAgQ2xlYXJOYW1lc3BhY2UoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lTW9kdWxlKHN0cmluZyBtb2R1bGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTW9kdWxlID0gbW9kdWxlOw0KICAgICAgICAgICAgICAgIENsZWFyTWVzc2FnZSgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBSZWZpbmVOYW1lc3BhY2Uoc3RyaW5nIG5hbWVTcGFjZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOYW1lc3BhY2UgPSBuYW1lU3BhY2U7DQogICAgICAgICAgICAgICAgQ2xlYXJUeXBlKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIFJlZmluZVR5cGUoc3RyaW5nIHR5cGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVHlwZSA9IHR5cGU7DQogICAgICAgICAgICAgICAgQ2xlYXJNZW1iZXIoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lTWVtYmVyKHN0cmluZyBtZW1iZXIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVtYmVyID0gbWVtYmVyOw0KICAgICAgICAgICAgICAgIENsZWFyTWVzc2FnZSgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBSZWZpbmVNZXNzYWdlKHN0cmluZyBjaGVja0lkLCBzdHJpbmcgdHlwZW5hbWUsIHN0cmluZyBtZXNzYWdlSWQsIHN0cmluZyBjYXRlZ29yeSwgc3RyaW5nIGZpeGNhdGVnb3J5LCBzdHJpbmcgc3RhdHVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIENoZWNrSWQgPSBjaGVja0lkOw0KICAgICAgICAgICAgICAgIE1lc3NhZ2VJZCA9IG1lc3NhZ2VJZDsNCiAgICAgICAgICAgICAgICBDYXRlZ29yeSA9IGNhdGVnb3J5Ow0KICAgICAgICAgICAgICAgIFR5cGVuYW1lID0gdHlwZW5hbWU7DQogICAgICAgICAgICAgICAgRml4Q2F0ZWdvcnkgPSBmaXhjYXRlZ29yeTsNCiAgICAgICAgICAgICAgICBTdGF0dXMgPSBzdGF0dXM7DQoNCiAgICAgICAgICAgICAgICBDbGVhcklzc3VlKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIFJlZmluZUlzc3VlKHN0cmluZyBtZXNzYWdlLCBzdHJpbmcgcmVzdWx0LCBzdHJpbmcgY2VydGFpbnR5LCBzdHJpbmcgbGV2ZWwsIHN0cmluZyBwYXRoLCBzdHJpbmcgZmlsZSwgaW50PyBsaW5lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE1lc3NhZ2UgPSBtZXNzYWdlOw0KICAgICAgICAgICAgICAgIFJlc29sdXRpb25OYW1lID0gcmVzdWx0Ow0KICAgICAgICAgICAgICAgIENlcnRhaW50eSA9IGNlcnRhaW50eTsNCiAgICAgICAgICAgICAgICBMZXZlbCA9IGxldmVsOw0KICAgICAgICAgICAgICAgIFBhdGggPSBwYXRoOw0KICAgICAgICAgICAgICAgIEZpbGUgPSBmaWxlOw0KICAgICAgICAgICAgICAgIExpbmUgPSBsaW5lOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBSZWZpbmVJdGVtKHN0cmluZyBpdGVtKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEl0ZW1zID0gSXRlbXMgPz8gbmV3IExpc3Q8c3RyaW5nPigpOw0KICAgICAgICAgICAgICAgIEl0ZW1zLkFkZChpdGVtKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lUmVzb2x1dGlvbihzdHJpbmcgbmFtZSwgc3RyaW5nIGZvcm1hdFN0cmluZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZXNvbHV0aW9ucyA9IFJlc29sdXRpb25zID8/IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPigpOw0KICAgICAgICAgICAgICAgIFJlc29sdXRpb25zW25hbWVdID0gZm9ybWF0U3RyaW5nOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBSZWZpbmVFeGNlcHRpb24oYm9vbCBpc0V4Y2VwdGlvbiwgc3RyaW5nIGNoZWNrSWQsIHN0cmluZyB0YXJnZXQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgQ2xlYXJUYXJnZXQoKTsNCg0KICAgICAgICAgICAgICAgIEV4Y2VwdGlvbiA9IGlzRXhjZXB0aW9uOw0KICAgICAgICAgICAgICAgIENoZWNrSWQgPSBjaGVja0lkOw0KICAgICAgICAgICAgICAgIEV4Y2VwdGlvblRhcmdldCA9IHRhcmdldDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lRXhjZXB0aW9uVHlwZShzdHJpbmcgdHlwZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBFeGNlcHRpb25UeXBlID0gdHlwZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lRXhjZXB0aW9uTWVzc2FnZShzdHJpbmcgbWVzc2FnZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBFeGNlcHRpb25NZXNzYWdlID0gbWVzc2FnZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lU3RhY2tUcmFjZShzdHJpbmcgc3RhY2spDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RhY2tUcmFjZSA9IHN0YWNrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBSZWZpbmVJbm5lckV4Y2VwdGlvblR5cGUoc3RyaW5nIHR5cGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSW5uZXJFeGNlcHRpb25UeXBlID0gdHlwZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgUmVmaW5lSW5uZXJFeGNlcHRpb25NZXNzYWdlKHN0cmluZyBtZXNzYWdlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIElubmVyRXhjZXB0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIFJlZmluZUlubmVyU3RhY2tUcmFjZShzdHJpbmcgc3RhY2spDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSW5uZXJTdGFja1RyYWNlID0gc3RhY2s7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIENsZWFyUmVwb3J0KCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZWZpbmVSZXBvcnQobnVsbCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBwdWJsaWMgdm9pZCBDbGVhckV4Y2VwdGlvbigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVmaW5lRXhjZXB0aW9uKGZhbHNlLCBudWxsLCBudWxsKTsNCiAgICAgICAgICAgICAgICBFeGNlcHRpb25NZXNzYWdlID0gbnVsbDsNCiAgICAgICAgICAgICAgICBFeGNlcHRpb25UeXBlID0gbnVsbDsNCiAgICAgICAgICAgICAgICBTdGFja1RyYWNlID0gbnVsbDsNCiAgICAgICAgICAgICAgICBJbm5lckV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxsOw0KICAgICAgICAgICAgICAgIElubmVyRXhjZXB0aW9uVHlwZSA9IG51bGw7DQogICAgICAgICAgICAgICAgSW5uZXJTdGFja1RyYWNlID0gbnVsbDsNCg0KICAgICAgICAgICAgICAgIENsZWFySXNzdWUoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgQ2xlYXJUYXJnZXQoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlZmluZVRhcmdldChudWxsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgQ2xlYXJNb2R1bGUoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlZmluZU1vZHVsZShudWxsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgQ2xlYXJSZXNvdXJjZSgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVmaW5lUmVzb3VyY2UobnVsbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIENsZWFyTmFtZXNwYWNlKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZWZpbmVOYW1lc3BhY2UobnVsbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIENsZWFyVHlwZSgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVmaW5lVHlwZShudWxsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgQ2xlYXJNZW1iZXIoKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlZmluZU1lbWJlcihudWxsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgQ2xlYXJNZXNzYWdlKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZWZpbmVNZXNzYWdlKG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBwdWJsaWMgdm9pZCBDbGVhcklzc3VlKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZWZpbmVJc3N1ZShudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsNCiAgICAgICAgICAgICAgICBJdGVtcyA9IG51bGw7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIENsZWFyUnVsZSgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVmaW5lUnVsZShudWxsLCBudWxsLCBudWxsKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcHVibGljIHZvaWQgQ2xlYXJSZXNvbHV0aW9ucygpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVzb2x1dGlvbnMgPSBudWxsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gRnhDb3AgeG1sIGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNjaGVtYVN0cmluZ3MNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gZWxlbWVudHMNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudEZ4Q29wUHJvamVjdCA9ICJGeENvcFByb2plY3QiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50RnhDb3BSZXBvcnQgPSAiRnhDb3BSZXBvcnQiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50RXhjZXB0aW9ucyA9ICJFeGNlcHRpb25zIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudEV4Y2VwdGlvbiA9ICJFeGNlcHRpb24iOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50RXhjZXB0aW9uTWVzc2FnZSA9ICJFeGNlcHRpb25NZXNzYWdlIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudFN0YWNrVHJhY2UgPSAiU3RhY2tUcmFjZSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRJbm5lclR5cGUgPSAiSW5uZXJUeXBlIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudElubmVyRXhjZXB0aW9uTWVzc2FnZSA9ICJJbm5lckV4Y2VwdGlvbk1lc3NhZ2UiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50SW5uZXJTdGFja1RyYWNlID0gIklubmVyU3RhY2tUcmFjZSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRSdWxlcyA9ICJSdWxlcyI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRSdWxlID0gIlJ1bGUiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50VGFyZ2V0cyA9ICJUYXJnZXRzIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudFRhcmdldCA9ICJUYXJnZXQiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50TW9kdWxlcyA9ICJNb2R1bGVzIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudE1vZHVsZSA9ICJNb2R1bGUiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50UmVzb3VyY2VzID0gIlJlc291cmNlcyI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRSZXNvdXJjZSA9ICJSZXNvdXJjZSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnROYW1lc3BhY2VzID0gIk5hbWVzcGFjZXMiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50TmFtZXNwYWNlID0gIk5hbWVzcGFjZSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRUeXBlcyA9ICJUeXBlcyI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRUeXBlID0gIlR5cGUiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50TWVtYmVycyA9ICJNZW1iZXJzIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudE1lbWJlciA9ICJNZW1iZXIiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50TWVzc2FnZXMgPSAiTWVzc2FnZXMiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbGVtZW50TWVzc2FnZSA9ICJNZXNzYWdlIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudElzc3VlID0gIklzc3VlIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgRWxlbWVudEl0ZW0gPSAiSXRlbSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVsZW1lbnRSZXNvbHV0aW9uID0gIlJlc29sdXRpb24iOw0KDQogICAgICAgICAgICAvLyBhdHRyaWJ1dGVzIChyZXBvcnQpDQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZVZlcnNpb24gPSAiVmVyc2lvbiI7DQoNCiAgICAgICAgICAgIC8vIGF0dHJpYnV0ZXMgKHRhcmdldCArIHJ1bGUpDQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZU5hbWUgPSAiTmFtZSI7DQoNCiAgICAgICAgICAgIC8vIGF0dHJpYnV0ZXMgKHR5cGUpDQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZUtpbmQgPSAiS2luZCI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZUFjY2Vzc2liaWxpdHkgPSAiQWNjZXNzaWJpbGl0eSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZUV4dGVybmFsbHlWaXNpYmxlID0gIkV4dGVybmFsbHlWaXNpYmxlIjsNCg0KICAgICAgICAgICAgLy8gYXR0cmlidXRlcyAobWVtYmVyKQ0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBBdHRyaWJ1dGVTdGF0aWMgPSAiU3RhdGljIjsNCg0KICAgICAgICAgICAgLy8gYXR0cmlidXRlcyAobWVzc2FnZSArIHJ1bGUpDQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZUlkID0gIklkIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgQXR0cmlidXRlVHlwZU5hbWUgPSAiVHlwZU5hbWUiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBBdHRyaWJ1dGVDYXRlZ29yeSA9ICJDYXRlZ29yeSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZUNoZWNrSWQgPSAiQ2hlY2tJZCI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZVN0YXR1cyA9ICJTdGF0dXMiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBBdHRyaWJ1dGVDcmVhdGVkID0gIkNyZWF0ZWQiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBBdHRyaWJ1dGVGaXhDYXRlZ29yeSA9ICJGaXhDYXRlZ29yeSI7DQoNCiAgICAgICAgICAgIC8vIGF0dHJpYnV0ZXMgKHJlc3VsdCkNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgQXR0cmlidXRlQ2VydGFpbnR5ID0gIkNlcnRhaW50eSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEF0dHJpYnV0ZUxldmVsID0gIkxldmVsIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgQXR0cmlidXRlUGF0aCA9ICJQYXRoIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgQXR0cmlidXRlRmlsZSA9ICJGaWxlIjsNCiAgICAgICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgQXR0cmlidXRlTGluZSA9ICJMaW5lIjsNCg0KICAgICAgICAgICAgLy8gYXR0cmlidXRlcyAoZXhjZXB0aW9uKQ0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBBdHRyaWJ1dGVLZXl3b3JkID0gIktleXdvcmQiOw0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBBdHRyaWJ1dGVUYXJnZXQgPSAiVGFyZ2V0IjsNCg0KICAgICAgICAgICAgLy8gZW51bXMgKGV4Y2VwdGlvbiBraW5kKQ0KICAgICAgICAgICAgcHVibGljIGNvbnN0IHN0cmluZyBFbnVtRW5naW5lID0gIkVuZ2luZSI7DQogICAgICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIEVudW1SdWxlID0gIlJ1bGUiOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ29uc3RydWN0b3IgdG8gaHlkcmF0ZSB0aGUgcHJpdmF0ZSBtZW1iZXJzDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGeENvcExvZ1JlYWRlcigpDQogICAgICAgIHsNCiAgICAgICAgICAgIF9kaXNwYXRjaFRhYmxlID0gbmV3IFNwYXJzZVJlYWRlckRpc3BhdGNoVGFibGUNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50RnhDb3BSZXBvcnQsIFJlYWRGeENvcFJlcG9ydH0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudEV4Y2VwdGlvbnMsIFJlYWRFeGNlcHRpb25zfSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50RXhjZXB0aW9uLCBSZWFkRXhjZXB0aW9ufSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50RXhjZXB0aW9uTWVzc2FnZSwgUmVhZEV4Y2VwdGlvbk1lc3NhZ2V9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRTdGFja1RyYWNlLCBSZWFkU3RhY2tUcmFjZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudElubmVyVHlwZSwgUmVhZElubmVyRXhjZXB0aW9uVHlwZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudElubmVyRXhjZXB0aW9uTWVzc2FnZSwgUmVhZElubmVyRXhjZXB0aW9uTWVzc2FnZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudElubmVyU3RhY2tUcmFjZSwgUmVhZElubmVyU3RhY2tUcmFjZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudFJ1bGVzLCBSZWFkUnVsZXN9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRSdWxlLCBSZWFkUnVsZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudFJlc29sdXRpb24sIFJlYWRSZXNvbHV0aW9ufSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50VGFyZ2V0cywgUmVhZFRhcmdldHN9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRUYXJnZXQsIFJlYWRUYXJnZXR9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRSZXNvdXJjZXMsIFJlYWRSZXNvdXJjZXN9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRSZXNvdXJjZSwgUmVhZFJlc291cmNlfSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50TW9kdWxlcywgUmVhZE1vZHVsZXN9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRNb2R1bGUsIFJlYWRNb2R1bGV9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnROYW1lc3BhY2VzLCBSZWFkTmFtZXNwYWNlc30sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudE5hbWVzcGFjZSwgUmVhZE5hbWVzcGFjZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudFR5cGVzLCBSZWFkVHlwZXN9LA0KICAgICAgICAgICAgICAgIHtTY2hlbWFTdHJpbmdzLkVsZW1lbnRUeXBlLCBSZWFkVHlwZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudE1lbWJlcnMsIFJlYWRNZW1iZXJzfSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50TWVtYmVyLCBSZWFkTWVtYmVyfSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50TWVzc2FnZXMsIFJlYWRNZXNzYWdlc30sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudE1lc3NhZ2UsIFJlYWRNZXNzYWdlfSwNCiAgICAgICAgICAgICAgICB7U2NoZW1hU3RyaW5ncy5FbGVtZW50SXNzdWUsIFJlYWRJc3N1ZX0sDQogICAgICAgICAgICAgICAge1NjaGVtYVN0cmluZ3MuRWxlbWVudEl0ZW0sIFJlYWRJdGVtfSwNCiAgICAgICAgICAgIH07DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBSZWFkKENvbnRleHQgY29udGV4dCwgU3RyZWFtIGlucHV0KQ0KICAgICAgICB7DQogICAgICAgICAgICBYbWxTY2hlbWFTZXQgc2NoZW1hU2V0ID0gbmV3IFhtbFNjaGVtYVNldCgpOw0KICAgICAgICAgICAgQXNzZW1ibHkgYXNzZW1ibHkgPSB0eXBlb2YoRnhDb3BMb2dSZWFkZXIpLkFzc2VtYmx5Ow0KICAgICAgICAgICAgdmFyIHNldHRpbmdzID0gbmV3IFhtbFJlYWRlclNldHRpbmdzDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRHRkUHJvY2Vzc2luZyA9IER0ZFByb2Nlc3NpbmcuSWdub3JlLA0KICAgICAgICAgICAgICAgIFhtbFJlc29sdmVyID0gbnVsbA0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdXNpbmcgKHZhciBzdHJlYW0gPSBhc3NlbWJseS5HZXRNYW5pZmVzdFJlc291cmNlU3RyZWFtKEZ4Q29wTG9nUmVhZGVyLkZ4Q29wUmVwb3J0U2NoZW1hKSkNCiAgICAgICAgICAgIHVzaW5nICh2YXIgcmVhZGVyID0gWG1sUmVhZGVyLkNyZWF0ZShzdHJlYW0sIHNldHRpbmdzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBYbWxTY2hlbWEgc2NoZW1hID0gWG1sU2NoZW1hLlJlYWQocmVhZGVyLCBuZXcgVmFsaWRhdGlvbkV2ZW50SGFuZGxlcihSZXBvcnRFcnJvcikpOw0KICAgICAgICAgICAgICAgIHNjaGVtYVNldC5BZGQoc2NoZW1hKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdXNpbmcgKHZhciBzcGFyc2VSZWFkZXIgPSBTcGFyc2VSZWFkZXIuQ3JlYXRlRnJvbVN0cmVhbShfZGlzcGF0Y2hUYWJsZSwgaW5wdXQsIHNjaGVtYVNldCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gRnhDb3AgZGlzdGluY3Rpb25zIGJldHdlZW4gcHJvamVjdCBhbmQgcmVwb3J0IGZpbGVzLg0KICAgICAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgICAgIC8vIDEuIFByb2plY3QgZmlsZXMgYXJlIGRlc2lnbmVkIHRvIGJlIGRldGVybWluaXN0aWMgaW4gb3V0cHV0IGFuZCB0aGVyZWZvcmUNCiAgICAgICAgICAgICAgICAvLyAgICBkbyBub3QgZW1pdCBhbnkgZmlsZSBsb2NhdGlvbnMsIG9ubHkgbG9naWNhbCBsb2NhdGlvbnMuDQogICAgICAgICAgICAgICAgLy8gMi4gUHJvamVjdCBmaWxlcyBkbyBub3QgZW1pdCBmdWxseS1jb25zdHJ1Y3RlZCBtZXNzYWdlcywgb25seSBkeW5hbWljDQogICAgICAgICAgICAgICAgLy8gICAgYXJndW1lbnRzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBydWxlIGZvcm1hdCBzdHJpbmdzIHRvIGNvbnN0cnVjdCBhIG1lc3NhZ2UuDQogICAgICAgICAgICAgICAgLy8gMy4gUHJvamVjdCBmaWxlcyBieSBkZWZhdWx0IHBlcnNpc3QgZXhjbHVkZWQgbWVzc2FnZSBidXQgbm90IGFic2VudA0KICAgICAgICAgICAgICAgIC8vICAgIG1lc3NhZ2VzLiBSZXBvcnQgZmlsZXMgYnkgZGVmYXVsdCBwZXJzaXN0IG5laXRoZXIgZXhjbHVkZWQgb3IgYWJzZW50DQogICAgICAgICAgICAgICAgLy8gICAgbWVzc2FnZXMuDQoNCiAgICAgICAgICAgICAgICBpZiAoc3BhcnNlUmVhZGVyLkxvY2FsTmFtZS5FcXVhbHMoU2NoZW1hU3RyaW5ncy5FbGVtZW50RnhDb3BQcm9qZWN0KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIF9yZWFkaW5nUHJvamVjdEZpbGUgPSB0cnVlOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIFNraXAgcHJvamVjdCBpbmZvcm1hdGlvbiwgd2hpY2ggc2hvdWxkIGxlYWQgdXMgdG8gdGhlIHJlcG9ydCB0aGF0DQogICAgICAgICAgICAgICAgICAgIC8vIGhvbGRzIGVtaXR0ZWQgbWVzc2FnZXMuDQogICAgICAgICAgICAgICAgICAgIHNwYXJzZVJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50RnhDb3BQcm9qZWN0LCBjb250ZXh0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc3BhcnNlUmVhZGVyLkxvY2FsTmFtZS5FcXVhbHMoU2NoZW1hU3RyaW5ncy5FbGVtZW50RnhDb3BSZXBvcnQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUmVhZEZ4Q29wUmVwb3J0KHNwYXJzZVJlYWRlciwgY29udGV4dCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBYbWxFeGNlcHRpb24oU3RyaW5nLkZvcm1hdChDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLCAiSW52YWxpZCByb290IGVsZW1lbnQgaW4gRnhDb3AgbG9nIGZpbGU6IHswfSIsIHNwYXJzZVJlYWRlci5Mb2NhbE5hbWUpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFJlcG9ydEVycm9yKG9iamVjdCBzZW5kZXIsIEV2ZW50QXJncyBlKQ0KICAgICAgICB7DQogICAgICAgICAgICB0aHJvdyBuZXcgWG1sRXhjZXB0aW9uKGUuVG9TdHJpbmcoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFJlYWRGeENvcFJlcG9ydChTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lUmVwb3J0KHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlVmVyc2lvbikpOw0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRGeENvcFJlcG9ydCwgcGFyZW50KTsNCiAgICAgICAgICAgIGNvbnRleHQuQ2xlYXJSZXBvcnQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZEV4Y2VwdGlvbnMoU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRFeGNlcHRpb25zLCBwYXJlbnQpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFJlYWRFeGNlcHRpb24oU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KDQogICAgICAgICAgICBzdHJpbmcgcnVsZUlkID0gcmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVLZXl3b3JkKTsNCiAgICAgICAgICAgIHN0cmluZyBraW5kID0gcmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVLaW5kKTsNCiAgICAgICAgICAgIHN0cmluZyBjaGVja0lkID0gcmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVDaGVja0lkKTsNCiAgICAgICAgICAgIHN0cmluZyB0YXJnZXQgPSByZWFkZXIuUmVhZEF0dHJpYnV0ZVN0cmluZyhTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZVRhcmdldCk7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lRXhjZXB0aW9uKHRydWUsIHJ1bGVJZCwgdGFyZ2V0KTsNCg0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRFeGNlcHRpb24sIHBhcmVudCk7DQoNCiAgICAgICAgICAgIHN0cmluZyBleGNlcHRpb24gPSBNYWtlRXhjZXB0aW9uTWVzc2FnZShraW5kLCBjaGVja0lkLCBjb250ZXh0LkV4Y2VwdGlvblR5cGUsIGNvbnRleHQuRXhjZXB0aW9uTWVzc2FnZSwgY29udGV4dC5TdGFja1RyYWNlLCBjb250ZXh0LklubmVyRXhjZXB0aW9uVHlwZSwgY29udGV4dC5Jbm5lckV4Y2VwdGlvbk1lc3NhZ2UsIGNvbnRleHQuSW5uZXJTdGFja1RyYWNlKTsNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lSXNzdWUoZXhjZXB0aW9uLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsNCg0KICAgICAgICAgICAgaWYgKFJlc3VsdFJlYWQgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZXN1bHRSZWFkKGNvbnRleHQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBjb250ZXh0LkNsZWFySXNzdWUoKTsNCiAgICAgICAgICAgIGNvbnRleHQuQ2xlYXJFeGNlcHRpb24oKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZEV4Y2VwdGlvblR5cGUoU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KDQogICAgICAgICAgICBpZiAoY29udGV4dC5FeGNlcHRpb24pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgY29udGV4dC5SZWZpbmVFeGNlcHRpb25UeXBlKHJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZEV4Y2VwdGlvbk1lc3NhZ2UoU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KDQogICAgICAgICAgICBjb250ZXh0LlJlZmluZUV4Y2VwdGlvbk1lc3NhZ2UocmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBSZWFkU3RhY2tUcmFjZShTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lU3RhY2tUcmFjZShyZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUmVhZElubmVyRXhjZXB0aW9uVHlwZShTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lSW5uZXJFeGNlcHRpb25UeXBlKHJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZElubmVyRXhjZXB0aW9uTWVzc2FnZShTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lSW5uZXJFeGNlcHRpb25NZXNzYWdlKHJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZElubmVyU3RhY2tUcmFjZShTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lSW5uZXJTdGFja1RyYWNlKHJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZFJlc291cmNlcyhTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICByZWFkZXIuUmVhZENoaWxkcmVuKFNjaGVtYVN0cmluZ3MuRWxlbWVudFJlc291cmNlcywgcGFyZW50KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZFJlc291cmNlKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnRleHQgY29udGV4dCA9IChDb250ZXh0KXBhcmVudDsNCg0KICAgICAgICAgICAgY29udGV4dC5SZWZpbmVSZXNvdXJjZShyZWFkZXIuUmVhZEF0dHJpYnV0ZVN0cmluZyhTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZU5hbWUpKTsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50UmVzb3VyY2UsIHBhcmVudCk7DQogICAgICAgICAgICBjb250ZXh0LkNsZWFyUmVzb3VyY2UoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZFJ1bGVzKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50UnVsZXMsIHBhcmVudCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUmVhZFJ1bGUoU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KDQogICAgICAgICAgICBjb250ZXh0LlJlZmluZVJ1bGUoDQogICAgICAgICAgICAgICAgdHlwZU5hbWU6IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlVHlwZU5hbWUpLA0KICAgICAgICAgICAgICAgIGNhdGVnb3J5OiByZWFkZXIuUmVhZEF0dHJpYnV0ZVN0cmluZyhTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZUNhdGVnb3J5KSwNCiAgICAgICAgICAgICAgICBjaGVja0lkOiByZWFkZXIuUmVhZEF0dHJpYnV0ZVN0cmluZyhTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZUNoZWNrSWQpKTsNCg0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRSdWxlLCBwYXJlbnQpOw0KDQogICAgICAgICAgICBpZiAoUnVsZVJlYWQgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSdWxlUmVhZChjb250ZXh0KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgY29udGV4dC5DbGVhclJ1bGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZFJlc29sdXRpb24oU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KDQogICAgICAgICAgICBjb250ZXh0LlJlZmluZVJlc29sdXRpb24oDQogICAgICAgICAgICAgICAgbmFtZTogcmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVOYW1lKSwNCiAgICAgICAgICAgICAgICBmb3JtYXRTdHJpbmc6IHJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZFRhcmdldHMoU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRUYXJnZXRzLCBwYXJlbnQpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBSZWFkVGFyZ2V0KFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnRleHQgY29udGV4dCA9IChDb250ZXh0KXBhcmVudDsNCg0KICAgICAgICAgICAgY29udGV4dC5SZWZpbmVUYXJnZXQocmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVOYW1lKSk7DQogICAgICAgICAgICByZWFkZXIuUmVhZENoaWxkcmVuKFNjaGVtYVN0cmluZ3MuRWxlbWVudFRhcmdldCwgcGFyZW50KTsNCiAgICAgICAgICAgIGNvbnRleHQuQ2xlYXJUYXJnZXQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBSZWFkTW9kdWxlcyhTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICByZWFkZXIuUmVhZENoaWxkcmVuKFNjaGVtYVN0cmluZ3MuRWxlbWVudE1vZHVsZXMsIHBhcmVudCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUmVhZE1vZHVsZShTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lTW9kdWxlKHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlTmFtZSkpOw0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRNb2R1bGUsIHBhcmVudCk7DQogICAgICAgICAgICBjb250ZXh0LkNsZWFyTW9kdWxlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFJlYWROYW1lc3BhY2VzKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50TmFtZXNwYWNlcywgcGFyZW50KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBSZWFkTmFtZXNwYWNlKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnRleHQgY29udGV4dCA9IChDb250ZXh0KXBhcmVudDsNCg0KICAgICAgICAgICAgY29udGV4dC5SZWZpbmVOYW1lc3BhY2UocmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVOYW1lKSk7DQogICAgICAgICAgICByZWFkZXIuUmVhZENoaWxkcmVuKFNjaGVtYVN0cmluZ3MuRWxlbWVudE5hbWVzcGFjZSwgcGFyZW50KTsNCiAgICAgICAgICAgIGNvbnRleHQuQ2xlYXJOYW1lc3BhY2UoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZFR5cGVzKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50VHlwZXMsIHBhcmVudCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFJlYWRUeXBlKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnRleHQgY29udGV4dCA9IChDb250ZXh0KXBhcmVudDsNCg0KICAgICAgICAgICAgaWYgKGNvbnRleHQuRXhjZXB0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlYWRFeGNlcHRpb25UeXBlKHJlYWRlciwgcGFyZW50KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjb250ZXh0LlJlZmluZVR5cGUocmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVOYW1lKSk7DQogICAgICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRUeXBlLCBwYXJlbnQpOw0KICAgICAgICAgICAgICAgIGNvbnRleHQuQ2xlYXJUeXBlKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFJlYWRNZW1iZXJzKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50TWVtYmVycywgcGFyZW50KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUmVhZE1lbWJlcihTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICBDb250ZXh0IGNvbnRleHQgPSAoQ29udGV4dClwYXJlbnQ7DQoNCiAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lTWVtYmVyKHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlTmFtZSkpOw0KICAgICAgICAgICAgcmVhZGVyLlJlYWRDaGlsZHJlbihTY2hlbWFTdHJpbmdzLkVsZW1lbnRNZW1iZXIsIHBhcmVudCk7DQogICAgICAgICAgICBjb250ZXh0LkNsZWFyTWVtYmVyKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFJlYWRNZXNzYWdlcyhTcGFyc2VSZWFkZXIgcmVhZGVyLCBvYmplY3QgcGFyZW50KQ0KICAgICAgICB7DQogICAgICAgICAgICByZWFkZXIuUmVhZENoaWxkcmVuKFNjaGVtYVN0cmluZ3MuRWxlbWVudE1lc3NhZ2VzLCBwYXJlbnQpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFJlYWRNZXNzYWdlKFNwYXJzZVJlYWRlciByZWFkZXIsIG9iamVjdCBwYXJlbnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnRleHQgY29udGV4dCA9IChDb250ZXh0KXBhcmVudDsNCg0KICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2VJZCA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlSWQpOw0KICAgICAgICAgICAgc3RyaW5nIHR5cGVuYW1lID0gcmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVUeXBlTmFtZSk7DQogICAgICAgICAgICBzdHJpbmcgY2F0ZWdvcnkgPSByZWFkZXIuUmVhZEF0dHJpYnV0ZVN0cmluZyhTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZUNhdGVnb3J5KTsNCiAgICAgICAgICAgIHN0cmluZyBjaGVja0lkID0gcmVhZGVyLlJlYWRBdHRyaWJ1dGVTdHJpbmcoU2NoZW1hU3RyaW5ncy5BdHRyaWJ1dGVDaGVja0lkKTsNCiAgICAgICAgICAgIHN0cmluZyBmaXhDYXRlZ29yeSA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlRml4Q2F0ZWdvcnkpOw0KICAgICAgICAgICAgc3RyaW5nIHN0YXR1cyA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlU3RhdHVzKTsNCg0KICAgICAgICAgICAgY29udGV4dC5SZWZpbmVNZXNzYWdlKGNoZWNrSWQsIHR5cGVuYW1lLCBtZXNzYWdlSWQsIGNhdGVnb3J5LCBmaXhDYXRlZ29yeSwgc3RhdHVzKTsNCg0KICAgICAgICAgICAgaWYgKCJFeGNsdWRlZCIuRXF1YWxzKHN0YXR1cykgfHwgIkV4Y2x1ZGVkSW5Tb3VyY2UiLkVxdWFscyhzdGF0dXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIEZ4Q29wIGRvZXNuJ3QgYWN0dWFsbHkgZW1pdCBtZXNzYWdlIGRldGFpbHMgZm9yIG1vc3QgZXhjbHVkZWQgaXRlbXMNCiAgICAgICAgICAgICAgICAvLyBhbmQgc28gd2UgbXVzdCBmaXJlIGhlcmUgZm9yIHRoZXNlIGl0ZW1zLCBhcyB0aGUgc2NhbiBmb3IgY2hpbGQNCiAgICAgICAgICAgICAgICAvLyA8SXNzdWU+IGVsZW1lbnRzIG1heSBub3QgcHJvZHVjZSBhbnl0aGluZy4gRnhDb3Agc2VlbXMgdG8gZW1pdA0KICAgICAgICAgICAgICAgIC8vIGlzc3VlcyBmb3IgZXhjbHVkZWQgaXRlbXMgd2hpY2ggYXJlIGF0IHRoZSBuYW1lc3BhY2UgbGV2ZWwgb25seS4NCiAgICAgICAgICAgICAgICBpZiAoUmVzdWx0UmVhZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0UmVhZChjb250ZXh0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50TWVzc2FnZSwgcGFyZW50KTsNCg0KICAgICAgICAgICAgY29udGV4dC5DbGVhck1lc3NhZ2UoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBSZWFkSXNzdWUoU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KDQogICAgICAgICAgICBzdHJpbmcgcmVzb2x1dGlvbk5hbWUgPSByZWFkZXIuUmVhZEF0dHJpYnV0ZVN0cmluZyhTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZU5hbWUpOw0KICAgICAgICAgICAgc3RyaW5nIGNlcnRhaW50eSA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlQ2VydGFpbnR5KTsNCiAgICAgICAgICAgIHN0cmluZyBsZXZlbCA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlTGV2ZWwpOw0KDQogICAgICAgICAgICBzdHJpbmcgcGF0aCA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlUGF0aCk7DQogICAgICAgICAgICBzdHJpbmcgZmlsZSA9IHJlYWRlci5SZWFkQXR0cmlidXRlU3RyaW5nKFNjaGVtYVN0cmluZ3MuQXR0cmlidXRlRmlsZSk7DQogICAgICAgICAgICBpbnQ/IGxpbmUgPSByZWFkZXIuUmVhZEF0dHJpYnV0ZUludChTY2hlbWFTdHJpbmdzLkF0dHJpYnV0ZUxpbmUpOw0KDQogICAgICAgICAgICBzdHJpbmcgbWVzc2FnZSA9IG51bGw7DQoNCiAgICAgICAgICAgIGlmIChfcmVhZGluZ1Byb2plY3RGaWxlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIEZ4Q29wIGRvZXMgbm90IGVtaXQgYSByZXNvbHV0aW9uIG5hbWUgYXR0cmlidXRlIGluIGNhc2VzIHdoZXJlIGl0IGlzICJEZWZhdWx0Ig0KICAgICAgICAgICAgICAgIHJlc29sdXRpb25OYW1lID0gcmVzb2x1dGlvbk5hbWUgPz8gIkRlZmF1bHQiOw0KICAgICAgICAgICAgICAgIHJlYWRlci5SZWFkQ2hpbGRyZW4oU2NoZW1hU3RyaW5ncy5FbGVtZW50SXNzdWUsIHBhcmVudCwgb3V0IG1lc3NhZ2UpOw0KICAgICAgICAgICAgICAgIGNvbnRleHQuUmVmaW5lSXNzdWUobWVzc2FnZSwgbWVzc2FnZSA9PSBudWxsID8gcmVzb2x1dGlvbk5hbWUgOiBudWxsLCBjZXJ0YWludHksIGxldmVsLCBwYXRoLCBmaWxlLCBsaW5lKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBBbiBGeENvcCBwcm9qZWN0IGZpbGUgSXNzdWUgaGFzIGEgZnVsbHktZm9ybWVkIG91dHB1dA0KICAgICAgICAgICAgICAgIC8vIG1lc3NhZ2UgYXMgaXRzIGVsZW1lbnQgY29udGVudC4NCiAgICAgICAgICAgICAgICBtZXNzYWdlID0gcmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgICAgICAgICAgY29udGV4dC5SZWZpbmVJc3N1ZShtZXNzYWdlLCByZXNvbHV0aW9uTmFtZSwgY2VydGFpbnR5LCBsZXZlbCwgcGF0aCwgZmlsZSwgbGluZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChSZXN1bHRSZWFkICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVzdWx0UmVhZChjb250ZXh0KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgY29udGV4dC5DbGVhcklzc3VlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUmVhZEl0ZW0oU3BhcnNlUmVhZGVyIHJlYWRlciwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gKENvbnRleHQpcGFyZW50Ow0KICAgICAgICAgICAgY29udGV4dC5JdGVtcyA9IGNvbnRleHQuSXRlbXMgPz8gbmV3IExpc3Q8c3RyaW5nPigpOw0KICAgICAgICAgICAgY29udGV4dC5JdGVtcy5BZGQocmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHN0cmluZyBNYWtlRXhjZXB0aW9uTWVzc2FnZShzdHJpbmcga2luZCwgc3RyaW5nIGNoZWNrSWQsIHN0cmluZyB0eXBlLCBzdHJpbmcgbWVzc2FnZSwgc3RyaW5nIHN0YWNrVHJhY2UsIHN0cmluZyBpbm5lclR5cGUsIHN0cmluZyBpbm5lck1lc3NhZ2UsIHN0cmluZyBpbm5lclN0YWNrVHJhY2UpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBpbm5lckV4Y2VwdGlvbiA9IFN0cmluZy5FbXB0eTsNCiAgICAgICAgICAgIGlmIChpbm5lclR5cGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbm5lckV4Y2VwdGlvbiA9IFN0cmluZy5Gb3JtYXQoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwgIiBJbm5lciBFeGNlcHRpb246IHswfTogezF9IHsyfSIsIGlubmVyVHlwZSwgaW5uZXJNZXNzYWdlLCBpbm5lclN0YWNrVHJhY2UpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoa2luZCA9PSBTY2hlbWFTdHJpbmdzLkVudW1SdWxlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuRm9ybWF0KEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUsICJSdWxlIHswfSBleGNlcHRpb246IHsxfTogezJ9IHszfS57NH0iLCBjaGVja0lkLCB0eXBlLCBtZXNzYWdlLCBzdGFja1RyYWNlLCBpbm5lckV4Y2VwdGlvbik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5Gb3JtYXQoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwgInswfSBleGNlcHRpb246IHsxfTogezJ9IHszfS57NH0iLCBraW5kLCB0eXBlLCBtZXNzYWdlLCBzdGFja1RyYWNlLCBpbm5lckV4Y2VwdGlvbik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1709",
+ "level": "error",
+ "message": {
+ "text": "Correct the casing of 'PRE' in namespace name 'Microsoft.CodeAnalysis.Sarif.Converters.PREFastObjectModel' by changing it to 'Pre'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "9C543F0EE3B05A41A23D366F90581A5C",
- "algorithm": "md5"
- },
- {
- "value": "BA6E4A268D3FD85870752931A8CF3B2D1A4A4E3F",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "0C4FA164B3A7310335EB9DB2D02CED61915D65B1951D729C5C36D2C206E3A7E7",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 4,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.PREFastObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "PRE#Namespace"
+ },
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/LogReader.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uSU87DQp1c2luZyBTeXN0ZW0uVGV4dDsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycw0Kew0KICAgIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBMb2dSZWFkZXI8VExvZz4gd2hlcmUgVExvZyA6IGNsYXNzDQogICAgew0KICAgICAgICBwdWJsaWMgVExvZyBSZWFkTG9nKHN0cmluZyBpbnB1dCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIFJlYWRMb2coaW5wdXQsIEVuY29kaW5nLlVURjgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIFRMb2cgUmVhZExvZyhzdHJpbmcgaW5wdXQsIEVuY29kaW5nIGVuY29kaW5nKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gUmVhZExvZyhuZXcgTWVtb3J5U3RyZWFtKGVuY29kaW5nLkdldEJ5dGVzKGlucHV0KSkpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGFic3RyYWN0IFRMb2cgUmVhZExvZyhTdHJlYW0gaW5wdXQpOw0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Converters.PREFastObjectModel'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "ADF7A5073149A41839F00BACB9188A64",
- "algorithm": "md5"
- },
- {
- "value": "78CD0F0479A5DE3FE2AC793DE9CEE42D7C62FD59",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "E067CEEB61601B84EF8795CA177D689A367A210F50AAF2448A95CB9129D02C8E",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 4,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.PREFastObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PluginConverterFactory.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMNCnsNCiAgICBwdWJsaWMgZGVsZWdhdGUgQXNzZW1ibHkgQXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlKHN0cmluZyBwYXRoKTsNCg0KICAgIC8vIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIGEgY29udmVydGVyIGZyb20gYSBzcGVjaWZpZWQgcGx1Zy1pbiBhc3NlbWJseS4NCiAgICBpbnRlcm5hbCBjbGFzcyBQbHVnaW5Db252ZXJ0ZXJGYWN0b3J5IDogQ29udmVydGVyRmFjdG9yeQ0KICAgIHsNCiAgICAgICAgLy8gVGhpcyBmaWVsZCBpcyBpbnRlcm5hbCwgcmF0aGVyIHRoYW4gcHJpdmF0ZSwgZm9yIHRlc3QgcHVycG9zZXMuDQogICAgICAgIGludGVybmFsIHJlYWRvbmx5IHN0cmluZyBwbHVnaW5Bc3NlbWJseVBhdGg7DQoNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBBc3NlbWJseUxvYWRGaWxlRGVsZWdhdGUgYXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlOw0KDQogICAgICAgIGludGVybmFsIFBsdWdpbkNvbnZlcnRlckZhY3RvcnkoDQogICAgICAgICAgICBzdHJpbmcgcGx1Z2luQXNzZW1ibHlQYXRoLA0KICAgICAgICAgICAgQXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlIGFzc2VtYmx5TG9hZEZpbGVEZWxlZ2F0ZSA9IG51bGwpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRoaXMuYXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlID0gYXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlID8/IEFzc2VtYmx5LkxvYWRGaWxlOw0KICAgICAgICAgICAgdGhpcy5wbHVnaW5Bc3NlbWJseVBhdGggPSBwbHVnaW5Bc3NlbWJseVBhdGg7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgVG9vbEZpbGVDb252ZXJ0ZXJCYXNlIENyZWF0ZUNvbnZlcnRlckNvcmUoc3RyaW5nIHRvb2xGb3JtYXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghRmlsZS5FeGlzdHModGhpcy5wbHVnaW5Bc3NlbWJseVBhdGgpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN0cmluZyBtZXNzYWdlID0gc3RyaW5nLkZvcm1hdCgNCiAgICAgICAgICAgICAgICAgICAgQ3VsdHVyZUluZm8uQ3VycmVudEN1bHR1cmUsDQogICAgICAgICAgICAgICAgICAgIENvbnZlcnRlclJlc291cmNlcy5FcnJvck1pc3NpbmdQbHVnaW5Bc3NlbWJseSwNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5Bc3NlbWJseVBhdGgpOw0KDQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKG1lc3NhZ2UsIG5hbWVvZih0aGlzLnBsdWdpbkFzc2VtYmx5UGF0aCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBBc3NlbWJseSBwbHVnaW5Bc3NlbWJseSA9IHRoaXMuYXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlKHRoaXMucGx1Z2luQXNzZW1ibHlQYXRoKTsNCiAgICAgICAgICAgIFR5cGVbXSBwbHVnaW5UeXBlcyA9IHBsdWdpbkFzc2VtYmx5DQogICAgICAgICAgICAgICAgLkdldFR5cGVzKCkNCiAgICAgICAgICAgICAgICAuV2hlcmUodCA9PiBJc0NvbnZlcnRlckNsYXNzRm9yVG9vbEZvcm1hdCh0LCB0b29sRm9ybWF0KSkNCiAgICAgICAgICAgICAgICAuVG9BcnJheSgpOw0KDQogICAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0IGluIG1vcmUgdGhhbiBvbmUgbmFtZXNwYWNlLg0KICAgICAgICAgICAgaWYgKHBsdWdpblR5cGVzLkxlbmd0aCA+IDEpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2UgPSBzdHJpbmcuRm9ybWF0KA0KICAgICAgICAgICAgICAgICAgICBDdWx0dXJlSW5mby5DdXJyZW50Q3VsdHVyZSwNCiAgICAgICAgICAgICAgICAgICAgQ29udmVydGVyUmVzb3VyY2VzLkVycm9yQW1iaWd1b3VzQ29udmVydGVyVHlwZSwNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5Bc3NlbWJseVBhdGgsDQogICAgICAgICAgICAgICAgICAgIHRvb2xGb3JtYXQuQ29udmVydGVyVHlwZU5hbWUoKSwNCiAgICAgICAgICAgICAgICAgICAgdG9vbEZvcm1hdCk7DQoNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnRFeGNlcHRpb24obWVzc2FnZSwgbmFtZW9mKHRoaXMucGx1Z2luQXNzZW1ibHlQYXRoKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBwbHVnaW5UeXBlcy5MZW5ndGggPT0gMA0KICAgICAgICAgICAgICAgID8gbnVsbA0KICAgICAgICAgICAgICAgIDogKFRvb2xGaWxlQ29udmVydGVyQmFzZSlBY3RpdmF0b3IuQ3JlYXRlSW5zdGFuY2UocGx1Z2luVHlwZXNbMF0pOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBJc0NvbnZlcnRlckNsYXNzRm9yVG9vbEZvcm1hdChUeXBlIHR5cGUsIHN0cmluZyB0b29sRm9ybWF0KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdHlwZS5Jc1B1YmxpYw0KICAgICAgICAgICAgICAgICYmIHR5cGUuTmFtZS5FcXVhbHModG9vbEZvcm1hdC5Db252ZXJ0ZXJUeXBlTmFtZSgpLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWwpDQogICAgICAgICAgICAgICAgJiYgdHlwZS5Jc1N1YmNsYXNzT2YodHlwZW9mKFRvb2xGaWxlQ29udmVydGVyQmFzZSkpDQogICAgICAgICAgICAgICAgJiYgdHlwZS5IYXNEZWZhdWx0Q29uc3RydWN0b3IoKQ0KICAgICAgICAgICAgICAgICYmICF0eXBlLklzQWJzdHJhY3Q7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysis.Sarif.Converters.PylintObjectModel' with another namespace."
},
- "hashes": [
- {
- "value": "25B70AF5DE11C33F75E610DAEB922981",
- "algorithm": "md5"
- },
- {
- "value": "4793C65018A6227DD03C1D2A0DC9C24639EB910E",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F0F037577ED9CC4AEA463F1C1E9664859C6480D54F953890377622A78E452B36",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 5,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.PylintObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PREFastConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgU3lzdGVtLlhtbC5TZXJpYWxpemF0aW9uOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzLlBSRUZhc3RPYmplY3RNb2RlbDsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuV3JpdGVyczsNCnVzaW5nIFN5c3RlbS5YbWw7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMNCnsNCiAgICBwdWJsaWMgY2xhc3MgUFJFZmFzdENvbnZlcnRlciA6IFRvb2xGaWxlQ29udmVydGVyQmFzZQ0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBrbm93bkNhdGVnb3JpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4NCiAgICAgICAgew0KICAgICAgICAgICAgeyAiUlVMRUNBVEVHT1JZIiwgInJ1bGVDYXRlZ29yeSIgfQ0KICAgICAgICB9Ow0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIENvbnZlcnQoU3RyZWFtIGlucHV0LCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCA/PyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihpbnB1dCkpOw0KICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ID8/IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dCkpOw0KDQogICAgICAgICAgICBMb2dpY2FsTG9jYXRpb25zRGljdGlvbmFyeS5DbGVhcigpOw0KDQogICAgICAgICAgICB2YXIgdG9vbCA9IG5ldyBUb29sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTmFtZSA9IFRvb2xGb3JtYXQuUFJFZmFzdCwNCiAgICAgICAgICAgICAgICBGdWxsTmFtZSA9ICJQUkVmYXN0IENvZGUgQW5hbHlzaXMiDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICB2YXIgcnVuID0gbmV3IFJ1bigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVG9vbCA9IHRvb2wNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIG91dHB1dC5Jbml0aWFsaXplKHJ1bik7DQoNCiAgICAgICAgICAgIFhtbFJlYWRlclNldHRpbmdzIHNldHRpbmdzID0gbmV3IFhtbFJlYWRlclNldHRpbmdzDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRHRkUHJvY2Vzc2luZyA9IER0ZFByb2Nlc3NpbmcuSWdub3JlLA0KICAgICAgICAgICAgICAgIFhtbFJlc29sdmVyID0gbnVsbA0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIHNlcmlhbGl6ZXIgPSBuZXcgWG1sU2VyaWFsaXplcih0eXBlb2YoRGVmZWN0TGlzdCkpOw0KDQogICAgICAgICAgICB1c2luZyAodmFyIHJlYWRlciA9IFhtbFJlYWRlci5DcmVhdGUoaW5wdXQsIHNldHRpbmdzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVmZWN0TGlzdCA9IChEZWZlY3RMaXN0KXNlcmlhbGl6ZXIuRGVzZXJpYWxpemUocmVhZGVyKTsNCiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoIChEZWZlY3QgZW50cnkgaW4gZGVmZWN0TGlzdC5EZWZlY3RzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5BZGQoQ3JlYXRlUmVzdWx0KGVudHJ5KSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgdmFyIGZpbGVJbmZvRmFjdG9yeSA9IG5ldyBGaWxlSW5mb0ZhY3RvcnkoTWltZVR5cGUuRGV0ZXJtaW5lRnJvbUZpbGVFeHRlbnNpb24sIGRhdGFUb0luc2VydCk7DQogICAgICAgICAgICAgICAgRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPiBmaWxlRGljdGlvbmFyeSA9IGZpbGVJbmZvRmFjdG9yeS5DcmVhdGUocmVzdWx0cyk7DQoNCiAgICAgICAgICAgICAgICBpZiAoZmlsZURpY3Rpb25hcnk/LkFueSgpID09IHRydWUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBvdXRwdXQuV3JpdGVGaWxlcyhmaWxlRGljdGlvbmFyeSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKExvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5ICE9IG51bGwgJiYgTG9naWNhbExvY2F0aW9uc0RpY3Rpb25hcnkuQW55KCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBvdXRwdXQuV3JpdGVMb2dpY2FsTG9jYXRpb25zKExvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5KTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBvdXRwdXQuT3BlblJlc3VsdHMoKTsNCiAgICAgICAgICAgICAgICBvdXRwdXQuV3JpdGVSZXN1bHRzKHJlc3VsdHMpOw0KICAgICAgICAgICAgICAgIG91dHB1dC5DbG9zZVJlc3VsdHMoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgUmVzdWx0IENyZWF0ZVJlc3VsdChEZWZlY3QgZGVmZWN0KQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcmVnaW9uID0gbmV3IFJlZ2lvbg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFN0YXJ0Q29sdW1uID0gZGVmZWN0LlNGQS5Db2x1bW4gKyAxLA0KICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IGRlZmVjdC5TRkEuTGluZQ0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIHJlc3VsdHNGaWxlVXJpID0gbmV3IFVyaSgkIntkZWZlY3QuU0ZBLkZpbGVQYXRofXtkZWZlY3QuU0ZBLkZpbGVOYW1lfSIsIFVyaUtpbmQuUmVsYXRpdmUpOw0KICAgICAgICAgICAgdmFyIHBoeXNpY2FsTG9jYXRpb24gPSBuZXcgUGh5c2ljYWxMb2NhdGlvbihpZDogMCwgZmlsZUxvY2F0aW9uOiBuZXcgRmlsZUxvY2F0aW9uKHVyaTogcmVzdWx0c0ZpbGVVcmksIHVyaUJhc2VJZDogbnVsbCksIHJlZ2lvbjogcmVnaW9uLCBjb250ZXh0UmVnaW9uOiBudWxsKTsNCiAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IG5ldyBMb2NhdGlvbigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IHBoeXNpY2FsTG9jYXRpb24sDQogICAgICAgICAgICAgICAgRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSA9IGRlZmVjdC5GdW5jdGlvbg0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgbG9jYXRpb24uU2V0UHJvcGVydHkoImZ1bmNsaW5lIiwgZGVmZWN0LkZ1bmNsaW5lKTsNCg0KICAgICAgICAgICAgQWRkTG9naWNhbExvY2F0aW9uKGRlZmVjdC5GdW5jdGlvbiwgZGVmZWN0LkRlY29yYXRlZCk7DQoNCiAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgUmVzdWx0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUnVsZUlkID0gZGVmZWN0LkRlZmVjdENvZGUsDQogICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IFJlbW92ZVBSRWZhc3ROZXdMaW5lKGRlZmVjdC5EZXNjcmlwdGlvbikgfSwNCiAgICAgICAgICAgICAgICBMb2NhdGlvbnMgPSBuZXcgTGlzdDxMb2NhdGlvbj4oKQ0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgcmVzdWx0LkxvY2F0aW9ucy5BZGQobG9jYXRpb24pOw0KICAgICAgICAgICAgU2V0UHJvYmFiaWxpdHkoZGVmZWN0LCByZXN1bHQpOw0KICAgICAgICAgICAgU2V0UmFuayhkZWZlY3QsIHJlc3VsdCk7DQoNCiAgICAgICAgICAgIFNldENhdGVnb3JpZXMoZGVmZWN0LCByZXN1bHQpOw0KICAgICAgICAgICAgR2VuZXJhdGVDb2RlRmxvd3MoZGVmZWN0LCByZXN1bHQpOw0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEFkZExvZ2ljYWxMb2NhdGlvbihzdHJpbmcgbmFtZSwgc3RyaW5nIGRlY29yYXRlZE5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFVzZSB0aGUgRlFMTiBzbyB0aGUgY29ycmVjdCBkaWN0aW9uYXJ5IGtleSBpcyBnZW5lcmF0ZWQgYnkgQWRkTG9naWNhbExvY2F0aW9uDQogICAgICAgICAgICB2YXIgbG9naWNhbExvY2F0aW9uID0gbmV3IExvZ2ljYWxMb2NhdGlvbg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE5hbWUgPSBuYW1lLA0KICAgICAgICAgICAgICAgIERlY29yYXRlZE5hbWUgPSBkZWNvcmF0ZWROYW1lDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBBZGRMb2dpY2FsTG9jYXRpb24obG9naWNhbExvY2F0aW9uLCAiOjoiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBTZXRSYW5rKERlZmVjdCBkZWZlY3QsIFJlc3VsdCByZXN1bHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGRlZmVjdC5SYW5rKSkNCiAgICAgICAgICAgICAgICByZXR1cm47DQoNCiAgICAgICAgICAgIHJlc3VsdC5TZXRQcm9wZXJ0eSgicmFuayIsIGRlZmVjdC5SYW5rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBTZXRQcm9iYWJpbGl0eShEZWZlY3QgZGVmZWN0LCBSZXN1bHQgcmVzdWx0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShkZWZlY3QuUHJvYmFiaWxpdHkpKQ0KICAgICAgICAgICAgICAgIHJldHVybjsNCg0KICAgICAgICAgICAgcmVzdWx0LlNldFByb3BlcnR5KCJwcm9iYWJpbGl0eSIsIGRlZmVjdC5Qcm9iYWJpbGl0eSk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgR2VuZXJhdGVDb2RlRmxvd3MoRGVmZWN0IGRlZmVjdCwgUmVzdWx0IHJlc3VsdCkNCiAgICAgICAgew0KICAgICAgICAgICAgTGlzdDxTRkE+IHNmYXMgPSBkZWZlY3Q/LlBhdGg/LlNGQXM7DQogICAgICAgICAgICBpZiAoc2ZhcyA9PSBudWxsIHx8IHNmYXMuQ291bnQgPT0gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGludCBzdGVwID0gMDsNCiAgICAgICAgICAgIHZhciBsb2NhdGlvbnMgPSBuZXcgTGlzdDxUaHJlYWRGbG93TG9jYXRpb24+KCk7DQogICAgICAgICAgICBib29sIHBhdGhVc2VzS2V5RXZlbnRzID0gZGVmZWN0LlBhdGguU0ZBcy5BbnkoeCA9PiAhc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZSh4Py5LZXlFdmVudD8uSWQpKTsNCg0KICAgICAgICAgICAgZm9yZWFjaCAodmFyIHNmYSBpbiBkZWZlY3QuUGF0aC5TRkFzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciByZWdpb24gPSBuZXcgUmVnaW9uKCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFN0YXJ0Q29sdW1uID0gc2ZhLkNvbHVtbiArIDEsDQogICAgICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IHNmYS5MaW5lDQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHZhciB1cmkgPSBuZXcgVXJpKCQie3NmYS5GaWxlUGF0aH17c2ZhLkZpbGVOYW1lfSIsIFVyaUtpbmQuUmVsYXRpdmUpOw0KICAgICAgICAgICAgICAgIHZhciBmaWxlTG9jYXRpb24gPSBuZXcgUGh5c2ljYWxMb2NhdGlvbihpZDogMCwgZmlsZUxvY2F0aW9uOiBuZXcgRmlsZUxvY2F0aW9uKHVyaTogdXJpLCB1cmlCYXNlSWQ6IG51bGwpLCByZWdpb246IHJlZ2lvbiwgY29udGV4dFJlZ2lvbjogbnVsbCk7DQogICAgICAgICAgICAgICAgdmFyIHRocmVhZEZsb3dMb2NhdGlvbiA9IG5ldyBUaHJlYWRGbG93TG9jYXRpb24NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIExvY2F0aW9uID0gbmV3IExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNpY2FsTG9jYXRpb24gPSBmaWxlTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgU3RlcCA9ICsrc3RlcA0KICAgICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICBpZiAocGF0aFVzZXNLZXlFdmVudHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZmEuS2V5RXZlbnQ/LklkKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkRmxvd0xvY2F0aW9uLkltcG9ydGFuY2UgPSBUaHJlYWRGbG93TG9jYXRpb25JbXBvcnRhbmNlLlVuaW1wb3J0YW50Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkRmxvd0xvY2F0aW9uLlNldFByb3BlcnR5KCJrZXlFdmVudElkIiwgc2ZhLktleUV2ZW50LklkKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEVudW0uVHJ5UGFyc2Uoc2ZhLktleUV2ZW50LkltcG9ydGFuY2UsIHRydWUsIG91dCBUaHJlYWRGbG93TG9jYXRpb25JbXBvcnRhbmNlIGltcG9ydGFuY2UpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5JbXBvcnRhbmNlID0gaW1wb3J0YW5jZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHNmYS5LZXlFdmVudC5NZXNzYWdlKSAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5Mb2NhdGlvbj8uTWVzc2FnZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5Mb2NhdGlvbi5NZXNzYWdlLlRleHQgPSBzZmEuS2V5RXZlbnQuTWVzc2FnZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGxvY2F0aW9ucy5BZGQodGhyZWFkRmxvd0xvY2F0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmVzdWx0LkNvZGVGbG93cyA9IG5ldyBMaXN0PENvZGVGbG93PigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU2FyaWZVdGlsaXRpZXMuQ3JlYXRlU2luZ2xlVGhyZWFkZWRDb2RlRmxvdyhsb2NhdGlvbnMpDQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFNldENhdGVnb3JpZXMoRGVmZWN0IGRlZmVjdCwgUmVzdWx0IHJlc3VsdCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGRlZmVjdC5DYXRlZ29yeSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBrZXlWYWx1ZVBhaXIgaW4gZGVmZWN0LkNhdGVnb3J5KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGNhdGVnb3J5ID0ga2V5VmFsdWVQYWlyLktleTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGtub3duQ2F0ZWdvcmllcy5Db250YWluc0tleShjYXRlZ29yeSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0ga25vd25DYXRlZ29yaWVzW2NhdGVnb3J5XTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5TZXRQcm9wZXJ0eShjYXRlZ29yeSwga2V5VmFsdWVQYWlyLlZhbHVlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0cmluZyBSZW1vdmVQUkVmYXN0TmV3TGluZShzdHJpbmcgY29udGVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQuUmVwbGFjZSgiUFJFRkFTVF9ORVdMSU5FXG4iLCBzdHJpbmcuRW1wdHkpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Pylint' in namespace name 'Microsoft.CodeAnalysis.Sarif.Converters.PylintObjectModel'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "F0350D0582BAA6077DCFC8EB34551E2D",
- "algorithm": "md5"
- },
- {
- "value": "E284EB9DE28E621E1F7BFC9CA68DD3BEACE4FDAD",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "816A05D080F309791AE5D540489DFBC8122ACFEFB4519ACB89039185F2C7A05A",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 5,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.PylintObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Pylint#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PylintConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Xcml0ZXJzOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzLlB5bGludE9iamVjdE1vZGVsOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzDQp7DQogICAgcHVibGljIGNsYXNzIFB5bGludENvbnZlcnRlciA6IFRvb2xGaWxlQ29udmVydGVyQmFzZQ0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBMb2dSZWFkZXI8UHlsaW50TG9nPiBsb2dSZWFkZXI7DQoNCiAgICAgICAgcHVibGljIFB5bGludENvbnZlcnRlcigpDQogICAgICAgIHsNCiAgICAgICAgICAgIGxvZ1JlYWRlciA9IG5ldyBQeWxpbnRMb2dSZWFkZXIoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIENvbnZlcnQoU3RyZWFtIGlucHV0LCBJUmVzdWx0TG9nV3JpdGVyIG91dHB1dCwgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCkNCiAgICAgICAgew0KICAgICAgICAgICAgaW5wdXQgPSBpbnB1dCA/PyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihpbnB1dCkpOw0KICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ID8/IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dCkpOw0KDQogICAgICAgICAgICBQeWxpbnRMb2cgbG9nID0gbG9nUmVhZGVyLlJlYWRMb2coaW5wdXQpOw0KDQogICAgICAgICAgICBUb29sIHRvb2wgPSBuZXcgVG9vbA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE5hbWUgPSAiUHlsaW50Ig0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIHJ1biA9IG5ldyBSdW4oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFRvb2wgPSB0b29sDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBvdXRwdXQuSW5pdGlhbGl6ZShydW4pOw0KDQogICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCg0KICAgICAgICAgICAgZm9yZWFjaCAoUHlsaW50TG9nRW50cnkgZW50cnkgaW4gbG9nKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdHMuQWRkKENyZWF0ZVJlc3VsdChlbnRyeSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgZmlsZUluZm9GYWN0b3J5ID0gbmV3IEZpbGVJbmZvRmFjdG9yeShNaW1lVHlwZS5EZXRlcm1pbmVGcm9tRmlsZUV4dGVuc2lvbiwgZGF0YVRvSW5zZXJ0KTsNCiAgICAgICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBGaWxlRGF0YT4gZmlsZURpY3Rpb25hcnkgPSBmaWxlSW5mb0ZhY3RvcnkuQ3JlYXRlKHJlc3VsdHMpOw0KDQogICAgICAgICAgICBpZiAoZmlsZURpY3Rpb25hcnk/LkFueSgpID09IHRydWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlRmlsZXMoZmlsZURpY3Rpb25hcnkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBvdXRwdXQuT3BlblJlc3VsdHMoKTsNCiAgICAgICAgICAgIG91dHB1dC5Xcml0ZVJlc3VsdHMocmVzdWx0cyk7DQogICAgICAgICAgICBvdXRwdXQuQ2xvc2VSZXN1bHRzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBpbnRlcm5hbCBSZXN1bHQgQ3JlYXRlUmVzdWx0KFB5bGludExvZ0VudHJ5IGRlZmVjdCkNCiAgICAgICAgew0KICAgICAgICAgICAgZGVmZWN0ID0gZGVmZWN0ID8/IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGRlZmVjdCkpOw0KDQogICAgICAgICAgICBSZXN1bHQgcmVzdWx0ID0gbmV3IFJlc3VsdA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJ1bGVJZCA9ICQie2RlZmVjdC5NZXNzYWdlSWR9KHtkZWZlY3QuU3ltYm9sfSkiLA0KICAgICAgICAgICAgICAgIE1lc3NhZ2UgPSBuZXcgTWVzc2FnZSB7IFRleHQgPSBkZWZlY3QuTWVzc2FnZSB9DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBzd2l0Y2ggKGRlZmVjdC5UeXBlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgImVycm9yIjoNCiAgICAgICAgICAgICAgICBjYXNlICJmYXRhbCI6DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5MZXZlbCA9IFJlc3VsdExldmVsLkVycm9yOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICJ3YXJuaW5nIjoNCiAgICAgICAgICAgICAgICBjYXNlICJjb252ZW50aW9uIjoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkxldmVsID0gUmVzdWx0TGV2ZWwuV2FybmluZzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAicmVmYWN0b3IiOg0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5MZXZlbCA9IFJlc3VsdExldmVsLk5vdGU7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIHJlZ2lvbiA9IG5ldyBSZWdpb24NCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBTdGFydENvbHVtbiA9IGludC5QYXJzZShkZWZlY3QuQ29sdW1uKSwNCiAgICAgICAgICAgICAgICBTdGFydExpbmUgPSBpbnQuUGFyc2UoZGVmZWN0LkxpbmUpDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICB2YXIgZmlsZVVyaSA9IG5ldyBVcmkoJCJ7ZGVmZWN0LkZpbGVQYXRofSIsIFVyaUtpbmQuUmVsYXRpdmVPckFic29sdXRlKTsNCiAgICAgICAgICAgIHZhciBwaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24oaWQ6IDAsIGZpbGVMb2NhdGlvbjogbmV3IEZpbGVMb2NhdGlvbih1cmk6IGZpbGVVcmksIHVyaUJhc2VJZDogbnVsbCksIHJlZ2lvbjogcmVnaW9uLCBjb250ZXh0UmVnaW9uOiBudWxsKTsNCg0KICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gbmV3IExvY2F0aW9uDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IHBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHJlc3VsdC5Mb2NhdGlvbnMgPSBuZXcgTGlzdDxMb2NhdGlvbj4NCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBsb2NhdGlvbg0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Converters.PylintObjectModel'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "AFC6326A711C951EA43C1849F070A8EC",
- "algorithm": "md5"
- },
- {
- "value": "DE1D620F5BC74D3286CC0723559A556F66247BFE",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "AE9F0F0AB17F7ACB479AC375AF8E40638B34AA9183F6FF3D2566E4B3805055AE",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 5,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.PylintObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/SemmleQlConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOw0KdXNpbmcgU3lzdGVtLklPOw0KdXNpbmcgU3lzdGVtLkxpbnE7DQp1c2luZyBTeXN0ZW0uVGV4dDsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuV3JpdGVyczsNCnVzaW5nIENzdkhlbHBlcjsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycw0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gQ29udmVydHMgYSBsb2cgZmlsZSBmcm9tIHRoZSBTZW1tbGUgZm9ybWF0IHRvIHRoZSBTQVJJRiBmb3JtYXQuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBwdWJsaWMgY2xhc3MgU2VtbWxlUUxDb252ZXJ0ZXIgOiBUb29sRmlsZUNvbnZlcnRlckJhc2UNCiAgICB7DQogICAgICAgIC8vIFNlbW1sZSBsb2dzIGFyZSBDU1YgZmlsZXMNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgc3RyaW5nW10gc19kZWxpbWl0ZXJzID0gbmV3W10geyAiLCIgfTsNCg0KICAgICAgICAvLyBUaGUgZmllbGRzIGFyZSBhcyBmb2xsb3dzOg0KICAgICAgICBwcml2YXRlIGVudW0gRmllbGRJbmRleA0KICAgICAgICB7DQogICAgICAgICAgICBRdWVyeU5hbWUsDQogICAgICAgICAgICBRdWVyeURlc2NyaXB0aW9uLA0KICAgICAgICAgICAgU2V2ZXJpdHksDQogICAgICAgICAgICBNZXNzYWdlLA0KICAgICAgICAgICAgUmVsYXRpdmVQYXRoLA0KICAgICAgICAgICAgUGF0aCwNCiAgICAgICAgICAgIFN0YXJ0TGluZSwNCiAgICAgICAgICAgIFN0YXJ0Q29sdW1uLA0KICAgICAgICAgICAgRW5kTGluZSwNCiAgICAgICAgICAgIEVuZENvbHVtbg0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBDc3ZQYXJzZXIgX3BhcnNlcjsNCiAgICAgICAgcHJpdmF0ZSBMaXN0PE5vdGlmaWNhdGlvbj4gX3Rvb2xOb3RpZmljYXRpb25zOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENvbnZlcnRzIGEgU2VtbWxlIGxvZyBmaWxlIGluIENTViBmb3JtYXQgdG8gYSBTQVJJRiBsb2cgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpbnB1dCI+DQogICAgICAgIC8vLyBJbnB1dCBzdHJlYW0gZnJvbSB3aGljaCB0byByZWFkIHRoZSBTZW1tbGUgbG9nLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdXRwdXQiPg0KICAgICAgICAvLy8gT3V0cHV0IHN0cmluZyB0byB3aGljaCB0byB3cml0ZSB0aGUgU0FSSUYgbG9nLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkYXRhVG9JbnNlcnQiPk9wdGlvbmFsbHkgZW1pdHRlZCBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9nLjwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gd2hlbiBvbmUgb3IgbW9yZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgQ29udmVydChTdHJlYW0gaW5wdXQsIElSZXN1bHRMb2dXcml0ZXIgb3V0cHV0LCBPcHRpb25hbGx5RW1pdHRlZERhdGEgZGF0YVRvSW5zZXJ0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihpbnB1dCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAob3V0cHV0ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3V0cHV0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIF90b29sTm90aWZpY2F0aW9ucyA9IG5ldyBMaXN0PE5vdGlmaWNhdGlvbj4oKTsNCg0KICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBHZXRSZXN1bHRzRnJvbVN0cmVhbShpbnB1dCk7DQoNCgkJCXZhciBmaWxlSW5mb0ZhY3RvcnkgPSBuZXcgRmlsZUluZm9GYWN0b3J5KE1pbWVUeXBlLkRldGVybWluZUZyb21GaWxlRXh0ZW5zaW9uLCBkYXRhVG9JbnNlcnQpOw0KCQkJRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPiBmaWxlRGljdGlvbmFyeSA9IGZpbGVJbmZvRmFjdG9yeS5DcmVhdGUocmVzdWx0cyk7DQoNCiAgICAgICAgICAgIHZhciB0b29sID0gbmV3IFRvb2wNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOYW1lID0gIlNlbW1sZSBRTCINCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHZhciBydW4gPSBuZXcgUnVuKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBUb29sID0gdG9vbA0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgb3V0cHV0LkluaXRpYWxpemUocnVuKTsNCg0KCQkJb3V0cHV0LldyaXRlRmlsZXMoZmlsZURpY3Rpb25hcnkpOw0KDQogICAgICAgICAgICBvdXRwdXQuT3BlblJlc3VsdHMoKTsNCiAgICAgICAgICAgIG91dHB1dC5Xcml0ZVJlc3VsdHMocmVzdWx0cyk7DQogICAgICAgICAgICBvdXRwdXQuQ2xvc2VSZXN1bHRzKCk7DQoNCiAgICAgICAgICAgIGlmIChfdG9vbE5vdGlmaWNhdGlvbnMuQW55KCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlVG9vbE5vdGlmaWNhdGlvbnMoX3Rvb2xOb3RpZmljYXRpb25zKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgUmVzdWx0W10gR2V0UmVzdWx0c0Zyb21TdHJlYW0oU3RyZWFtIGlucHV0KQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCiAgICAgICAgICAgIHVzaW5nICh2YXIgcmVhZGVyID0gbmV3IFN0cmVhbVJlYWRlcihpbnB1dCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdXNpbmcgKF9wYXJzZXIgPSBuZXcgQ3N2UGFyc2VyKHJlYWRlcikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmdbXSByb3cgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHJvdyA9IF9wYXJzZXIuUmVhZCgpKSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLkFkZChQYXJzZVJlc3VsdChyb3cpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMuVG9BcnJheSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBSZXN1bHQgUGFyc2VSZXN1bHQoc3RyaW5nW10gZmllbGRzKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgcmF3TWVzc2FnZSA9IGZpZWxkc1soaW50KUZpZWxkSW5kZXguTWVzc2FnZV07DQogICAgICAgICAgICBzdHJpbmcgbm9ybWFsaXplZE1lc3NhZ2U7DQogICAgICAgICAgICBJTGlzdDxMb2NhdGlvbj4gcmVsYXRlZExvY2F0aW9ucyA9IE5vcm1hbGl6ZVJhd01lc3NhZ2UocmF3TWVzc2FnZSwgb3V0IG5vcm1hbGl6ZWRNZXNzYWdlKTsNCg0KICAgICAgICAgICAgUmVnaW9uIHJlZ2lvbiA9IE1ha2VSZWdpb24oZmllbGRzKTsNCiAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgUmVzdWx0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IG5vcm1hbGl6ZWRNZXNzYWdlIH0sDQogICAgICAgICAgICAgICAgTG9jYXRpb25zID0gbmV3IExvY2F0aW9uW10NCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG5ldyBMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlTG9jYXRpb24gPSBuZXcgRmlsZUxvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcmkgPSBuZXcgVXJpKEdldFN0cmluZyhmaWVsZHMsIEZpZWxkSW5kZXguUmVsYXRpdmVQYXRoKSwgVXJpS2luZC5SZWxhdGl2ZSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyaUJhc2VJZCA9ICIkc3Jjcm9vdCINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lvbiA9IHJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBSZWxhdGVkTG9jYXRpb25zID0gcmVsYXRlZExvY2F0aW9ucw0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgUmVzdWx0TGV2ZWwgbGV2ZWwgPSBSZXN1bHRMZXZlbEZyb21TZW1tbGVTZXZlcml0eShHZXRTdHJpbmcoZmllbGRzLCBGaWVsZEluZGV4LlNldmVyaXR5KSk7DQogICAgICAgICAgICBpZiAobGV2ZWwgIT0gUmVzdWx0TGV2ZWwuV2FybmluZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXN1bHQuTGV2ZWwgPSBsZXZlbDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSUxpc3Q8TG9jYXRpb24+IE5vcm1hbGl6ZVJhd01lc3NhZ2Uoc3RyaW5nIHJhd01lc3NhZ2UsIG91dCBzdHJpbmcgbm9ybWFsaXplZE1lc3NhZ2UpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFRoZSByYXdNZXNzYWdlIGNvbnRhaW5zIGVtYmVkZGVkIHJlbGF0ZWQgbG9jYXRpb25zLiBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIHJlbGF0ZWQgbG9jYXRpb25zIGFuZCByZWZvcm1hdCB0aGUgcmF3TWVzc2FnZSBlbWJlZGRlZCBsaW5rcyB3cmFwcGVkIGluIFticmFja2V0c10uDQogICAgICAgICAgICAvLyBFeGFtcGxlIHJhd01lc3NhZ2UNCiAgICAgICAgICAgIC8vICAgICBwbyAoY29taW5nIGZyb20gW1siaGJtInwicmVsYXRpdmU6Ly9jb2RlLy4uLi9maWxlMS5jeHg6MTc2OjQ4ODI6MyJdLFsiaGJtInwicmVsYXRpdmU6Ly9jb2RlLy4uLi9maWxlMi5jOjE4NzM6NTA4OTk6MyJdLFsiaGJtInwicmVsYXRpdmU6Ly9jb2RlLy4uLi9maWxlMi5jOjU3ODM6MTU0NDY2OjMiXV0pIG1heSBub3QgaGF2ZSBiZWVuIGNoZWNrZWQgZm9yIHZhbGlkaXR5IGJlZm9yZSBjYWxsIHRvIHZTeW5jLg0KICAgICAgICAgICAgLy8gRXhhbXBsZSBub3JtYWxpemVkTWVzc2FnZSwgd2hlcmUgJ2lkJyBpcyB0aGUgcmVsYXRlZCBsb2NhdGlvbiBpZCB0byBsaW5rIHRvDQogICAgICAgICAgICAvLyAgIE5vdGU6IHRoZSBmaXJzdCBsaW5rIGluIHRoZSBtZXNzYWdlIGxpbmtzIHRvIHRoZSBmaXJzdCByZWxhdGVkIGxvY2F0aW9uIGluIHRoZSBsaXN0LCB0aGUgc2Vjb25kIGxpbmsgdG8gdGhlIHNlY29uZCwgZXRjLg0KICAgICAgICAgICAgLy8gICAgIHBvIChjb21pbmcgZnJvbSBbaGJtXShpZCkpIG1heSBub3QgaGF2ZSBiZWVuIGNoZWNrZWQgZm9yIHZhbGlkaXR5IGJlZm9yZSBjYWxsIHRvIHZTeW5jLg0KICAgICAgICAgICAgLy8gRXhhbXBsZSByZWxhdGVkTG9jYXRpb25zDQogICAgICAgICAgICAvLyAgICAgcmVsYXRpdmU6Ly9jb2RlLy4uLi9maWxlMS5jeHg6MTc2OjQ4ODI6Mw0KICAgICAgICAgICAgLy8gICAgIHJlbGF0aXZlOi8vY29kZS8uLi4vZmlsZTIuYzoxODczOjUwODk5OjMNCiAgICAgICAgICAgIC8vICAgICByZWxhdGl2ZTovL2NvZGUvLi4uL2ZpbGUyLmM6NTc4MzoxNTQ0NjY6Mw0KICAgICAgICAgICAgTGlzdDxMb2NhdGlvbj4gcmVsYXRlZExvY2F0aW9ucyA9IG51bGw7DQoNCiAgICAgICAgICAgIHZhciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQoNCiAgICAgICAgICAgIGludCBjb3VudCA9IDA7DQogICAgICAgICAgICBpbnQgbGlua0luZGV4ID0gMDsNCiAgICAgICAgICAgIGludCBpbmRleCA9IHJhd01lc3NhZ2UuSW5kZXhPZigiW1siKTsNCiAgICAgICAgICAgIHdoaWxlIChpbmRleCA+IC0xKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHNiLkFwcGVuZChyYXdNZXNzYWdlLlN1YnN0cmluZygwLCBpbmRleCkpOw0KDQogICAgICAgICAgICAgICAgcmF3TWVzc2FnZSA9IHJhd01lc3NhZ2UuU3Vic3RyaW5nKGluZGV4ICsgMik7DQoNCiAgICAgICAgICAgICAgICBpbmRleCA9IHJhd01lc3NhZ2UuSW5kZXhPZigiXV0iKTsNCg0KICAgICAgICAgICAgICAgIC8vIGVtYmVkZGVkTGlua3NUZXh0IGNvbnRhaW5zIHRoZSB0ZXh0IGZvciBvbmUgc2V0IG9mIGVtYmVkZGVkIGxpbmtzIGV4Y2VwdCBmb3IgdGhlIGxlYWRpbmcgJ1tbJyBhbmQgdHJhaWxpbmcgJ11dJw0KICAgICAgICAgICAgICAgIC8vICJoYm0ifCJyZWxhdGl2ZTovY29kZS8uLi4vZmlsZTEuY3h4OjE3Njo0ODgyOjMiXSxbImhibSJ8InJlbGF0aXZlOi8vY29kZS8uLi4vZmlsZTIuYzoxODczOjUwODk5OjMiXSxbImhibSJ8InJlbGF0aXZlOi8vY29kZS8uLi4vZmlsZTIuYzo1NzgzOjE1NDQ2NjozIg0KICAgICAgICAgICAgICAgIHN0cmluZyBlbWJlZGRlZExpbmtzVGV4dCA9IHJhd01lc3NhZ2UuU3Vic3RyaW5nKDAsIGluZGV4IC0gMSk7DQoNCiAgICAgICAgICAgICAgICAvLyBlbWJlZGRlZExpbmtzIHNwbGl0cyB0aGUgc2V0IG9mIGVtYmVkZGVkIGxpbmtzIGludG8gaW52aXZpZHVhbCBsaW5rcw0KICAgICAgICAgICAgICAgIC8vIDEuICAiaGJtInwicmVsYXRpdmU6Ly9jb2RlLy4uLi9maWxlMS5jeHg6MTc2OjQ4ODI6MyINCiAgICAgICAgICAgICAgICAvLyAyLiAgImhibSJ8InJlbGF0aXZlOi8vY29kZS8uLi4vZmlsZTIuYzoxODczOjUwODk5OjMiDQogICAgICAgICAgICAgICAgLy8gMy4gICJoYm0ifCJyZWxhdGl2ZTovL2NvZGUvLi4uL2ZpbGUyLmM6NTc4MzoxNTQ0NjY6MyINCg0KICAgICAgICAgICAgICAgIHN0cmluZ1tdIGVtYmVkZGVkTGlua3MgPSBlbWJlZGRlZExpbmtzVGV4dC5TcGxpdChuZXcgc3RyaW5nW10geyAiXSxbIiB9LCBTdHJpbmdTcGxpdE9wdGlvbnMuTm9uZSk7DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgZW1iZWRkZWRMaW5rIGluIGVtYmVkZGVkTGlua3MpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmdbXSB0b2tlbnMgPSBlbWJlZGRlZExpbmsuU3BsaXQobmV3IGNoYXJbXSB7ICdcIicgfSwgU3RyaW5nU3BsaXRPcHRpb25zLlJlbW92ZUVtcHR5RW50cmllcyk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgdGV4dCBwb3J0aW9uIG9mIHRoZSBsaW5rDQogICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkTGlua3NUZXh0ID0gdG9rZW5zWzBdOw0KDQogICAgICAgICAgICAgICAgICAgIHN0cmluZyBsb2NhdGlvbiA9IHRva2Vuc1syXTsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nW10gbG9jYXRpb25Ub2tlbnMgPSBsb2NhdGlvbi5TcGxpdCgnOicpOw0KDQogICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRMb2NhdGlvbnMgPSByZWxhdGVkTG9jYXRpb25zID8/IG5ldyBMaXN0PExvY2F0aW9uPigpOw0KICAgICAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uIHBoeXNpY2FsTG9jYXRpb247DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uVG9rZW5zWzBdLkVxdWFscygiZmlsZSIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGZpbGUgcGF0aHMsIGUuZy46DQogICAgICAgICAgICAgICAgICAgICAgICAvLyAiSUNvbXBhcmFibGUifCJmaWxlOi8vQzovV2luZG93cy9NaWNyb3NvZnQuTkVUL0ZyYW1ld29yay92Mi4wLjUwNzI3L21zY29ybGliLmRsbDowOjA6MDowIg0KICAgICAgICAgICAgICAgICAgICAgICAgcGh5c2ljYWxMb2NhdGlvbiA9IG5ldyBQaHlzaWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWQgPSArK2NvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkoJCJ7bG9jYXRpb25Ub2tlbnNbMF19Ontsb2NhdGlvblRva2Vuc1sxXX06e2xvY2F0aW9uVG9rZW5zWzJdfSIsIFVyaUtpbmQuQWJzb2x1dGUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpb24gPSBuZXcgUmVnaW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydExpbmUgPSBJbnQzMi5QYXJzZShsb2NhdGlvblRva2Vuc1szXSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVPZmZzZXQgPSBJbnQzMi5QYXJzZShsb2NhdGlvblRva2Vuc1s0XSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVMZW5ndGggPSBJbnQzMi5QYXJzZShsb2NhdGlvblRva2Vuc1s1XSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcGh5c2ljYWxMb2NhdGlvbiA9IG5ldyBQaHlzaWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgSWQgPSArK2NvdW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkobG9jYXRpb25Ub2tlbnNbMV0uU3Vic3RyaW5nKDEpLCBVcmlLaW5kLlJlbGF0aXZlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXJpQmFzZUlkID0gIiRzcmNyb290Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaW9uID0gbmV3IFJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRMaW5lID0gSW50MzIuUGFyc2UobG9jYXRpb25Ub2tlbnNbMl0pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlT2Zmc2V0ID0gSW50MzIuUGFyc2UobG9jYXRpb25Ub2tlbnNbM10pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlTGVuZ3RoID0gSW50MzIuUGFyc2UobG9jYXRpb25Ub2tlbnNbNF0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHZhciByZWxhdGVkTG9jYXRpb24gPSBuZXcgTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IHBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgICAgICByZWxhdGVkTG9jYXRpb25zLkFkZChyZWxhdGVkTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8vIFJlLWFkZCB0aGUgdGV4dCBwb3J0aW9uIG9mIHRoZSBsaW5rIGluIGJyYWNrZXRzIHdpdGggdGhlIGxvY2F0aW9uIGlkIGluIHBhcmVucywgZS5nLiBbbGluayB0ZXh0XShpZCkNCiAgICAgICAgICAgICAgICBzYi5BcHBlbmQoJCJbe2VtYmVkZGVkTGlua3NUZXh0fV0oe3JlbGF0ZWRMb2NhdGlvbnNbbGlua0luZGV4KytdLlBoeXNpY2FsTG9jYXRpb24uSWR9KSIpOw0KDQogICAgICAgICAgICAgICAgcmF3TWVzc2FnZSA9IHJhd01lc3NhZ2UuU3Vic3RyaW5nKGluZGV4ICsgIl1dIi5MZW5ndGgpOw0KICAgICAgICAgICAgICAgIGluZGV4ID0gcmF3TWVzc2FnZS5JbmRleE9mKCJbWyIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBzYi5BcHBlbmQocmF3TWVzc2FnZSk7DQogICAgICAgICAgICBub3JtYWxpemVkTWVzc2FnZSA9IHNiLlRvU3RyaW5nKCk7DQogICAgICAgICAgICByZXR1cm4gcmVsYXRlZExvY2F0aW9uczsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZSBhIFJlZ2lvbiBvYmplY3QgdGhhdCBjb250YWlucyBvbmx5IHRob3NlIHByb3BlcnRpZXMgcmVxdWlyZWQgYnkgdGhlDQogICAgICAgIC8vLyBTQVJJRiBzcGVjLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpZWxkcyI+DQogICAgICAgIC8vLyBBcnJheSBvZiBmaWVsZHMgZnJvbSBhIENTViByZWNvcmQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+DQogICAgICAgIC8vLyBBIFJlZ2lvbiBvYmplY3QgdGhhdCBjb250YWlucyBvbmx5IHRob3NlIHByb3BlcnRpZXMgcmVxdWlyZWQgYnkgdGhlIFNBUklGIHNwZWMuDQogICAgICAgIC8vLyA8L3JldHVybnM+DQogICAgICAgIHByaXZhdGUgUmVnaW9uIE1ha2VSZWdpb24oc3RyaW5nW10gZmllbGRzKQ0KICAgICAgICB7DQogICAgICAgICAgICBSZWdpb24gcmVnaW9uID0gbmV3IFJlZ2lvbg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IEdldEludGVnZXIoZmllbGRzLCBGaWVsZEluZGV4LlN0YXJ0TGluZSksDQogICAgICAgICAgICAgICAgU3RhcnRDb2x1bW4gPSBHZXRJbnRlZ2VyKGZpZWxkcywgRmllbGRJbmRleC5TdGFydENvbHVtbiksDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBpbnQgZW5kTGluZSA9IEdldEludGVnZXIoZmllbGRzLCBGaWVsZEluZGV4LkVuZExpbmUpOw0KICAgICAgICAgICAgaW50IGVuZENvbHVtbiA9IEdldEludGVnZXIoZmllbGRzLCBGaWVsZEluZGV4LkVuZENvbHVtbik7DQogICAgICAgICAgICBpZiAoZW5kTGluZSAhPSByZWdpb24uU3RhcnRMaW5lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlZ2lvbi5FbmRMaW5lID0gZW5kTGluZTsNCiAgICAgICAgICAgICAgICByZWdpb24uRW5kQ29sdW1uID0gZW5kQ29sdW1uOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChlbmRDb2x1bW4gIT0gcmVnaW9uLlN0YXJ0Q29sdW1uKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVnaW9uLkVuZENvbHVtbiA9IGVuZENvbHVtbjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZWdpb247DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgR2V0U3RyaW5nKHN0cmluZ1tdIGZpZWxkcywgRmllbGRJbmRleCBmaWVsZEluZGV4KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gZmllbGRzWyhpbnQpZmllbGRJbmRleF07DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIGludCBHZXRJbnRlZ2VyKHN0cmluZ1tdIGZpZWxkcywgRmllbGRJbmRleCBmaWVsZEluZGV4KQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgZmllbGQgPSBHZXRTdHJpbmcoZmllbGRzLCBmaWVsZEluZGV4KTsNCiAgICAgICAgICAgIGludCB2YWx1ZTsNCiAgICAgICAgICAgIGlmICghaW50LlRyeVBhcnNlKGZpZWxkLCBvdXQgdmFsdWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhbHVlID0gMDsNCiAgICAgICAgICAgICAgICBBZGRUb29sTm90aWZpY2F0aW9uKA0KICAgICAgICAgICAgICAgICAgICAiSW52YWxpZEludGVnZXIiLA0KICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25MZXZlbC5FcnJvciwNCiAgICAgICAgICAgICAgICAgICAgQ29udmVydGVyUmVzb3VyY2VzLlNlbW1sZUludmFsaWRJbnRlZ2VyLA0KICAgICAgICAgICAgICAgICAgICBmaWVsZCwNCiAgICAgICAgICAgICAgICAgICAgZmllbGRJbmRleCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgUmVzdWx0TGV2ZWwgUmVzdWx0TGV2ZWxGcm9tU2VtbWxlU2V2ZXJpdHkoc3RyaW5nIHNlbW1sZVNldmVyaXR5KQ0KICAgICAgICB7DQogICAgICAgICAgICBzd2l0Y2ggKHNlbW1sZVNldmVyaXR5KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgU2VtbWxlRXJyb3I6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXN1bHRMZXZlbC5FcnJvcjsNCg0KICAgICAgICAgICAgICAgIGNhc2UgU2VtbWxlV2FybmluZzoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdExldmVsLldhcm5pbmc7DQoNCiAgICAgICAgICAgICAgICBjYXNlIFNlbW1sZVJlY29tbWVuZGF0aW9uOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0TGV2ZWwuTm90ZTsNCg0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgIEFkZFRvb2xOb3RpZmljYXRpb24oDQogICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93blNldmVyaXR5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkxldmVsLkVycm9yLA0KICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydGVyUmVzb3VyY2VzLlNlbW1sZVVua25vd25TZXZlcml0eSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbW1sZVNldmVyaXR5KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdExldmVsLldhcm5pbmc7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgQWRkVG9vbE5vdGlmaWNhdGlvbigNCiAgICAgICAgICAgIHN0cmluZyBpZCwNCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkxldmVsIGxldmVsLA0KICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2VGb3JtYXQsDQogICAgICAgICAgICBwYXJhbXMgb2JqZWN0W10gYXJncykNCiAgICAgICAgew0KICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2UgPSBzdHJpbmcuRm9ybWF0KEN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlLCBtZXNzYWdlRm9ybWF0LCBhcmdzKTsNCg0KICAgICAgICAgICAgLy8gV2hlbiB0aGUgcGFyc2VyIHJlYWQgdGhlIG9mZmVuZGluZyBsaW5lLCBpdCBpbmNyZW1lbnRlZCB0aGUgbGluZSBudW1iZXIsDQogICAgICAgICAgICAvLyBzbyByZXBvcnQgdGhlIHByZXZpb3VzIGxpbmUuDQogICAgICAgICAgICBsb25nIGxpbmVOdW1iZXIgPSBfcGFyc2VyLkNvbnRleHQuUm93IC0gMTsNCiAgICAgICAgICAgIHN0cmluZyBtZXNzYWdlV2l0aExpbmVOdW1iZXIgPSBzdHJpbmcuRm9ybWF0KA0KICAgICAgICAgICAgICAgIEN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlLA0KICAgICAgICAgICAgICAgIENvbnZlcnRlclJlc291cmNlcy5TZW1tbGVOb3RpZmljYXRpb25Gb3JtYXQsDQogICAgICAgICAgICAgICAgbGluZU51bWJlciwNCiAgICAgICAgICAgICAgICBtZXNzYWdlKTsNCg0KICAgICAgICAgICAgX3Rvb2xOb3RpZmljYXRpb25zLkFkZChuZXcgTm90aWZpY2F0aW9uDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSWQgPSBpZCwNCiAgICAgICAgICAgICAgICBUaW1lID0gRGF0ZVRpbWUuTm93LA0KICAgICAgICAgICAgICAgIExldmVsID0gbGV2ZWwsDQogICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IG1lc3NhZ2VXaXRoTGluZU51bWJlciB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgU2VtbWxlRXJyb3IgPSAiZXJyb3IiOw0KICAgICAgICBwdWJsaWMgY29uc3Qgc3RyaW5nIFNlbW1sZVdhcm5pbmcgPSAid2FybmluZyI7DQogICAgICAgIHB1YmxpYyBjb25zdCBzdHJpbmcgU2VtbWxlUmVjb21tZW5kYXRpb24gPSAicmVjb21tZW5kYXRpb24iOw0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysis.Sarif.Converters.TSLintObjectModel' with another namespace."
},
- "hashes": [
- {
- "value": "2854AE32CB4F62AAB45AC081363ABFE0",
- "algorithm": "md5"
- },
- {
- "value": "8C84DD18D938093C934460CE9D59A241BC48B51A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4AF4020EF9BFB8138FEEF8E67258B3120937AF0D1554273395D3F2E3ECBCEA0A",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 6,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.TSLintObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/SparseReader.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5YbWw7DQp1c2luZyBTeXN0ZW0uWG1sLlNjaGVtYTsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQ29udmVydGVycw0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gQSBGYXN0IFhNTCBSZWFkZXIgdGhhdCByZWFkcyBvbmx5IHRoZSByZXF1ZXN0ZWQgZW50aXRpZXMNCiAgICAvLy8gYW5kIHVzZXMgZGVsZWdhdGVzIHRvIGNyZWF0ZSBvYmplY3RzIGFsb25nIHRoZSB3YXkNCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBzZWFsZWQgY2xhc3MgU3BhcnNlUmVhZGVyIDogSURpc3Bvc2FibGUNCiAgICB7DQogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgU3BhcnNlUmVhZGVyRGlzcGF0Y2hUYWJsZSBfZGlzcGF0Y2hUYWJsZTsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBYbWxSZWFkZXIgX3htbFJlYWRlcjsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+SW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU3BhcnNlUmVhZGVyIi8+IGNsYXNzLjwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkaXNwYXRjaFRhYmxlIj5UaGUgZGlzcGF0Y2ggdGFibGUgdXNlZCB0byBmaXJlIGRlbGVnYXRlcyBmb3IgWE1MIGVsZW1lbnRzIG9uDQogICAgICAgIC8vLyB0aGlzIGluc3RhbmNlLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ieG1sUmVhZGVyIj5UaGUgcmVhZGVyIGZyb20gd2hpY2ggWE1MIHNoYWxsIGJlIHJldHJpZXZlZC4gVGhpcyBTcGFyc2VSZWFkZXIgdGFrZXMNCiAgICAgICAgLy8vIG93bmVyc2hpcCBvZiB0aGlzIFhNTCByZWFkZXIgYW5kIGRlc3Ryb3lzIGl0IHVwb24gZGVzdHJ1Y3Rpb24uPC9wYXJhbT4NCiAgICAgICAgcHVibGljIFNwYXJzZVJlYWRlcihTcGFyc2VSZWFkZXJEaXNwYXRjaFRhYmxlIGRpc3BhdGNoVGFibGUsIFhtbFJlYWRlciB4bWxSZWFkZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIF9kaXNwYXRjaFRhYmxlID0gZGlzcGF0Y2hUYWJsZTsNCiAgICAgICAgICAgIF94bWxSZWFkZXIgPSB4bWxSZWFkZXI7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgbmV3IDxzZWUgY3JlZj0iU3BhcnNlUmVhZGVyIi8+IHBvaW50aW5nIHRvIGEgPHNlZSBjcmVmPSJTeXN0ZW0uSU8uU3RyZWFtIi8+IHJhdGhlcg0KICAgICAgICAvLy8gdGhhbiBhIDxzZWUgY3JlZj0iU3lzdGVtLlhtbC5YbWxSZWFkZXIiLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGlzcGF0Y2hUYWJsZSI+VGhlIGRpc3BhdGNoIHRhYmxlIHVzZWQgdG8gZmlyZSBkZWxlZ2F0ZXMgZm9yIFhNTCBlbGVtZW50cyBvbg0KICAgICAgICAvLy8gdGhpcyBpbnN0YW5jZS48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0cmVhbSI+VGhlIHN0cmVhbSBmcm9tIHdoaWNoIFhNTCBzaGFsbCBiZSByZXRyaWV2ZWQuIFRoZSBTcGFyc2VSZWFkZXIgdGFrZXMNCiAgICAgICAgLy8vIG93bmVyc2hpcCBvZiB0aGlzIHN0cmVhbSBhbmQgaXMgcmVzcG9uc2libGUgZm9yIGRlc3Ryb3lpbmcgaXQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPg0KICAgICAgICAvLy8gQSA8c2VlIGNyZWY9IlNwYXJzZVJlYWRlciIvPiB3cmFwcGluZyB0aGUgc3RyZWFtIDxwYXJhbXJlZiBuYW1lPSJzdHJlYW0iLz4uDQogICAgICAgIC8vLyA8L3JldHVybnM+DQogICAgICAgIHB1YmxpYyBzdGF0aWMgU3BhcnNlUmVhZGVyIENyZWF0ZUZyb21TdHJlYW0oU3BhcnNlUmVhZGVyRGlzcGF0Y2hUYWJsZSBkaXNwYXRjaFRhYmxlLCBTdHJlYW0gc3RyZWFtKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gQ3JlYXRlRnJvbVN0cmVhbShkaXNwYXRjaFRhYmxlLCBzdHJlYW0sIG51bGwpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIG5ldyA8c2VlIGNyZWY9IlNwYXJzZVJlYWRlciIvPiBwb2ludGluZyB0byBhIDxzZWUgY3JlZj0iU3lzdGVtLklPLlN0cmVhbSIvPiByYXRoZXINCiAgICAgICAgLy8vIHRoYW4gYSA8c2VlIGNyZWY9IlN5c3RlbS5YbWwuWG1sUmVhZGVyIi8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImRpc3BhdGNoVGFibGUiPlRoZSBkaXNwYXRjaCB0YWJsZSB1c2VkIHRvIGZpcmUgZGVsZWdhdGVzIGZvciBYTUwgZWxlbWVudHMgb24NCiAgICAgICAgLy8vIHRoaXMgaW5zdGFuY2UuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdHJlYW0iPlRoZSBzdHJlYW0gZnJvbSB3aGljaCBYTUwgc2hhbGwgYmUgcmV0cmlldmVkLiBUaGUgU3BhcnNlUmVhZGVyIHRha2VzDQogICAgICAgIC8vLyBvd25lcnNoaXAgb2YgdGhpcyBzdHJlYW0gYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBkZXN0cm95aW5nIGl0LjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic2NoZW1hU2V0Ij5UaGUgeG1sIHNjaGVtYSB0byB2YWxpZGF0ZSB0aGUgaW5wdXQgYWdhaW5zdDwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz4NCiAgICAgICAgLy8vIEEgPHNlZSBjcmVmPSJTcGFyc2VSZWFkZXIiLz4gd3JhcHBpbmcgdGhlIHN0cmVhbSA8cGFyYW1yZWYgbmFtZT0ic3RyZWFtIi8+Lg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICBwdWJsaWMgc3RhdGljIFNwYXJzZVJlYWRlciBDcmVhdGVGcm9tU3RyZWFtKFNwYXJzZVJlYWRlckRpc3BhdGNoVGFibGUgZGlzcGF0Y2hUYWJsZSwgU3RyZWFtIHN0cmVhbSwgWG1sU2NoZW1hU2V0IHNjaGVtYVNldCkNCiAgICAgICAgew0KICAgICAgICAgICAgdmFyIHNldHRpbmdzID0gbmV3IFhtbFJlYWRlclNldHRpbmdzDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRHRkUHJvY2Vzc2luZyA9IER0ZFByb2Nlc3NpbmcuSWdub3JlLA0KICAgICAgICAgICAgICAgIENsb3NlSW5wdXQgPSB0cnVlLA0KICAgICAgICAgICAgICAgIFNjaGVtYXMgPSBzY2hlbWFTZXQsDQogICAgICAgICAgICAgICAgWG1sUmVzb2x2ZXIgPSBudWxsDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBYbWxSZWFkZXIgeFJlYWRlciA9IG51bGw7DQogICAgICAgICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB4UmVhZGVyID0gWG1sUmVhZGVyLkNyZWF0ZShzdHJlYW0sIHNldHRpbmdzKTsNCiAgICAgICAgICAgICAgICB4UmVhZGVyLk1vdmVUb0NvbnRlbnQoKTsgLy8gSWYgdGhpcyB0aHJvd3MsIHdlIGRlc3Ryb3kgdGhlIHJlYWRlciBpbiB0aGUgZmluYWxseSBibG9jayBiZWxvdy4NCiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFNwYXJzZVJlYWRlcihkaXNwYXRjaFRhYmxlLCB4UmVhZGVyKTsgLy8gbm90aHJvdw0KICAgICAgICAgICAgICAgIHhSZWFkZXIgPSBudWxsOyAvLyBPd25lcnNoaXAgdHJhbnNmZXJlZCB0byBTcGFyc2VSZWFkZXI7IGRvbid0IGRlc3Ryb3kgaGVyZQ0KICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmaW5hbGx5DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHhSZWFkZXIgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHhSZWFkZXIuRGlzcG9zZSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBib29sIElzRW1wdHlFbGVtZW50IHsgZ2V0IHsgcmV0dXJuIF94bWxSZWFkZXIuSXNFbXB0eUVsZW1lbnQ7IH0gfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5SZWFkcyB0aGUgY2hpbGRyZW4gb2YgPHNlZSBjcmVmPSJNOlhtbFJlYWRlciIvPi48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGFnTmFtZSI+TmFtZSBvZiB0aGUgdGFnLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGFyZW50Ij5UaGUgcGFyZW50LjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyB2b2lkIFJlYWRDaGlsZHJlbihzdHJpbmcgdGFnTmFtZSwgb2JqZWN0IHBhcmVudCkNCiAgICAgICAgew0KICAgICAgICAgICAgUmVhZENoaWxkcmVuKHRhZ05hbWUsIHBhcmVudCwgb3V0IHN0cmluZyBpbm5lclRleHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PlJlYWRzIHRoZSBjaGlsZHJlbiBvZiA8c2VlIGNyZWY9Ik06WG1sUmVhZGVyIi8+Ljwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0YWdOYW1lIj5OYW1lIG9mIHRoZSB0YWcuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwYXJlbnQiPlRoZSBwYXJlbnQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpbm5lclRleHQiPlRoZSBpbm5lciB0ZXh0LCBpZiBhbnksIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFnLjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyB2b2lkIFJlYWRDaGlsZHJlbihzdHJpbmcgdGFnTmFtZSwgb2JqZWN0IHBhcmVudCwgb3V0IHN0cmluZyBpbm5lclRleHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlubmVyVGV4dCA9IG51bGw7DQoNCiAgICAgICAgICAgIC8vIGNoZWNrIGZvciBlbXB0eSBlbGVtZW50DQogICAgICAgICAgICBib29sIGlzRW1wdHkgPSBfeG1sUmVhZGVyLklzRW1wdHlFbGVtZW50Ow0KDQogICAgICAgICAgICAvLyBzdGFydCByZWFkaW5nIChhc3N1bWVzIGFsbCBhdHRyaWJ1dGVzIGFyZSBhbHJlYWR5IGNvbnN1bWVkKQ0KICAgICAgICAgICAgUmVhZFN0YXJ0RWxlbWVudCgpOw0KDQogICAgICAgICAgICBpZiAoaXNFbXB0eSkNCiAgICAgICAgICAgICAgICByZXR1cm47IC8vIERPTkUgd2l0aCB0aGlzIGVsZW1lbnQNCg0KICAgICAgICAgICAgd2hpbGUgKCFJc0VuZFN0YXRlKHRhZ05hbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFRyeSB0byBjYWxsIGEgaGFuZGxlciBmb3IgdGhpcyBlbGVtZW50Li4uDQogICAgICAgICAgICAgICAgaWYgKCFfZGlzcGF0Y2hUYWJsZS5EaXNwYXRjaChfeG1sUmVhZGVyLkxvY2FsTmFtZSwgdGhpcywgcGFyZW50KSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChfeG1sUmVhZGVyLk5vZGVUeXBlID09IFhtbE5vZGVUeXBlLlRleHQpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyVGV4dCA9IF94bWxSZWFkZXIuUmVhZENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAvLyAuLi4gYW5kIHNraXAgdGhlIGVsZW1lbnQgaWYgbm8gc3VjaCBoYW5kbGVyIHdhcyByZWdpc3RlcmVkLg0KICAgICAgICAgICAgICAgICAgICBTa2lwKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBjb25jbHVkZSByZWFkaW5nDQogICAgICAgICAgICBSZWFkRW5kRWxlbWVudCh0YWdOYW1lKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5HZXRzIHRoZSBsb2NhbCBuYW1lIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHZhbHVlPlRoZSBsb2NhbCBuYW1lIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuPC92YWx1ZT4NCiAgICAgICAgLy8vIDxzZWVhbHNvIGNyZWY9IlA6WG1sUmVhZGVyLkxvY2FsTmFtZSIvPg0KICAgICAgICBwdWJsaWMgc3RyaW5nIExvY2FsTmFtZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gX3htbFJlYWRlci5Mb2NhbE5hbWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+U2tpcHMgdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhpcyA8c2VlIGNyZWY9IlNwYXJzZVJlYWRlciIvPiBpcyBjdXJyZW50bHkgcG9zaXRpb25lZC48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8c2VlYWxzbyBjcmVmPSJNOlhtbFJlYWRlci5Ta2lwIi8+DQogICAgICAgIHB1YmxpYyB2b2lkIFNraXAoKQ0KICAgICAgICB7DQogICAgICAgICAgICBfeG1sUmVhZGVyLlNraXAoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5SZWFkcyBhbiBhdHRyaWJ1dGUgdmFsdWUgYXMgYSBzdHJpbmcuPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImF0dHJpYnV0ZU5hbWUiPk5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byByZWFkLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz5UaGUgYXR0cmlidXRlIHN0cmluZyBpZiB0aGUgYXR0cmlidXRlIGV4aXN0czsgb3IgbnVsbCBpZiBpdCBkb2Vzbid0IGV4aXN0LjwvcmV0dXJucz4NCiAgICAgICAgLy8vIDxzZWVhbHNvIGNyZWY9Ik06WG1sUmVhZGVyLkdldEF0dHJpYnV0ZSIvPg0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJlYWRBdHRyaWJ1dGVTdHJpbmcoc3RyaW5nIGF0dHJpYnV0ZU5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfeG1sUmVhZGVyLkdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5SZWFkcyBhbiBhdHRyaWJ1dGUgdmFsdWUgYXMgYW4gaW50ZWdlci48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYXR0cmlidXRlTmFtZSI+TmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIHJlYWQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPlRoZSBhdHRyaWJ1dGUgdmFsdWUgY29udmVydGVkIHRvIGFuIGludGVnZXIgaWYgaXQgZXhpc3RzOyBvdGhlcndpc2UsIG51bGwuPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHNlZWFsc28gY3JlZj0iTTpYbWxSZWFkZXIuR2V0QXR0cmlidXRlIi8+DQogICAgICAgIHB1YmxpYyBpbnQ/IFJlYWRBdHRyaWJ1dGVJbnQoc3RyaW5nIGF0dHJpYnV0ZU5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBzdHJpbmdWYWx1ZSA9IF94bWxSZWFkZXIuR2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOw0KICAgICAgICAgICAgaWYgKHN0cmluZ1ZhbHVlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gWG1sQ29udmVydC5Ub0ludDMyKHN0cmluZ1ZhbHVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5SZWFkcyBhbiBhdHRyaWJ1dGUgdmFsdWUgYXMgYSBib29sZWFuLjwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhdHRyaWJ1dGVOYW1lIj5OYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gcmVhZC48L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+VGhlIGF0dHJpYnV0ZSB2YWx1ZSBjb252ZXJ0ZWQgdG8gYSBib29sZWFuIGlmIGl0IGV4aXN0czsgb3RoZXJ3aXNlLCBudWxsLjwvcmV0dXJucz4NCiAgICAgICAgLy8vIDxzZWVhbHNvIGNyZWY9Ik06WG1sUmVhZGVyLkdldEF0dHJpYnV0ZSIvPg0KICAgICAgICBwdWJsaWMgYm9vbD8gUmVhZEF0dHJpYnV0ZUJvb2woc3RyaW5nIGF0dHJpYnV0ZU5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBzdHJpbmdWYWx1ZSA9IF94bWxSZWFkZXIuR2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpOw0KICAgICAgICAgICAgaWYgKHN0cmluZ1ZhbHVlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gWG1sQ29udmVydC5Ub0Jvb2xlYW4oc3RyaW5nVmFsdWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PlJlYWRzIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjb250ZW50IGFzIGEgc3RyaW5nIGFuZCBjb25zdW1lcyB0aGUgZWxlbWVudC48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cmV0dXJucz5UaGUgZWxlbWVudCdzIGNvbnRlbnQgYXMgYSBzdHJpbmcuPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHNlZWFsc28gY3JlZj0iTTpYbWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmciLz4NCiAgICAgICAgcHVibGljIHN0cmluZyBSZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfeG1sUmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzU3RyaW5nKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBSZWFkcyB0aGUgY3VycmVudCBlbGVtZW50J3MgY29udGVudCBhcyBhbiBpbnRlZ2VyIGFuZCBjb25zdW1lcyB0aGUgZWxlbWVudC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPlRoZSBlbGVtZW50J3MgY29udGVudCBhcyBhIGludGVnZXIuPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHNlZWFsc28gY3JlZj0iTTpYbWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNJbnQzMiIvPg0KICAgICAgICBwdWJsaWMgaW50IFJlYWRFbGVtZW50Q29udGVudEFzSW50MzIoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gX3htbFJlYWRlci5SZWFkRWxlbWVudENvbnRlbnRBc0ludCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gUmVhZCdzIHRoZSBjdXJyZW50IGVsZW1lbnQncyBjb250ZW50IGFuZCBhdHRlbXB0cyB0byBjb252ZXJ0IGl0IHRvIGFuIGludGVnZXIuIENvbnN1bWVzIHRoZQ0KICAgICAgICAvLy8gZWxlbWVudC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPlRoZSBlbGVtZW50IGNvbnRlbnQgYXMgYW4gaW50IGlmIGl0IGNhbiBiZSBwYXJzZWQgYXMgYW4gaW50OyBvdGhlcndpc2UsIDAuPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHNlZWFsc28gY3JlZj0iTTpYbWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNJbnQzMiIvPg0KICAgICAgICBwdWJsaWMgaW50IFJlYWRFbGVtZW50Q29udGVudEFzSW50MzJPckRlZmF1bHQoKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoX3htbFJlYWRlci5Jc0VtcHR5RWxlbWVudCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLlNraXAoKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdChpbnQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgY29udGVudDsNCg0KICAgICAgICAgICAgLy8gVGhlIE51bWJlclN0eWxlcyBjb25zdGFudHMgaGVyZSBhcmUgZnJvbSBYbWxDb252ZXJ0LlRvSW50MzI6DQogICAgICAgICAgICAvLyBodHRwOi8vcmVmZXJlbmNlc291cmNlLm1pY3Jvc29mdC5jb20vI1N5c3RlbS5YbWwvWG1sL1N5c3RlbS9YbWwvWG1sQ29udmVydC5jcyM5MjcNCiAgICAgICAgICAgIGlmIChpbnQuVHJ5UGFyc2UoUmVhZEVsZW1lbnRDb250ZW50QXNTdHJpbmcoKSwgTnVtYmVyU3R5bGVzLkFsbG93TGVhZGluZ1NpZ24gfCBOdW1iZXJTdHlsZXMuQWxsb3dMZWFkaW5nV2hpdGUgfCBOdW1iZXJTdHlsZXMuQWxsb3dUcmFpbGluZ1doaXRlLCBOdW1iZXJGb3JtYXRJbmZvLkludmFyaWFudEluZm8sIG91dCBjb250ZW50KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBSZWFkcyB0aGUgY3VycmVudCBlbGVtZW50J3MgY29udGVudCBhcyBhIGRvdWJsZSBhbmQgY29uc3VtZXMgdGhlIGVsZW1lbnQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cmV0dXJucz5UaGUgZWxlbWVudCdzIGNvbnRlbnQgYXMgYSBkb3VibGUuPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHNlZWFsc28gY3JlZj0iTTpYbWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNEb3VibGUiLz4NCiAgICAgICAgcHVibGljIGRvdWJsZSBSZWFkRWxlbWVudENvbnRlbnRBc0RvdWJsZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfeG1sUmVhZGVyLlJlYWRFbGVtZW50Q29udGVudEFzRG91YmxlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBodHRwOi8vcmVmZXJlbmNlc291cmNlLm1pY3Jvc29mdC5jb20vI1N5c3RlbS5YbWwvWG1sL1N5c3RlbS9YbWwvWG1sQ29udmVydC5jcyMxNDE1DQogICAgICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGNoYXJbXSBXaGl0ZXNwYWNlQ2hhcmFjdGVycyA9IG5ldyBjaGFyW10geyAnICcsICdcdCcsICdcbicsICdccicgfTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBdHRlbXB0cyB0byB0aGUgY3VycmVudCBlbGVtZW50J3MgY29udGVudCBhcyBhIGRvdWJsZSBhbmQgY29uc3VtZXMgdGhlIGVsZW1lbnQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cmV0dXJucz5UaGUgZWxlbWVudCdzIGNvbnRlbnQgYXMgYSBkb3VibGUgaWYgaXQgY2FuIGJlIHBhcnNlZCBhcyBhIGRvdWJsZTsgb3RoZXJ3aXNlLCAwLjAuPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHNlZWFsc28gY3JlZj0iTTpYbWxSZWFkZXIuUmVhZEVsZW1lbnRDb250ZW50QXNEb3VibGUiLz4NCiAgICAgICAgcHVibGljIGRvdWJsZSBSZWFkRWxlbWVudENvbnRlbnRBc0RvdWJsZU9yRGVmYXVsdCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChfeG1sUmVhZGVyLklzRW1wdHlFbGVtZW50KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIF94bWxSZWFkZXIuU2tpcCgpOw0KICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0KGRvdWJsZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0cmluZyBjb250ZW50ID0gdGhpcy5SZWFkRWxlbWVudENvbnRlbnRBc1N0cmluZygpOw0KICAgICAgICAgICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdChkb3VibGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50LlRyaW0oV2hpdGVzcGFjZUNoYXJhY3RlcnMpOw0KDQogICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgPT0gIi1JTkYiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERvdWJsZS5OZWdhdGl2ZUluZmluaXR5Ow0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChjb250ZW50ID09ICJJTkYiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERvdWJsZS5Qb3NpdGl2ZUluZmluaXR5Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgZG91YmxlIGRWYWw7DQogICAgICAgICAgICBpZiAoIURvdWJsZS5UcnlQYXJzZShjb250ZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyU3R5bGVzLkFsbG93TGVhZGluZ1NpZ24gfA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyU3R5bGVzLkFsbG93RGVjaW1hbFBvaW50IHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlclN0eWxlcy5BbGxvd0V4cG9uZW50IHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlclN0eWxlcy5BbGxvd0xlYWRpbmdXaGl0ZSB8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJTdHlsZXMuQWxsb3dUcmFpbGluZ1doaXRlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyRm9ybWF0SW5mby5JbnZhcmlhbnRJbmZvLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IGRWYWwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0KGRvdWJsZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChkVmFsID09IDAgJiYgY29udGVudFswXSA9PSAnLScpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIC0wZDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIGRWYWw7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBEZXN0cm95cyB0aGlzIDxzZWUgY3JlZj0iU3BhcnNlUmVhZGVyIi8+IChhbmQgdGhlIHVuZGVybHlpbmcgPHNlZSBjcmVmPSJfeG1sUmVhZGVyIi8+KS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxzZWVhbHNvIGNyZWY9Ik06U3lzdGVtLklEaXNwb3NhYmxlLkRpc3Bvc2UoKSIvPg0KICAgICAgICBwdWJsaWMgdm9pZCBEaXNwb3NlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgX3htbFJlYWRlci5EaXNwb3NlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIGJvb2wgSXNFbmRTdGF0ZShzdHJpbmcgZXhwZWN0ZWRUYWdOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gSXNNYXRjaGluZ1N0YXRlKGV4cGVjdGVkVGFnTmFtZSwgZmFsc2UpIHx8IF94bWxSZWFkZXIuRU9GOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBib29sIElzTWF0Y2hpbmdTdGF0ZShzdHJpbmcgZXhwZWN0ZWRUYWdOYW1lLCBib29sIGlzU3RhcnRTdGF0ZSA9IHRydWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIGJhc2ljIGNoZWNrcw0KICAgICAgICAgICAgaWYgKF94bWxSZWFkZXIuSXNTdGFydEVsZW1lbnQoKSAhPSBpc1N0YXJ0U3RhdGUgfHwNCiAgICAgICAgICAgICAgICBzdHJpbmcuSXNOdWxsT3JFbXB0eShleHBlY3RlZFRhZ05hbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCB0YWcgbmFtZXMgbWF0Y2gNCiAgICAgICAgICAgIHJldHVybiBleHBlY3RlZFRhZ05hbWUuRXF1YWxzKF94bWxSZWFkZXIuTG9jYWxOYW1lKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBSZWFkU3RhcnRFbGVtZW50KCkNCiAgICAgICAgew0KICAgICAgICAgICAgX3htbFJlYWRlci5SZWFkU3RhcnRFbGVtZW50KCk7DQogICAgICAgICAgICBfeG1sUmVhZGVyLk1vdmVUb0NvbnRlbnQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBSZWFkRW5kRWxlbWVudChzdHJpbmcgZXhwZWN0ZWRUYWdOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIUlzRW5kU3RhdGUoZXhwZWN0ZWRUYWdOYW1lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWG1sRXhjZXB0aW9uKCJYTUwgUmVhZGVyIGlzIGluIGludmFsaWQgc3RhdGUiKTsgLy8gVE9ETyBDb2RlIEFuYWx5c2lzIEV4Y2VwdGlvbg0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBfeG1sUmVhZGVyLlJlYWRFbmRFbGVtZW50KCk7DQogICAgICAgICAgICBfeG1sUmVhZGVyLk1vdmVUb0NvbnRlbnQoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Converters.TSLintObjectModel'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "377BD641352D700B0EA156076565453E",
- "algorithm": "md5"
- },
- {
- "value": "22FE0E3B15C6590A1EE83F6B54BCD2CBFA0A2B06",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F89AAA97063560194CB5FC055A11FD297A5EFEA2CD6CD5492562B9D661CE2609",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 6,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Converters.TSLintObjectModel"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/StaticDriverVerifierConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5UZXh0Ow0KdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgU3RhdGljRHJpdmVyVmVyaWZpZXJDb252ZXJ0ZXIgOiBUb29sRmlsZUNvbnZlcnRlckJhc2UNCiAgICB7DQogICAgICAgIHByaXZhdGUgU3RyaW5nQnVpbGRlciBfc2I7DQogICAgICAgIHByaXZhdGUgU3RhY2s8c3RyaW5nPiBfY2FsbGVyczsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+SW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU3RhdGljRHJpdmVyVmVyaWZpZXJDb252ZXJ0ZXIiLz4gY2xhc3MuPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU3RhdGljRHJpdmVyVmVyaWZpZXJDb252ZXJ0ZXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICBfc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KICAgICAgICAgICAgX2NhbGxlcnMgPSBuZXcgU3RhY2s8c3RyaW5nPigpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIHRoYXQgdGFrZXMgYSBTdGF0aWMgRHJpdmVyIFZlcmlmaWVyIGxvZyBzdHJlYW0gYW5kIGNvbnZlcnRzDQogICAgICAgIC8vLyAgaXRzIGRhdGEgdG8gYSBTQVJJRiBqc29uIHN0cmVhbS4gUmVhZCBpbiBTdGF0aWMgRHJpdmVyIFZlcmlmaWVyIGRhdGEgZnJvbSBhbiBpbnB1dA0KICAgICAgICAvLy8gIHN0cmVhbSBhbmQgd3JpdGUgUmVzdWx0IG9iamVjdHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaW5wdXQiPlN0cmVhbSBvZiBhIFN0YXRpYyBEcml2ZXIgVmVyaWZpZXIgbG9nPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdXRwdXQiPlNBUklGIGpzb24gc3RyZWFtIG9mIHRoZSBjb252ZXJ0ZWQgU3RhdGljIERyaXZlciBWZXJpZmllciBsb2c8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImRhdGFUb0luc2VydCI+T3B0aW9uYWxseSBlbWl0dGVkIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2cuPC9wYXJhbT4NCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgQ29udmVydChTdHJlYW0gaW5wdXQsIElSZXN1bHRMb2dXcml0ZXIgb3V0cHV0LCBPcHRpb25hbGx5RW1pdHRlZERhdGEgZGF0YVRvSW5zZXJ0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihpbnB1dCkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAob3V0cHV0ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3V0cHV0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFJlc3VsdCByZXN1bHQgPSBQcm9jZXNzU2R2RGVmZWN0U3RyZWFtKGlucHV0KTsNCiAgICAgICAgICAgIHZhciByZXN1bHRzID0gbmV3IFJlc3VsdFtdIHsgcmVzdWx0IH07DQoNCiAgICAgICAgICAgIHZhciB0b29sID0gbmV3IFRvb2wNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOYW1lID0gIlN0YXRpY0RyaXZlclZlcmlmaWVyIiwNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHZhciBmaWxlSW5mb0ZhY3RvcnkgPSBuZXcgRmlsZUluZm9GYWN0b3J5KG51bGwsIGRhdGFUb0luc2VydCk7DQogICAgICAgICAgICBEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+IGZpbGVEaWN0aW9uYXJ5ID0gZmlsZUluZm9GYWN0b3J5LkNyZWF0ZShyZXN1bHRzKTsNCg0KICAgICAgICAgICAgdmFyIHJ1biA9IG5ldyBSdW4oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFRvb2wgPSB0b29sDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBvdXRwdXQuSW5pdGlhbGl6ZShydW4pOw0KDQogICAgICAgICAgICBpZiAoZmlsZURpY3Rpb25hcnkgIT0gbnVsbCAmJiBmaWxlRGljdGlvbmFyeS5Db3VudCA+IDApIHsgb3V0cHV0LldyaXRlRmlsZXMoZmlsZURpY3Rpb25hcnkpOyB9DQoNCiAgICAgICAgICAgIG91dHB1dC5PcGVuUmVzdWx0cygpOw0KICAgICAgICAgICAgb3V0cHV0LldyaXRlUmVzdWx0cyhyZXN1bHRzKTsNCiAgICAgICAgICAgIG91dHB1dC5DbG9zZVJlc3VsdHMoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgUmVzdWx0IFByb2Nlc3NTZHZEZWZlY3RTdHJlYW0oU3RyZWFtIGlucHV0KQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFJlc3VsdA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIExvY2F0aW9ucyA9IG5ldyBMaXN0PExvY2F0aW9uPigpLA0KICAgICAgICAgICAgICAgIENvZGVGbG93cyA9IG5ldyBbXQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2FyaWZVdGlsaXRpZXMuQ3JlYXRlU2luZ2xlVGhyZWFkZWRDb2RlRmxvdygpDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdXNpbmcgKHZhciByZWFkZXIgPSBuZXcgU3RyZWFtUmVhZGVyKGlucHV0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQgbmVzdGluZ0xldmVsID0gMDsNCiAgICAgICAgICAgICAgICBzdHJpbmcgbGluZTsNCg0KICAgICAgICAgICAgICAgIHdoaWxlICghc3RyaW5nLklzTnVsbE9yRW1wdHkobGluZSA9IHJlYWRlci5SZWFkTGluZSgpKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFByb2Nlc3NMaW5lKGxpbmUsIHJlZiBuZXN0aW5nTGV2ZWwsIHJlc3VsdCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFByb2Nlc3NMaW5lKHN0cmluZyBsb2dGaWxlTGluZSwgcmVmIGludCBuZXN0aW5nTGV2ZWwsIFJlc3VsdCByZXN1bHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBjb2RlRmxvdyA9IHJlc3VsdC5Db2RlRmxvd3NbMF07DQoNCiAgICAgICAgICAgIGNvbnN0IGludCBTVEVQICA9IDA7DQogICAgICAgICAgICBjb25zdCBpbnQgVVJJICAgPSAxOw0KICAgICAgICAgICAgY29uc3QgaW50IExJTkUgID0gMjsNCiAgICAgICAgICAgIC8vIGNvbnN0IGludCBJTVBPUlRBTkNFICA9IDM7IFRoaXMgdmFsdWUgbm90IHBlcnNpc3RlZCB0byBTQVJJRg0KICAgICAgICAgICAgY29uc3QgaW50IFNUQVRFID0gNDsNCiAgICAgICAgICAgIGNvbnN0IGludCBLSU5EMSA9IDU7DQoNCiAgICAgICAgICAgIC8vIFdoZW4gS0lORDEgPT0gIkF0b21pYyIgdGhlIDZ0aCBzbG90IGlzIHRoZQ0KICAgICAgICAgICAgLy8gdGhlIHJlbWFpbmRlciBvZiB0aGUga2luZCBpZCwgZS5nLiwgQXRvbWljIEFzc2lnbWVudA0KICAgICAgICAgICAgY29uc3QgaW50IEtJTkQyID0gNjsNCg0KICAgICAgICAgICAgLy8gV2hlbiBLSU5EMSA9PSAiQ2FsbCIgdGhlIDZ0aCBhbmQgN3RoIHNsb3RzIGFyZToNCiAgICAgICAgICAgIGNvbnN0IGludCBDQUxMRVIgPSA2Ow0KICAgICAgICAgICAgY29uc3QgaW50IENBTExFRSA9IDc7DQoNCiAgICAgICAgICAgIGludCBzdGVwOw0KDQogICAgICAgICAgICBzdHJpbmdbXSB0b2tlbnMgPSBsb2dGaWxlTGluZS5TcGxpdCgnICcpOw0KDQogICAgICAgICAgICBpZiAoaW50LlRyeVBhcnNlKHRva2Vuc1tTVEVQXSwgb3V0IHN0ZXApKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBudW1lcmljIHZhbHVlIGFzIHRoZSBmaXJzdCB0b2tlbiwNCiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgZ2VuZXJhbCBzdGVwLg0KDQogICAgICAgICAgICAgICAgVXJpIHVyaSA9IG51bGw7DQogICAgICAgICAgICAgICAgc3RyaW5nIHVyaVRleHQgPSB0b2tlbnNbVVJJXS5UcmltKCciJyk7DQoNCiAgICAgICAgICAgICAgICBpZiAoIXVyaVRleHQuRXF1YWxzKCI/IiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChGaWxlLkV4aXN0cyh1cmlUZXh0KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdXJpVGV4dCA9IFBhdGguR2V0RnVsbFBhdGgodXJpVGV4dCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdXJpID0gbmV3IFVyaSh1cmlUZXh0LCBVcmlLaW5kLlJlbGF0aXZlT3JBYnNvbHV0ZSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gV2UgYXNzdW1lIGEgdmFsaWQgbGluZSBoZXJlLiBUaGlzIGNvZGUgd2lsbCB0aHJvdyBpZiBub3QuDQogICAgICAgICAgICAgICAgaW50IGxpbmUgPSBpbnQuUGFyc2UodG9rZW5zW0xJTkVdKTsNCg0KICAgICAgICAgICAgICAgIHN0cmluZyBzZHZLaW5kID0gdG9rZW5zW0tJTkQxXTsNCg0KICAgICAgICAgICAgICAgIGlmIChzZHZLaW5kLkVxdWFscygiQXRvbWljIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIEZvciBtdWx0aXBhcnQgU0RWIGtpbmRzICdBdG9taWMgWFhYJywgd2UgDQogICAgICAgICAgICAgICAgICAgIC8vIG1hcCB1c2luZyB0aGUgc2Vjb25kIHZhbHVlIG9ubHksIGUuZywgDQogICAgICAgICAgICAgICAgICAgIC8vICdBc3NpZ25tZW50JyBvciAnQ29uZGl0aW9uYWwnDQogICAgICAgICAgICAgICAgICAgIHNkdktpbmQgPSB0b2tlbnNbS0lORDJdOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHNkdktpbmQgPSBzZHZLaW5kLlRyaW0oKTsNCg0KICAgICAgICAgICAgICAgIHZhciB0aHJlYWRGbG93TG9jYXRpb24gPSBuZXcgVGhyZWFkRmxvd0xvY2F0aW9uDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBTdGVwID0gc3RlcCArIDEsDQogICAgICAgICAgICAgICAgICAgIEltcG9ydGFuY2UgPSBUaHJlYWRGbG93TG9jYXRpb25JbXBvcnRhbmNlLlVuaW1wb3J0YW50LA0KICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbiA9IG5ldyBMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UoKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIGlmICh1cmkgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5Mb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUxvY2F0aW9uID0gbmV3IEZpbGVMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVyaSA9IHVyaQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lvbiA9IG5ldyBSZWdpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydExpbmUgPSBsaW5lDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKHNkdktpbmQgPT0gIkNhbGwiKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGV4dHJhTXNnID0gJCJ7dG9rZW5zW0tJTkQxXX0ge3Rva2Vuc1tDQUxMRVJdfSB7dG9rZW5zW0NBTExFRV19IjsNCg0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgY2FsbGVyLCBjYWxsZWU7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKEV4dHJhY3RDYWxsZXJBbmRDYWxsZWUoZXh0cmFNc2cuVHJpbSgpLCBvdXQgY2FsbGVyLCBvdXQgY2FsbGVlKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkRmxvd0xvY2F0aW9uLkxvY2F0aW9uLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgPSBjYWxsZXI7DQogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRGbG93TG9jYXRpb24uTG9jYXRpb24uTWVzc2FnZS5UZXh0ID0gY2FsbGVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkRmxvd0xvY2F0aW9uLlNldFByb3BlcnR5KCJ0YXJnZXQiLCBjYWxsZWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgX2NhbGxlcnMuUHVzaChjYWxsZXIpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KGZhbHNlKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5OZXN0aW5nTGV2ZWwgPSBuZXN0aW5nTGV2ZWwrKzsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAodXJpID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5JbXBvcnRhbmNlID0gVGhyZWFkRmxvd0xvY2F0aW9uSW1wb3J0YW5jZS5VbmltcG9ydGFudDsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChJc0hhcm5lc3NPclJ1bGVzRmlsZXModXJpVGV4dCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5JbXBvcnRhbmNlID0gVGhyZWFkRmxvd0xvY2F0aW9uSW1wb3J0YW5jZS5JbXBvcnRhbnQ7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRGbG93TG9jYXRpb24uSW1wb3J0YW5jZSA9IFRocmVhZEZsb3dMb2NhdGlvbkltcG9ydGFuY2UuRXNzZW50aWFsOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNkdktpbmQgPT0gIlJldHVybiIpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoX2NhbGxlcnMuQ291bnQgPiAwKTsNCg0KICAgICAgICAgICAgICAgICAgICB0aHJlYWRGbG93TG9jYXRpb24uTmVzdGluZ0xldmVsID0gbmVzdGluZ0xldmVsLS07DQogICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5Mb2NhdGlvbi5GdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lID0gX2NhbGxlcnMuUG9wKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5OZXN0aW5nTGV2ZWwgPSBuZXN0aW5nTGV2ZWw7DQogICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5Mb2NhdGlvbi5NZXNzYWdlLlRleHQgPSBzZHZLaW5kOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHN0cmluZyBzZXBhcmF0b3JUZXh0ID0gIl49PT09QXV0bz09PT09IjsNCiAgICAgICAgICAgICAgICBzdHJpbmcgc3RhdGUgPSB0b2tlbnNbU1RBVEVdOw0KICAgICAgICAgICAgICAgIHN0cmluZ1tdIHN0YXRlVG9rZW5zID0gc3RhdGUuU3BsaXQobmV3IHN0cmluZ1tdIHsgc2VwYXJhdG9yVGV4dCB9LCBTdHJpbmdTcGxpdE9wdGlvbnMuUmVtb3ZlRW1wdHlFbnRyaWVzKTsNCg0KICAgICAgICAgICAgICAgIGlmIChzdGF0ZVRva2Vucy5MZW5ndGggPiAwKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlVG9rZW5zLkxlbmd0aCA9PSAyKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRGbG93TG9jYXRpb24uU2V0UHJvcGVydHkoImN1cnJlbnREYXRhVmFsdWVzIiwgc3RhdGVUb2tlbnNbMF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkRmxvd0xvY2F0aW9uLlNldFByb3BlcnR5KCJwZXJtYW5lbnREYXRhVmFsdWVzIiwgc3RhdGVUb2tlbnNbMV0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHN0YXRlVG9rZW5zLkxlbmd0aCA9PSAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZVRva2Vuc1swXS5TdGFydHNXaXRoKHNlcGFyYXRvclRleHQpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZEZsb3dMb2NhdGlvbi5TZXRQcm9wZXJ0eSgicGVybWFuZW50RGF0YVZhbHVlcyIsIHN0YXRlVG9rZW5zWzBdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRGbG93TG9jYXRpb24uU2V0UHJvcGVydHkoImN1cnJlbnREYXRhVmFsdWVzIiwgc3RhdGVUb2tlbnNbMF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgY29kZUZsb3cuVGhyZWFkRmxvd3NbMF0uTG9jYXRpb25zLkFkZCh0aHJlYWRGbG93TG9jYXRpb24pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZmVjdCBtZXNzYWdlLg0KICAgICAgICAgICAgICAgIGNvbnN0IGludCBMRVZFTCAgPSAwOw0KDQogICAgICAgICAgICAgICAgc3RyaW5nIGxldmVsVGV4dCA9IHRva2Vuc1tMRVZFTF07DQoNCiAgICAgICAgICAgICAgICByZXN1bHQuTGV2ZWwgPSBDb252ZXJ0VG9SZXN1bHRMZXZlbChsZXZlbFRleHQpOw0KDQogICAgICAgICAgICAgICAgLy8gRXZlcnl0aGluZyBvbiB0aGUgbGluZSBmb2xsb3dpbmcgZGVmZWN0IGxldmVsIGNvbXByaXNlcyB0aGUgbWVzc2FnZQ0KICAgICAgICAgICAgICAgIHJlc3VsdC5NZXNzYWdlID0gbmV3IE1lc3NhZ2UgeyBUZXh0ID0gbG9nRmlsZUxpbmUuU3Vic3RyaW5nKGxldmVsVGV4dC5MZW5ndGgpLlRyaW0oKSB9Ow0KDQogICAgICAgICAgICAgICAgLy8gU0RWIGN1cnJlbnRseSBwcm9kdWNlcyAncGFzcycgbm90aWZpY2F0aW9ucyB3aGVuIA0KICAgICAgICAgICAgICAgIC8vIHRoZSBmaW5hbCBsaW5lIGlzIHByZWZpeGVkIHdpdGggJ0Vycm9yJy4gV2UnbGwgZXhhbWluZQ0KICAgICAgICAgICAgICAgIC8vIHRoZSBtZXNzYWdlIHRleHQgdG8gZGV0ZWN0IHRoaXMgY29uZGl0aW9uDQogICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5NZXNzYWdlLlRleHQuQ29udGFpbnMoImlzIHNhdGlzZmllZCIpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkxldmVsID0gUmVzdWx0TGV2ZWwuUGFzczsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBGaW5hbGx5LCBwb3B1bGF0ZSB0aGlzIHJlc3VsdCBsb2NhdGlvbiB3aXRoIHRoZQ0KICAgICAgICAgICAgICAgIC8vIGxhc3Qgb2JzZXJ2ZWQgbG9jYXRpb24gaW4gdGhlIGNvZGUgZmxvdy4NCg0KICAgICAgICAgICAgICAgIElMaXN0PFRocmVhZEZsb3dMb2NhdGlvbj4gbG9jYXRpb25zID0gcmVzdWx0LkNvZGVGbG93c1swXS5UaHJlYWRGbG93c1swXS5Mb2NhdGlvbnM7DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gbG9jYXRpb25zLkNvdW50IC0gMTsgaSA+PSAwOyAtLWkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAobG9jYXRpb25zW2ldLkxvY2F0aW9uPy5QaHlzaWNhbExvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5Mb2NhdGlvbnMuQWRkKG5ldyBMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBoeXNpY2FsTG9jYXRpb24gPSBsb2NhdGlvbnNbaV0uTG9jYXRpb24uUGh5c2ljYWxMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgYm9vbCBJc0hhcm5lc3NPclJ1bGVzRmlsZXMoc3RyaW5nIGZpbGVOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gZmlsZU5hbWUuRW5kc1dpdGgoIi5zbGljIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkNCiAgICAgICAgICAgICAgICB8fCBmaWxlTmFtZS5FbmRzV2l0aCgic2R2LWhhcm5lc3MuYyIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUmVnZXggc19jYWxsUmVnZXggPSBuZXcgUmVnZXgoQCJDYWxsICIiKC4qKSIiICIiKC4qKSIiIiwgUmVnZXhPcHRpb25zLkNvbXBpbGVkKTsNCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyBib29sIEV4dHJhY3RDYWxsZXJBbmRDYWxsZWUoc3RyaW5nIHRleHQsIG91dCBzdHJpbmcgY2FsbGVyLCBvdXQgc3RyaW5nIGNhbGxlZSkNCiAgICAgICAgew0KICAgICAgICAgICAgY2FsbGVyID0gY2FsbGVlID0gbnVsbDsNCg0KICAgICAgICAgICAgdmFyIG1hdGNoID0gc19jYWxsUmVnZXguTWF0Y2godGV4dCk7DQogICAgICAgICAgICBpZiAobWF0Y2guU3VjY2VzcyAmJiBtYXRjaC5Hcm91cHMuQ291bnQgPT0gMykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjYWxsZXIgPSBtYXRjaC5Hcm91cHNbMV0uVmFsdWU7DQogICAgICAgICAgICAgICAgY2FsbGVlID0gbWF0Y2guR3JvdXBzWzJdLlZhbHVlOw0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUmVzdWx0TGV2ZWwgQ29udmVydFRvUmVzdWx0TGV2ZWwoc3RyaW5nIHNkdkxldmVsKQ0KICAgICAgICB7DQogICAgICAgICAgICBzd2l0Y2ggKHNkdkxldmVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgIkVycm9yIjogcmV0dXJuIFJlc3VsdExldmVsLkVycm9yOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoZmFsc2UpOw0KICAgICAgICAgICAgcmV0dXJuIFJlc3VsdExldmVsLkRlZmF1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Driver'.",
+ "id": "Namespace"
},
- "hashes": [
+ "locations": [
{
- "value": "D6D89AA234FFCBB46CBE31C8C9836D46",
- "algorithm": "md5"
- },
- {
- "value": "E4BCB9BCA823E6B9B555FC432DCFBB4CECFF7B2F",
- "algorithm": "sha-1"
- },
- {
- "value": "8DF3EEE7F972C59A8733FD8B50AAEAD749003AB68969B9FA79158206C5810CC4",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 7,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Driver"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/ToolFileConverterBase.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOw0KdXNpbmcgU3lzdGVtLklPOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBCYXNlIGNsYXNzIGZvciB0b29sIGZpbGUgY29udmVydGVycy4gRW5jYXBzdWxhdGVzIHRoZSBjb21tb24gbG9naWMNCiAgICAvLy8gZm9yIHBvcHVsYXRpbmcgdGhlIGxvZ2ljYWxMb2NhdGlvbnMgZGljdGlvbmFyeS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBUb29sRmlsZUNvbnZlcnRlckJhc2UNCiAgICB7DQogICAgICAgIHByb3RlY3RlZCBUb29sRmlsZUNvbnZlcnRlckJhc2UoKQ0KICAgICAgICB7DQogICAgICAgICAgICBMb2dpY2FsTG9jYXRpb25zRGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgTG9naWNhbExvY2F0aW9uPigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGFic3RyYWN0IHZvaWQgQ29udmVydChTdHJlYW0gaW5wdXQsIElSZXN1bHRMb2dXcml0ZXIgb3V0cHV0LCBPcHRpb25hbGx5RW1pdHRlZERhdGEgZGF0YVRvSW5zZXJ0KTsNCg0KICAgICAgICAvLyBpbnRlcm5hbCBhcyB3ZWxsIGFzIHByb3RlY3RlZCBpdCBjYW4gYmUgZXhlcmNpc2VkIGJ5IHVuaXQgdGVzdHMuDQogICAgICAgIHByb3RlY3RlZCBpbnRlcm5hbCBJRGljdGlvbmFyeTxzdHJpbmcsIExvZ2ljYWxMb2NhdGlvbj4gTG9naWNhbExvY2F0aW9uc0RpY3Rpb25hcnkgeyBnZXQ7IHByaXZhdGUgc2V0OyAgfQ0KDQogICAgICAgIHByb3RlY3RlZCBpbnRlcm5hbCBzdHJpbmcgQWRkTG9naWNhbExvY2F0aW9uKExvZ2ljYWxMb2NhdGlvbiBsb2dpY2FsTG9jYXRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBBZGRMb2dpY2FsTG9jYXRpb24obG9naWNhbExvY2F0aW9uLCBkZWxpbWl0ZXI6ICIuIik7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBpbnRlcm5hbCBhcyB3ZWxsIGFzIHByb3RlY3RlZCBpdCBjYW4gYmUgZXhlcmNpc2VkIGJ5IHVuaXQgdGVzdHMuDQogICAgICAgIHByb3RlY3RlZCBpbnRlcm5hbCBzdHJpbmcgQWRkTG9naWNhbExvY2F0aW9uKExvZ2ljYWxMb2NhdGlvbiBsb2dpY2FsTG9jYXRpb24sIHN0cmluZyBkZWxpbWl0ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChsb2dpY2FsTG9jYXRpb24gPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihsb2dpY2FsTG9jYXRpb24pKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaW50IGRpc2FtYmlndWF0b3IgPSAwOw0KDQogICAgICAgICAgICBzdHJpbmcgZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSA9IGxvZ2ljYWxMb2NhdGlvbi5QYXJlbnRLZXkgPT0gbnVsbCA/DQogICAgICAgICAgICAgICAgbG9naWNhbExvY2F0aW9uLk5hbWUgOiANCiAgICAgICAgICAgICAgICBsb2dpY2FsTG9jYXRpb24uUGFyZW50S2V5ICsgZGVsaW1pdGVyICsgbG9naWNhbExvY2F0aW9uLk5hbWU7DQogICAgICAgICAgICBzdHJpbmcgZ2VuZXJhdGVkS2V5ID0gZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZTsNCg0KICAgICAgICAgICAgbG9naWNhbExvY2F0aW9uLk5hbWUgPSBHZXRMb2dpY2FsTG9jYXRpb25OYW1lKGxvZ2ljYWxMb2NhdGlvbi5QYXJlbnRLZXksIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIGRlbGltaXRlcik7DQogICAgICAgICAgICBsb2dpY2FsTG9jYXRpb24uRnVsbHlRdWFsaWZpZWROYW1lID0gZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZTsNCg0KICAgICAgICAgICAgd2hpbGUgKExvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5LkNvbnRhaW5zS2V5KGdlbmVyYXRlZEtleSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTG9naWNhbExvY2F0aW9uIGxvZ0xvYyA9IExvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5W2dlbmVyYXRlZEtleV0uRGVlcENsb25lKCk7DQogICAgICAgICAgICAgICAgbG9nTG9jLk5hbWUgPSBHZXRMb2dpY2FsTG9jYXRpb25OYW1lKGxvZ0xvYy5QYXJlbnRLZXksIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIGRlbGltaXRlcik7DQogICAgICAgICAgICAgICAgbG9nTG9jLkZ1bGx5UXVhbGlmaWVkTmFtZSA9IGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWU7DQoNCiAgICAgICAgICAgICAgICBpZiAobG9naWNhbExvY2F0aW9uLlZhbHVlRXF1YWxzKGxvZ0xvYykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBnZW5lcmF0ZWRLZXkgPSBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lICsgIi0iICsgZGlzYW1iaWd1YXRvci5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKTsNCiAgICAgICAgICAgICAgICArK2Rpc2FtYmlndWF0b3I7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChkaXNhbWJpZ3VhdG9yID09IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbG9naWNhbExvY2F0aW9uLkZ1bGx5UXVhbGlmaWVkTmFtZSA9IG51bGw7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsb2dpY2FsTG9jYXRpb24uTmFtZSA9PSBnZW5lcmF0ZWRLZXkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbG9naWNhbExvY2F0aW9uLk5hbWUgPSBudWxsOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIUxvZ2ljYWxMb2NhdGlvbnNEaWN0aW9uYXJ5LkNvbnRhaW5zS2V5KGdlbmVyYXRlZEtleSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTG9naWNhbExvY2F0aW9uc0RpY3Rpb25hcnkuQWRkKGdlbmVyYXRlZEtleSwgbG9naWNhbExvY2F0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEtleTsNCiAgICAgICAgfQ0KDQogICAgICAgIGludGVybmFsIHN0YXRpYyBzdHJpbmcgR2V0TG9naWNhbExvY2F0aW9uTmFtZShzdHJpbmcgcGFyZW50S2V5LCBzdHJpbmcgZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSwgc3RyaW5nIGRlbGltaXRlcikNCiAgICAgICAgew0KICAgICAgICAgICAgc3RyaW5nIGxvZ2ljYWxOYW1lID0gbnVsbDsNCiAgICAgICAgICAgIGludCBpbmRleDsNCg0KICAgICAgICAgICAgaWYgKHBhcmVudEtleSA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGluZGV4ID0gIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoZGVsaW1pdGVyKSA/IGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUuTGFzdEluZGV4T2YoZGVsaW1pdGVyKSA6IC0xOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGluZGV4ID0gcGFyZW50S2V5Lkxlbmd0aDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIEl0J3MgYSB0b3AtbGV2ZWwgbG9jYXRpb24NCiAgICAgICAgICAgICAgICBsb2dpY2FsTmFtZSA9IGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gR2V0IHRoZSByaWdodG1vc3Qgc2VnbWVudCBhcyB0aGUgbmFtZQ0KICAgICAgICAgICAgICAgIC8vIEV4YW1wbGU6IEZvbzo6QmFyIC0+IEJhciB3aGVyZSAnOjonIGlzIHRoZSBkZWxpbWl0ZXINCiAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gZGVsaW1pdGVyPy5MZW5ndGggPz8gMDsNCiAgICAgICAgICAgICAgICBsb2dpY2FsTmFtZSA9IGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUuU3Vic3RyaW5nKGluZGV4ICsgbGVuZ3RoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIGxvZ2ljYWxOYW1lOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Multitool' in namespace name 'Microsoft.CodeAnalysis.Sarif.Multitool'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "13839AB8E716FCF4C2D24DE865F542B4",
- "algorithm": "md5"
- },
- {
- "value": "B6A28546DF71FC99D7914E3301888B6ED77A13B1",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "D294F2DA137FAA94B5CB7339EE593A240E62507885E179A71B3C425C8BEC6F43",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 8,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Multitool"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Multitool#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/ToolFormatConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uSU87DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLldyaXRlcnM7DQp1c2luZyBOZXd0b25zb2Z0Lkpzb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgY2xhc3MgdGhhdCBwcm92aWRlcyBoZWxwZXJzIGZvciBjb252ZXJ0aW5nIGEgbG9nIGZpbGUgcHJvZHVjZWQgYnkgDQogICAgLy8vIG9uZSBvZiBhIHdlbGwta25vd24gc2V0IG9mIHRvb2xzIHRvIHRoZSBTQVJJRiBmb3JtYXQuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBwdWJsaWMgY2xhc3MgVG9vbEZvcm1hdENvbnZlcnRlcg0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBBc3NlbWJseUxvYWRGaWxlRGVsZWdhdGUgYXNzZW1ibHlMb2FkRmlsZURlbGVnYXRlOw0KDQogICAgICAgIHB1YmxpYyBUb29sRm9ybWF0Q29udmVydGVyKEFzc2VtYmx5TG9hZEZpbGVEZWxlZ2F0ZSBhc3NlbWJseUxvYWRGaWxlRGVsZWdhdGUgPSBudWxsKQ0KICAgICAgICB7DQogICAgICAgICAgICB0aGlzLmFzc2VtYmx5TG9hZEZpbGVEZWxlZ2F0ZSA9IGFzc2VtYmx5TG9hZEZpbGVEZWxlZ2F0ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT5Db252ZXJ0cyBhIHRvb2wgbG9nIGZpbGUgaW50byB0aGUgU0FSSUYgZm9ybWF0Ljwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj5UaHJvd24gd2hlbiBvbmUgb3IgbW9yZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIG51bGwuPC9leGNlcHRpb24+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50RXhjZXB0aW9uIj5UaHJvd24gd2hlbiBvbmUgb3IgbW9yZSBhcmd1bWVudHMgaGF2ZSB1bnN1cHBvcnRlZCBvcg0KICAgICAgICAvLy8gaWxsZWdhbCB2YWx1ZXMuPC9leGNlcHRpb24+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkludmFsaWRPcGVyYXRpb25FeGNlcHRpb24iPlRocm93biB3aGVuIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGlzIGludmFsaWQuPC9leGNlcHRpb24+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idG9vbEZvcm1hdCI+VGhlIHRvb2wgZm9ybWF0IG9mIHRoZSBpbnB1dCBmaWxlLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaW5wdXRGaWxlTmFtZSI+VGhlIGlucHV0IGxvZyBmaWxlIG5hbWUuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdXRwdXRGaWxlTmFtZSI+VGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyBTQVJJRiBsb2cgc2hhbGwgYmUNCiAgICAgICAgLy8vIHdyaXR0ZW4uIFRoaXMgY2Fubm90IGJlIGEgZGlyZWN0b3J5LjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29udmVyc2lvbk9wdGlvbnMiPk9wdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBjb252ZXJzaW9uLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGx1Z2luQXNzZW1ibHlQYXRoIj5QYXRoIHRvIHBsdWdpbiBhc3NlbWJseSBjb250YWluaW5nIGNvbnZlcnRlciB0eXBlcy48L3BhcmFtPg0KICAgICAgICBwdWJsaWMgdm9pZCBDb252ZXJ0VG9TdGFuZGFyZEZvcm1hdCgNCiAgICAgICAgICAgIHN0cmluZyB0b29sRm9ybWF0LA0KICAgICAgICAgICAgc3RyaW5nIGlucHV0RmlsZU5hbWUsDQogICAgICAgICAgICBzdHJpbmcgb3V0cHV0RmlsZU5hbWUsDQogICAgICAgICAgICBMb2dnaW5nT3B0aW9ucyBsb2dnaW5nT3B0aW9ucyA9IExvZ2dpbmdPcHRpb25zLk5vbmUsDQogICAgICAgICAgICBPcHRpb25hbGx5RW1pdHRlZERhdGEgZGF0YVRvSW5zZXJ0ID0gT3B0aW9uYWxseUVtaXR0ZWREYXRhLk5vbmUsDQogICAgICAgICAgICBzdHJpbmcgcGx1Z2luQXNzZW1ibHlQYXRoID0gbnVsbCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGlucHV0RmlsZU5hbWUgPT0gbnVsbCkgeyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihpbnB1dEZpbGVOYW1lKSk7IH0NCiAgICAgICAgICAgIGlmIChvdXRwdXRGaWxlTmFtZSA9PSBudWxsKSB7IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dEZpbGVOYW1lKSk7IH0NCg0KICAgICAgICAgICAgaWYgKERpcmVjdG9yeS5FeGlzdHMob3V0cHV0RmlsZU5hbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiU3BlY2lmaWVkIGZpbGUgb3V0cHV0IHBhdGggZXhpc3RzIGJ1dCBpcyBhIGRpcmVjdG9yeS4iLCBuYW1lb2Yob3V0cHV0RmlsZU5hbWUpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFsb2dnaW5nT3B0aW9ucy5JbmNsdWRlcyhMb2dnaW5nT3B0aW9ucy5PdmVyd3JpdGVFeGlzdGluZ091dHB1dEZpbGUpICYmIEZpbGUuRXhpc3RzKG91dHB1dEZpbGVOYW1lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiT3V0cHV0IGZpbGUgYWxyZWFkeSBleGlzdHMgYW5kIG9wdGlvbiB0byBvdmVyd3JpdGUgd2FzIG5vdCBzcGVjaWZpZWQuIik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIEZpbGVNb2RlIHNldHRpbmdzIGhlcmUgd2lsbCByZXN1bHRzIGluIGFuIGV4Y2VwdGlvbiBiZWluZyByYWlzZWQgaWYgdGhlIGlucHV0IA0KICAgICAgICAgICAgLy8gZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIHRoYXQgYW4gZXhpc3Rpbmcgb3V0cHV0IGZpbGUgd2lsbCBiZSBvdmVyd3JpdHRlbg0KICAgICAgICAgICAgdXNpbmcgKHZhciBpbnB1dCA9IEZpbGUuT3BlblJlYWQoaW5wdXRGaWxlTmFtZSkpDQogICAgICAgICAgICB1c2luZyAodmFyIG91dHB1dFRleHRTdHJlYW0gPSBGaWxlLkNyZWF0ZShvdXRwdXRGaWxlTmFtZSkpDQogICAgICAgICAgICB1c2luZyAodmFyIG91dHB1dFRleHRXcml0ZXIgPSBuZXcgU3RyZWFtV3JpdGVyKG91dHB1dFRleHRTdHJlYW0pKQ0KICAgICAgICAgICAgdXNpbmcgKHZhciBvdXRwdXRKc29uID0gbmV3IEpzb25UZXh0V3JpdGVyKG91dHB1dFRleHRXcml0ZXIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsb2dnaW5nT3B0aW9ucy5JbmNsdWRlcyhMb2dnaW5nT3B0aW9ucy5QcmV0dHlQcmludCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBvdXRwdXRKc29uLkZvcm1hdHRpbmcgPSBGb3JtYXR0aW5nLkluZGVudGVkOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHVzaW5nICh2YXIgb3V0cHV0ID0gbmV3IFJlc3VsdExvZ0pzb25Xcml0ZXIob3V0cHV0SnNvbikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBDb252ZXJ0VG9TdGFuZGFyZEZvcm1hdCh0b29sRm9ybWF0LCBpbnB1dCwgb3V0cHV0LCBkYXRhVG9JbnNlcnQsIHBsdWdpbkFzc2VtYmx5UGF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+Q29udmVydHMgYSB0b29sIGxvZyBmaWxlIHJlcHJlc2VudGVkIGFzIGEgc3RyZWFtIGludG8gdGhlIFNBUklGIGZvcm1hdC48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gb25lIG9yIG1vcmUgcmVxdWlyZWQgYXJndW1lbnRzIGFyZSBudWxsLjwvZXhjZXB0aW9uPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudEV4Y2VwdGlvbiI+VGhyb3duIHdoZW4gb25lIG9yIG1vcmUgYXJndW1lbnRzIGhhdmUgdW5zdXBwb3J0ZWQgb3INCiAgICAgICAgLy8vIGlsbGVnYWwgdmFsdWVzLjwvZXhjZXB0aW9uPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRvb2xGb3JtYXQiPlRoZSB0b29sIGZvcm1hdCBvZiB0aGUgaW5wdXQgZmlsZS48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlucHV0U3RyZWFtIj5BIHN0cmVhbSB0aGF0IGNvbnRhaW5zIHRvb2wgbG9nIGNvbnRlbnRzLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3V0cHV0U3RyZWFtIj5BIHN0cmVhbSB0byB3aGljaCB0aGUgY29udmVydGVkIG91dHB1dCBzaG91bGQgYmUgd3JpdHRlbi48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBsdWdpbkFzc2VtYmx5UGF0aCI+UGF0aCB0byBwbHVnaW4gYXNzZW1ibHkgY29udGFpbmluZyBjb252ZXJ0ZXIgdHlwZXMuPC9wYXJhbT4NCiAgICAgICAgcHVibGljIHZvaWQgQ29udmVydFRvU3RhbmRhcmRGb3JtYXQoDQogICAgICAgICAgICBzdHJpbmcgdG9vbEZvcm1hdCwNCiAgICAgICAgICAgIFN0cmVhbSBpbnB1dFN0cmVhbSwNCiAgICAgICAgICAgIElSZXN1bHRMb2dXcml0ZXIgb3V0cHV0U3RyZWFtLA0KICAgICAgICAgICAgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCA9IE9wdGlvbmFsbHlFbWl0dGVkRGF0YS5Ob25lLA0KICAgICAgICAgICAgc3RyaW5nIHBsdWdpbkFzc2VtYmx5UGF0aCA9IG51bGwpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChpbnB1dFN0cmVhbSA9PSBudWxsKSB7IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGlucHV0U3RyZWFtKSk7IH0NCiAgICAgICAgICAgIGlmIChvdXRwdXRTdHJlYW0gPT0gbnVsbCkgeyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdXRwdXRTdHJlYW0pKTsgfQ0KDQogICAgICAgICAgICBDb252ZXJ0ZXJGYWN0b3J5IGZhY3RvcnkgPSBDcmVhdGVDb252ZXJ0ZXJGYWN0b3J5KHBsdWdpbkFzc2VtYmx5UGF0aCk7DQoNCiAgICAgICAgICAgIFRvb2xGaWxlQ29udmVydGVyQmFzZSBjb252ZXJ0ZXIgPSBmYWN0b3J5LkNyZWF0ZUNvbnZlcnRlcih0b29sRm9ybWF0KTsNCiAgICAgICAgICAgIGlmIChjb252ZXJ0ZXIgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjb252ZXJ0ZXIuQ29udmVydChpbnB1dFN0cmVhbSwgb3V0cHV0U3RyZWFtLCBkYXRhVG9JbnNlcnQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiVW5yZWNvZ25pemVkIHRvb2wgc3BlY2lmaWVkOiAiICsgdG9vbEZvcm1hdCwgbmFtZW9mKHRvb2xGb3JtYXQpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFNldCB1cCBhIENoYWluIG9mIFJlc3BvbnNpYmlsaXR5IHRoYXQgd2lsbCBnZXQgdGhlIGNvbnZlcnRlciBmcm9tIHRoZSBmaXJzdA0KICAgICAgICAvLyBmYWN0b3J5IGNhcGFibGUgb2YgY3JlYXRpbmcgaXQuDQogICAgICAgIC8vIFRoaXMgbWV0aG9kIGlzIGludGVybmFsLCByYXRoZXIgdGhhbiBwcml2YXRlLCBmb3IgdGVzdCBwdXJwb3Nlcy4NCiAgICAgICAgaW50ZXJuYWwgQ29udmVydGVyRmFjdG9yeSBDcmVhdGVDb252ZXJ0ZXJGYWN0b3J5KHN0cmluZyBwbHVnaW5Bc3NlbWJseVBhdGgpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnZlcnRlckZhY3RvcnkgZmFjdG9yeSA9IG5ldyBCdWlsdEluQ29udmVydGVyRmFjdG9yeSgpOw0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHBsdWdpbkFzc2VtYmx5UGF0aCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZmFjdG9yeSA9IG5ldyBQbHVnaW5Db252ZXJ0ZXJGYWN0b3J5KHBsdWdpbkFzc2VtYmx5UGF0aCwgdGhpcy5hc3NlbWJseUxvYWRGaWxlRGVsZWdhdGUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBOZXh0ID0gZmFjdG9yeSwNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gZmFjdG9yeTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Multitool'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "EE53EB79E6EAE65617C94E5719C7B2D1",
- "algorithm": "md5"
- },
- {
- "value": "11E63107090D1D5EAEC8BCCE11C9B2E0B1158292",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "ED7F0934A2268A06EB7D24FE6AD15304BF7DDEA1952A171548DD67DBD3D79070",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 8,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Multitool"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/TSLintConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzLlRTTGludE9iamVjdE1vZGVsOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Xcml0ZXJzOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzDQp7DQogICAgcHVibGljIGNsYXNzIFRTTGludENvbnZlcnRlciA6IFRvb2xGaWxlQ29udmVydGVyQmFzZQ0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBMb2dSZWFkZXI8VFNMaW50TG9nPiBsb2dSZWFkZXI7DQogICAgICAgIA0KICAgICAgICBwdWJsaWMgVFNMaW50Q29udmVydGVyKCkNCiAgICAgICAgew0KICAgICAgICAgICAgbG9nUmVhZGVyID0gbmV3IFRTTGludExvZ1JlYWRlcigpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBDb252ZXJ0KFN0cmVhbSBpbnB1dCwgSVJlc3VsdExvZ1dyaXRlciBvdXRwdXQsIE9wdGlvbmFsbHlFbWl0dGVkRGF0YSBkYXRhVG9JbnNlcnQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgPz8gdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoaW5wdXQpKTsNCg0KICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0ID8/IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG91dHB1dCkpOw0KDQogICAgICAgICAgICBUU0xpbnRMb2cgdHNMaW50TG9nID0gbG9nUmVhZGVyLlJlYWRMb2coaW5wdXQpOw0KDQogICAgICAgICAgICBUb29sIHRvb2wgPSBuZXcgVG9vbA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE5hbWUgPSAiVFNMaW50Ig0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgdmFyIHJ1biA9IG5ldyBSdW4oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFRvb2wgPSB0b29sDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBvdXRwdXQuSW5pdGlhbGl6ZShydW4pOw0KDQogICAgICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCiAgICAgICAgICAgIGZvcmVhY2goVFNMaW50TG9nRW50cnkgZW50cnkgaW4gdHNMaW50TG9nKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdHMuQWRkKENyZWF0ZVJlc3VsdChlbnRyeSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgZmlsZUluZm9GYWN0b3J5ID0gbmV3IEZpbGVJbmZvRmFjdG9yeShNaW1lVHlwZS5EZXRlcm1pbmVGcm9tRmlsZUV4dGVuc2lvbiwgZGF0YVRvSW5zZXJ0KTsNCiAgICAgICAgICAgIERpY3Rpb25hcnk8c3RyaW5nLCBGaWxlRGF0YT4gZmlsZURpY3Rpb25hcnkgPSBmaWxlSW5mb0ZhY3RvcnkuQ3JlYXRlKHJlc3VsdHMpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZiAoZmlsZURpY3Rpb25hcnk/LkFueSgpID09IHRydWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgb3V0cHV0LldyaXRlRmlsZXMoZmlsZURpY3Rpb25hcnkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBvdXRwdXQuT3BlblJlc3VsdHMoKTsNCiAgICAgICAgICAgIG91dHB1dC5Xcml0ZVJlc3VsdHMocmVzdWx0cyk7DQogICAgICAgICAgICBvdXRwdXQuQ2xvc2VSZXN1bHRzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBpbnRlcm5hbCBSZXN1bHQgQ3JlYXRlUmVzdWx0KFRTTGludExvZ0VudHJ5IGVudHJ5KQ0KICAgICAgICB7DQogICAgICAgICAgICBlbnRyeSA9IGVudHJ5ID8/IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGVudHJ5KSk7DQoNCiAgICAgICAgICAgIFJlc3VsdCByZXN1bHQgPSBuZXcgUmVzdWx0KCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSdWxlSWQgPSBlbnRyeS5SdWxlTmFtZSwNCiAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UgeyBUZXh0ID0gZW50cnkuRmFpbHVyZSB9DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LlJ1bGVTZXZlcml0eSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjYXNlICJFUlJPUiI6DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5MZXZlbCA9IFJlc3VsdExldmVsLkVycm9yOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlICJXQVJOIjoNCiAgICAgICAgICAgICAgICBjYXNlICJXQVJOSU5HIjoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkxldmVsID0gUmVzdWx0TGV2ZWwuV2FybmluZzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAiREVGQVVMVCI6DQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LkxldmVsID0gUmVzdWx0TGV2ZWwuTm90ZTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFJlZ2lvbiByZWdpb24gPSBuZXcgUmVnaW9uKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBUaGUgVFNMaW50IGxvZ3MgaGF2ZSBsaW5lIGFuZCBjb2x1bW4gc3RhcnQgYXQgMCwgU2FyaWYgaGFzIHRoZW0gc3RhcnRpbmcgYXQgMSwgc28gYWRkIDEgdG8gZWFjaA0KICAgICAgICAgICAgICAgIFN0YXJ0TGluZSA9IGVudHJ5LlN0YXJ0UG9zaXRpb24uTGluZSArIDEsDQogICAgICAgICAgICAgICAgU3RhcnRDb2x1bW4gPSBlbnRyeS5TdGFydFBvc2l0aW9uLkNoYXJhY3RlciArIDEsDQogICAgICAgICAgICAgICAgRW5kTGluZSA9IGVudHJ5LkVuZFBvc2l0aW9uLkxpbmUgKyAxLA0KICAgICAgICAgICAgICAgIEVuZENvbHVtbiA9IGVudHJ5LkVuZFBvc2l0aW9uLkNoYXJhY3RlciArIDEsDQoNCiAgICAgICAgICAgICAgICBDaGFyT2Zmc2V0ID0gZW50cnkuU3RhcnRQb3NpdGlvbi5Qb3NpdGlvbg0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgaW50IGxlbmd0aCA9IGVudHJ5LkVuZFBvc2l0aW9uLlBvc2l0aW9uIC0gZW50cnkuU3RhcnRQb3NpdGlvbi5Qb3NpdGlvbjsNCiAgICAgICAgICAgIHJlZ2lvbi5DaGFyTGVuZ3RoID0gbGVuZ3RoID4gMCA/IGxlbmd0aCA6IDA7DQoNCiAgICAgICAgICAgIFVyaSBhbmFseXNpc1RhcmdldFVyaSA9IG5ldyBVcmkoZW50cnkuTmFtZSwgVXJpS2luZC5SZWxhdGl2ZSk7DQoNCiAgICAgICAgICAgIHZhciBwaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24oaWQ6IDAsIGZpbGVMb2NhdGlvbjogbmV3IEZpbGVMb2NhdGlvbih1cmk6IGFuYWx5c2lzVGFyZ2V0VXJpLCB1cmlCYXNlSWQ6IG51bGwpLCByZWdpb246IHJlZ2lvbiwgY29udGV4dFJlZ2lvbjogbnVsbCk7DQogICAgICAgICAgICBMb2NhdGlvbiBsb2NhdGlvbiA9IG5ldyBMb2NhdGlvbigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IHBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHJlc3VsdC5Mb2NhdGlvbnMgPSBuZXcgTGlzdDxMb2NhdGlvbj4oKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGxvY2F0aW9uDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBpZiAoZW50cnkuRml4ZXM/LkFueSgpID09IHRydWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSUxpc3Q8UmVwbGFjZW1lbnQ+IHJlcGxhY2VtZW50cyA9IG5ldyBMaXN0PFJlcGxhY2VtZW50PigpOw0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAoVFNMaW50TG9nRml4IGZpeCBpbiBlbnRyeS5GaXhlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFJlcGxhY2VtZW50IHJlcGxhY2VtZW50ID0gbmV3IFJlcGxhY2VtZW50KCk7DQoNCiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuRGVsZXRlZFJlZ2lvbiA9IG5ldyBSZWdpb24NCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgQ2hhckxlbmd0aCA9IGZpeC5Jbm5lckxlbmd0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgIENoYXJPZmZzZXQgPSBmaXguSW5uZXJTdGFydA0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZml4LklubmVyVGV4dCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50Lkluc2VydGVkQ29udGVudCA9IG5ldyBGaWxlQ29udGVudA0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgPSBmaXguSW5uZXJUZXh0DQogICAgICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLkFkZChyZXBsYWNlbWVudCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgRmlsZUNoYW5nZSBzYXJpZkZpbGVDaGFuZ2UgPSBuZXcgRmlsZUNoYW5nZShmaWxlTG9jYXRpb246IG5ldyBGaWxlTG9jYXRpb24odXJpOiBhbmFseXNpc1RhcmdldFVyaSwgdXJpQmFzZUlkOiBudWxsKSwgcmVwbGFjZW1lbnRzOiByZXBsYWNlbWVudHMpOw0KDQogICAgICAgICAgICAgICAgRml4IHNhcmlmRml4ID0gbmV3IEZpeChkZXNjcmlwdGlvbjogbnVsbCwgZmlsZUNoYW5nZXM6IG5ldyBMaXN0PEZpbGVDaGFuZ2U+KCkgeyBzYXJpZkZpbGVDaGFuZ2UgfSk7DQogICAgICAgICAgICAgICAgcmVzdWx0LkZpeGVzID0gbmV3IExpc3Q8Rml4PiB7IHNhcmlmRml4IH07DQogICAgICAgICAgICB9IA0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9ICAgICAgICANCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Multitool' in namespace name 'Microsoft.CodeAnalysis.Sarif.Multitool.Rules'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "0766DB0ADCAA4CE0F91D1A3FFC53FF28",
- "algorithm": "md5"
- },
- {
- "value": "A0677FA0C8F9412ED5B846D52F42E964108A8673",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "801B0870AA467FBEC2C12A5012C46E361AFFD8F6B78B149EFE2C61AD80CD1C5A",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 9,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Multitool.Rules"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Multitool#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/TSLintLogReader.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgU3lzdGVtLlJ1bnRpbWUuU2VyaWFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uSnNvbjsNCnVzaW5nIFN5c3RlbS5UZXh0Ow0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzLlRTTGludE9iamVjdE1vZGVsOw0KdXNpbmcgTmV3dG9uc29mdC5Kc29uOw0KdXNpbmcgTmV3dG9uc29mdC5Kc29uLkxpbnE7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMNCnsNCiAgICBwdWJsaWMgY2xhc3MgVFNMaW50TG9nUmVhZGVyIDogTG9nUmVhZGVyPFRTTGludExvZz4NCiAgICB7DQogICAgICAgIHByaXZhdGUgcmVhZG9ubHkgWG1sT2JqZWN0U2VyaWFsaXplciBTZXJpYWxpemVyOw0KDQogICAgICAgIHB1YmxpYyBUU0xpbnRMb2dSZWFkZXIoKQ0KICAgICAgICB7DQogICAgICAgICAgICBTZXJpYWxpemVyID0gbmV3IERhdGFDb250cmFjdEpzb25TZXJpYWxpemVyKHR5cGVvZihUU0xpbnRMb2cpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSBUU0xpbnRMb2cgUmVhZExvZyhTdHJlYW0gaW5wdXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQgPz8gdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoaW5wdXQpKTsNCg0KICAgICAgICAgICAgdXNpbmcgKFRleHRSZWFkZXIgc3RyZWFtUmVhZGVyID0gbmV3IFN0cmVhbVJlYWRlcihpbnB1dCkpDQogICAgICAgICAgICB1c2luZyAoSnNvblJlYWRlciByZWFkZXIgPSBuZXcgSnNvblRleHRSZWFkZXIoc3RyZWFtUmVhZGVyKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBKVG9rZW4gcm9vdFRva2VuID0gSlRva2VuLlJlYWRGcm9tKHJlYWRlcik7DQogICAgICAgICAgICAgICAgcm9vdFRva2VuID0gTm9ybWFsaXplTG9nKHJvb3RUb2tlbik7DQogICAgICAgICAgICAgICAgc3RyaW5nIG5vcm1hbGl6ZWRMb2dDb250ZW50cyA9IHJvb3RUb2tlbi5Ub1N0cmluZygpOw0KICAgICAgICAgICAgICAgIHVzaW5nIChTdHJlYW0gbm9ybWFsaXplZExvZ1N0cmVhbSA9IG5ldyBNZW1vcnlTdHJlYW0oRW5jb2RpbmcuVVRGOC5HZXRCeXRlcyhub3JtYWxpemVkTG9nQ29udGVudHMpKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoVFNMaW50TG9nKVNlcmlhbGl6ZXIuUmVhZE9iamVjdChub3JtYWxpemVkTG9nU3RyZWFtKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBUaGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGFsbCAiZml4IiBwcm9wZXJ0aWVzIGluIHRoZSBpbnB1dCB0byBhIHN0YW5kYXJkIGZvcm0NCiAgICAgICAgLy8gYnkgd3JhcHBpbmcgdGhlIHByb3BlcnR5IHZhbHVlIGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdCBhbHJlYWR5IGFuIGFycmF5Lg0KICAgICAgICAvLw0KICAgICAgICAvLyBUaGUgaW5wdXQgaXMgYSBKU09OIHRva2VuIHJlcHJlc2VudGluZyB0aGUgZW50aXJlIFRTTGludCBsb2cgZmlsZS4gVGhlIG1ldGhvZA0KICAgICAgICAvLyBtb2RpZmllcyB0aGUgaW5wdXQgdG9rZW4gaW4gcGxhY2UuDQogICAgICAgIC8vDQogICAgICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNhbWUgaW5wdXQgdmFsdWUgdGhhdCBpdCBtb2RpZmllZCBpbiBwbGFjZS4NCiAgICAgICAgLy8NCiAgICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgVFNMaW50IEpTT04gY29udGFpbnMgbXVsdGlwbGUgcGF0dGVybnMgZm9yIGZpeCwgaS5lLjoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gImZpeCI6eyJpbm5lclN0YXJ0Ijo0NDI5LCJpbm5lckxlbmd0aCI6MCwiaW5uZXJUZXh0IjoiXHJcbiJ9DQogICAgICAgIC8vICJmaXgiOlt7ImlubmVyU3RhcnQiOjQ0MjksImlubmVyTGVuZ3RoIjowLCJpbm5lclRleHQiOiJcclxuIn1dDQogICAgICAgIC8vICJmaXgiOlt7ImlubmVyU3RhcnQiOjQ0MjksImlubmVyTGVuZ3RoIjowLCJpbm5lclRleHQiOiJcclxuIn0seyJpbm5lclN0YXJ0Ijo0NDI5LCJpbm5lckxlbmd0aCI6MCwiaW5uZXJUZXh0IjoiXHJcbiJ9XQ0KICAgICAgICAvLw0KICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHBhdHRlcm4gYWxzbyBvY2N1cnMsIGFsdGhvdWdoIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBUU0xpbnQNCiAgICAgICAgLy8gc291cmNlIGNvZGUgZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgaXQ6DQogICAgICAgIC8vDQogICAgICAgIC8vICJmaXgiOiB7DQogICAgICAgIC8vICAgImlubmVyUnVsZU5hbWUiOiAibm8tdHJhaWxpbmctd2hpdGVzcGFjZSIsDQogICAgICAgIC8vICAgImlubmVyUmVwbGFjZW1lbnRzIjogWw0KICAgICAgICAvLyAgICAgew0KICAgICAgICAvLyAgICAgICAiaW5uZXJTdGFydCI6IDE4NzIsDQogICAgICAgIC8vICAgICAgICJpbm5lckxlbmd0aCI6IDQsDQogICAgICAgIC8vICAgICAgICJpbm5lclRleHQiOiAiIg0KICAgICAgICAvLyAgICAgfQ0KICAgICAgICAvLyAgIF0NCiAgICAgICAgLy8gfQ0KICAgICAgICAvLw0KICAgICAgICAvLyBMYWNraW5nIGFueSBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBpbnRlcnByZXQgdGhpcywgd2UgdHJlYXQgYW55IG9iamVjdHMNCiAgICAgICAgLy8gZm91bmQgd2l0aGluIHRoZSAiaW5uZXJSZXBsYWNlbWVudHMiIGFycmF5IGFzIGlmIHRoZXkgb2NjdXJyZWQgZGlyZWN0bHkNCiAgICAgICAgLy8gdW5kZXIgdGhlICJmaXgiIG9iamVjdC4NCiAgICAgICAgLy8NCiAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgbWFya2VkIGludGVybmFsIHJhdGhlciB0aGFuIHByaXZhdGUgZm9yIHRoZSBzYWtlIG9mIHVuaXQgdGVzdHMuDQogICAgICAgIGludGVybmFsIEpUb2tlbiBOb3JtYWxpemVMb2coSlRva2VuIHJvb3RUb2tlbikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHJvb3RUb2tlbiBpcyBKQXJyYXkgZW50cmllcykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOb3JtYWxpemVFbnRyaWVzKGVudHJpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oDQogICAgICAgICAgICAgICAgICAgIHN0cmluZy5Gb3JtYXQoDQogICAgICAgICAgICAgICAgICAgICAgICBDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLA0KICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSByb290IEpTT04gdmFsdWUgc2hvdWxkIGJlIGEgSkFycmF5LCBidXQgaXMgYSB7MH0uIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RUb2tlbi5HZXRUeXBlKCkuTmFtZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcm9vdFRva2VuOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIE5vcm1hbGl6ZUVudHJpZXMoSkFycmF5IGVudHJpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGZvcmVhY2ggKEpUb2tlbiBlbnRyeVRva2VuIGluIGVudHJpZXMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGVudHJ5VG9rZW4gaXMgSk9iamVjdCBlbnRyeSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZUVudHJ5KGVudHJ5KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmVJbmZvID0gZW50cnlUb2tlbiBhcyBJSnNvbkxpbmVJbmZvOw0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKA0KICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLkZvcm1hdCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoezB9LCB7MX0pOiBUaGUgSlNPTiB2YWx1ZSBzaG91bGQgYmUgYSBKT2JqZWN0LCBidXQgaXMgYSB7Mn0uIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lSW5mby5MaW5lTnVtYmVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLkxpbmVQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVRva2VuLkdldFR5cGUoKS5OYW1lKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBOb3JtYWxpemVFbnRyeShKT2JqZWN0IGVudHJ5KQ0KICAgICAgICB7DQogICAgICAgICAgICBKUHJvcGVydHkgZml4UHJvcGVydHkgPSBlbnRyeS5Qcm9wZXJ0aWVzKCkuU2luZ2xlT3JEZWZhdWx0KHAgPT4gcC5OYW1lLkVxdWFscygiZml4IikpOw0KICAgICAgICAgICAgaWYgKGZpeFByb3BlcnR5ICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTm9ybWFsaXplRml4UHJvcGVydHkoZml4UHJvcGVydHkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBOb3JtYWxpemVGaXhQcm9wZXJ0eShKUHJvcGVydHkgZml4UHJvcGVydHkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBmaXhWYWx1ZVRva2VuID0gZml4UHJvcGVydHkuVmFsdWU7DQogICAgICAgICAgICBpZiAoZml4VmFsdWVUb2tlbiBpcyBKT2JqZWN0IGZpeFZhbHVlT2JqZWN0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEpQcm9wZXJ0eSBpbm5lclJlcGxhY2VtZW50c1Byb3BlcnR5ID0gZml4VmFsdWVPYmplY3QuUHJvcGVydHkoImlubmVyUmVwbGFjZW1lbnRzIik7DQogICAgICAgICAgICAgICAgaWYgKGlubmVyUmVwbGFjZW1lbnRzUHJvcGVydHk/LlZhbHVlIGlzIEpBcnJheSBpbm5lclJlcGxhY2VtZW50c0FycmF5KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZml4UHJvcGVydHkuVmFsdWUgPSBpbm5lclJlcGxhY2VtZW50c0FycmF5Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmaXhQcm9wZXJ0eS5WYWx1ZSA9IG5ldyBKQXJyYXkoZml4VmFsdWVUb2tlbik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoIShmaXhWYWx1ZVRva2VuIGlzIEpBcnJheSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGxpbmVJbmZvID0gZml4VmFsdWVUb2tlbiBhcyBJSnNvbkxpbmVJbmZvOw0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oDQogICAgICAgICAgICAgICAgICAgIHN0cmluZy5Gb3JtYXQoDQogICAgICAgICAgICAgICAgICAgICAgICBDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlLA0KICAgICAgICAgICAgICAgICAgICAgICAgIih7MH0sIHsxfSk6IFRoZSB2YWx1ZSBvZiB0aGUgJ2ZpeCcgcHJvcGVydHkgc2hvdWxkIGJlIGVpdGhlciBhIEpPYmplY3Qgb3IgYSBKQXJyYXksIGJ1dCBpcyBhIHsyfS4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgbGluZUluZm8uTGluZU51bWJlciwNCiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVJbmZvLkxpbmVQb3NpdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpeFZhbHVlVG9rZW4uR2V0VHlwZSgpLk5hbWUpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Multitool.Rules'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "CE47C81D9680E67F184482AAC37D5363",
- "algorithm": "md5"
- },
- {
- "value": "4C4428E28BC4D22665FAE32DA6EC7B1187F19239",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4400A79C532721319B2FFD3E96261C4F3A6A9058EE533F4A1CC96CFBFF848E66",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 9,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Multitool.Rules"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PREFastObjectModel/Category.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/dXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uWG1sOw0KdXNpbmcgU3lzdGVtLlhtbC5TY2hlbWE7DQp1c2luZyBTeXN0ZW0uWG1sLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMuUFJFRmFzdE9iamVjdE1vZGVsDQp7DQogICAgcHVibGljIGNsYXNzIENhdGVnb3J5IDogRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4sIElYbWxTZXJpYWxpemFibGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBYbWxTY2hlbWEgR2V0U2NoZW1hKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBEZWZpbmUgaG93IFhtbFNlcmlhbGl6ZXIuRGVzZXJpYWxpemUgc2hvdWxkIGRlc2VyaWFsaXplIGludG8gYSBkaWN0aW9uYXJ5DQogICAgICAgIHB1YmxpYyB2b2lkIFJlYWRYbWwoWG1sUmVhZGVyIHJlYWRlcikNCiAgICAgICAgew0KICAgICAgICAgICAgYm9vbCB3YXNFbXB0eSA9IHJlYWRlci5Jc0VtcHR5RWxlbWVudDsNCiAgICAgICAgICAgIHJlYWRlci5SZWFkKCk7DQoNCiAgICAgICAgICAgIGlmICh3YXNFbXB0eSkNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICANCiAgICAgICAgICAgIHdoaWxlIChyZWFkZXIuTm9kZVR5cGUgIT0gWG1sTm9kZVR5cGUuRW5kRWxlbWVudCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIga2V5ID0gcmVhZGVyLk5hbWU7DQogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVhZGVyLlJlYWRJbm5lclhtbCgpOw0KDQogICAgICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoa2V5KSkNCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQoNCiAgICAgICAgICAgICAgICBBZGQoa2V5LCB2YWx1ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJlYWRlci5SZWFkRW5kRWxlbWVudCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZvaWQgV3JpdGVYbWwoWG1sV3JpdGVyIHdyaXRlcikNCiAgICAgICAgew0KICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Processors'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "DCDF96B99BA46D82E87C568A334636E9",
- "algorithm": "md5"
- },
- {
- "value": "9B015B229F89ABE8839A907A5987D430F217471A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "3D731F3858D0E36AA4925C110DB93AEE518DECCF51E54841436E299658BD7B88",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 10,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Processors"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PREFastObjectModel/Defect.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/dXNpbmcgU3lzdGVtLlhtbC5TZXJpYWxpemF0aW9uOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Db252ZXJ0ZXJzLlBSRUZhc3RPYmplY3RNb2RlbA0Kew0KICAgIHB1YmxpYyBjbGFzcyBEZWZlY3QNCiAgICB7DQogICAgICAgIFtYbWxFbGVtZW50KCJTRkEiKV0NCiAgICAgICAgcHVibGljIFNGQSBTRkEgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIFtYbWxFbGVtZW50KCJERUZFQ1RDT0RFIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRGVmZWN0Q29kZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgW1htbEVsZW1lbnQoIkRFU0NSSVBUSU9OIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIFtYbWxFbGVtZW50KCJGVU5DVElPTiIpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZ1bmN0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbWG1sRWxlbWVudCgiREVDT1JBVEVEIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRGVjb3JhdGVkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbWG1sRWxlbWVudCgiRlVOQ0xJTkUiKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBGdW5jbGluZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgW1htbEVsZW1lbnQoIlBST0JBQklMSVRZIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgUHJvYmFiaWxpdHkgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIFtYbWxFbGVtZW50KCJSQU5LIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgUmFuayB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgW1htbEVsZW1lbnQoIlBBVEgiKV0NCiAgICAgICAgcHVibGljIFBSRUZhc3RQYXRoIFBhdGggeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIFtYbWxFbGVtZW50KCJDQVRFR09SWSIpXQ0KICAgICAgICBwdWJsaWMgQ2F0ZWdvcnkgQ2F0ZWdvcnkgeyBnZXQ7IHNldDsgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Readers'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "7A837A495F68EEAAD9E663EBC9570A9B",
- "algorithm": "md5"
- },
- {
- "value": "BBB70B5691194E00BF52941380AC7DDF81222BBA",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "02D0F026318F446B95FEA25D899C54C173FE593D92EC5179DFEBB129AD41F96F",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 11,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Readers"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PREFastObjectModel/DefectList.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/dXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uWG1sLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMuUFJFRmFzdE9iamVjdE1vZGVsDQp7DQogICAgW1htbFJvb3QoIkRFRkVDVFMiKV0NCiAgICBwdWJsaWMgY2xhc3MgRGVmZWN0TGlzdA0KICAgIHsNCiAgICAgICAgW1htbEVsZW1lbnQoIkRFRkVDVCIpXQ0KICAgICAgICBwdWJsaWMgTGlzdDxEZWZlY3Q+IERlZmVjdHMgeyBnZXQ7IHNldDsgfSA9IG5ldyBMaXN0PERlZmVjdD4oKTsNCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.VersionOne'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "6B569192CB00362CDD0F64A85F8203E3",
- "algorithm": "md5"
- },
- {
- "value": "94AE119BC55EC02E415B64F32FA08DF953B91D66",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "18C895A02FBF9C290F7EB07CB401E7CF8E1C03DB36D56E4DCCBD4572160C83F8",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 12,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.VersionOne"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PREFastObjectModel/PREFastPath.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/dXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uWG1sLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMuUFJFRmFzdE9iamVjdE1vZGVsDQp7DQogICAgcHVibGljIGNsYXNzIFBSRUZhc3RQYXRoDQogICAgew0KICAgICAgICBbWG1sRWxlbWVudCgiU0ZBIildDQogICAgICAgIHB1YmxpYyBMaXN0PFNGQT4gU0ZBcyB7IGdldDsgc2V0OyB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysis.Sarif.VersionOne.Readers' with another namespace."
},
- "hashes": [
- {
- "value": "673AACA6616FF4F9530C4D33862A3C06",
- "algorithm": "md5"
- },
- {
- "value": "36D0D8B44F88C88EB2681FBFCB3A38AA66B2EDC9",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "699993A373F0F499DC6431C7AD2A2C6966561BCB7376EE500B203C8C44A83593",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 13,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.VersionOne.Readers"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PylintObjectModel/PylintLogEntry.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBOZXd0b25zb2Z0Lkpzb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMuUHlsaW50T2JqZWN0TW9kZWwNCnsNCiAgICBwdWJsaWMgY2xhc3MgUHlsaW50TG9nRW50cnkNCiAgICB7DQogICAgICAgIFtKc29uUHJvcGVydHkoInR5cGUiKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBUeXBlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbSnNvblByb3BlcnR5KCJtb2R1bGUiKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNb2R1bGVOYW1lIHsgZ2V0OyAgc2V0OyB9DQoNCiAgICAgICAgW0pzb25Qcm9wZXJ0eSgib2JqIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgT2JqZWN0IHsgZ2V0OyAgc2V0OyB9DQoNCiAgICAgICAgW0pzb25Qcm9wZXJ0eSgibGluZSIpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIExpbmUgeyBnZXQ7ICBzZXQ7IH0NCg0KICAgICAgICBbSnNvblByb3BlcnR5KCJjb2x1bW4iKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBDb2x1bW4geyAgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbSnNvblByb3BlcnR5KCJwYXRoIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRmlsZVBhdGggeyBnZXQ7ICBzZXQ7IH0NCg0KICAgICAgICBbSnNvblByb3BlcnR5KCJzeW1ib2wiKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBTeW1ib2wgeyBnZXQ7ICBzZXQ7IH0NCg0KICAgICAgICBbSnNvblByb3BlcnR5KCJtZXNzYWdlIildDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTWVzc2FnZSB7IGdldDsgIHNldDsgfQ0KDQogICAgICAgIFtKc29uUHJvcGVydHkoIm1lc3NhZ2UtaWQiKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNZXNzYWdlSWQgeyBnZXQ7IHNldDsgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.VersionOne.Readers'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "AC70811C79154A779A65CC16A9591C1A",
- "algorithm": "md5"
- },
- {
- "value": "25DDF468E2FCABD5058120769C16DC0A52831495",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "5CD4A7DAB48FEC71F2EEE17ED4C65D7AD636BB22532086380244B0FFC0365127",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 13,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.VersionOne.Readers"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/PylintObjectModel/PylintLogReader.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uSU87DQp1c2luZyBOZXd0b25zb2Z0Lkpzb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMuUHlsaW50T2JqZWN0TW9kZWwNCnsNCiAgICBwdWJsaWMgY2xhc3MgUHlsaW50TG9nUmVhZGVyIDogTG9nUmVhZGVyPFB5bGludExvZz4NCiAgICB7DQogICAgICAgIHB1YmxpYyBvdmVycmlkZSBQeWxpbnRMb2cgUmVhZExvZyhTdHJlYW0gaW5wdXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN0cmluZyBweWxpbnRUZXh0Ow0KDQogICAgICAgICAgICB1c2luZyAoVGV4dFJlYWRlciBzdHJlYW1SZWFkZXIgPSBuZXcgU3RyZWFtUmVhZGVyKGlucHV0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBweWxpbnRUZXh0ID0gc3RyZWFtUmVhZGVyLlJlYWRUb0VuZCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gSnNvbkNvbnZlcnQuRGVzZXJpYWxpemVPYmplY3Q8UHlsaW50TG9nPihweWxpbnRUZXh0KTsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Visitors'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "5E614640B001E483386D8C2BEAA931E0",
- "algorithm": "md5"
- },
- {
- "value": "1B540058B099D3F060F937D90B149AF531E7D255",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "EEAD15A29770FE60FA33039CE87DA760E4020ADE2686B91941B608F7F16A52D0",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 14,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Visitors"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif.Converters/TSLintObjectModel/TSLintLogEntry.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLkNvbnZlcnRlcnMuVFNMaW50T2JqZWN0TW9kZWwNCnsNCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIHB1YmxpYyBjbGFzcyBUU0xpbnRMb2dFbnRyeQ0KICAgIHsNCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJuYW1lIiwgSXNSZXF1aXJlZCA9IHRydWUsIEVtaXREZWZhdWx0VmFsdWUgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZhaWx1cmUiLCBJc1JlcXVpcmVkID0gdHJ1ZSwgRW1pdERlZmF1bHRWYWx1ZSA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZhaWx1cmUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZU5hbWUiLCBJc1JlcXVpcmVkID0gdHJ1ZSwgRW1pdERlZmF1bHRWYWx1ZSA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVOYW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJ1bGVTZXZlcml0eSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVTZXZlcml0eSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGFydFBvc2l0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBUU0xpbnRMb2dQb3NpdGlvbiBTdGFydFBvc2l0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImVuZFBvc2l0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBUU0xpbnRMb2dQb3NpdGlvbiBFbmRQb3NpdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmaXgiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFRTTGludExvZ0ZpeD4gRml4ZXMgeyBnZXQ7IHNldDsgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysis.Sarif.Writers' with another namespace."
},
- "hashes": [
- {
- "value": "AD20A342981F18D6827179A59843E423",
- "algorithm": "md5"
- },
- {
- "value": "9DFB2197A816DE167AADEA29237CEC239E79E30B",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "670DEFD399EEAD411379ED492D2C7A2F464B017A902458F4C234F225A88C26F5",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 15,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Writers"
+ }
+ ]
}
- ]
- },
- "#$(ProjectDir)#../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Sarif.dll": {
- "mimeType": "application/octet-stream"
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Attachment.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIGZpbGUgcmVsZXZhbnQgdG8gYSB0b29sIGludm9jYXRpb24gb3IgdG8gYSByZXN1bHQuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBBdHRhY2htZW50IDogSVNhcmlmTm9kZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxBdHRhY2htZW50PiBWYWx1ZUNvbXBhcmVyID0+IEF0dGFjaG1lbnRFcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKEF0dGFjaG1lbnQgb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kIFNhcmlmTm9kZUtpbmQNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmQuQXR0YWNobWVudDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgbWVzc2FnZSBkZXNjcmliaW5nIHRoZSByb2xlIHBsYXllZCBieSB0aGUgYXR0YWNobWVudC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJkZXNjcmlwdGlvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIE1lc3NhZ2UgRGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0YWNobWVudC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmaWxlTG9jYXRpb24iLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24gRmlsZUxvY2F0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiByZWdpb25zIG9mIGludGVyZXN0IHdpdGhpbiB0aGUgYXR0YWNobWVudC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJyZWdpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8UmVnaW9uPiBSZWdpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiByZWN0YW5nbGVzIHNwZWNpZnlpbmcgYXJlYXMgb2YgaW50ZXJlc3Qgd2l0aGluIHRoZSBpbWFnZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJyZWN0YW5nbGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8UmVjdGFuZ2xlPiBSZWN0YW5nbGVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJBdHRhY2htZW50IiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEF0dGFjaG1lbnQoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJBdHRhY2htZW50IiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGVzY3JpcHRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IERlc2NyaXB0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZmlsZUxvY2F0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGaWxlTG9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyZWdpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSZWdpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVjdGFuZ2xlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmVjdGFuZ2xlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgQXR0YWNobWVudChNZXNzYWdlIGRlc2NyaXB0aW9uLCBGaWxlTG9jYXRpb24gZmlsZUxvY2F0aW9uLCBJRW51bWVyYWJsZTxSZWdpb24+IHJlZ2lvbnMsIElFbnVtZXJhYmxlPFJlY3RhbmdsZT4gcmVjdGFuZ2xlcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChkZXNjcmlwdGlvbiwgZmlsZUxvY2F0aW9uLCByZWdpb25zLCByZWN0YW5nbGVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkF0dGFjaG1lbnQiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEF0dGFjaG1lbnQoQXR0YWNobWVudCBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5EZXNjcmlwdGlvbiwgb3RoZXIuRmlsZUxvY2F0aW9uLCBvdGhlci5SZWdpb25zLCBvdGhlci5SZWN0YW5nbGVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQXR0YWNobWVudCBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEF0dGFjaG1lbnQpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IEF0dGFjaG1lbnQodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChNZXNzYWdlIGRlc2NyaXB0aW9uLCBGaWxlTG9jYXRpb24gZmlsZUxvY2F0aW9uLCBJRW51bWVyYWJsZTxSZWdpb24+IHJlZ2lvbnMsIElFbnVtZXJhYmxlPFJlY3RhbmdsZT4gcmVjdGFuZ2xlcykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPSBuZXcgTWVzc2FnZShkZXNjcmlwdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChmaWxlTG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGaWxlTG9jYXRpb24gPSBuZXcgRmlsZUxvY2F0aW9uKGZpbGVMb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChyZWdpb25zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxSZWdpb24+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gcmVnaW9ucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IFJlZ2lvbih2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBSZWdpb25zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHJlY3RhbmdsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMSA9IG5ldyBMaXN0PFJlY3RhbmdsZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiByZWN0YW5nbGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMS5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZChuZXcgUmVjdGFuZ2xlKHZhbHVlXzEpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFJlY3RhbmdsZXMgPSBkZXN0aW5hdGlvbl8xOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in namespace name 'Microsoft.CodeAnalysis.Sarif.Writers'.",
+ "id": "Namespace"
},
- "hashes": [
- {
- "value": "0138FEFD8924D9B74F3D6CE4B37A815F",
- "algorithm": "md5"
- },
- {
- "value": "50CFB017B2FDD4C9167CFBB2506FE16F83D776D9",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "0E65AB3BD57908AB3AF44E3F31222C4FEADC9E5D70A7E0977F09643BDB2356B0",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 15,
+ "fullyQualifiedName": "Microsoft.CodeAnalysis.Sarif.Writers"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Namespace"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/CodeFlow.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIHNldCBvZiB0aHJlYWRGbG93cyB3aGljaCB0b2dldGhlciBkZXNjcmliZSBhIHBhdHRlcm4gb2YgY29kZSBleGVjdXRpb24gcmVsZXZhbnQgdG8gZGV0ZWN0aW5nIGEgcmVzdWx0Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgQ29kZUZsb3cgOiBQcm9wZXJ0eUJhZ0hvbGRlciwgSVNhcmlmTm9kZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxDb2RlRmxvdz4gVmFsdWVDb21wYXJlciA9PiBDb2RlRmxvd0VxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoQ29kZUZsb3cgb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kIFNhcmlmTm9kZUtpbmQNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmQuQ29kZUZsb3c7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIG1lc3NhZ2UgcmVsZXZhbnQgdG8gdGhlIGNvZGUgZmxvdy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBvbmUgb3IgbW9yZSB1bmlxdWUgdGhyZWFkRmxvdyBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIGRlc2NyaWJlcyB0aGUgcHJvZ3Jlc3Mgb2YgYSBwcm9ncmFtIHRocm91Z2ggYSB0aHJlYWQgb2YgZXhlY3V0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInRocmVhZEZsb3dzIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8VGhyZWFkRmxvdz4gVGhyZWFkRmxvd3MgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBmbG93Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQ29kZUZsb3ciIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQ29kZUZsb3coKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJDb2RlRmxvdyIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0aHJlYWRGbG93cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVGhyZWFkRmxvd3MiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBDb2RlRmxvdyhNZXNzYWdlIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFRocmVhZEZsb3c+IHRocmVhZEZsb3dzLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQobWVzc2FnZSwgdGhyZWFkRmxvd3MsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQ29kZUZsb3ciIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIENvZGVGbG93KENvZGVGbG93IG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLk1lc3NhZ2UsIG90aGVyLlRocmVhZEZsb3dzLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQ29kZUZsb3cgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChDb2RlRmxvdylEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgQ29kZUZsb3codGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChNZXNzYWdlIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFRocmVhZEZsb3c+IHRocmVhZEZsb3dzLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlKG1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAodGhyZWFkRmxvd3MgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PFRocmVhZEZsb3c+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gdGhyZWFkRmxvd3MpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBUaHJlYWRGbG93KHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFRocmVhZEZsb3dzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.CodeAnalysisDriver' with another namespace."
},
- "hashes": [
- {
- "value": "461FBFDF16CD39A5865878EDB6710076",
- "algorithm": "md5"
- },
+ "locations": [
{
- "value": "B5D6F01AB53A87CBD0C9F967B00ED429A687169F",
- "algorithm": "sha-1"
- },
- {
- "value": "EB0DE7E76B869598081D182C37DCBE1E68AFB4FACF24FAEB28AF2799394CD7CF",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 16,
+ "fullyQualifiedName": "Microsoft.CodeAnalysisDriver"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/ConsoleLogger.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgU3lzdGVtLlRleHQ7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgcHVibGljIGNsYXNzIENvbnNvbGVMb2dnZXIgOiBJQW5hbHlzaXNMb2dnZXINCiAgICB7DQogICAgICAgIHB1YmxpYyBDb25zb2xlTG9nZ2VyKGJvb2wgdmVyYm9zZSkNCiAgICAgICAgew0KICAgICAgICAgICAgVmVyYm9zZSA9IHZlcmJvc2U7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgYm9vbCBWZXJib3NlIHsgZ2V0OyBzZXQ7IH0NCg0KDQogICAgICAgIHB1YmxpYyB2b2lkIEFuYWx5c2lzU3RhcnRlZCgpDQogICAgICAgIHsNCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKFNka1Jlc291cmNlcy5NU0dfQW5hbHl6aW5nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIEFuYWx5c2lzU3RvcHBlZChSdW50aW1lQ29uZGl0aW9ucyBydW50aW1lQ29uZGl0aW9ucykNCiAgICAgICAgew0KICAgICAgICAgICAgUnVudGltZUNvbmRpdGlvbnMgZmF0YWxDb25kaXRpb25zID0gKHJ1bnRpbWVDb25kaXRpb25zICYgflJ1bnRpbWVDb25kaXRpb25zLk5vbmZhdGFsKTsNCg0KICAgICAgICAgICAgaWYgKGZhdGFsQ29uZGl0aW9ucyA9PSBSdW50aW1lQ29uZGl0aW9ucy5Ob25lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKFNka1Jlc291cmNlcy5NU0dfQW5hbHlzaXNDb21wbGV0ZWRTdWNjZXNzZnVsbHkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgpOw0KDQogICAgICAgICAgICBpZiAoKHJ1bnRpbWVDb25kaXRpb25zICYgUnVudGltZUNvbmRpdGlvbnMuUnVsZU5vdEFwcGxpY2FibGVUb1RhcmdldCkgIT0gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShTZGtSZXNvdXJjZXMuTVNHX09uZU9yTW9yZU5vdEFwcGxpY2FibGUpOw0KICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICgocnVudGltZUNvbmRpdGlvbnMgJiBSdW50aW1lQ29uZGl0aW9ucy5UYXJnZXROb3RWYWxpZFRvQW5hbHl6ZSkgIT0gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShTZGtSZXNvdXJjZXMuTVNHX09uZU9yTW9yZUludmFsaWRUYXJnZXRzKTsNCiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZmF0YWxDb25kaXRpb25zICE9IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gT25lIG9yIG1vcmUgZmF0YWwgY29uZGl0aW9ucyBvYnNlcnZlZCBhdCBydW50aW1lLA0KICAgICAgICAgICAgICAgIC8vIHNvIHdlJ2xsIHJlcG9ydCBhIGNhdGFzdHJvcGhpYyBleGl0Lg0KICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKFNka1Jlc291cmNlcy5NU0dfVW5leHBlY3RlZEFwcGxpY2F0aW9uRXhpdCk7DQogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoU2RrUmVzb3VyY2VzLlVuZXhwZWN0ZWRGYXRhbFJ1bnRpbWVDb25kaXRpb25zICsgZmF0YWxDb25kaXRpb25zLlRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBBbmFseXppbmdUYXJnZXQoSUFuYWx5c2lzQ29udGV4dCBjb250ZXh0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoY29udGV4dCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGNvbnRleHQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFZlcmJvc2UpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoc3RyaW5nLkZvcm1hdChDdWx0dXJlSW5mby5DdXJyZW50Q3VsdHVyZSwNCiAgICAgICAgICAgICAgICAgICAgU2RrUmVzb3VyY2VzLk1TRzAwMV9BbmFseXppbmdUYXJnZXQsDQogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LlRhcmdldFVyaS5HZXRGaWxlTmFtZSgpKSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBMb2dNZXNzYWdlKGJvb2wgdmVyYm9zZSwgc3RyaW5nIG1lc3NhZ2UpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChWZXJib3NlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKG1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZvaWQgTG9nKElSdWxlIHJ1bGUsIFJlc3VsdCByZXN1bHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihyZXN1bHQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2UgPSByZXN1bHQuR2V0TWVzc2FnZVRleHQocnVsZSwgY29uY2lzZTogZmFsc2UpOw0KDQogICAgICAgICAgICAvLyBUT0RPIHdlIG5lZWQgYmV0dGVyIHJldHJpZXZhbCBmb3IgbG9jYXRpb25zIHRoYW4gdGhlc2UgZGVmYXVsdHMNCiAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4gcG90ZW50aWFsbHkgZW1pdCBtYW55IG1lc3NhZ2VzIGZyb20gYSBzaW5nbGUgcmVzdWx0DQogICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uIHBoeXNpY2FsTG9jYXRpb24gPSByZXN1bHQuTG9jYXRpb25zPy5GaXJzdCgpLlBoeXNpY2FsTG9jYXRpb247DQoNCiAgICAgICAgICAgIFdyaXRlVG9Db25zb2xlKA0KICAgICAgICAgICAgICAgIHJlc3VsdC5MZXZlbCwNCiAgICAgICAgICAgICAgICBwaHlzaWNhbExvY2F0aW9uPy5GaWxlTG9jYXRpb24/LlVyaSwNCiAgICAgICAgICAgICAgICBwaHlzaWNhbExvY2F0aW9uPy5SZWdpb24sDQogICAgICAgICAgICAgICAgcmVzdWx0LlJ1bGVJZCwNCiAgICAgICAgICAgICAgICBtZXNzYWdlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBXcml0ZVRvQ29uc29sZShSZXN1bHRMZXZlbCBsZXZlbCwgVXJpIHVyaSwgUmVnaW9uIHJlZ2lvbiwgc3RyaW5nIHJ1bGVJZCwgc3RyaW5nIG1lc3NhZ2UpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN3aXRjaCAobGV2ZWwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gVGhlc2UgcmVzdWx0IHR5cGVzIGFyZSBvcHRpb25hbGx5IGVtaXR0ZWQuDQogICAgICAgICAgICAgICAgY2FzZSBSZXN1bHRMZXZlbC5QYXNzOg0KICAgICAgICAgICAgICAgIGNhc2UgUmVzdWx0TGV2ZWwuTm90ZToNCiAgICAgICAgICAgICAgICBjYXNlIFJlc3VsdExldmVsLk5vdEFwcGxpY2FibGU6DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWZXJib3NlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKEdldE1lc3NhZ2VUZXh0KHVyaSwgcmVnaW9uLCBydWxlSWQsIG1lc3NhZ2UsIGxldmVsKSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gVGhlc2UgcmVzdWx0IHR5cGVzIGFyZSBhbHdheXMgZW1pdHRlZC4NCiAgICAgICAgICAgICAgICBjYXNlIFJlc3VsdExldmVsLkVycm9yOg0KICAgICAgICAgICAgICAgIGNhc2UgUmVzdWx0TGV2ZWwuV2FybmluZzoNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoR2V0TWVzc2FnZVRleHQodXJpLCByZWdpb24sIHJ1bGVJZCwgbWVzc2FnZSwgbGV2ZWwpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgR2V0TWVzc2FnZVRleHQoDQogICAgICAgICAgICBVcmkgdXJpLA0KICAgICAgICAgICAgUmVnaW9uIHJlZ2lvbiwNCiAgICAgICAgICAgIHN0cmluZyBydWxlSWQsDQogICAgICAgICAgICBzdHJpbmcgbWVzc2FnZSwNCiAgICAgICAgICAgIFJlc3VsdExldmVsIHJlc3VsdExldmVsKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgcGF0aCA9IG51bGw7DQoNCiAgICAgICAgICAgIGlmICh1cmkgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBJZiBhIHBhdGggcmVmZXJzIHRvIGEgVVJJIG9mIGZvcm0gZmlsZTovL2JsYWgsIHdlIHdpbGwgY29udmVydCB0byB0aGUgbG9jYWwgcGF0aCAgICAgICAgICAgDQogICAgICAgICAgICAgICAgaWYgKHVyaS5Jc0Fic29sdXRlVXJpICYmIHVyaS5TY2hlbWUgPT0gVXJpLlVyaVNjaGVtZUZpbGUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBwYXRoID0gdXJpLkxvY2FsUGF0aDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHVyaS5Ub1N0cmluZygpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RyaW5nIGlzc3VlVHlwZSA9IG51bGw7DQoNCiAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0TGV2ZWwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgY2FzZSBSZXN1bHRMZXZlbC5FcnJvcjoNCiAgICAgICAgICAgICAgICAgICAgaXNzdWVUeXBlID0gImVycm9yIjsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICBjYXNlIFJlc3VsdExldmVsLldhcm5pbmc6DQogICAgICAgICAgICAgICAgICAgIGlzc3VlVHlwZSA9ICJ3YXJuaW5nIjsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICBjYXNlIFJlc3VsdExldmVsLlBhc3M6DQogICAgICAgICAgICAgICAgICAgIGlzc3VlVHlwZSA9ICJwYXNzIjsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICBjYXNlIFJlc3VsdExldmVsLk5vdEFwcGxpY2FibGU6DQogICAgICAgICAgICAgICAgY2FzZSBSZXN1bHRMZXZlbC5Ob3RlOg0KICAgICAgICAgICAgICAgICAgICBpc3N1ZVR5cGUgPSAiaW5mbyI7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlVua25vd24gbWVzc2FnZSBraW5kOiIgKyByZXN1bHRMZXZlbC5Ub1N0cmluZygpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RyaW5nIGRldGFpbGVkRGlhZ25vc2lzID0gTm9ybWFsaXplTWVzc2FnZShtZXNzYWdlLCBlbnF1b3RlOiBmYWxzZSk7DQoNCiAgICAgICAgICAgIHN0cmluZyBsb2NhdGlvbiA9ICIiOw0KDQogICAgICAgICAgICBpZiAocmVnaW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gVE9ETyANCiAgICAgICAgICAgICAgICBpZiAocmVnaW9uLkNoYXJPZmZzZXQgPiAwIHx8DQogICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5CeXRlT2Zmc2V0ID4gMCB8fA0KICAgICAgICAgICAgICAgICAgICByZWdpb24uU3RhcnRDb2x1bW4gPT0gMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmcuRW1wdHk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi5TdGFydExpbmUgPT0gMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgbG9jYXRpb24gPSByZWdpb24uRm9ybWF0Rm9yVmlzdWFsU3R1ZGlvKCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0cmluZyByZXN1bHQgPSAocGF0aCAhPSBudWxsID8gKHBhdGggKyBsb2NhdGlvbiArICI6ICIpIDogIiIpICsNCiAgICAgICAgICAgICAgICAgICBpc3N1ZVR5cGUgKyAoIXN0cmluZy5Jc051bGxPckVtcHR5KHJ1bGVJZCkgPyAiICIgOiAiIikgKw0KICAgICAgICAgICAgICAgICAgICghc3RyaW5nLklzTnVsbE9yRW1wdHkocnVsZUlkKSA/IChydWxlSWQgKyAiOiAiKSA6ICIiKSArDQogICAgICAgICAgICAgICAgICAgZGV0YWlsZWREaWFnbm9zaXM7DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBOb3JtYWxpemVNZXNzYWdlKHN0cmluZyBtZXNzYWdlLCBib29sIGVucXVvdGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChtZXNzYWdlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YobWVzc2FnZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gKGVucXVvdGUgPyAiXCIiIDogIiIpICsNCiAgICAgICAgICAgICAgICBtZXNzYWdlICsNCiAgICAgICAgICAgICAgICAoZW5xdW90ZSA/ICJcIiIgOiAiIik7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBMb2dUb29sTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIFdyaXRlVG9Db25zb2xlKG5vdGlmaWNhdGlvbik7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBMb2dDb25maWd1cmF0aW9uTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIFdyaXRlVG9Db25zb2xlKG5vdGlmaWNhdGlvbik7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgV3JpdGVUb0NvbnNvbGUoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgc3dpdGNoIChub3RpZmljYXRpb24uTGV2ZWwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gVGhpcyBub3RpZmljYXRpb24gdHlwZSBpcyBvcHRpb25hbGx5IGVtaXR0ZWQuDQogICAgICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25MZXZlbC5Ob3RlOg0KICAgICAgICAgICAgICAgICAgICBpZiAoVmVyYm9zZSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoRm9ybWF0Tm90aWZpY2F0aW9uTWVzc2FnZShub3RpZmljYXRpb24pKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgICAgIC8vIFRoZXNlIG5vdGlmaWNhdGlvbiB0eXBlcyBhcmUgYWx3YXlzIGVtaXR0ZWQuDQogICAgICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25MZXZlbC5FcnJvcjoNCiAgICAgICAgICAgICAgICBjYXNlIE5vdGlmaWNhdGlvbkxldmVsLldhcm5pbmc6DQogICAgICAgICAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKEZvcm1hdE5vdGlmaWNhdGlvbk1lc3NhZ2Uobm90aWZpY2F0aW9uKSk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RyaW5nIEZvcm1hdE5vdGlmaWNhdGlvbk1lc3NhZ2UoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgc3RyaW5nIGlzc3VlVHlwZSA9IG51bGw7DQoNCiAgICAgICAgICAgIHN3aXRjaCAobm90aWZpY2F0aW9uLkxldmVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgTm90aWZpY2F0aW9uTGV2ZWwuRXJyb3I6DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpc3N1ZVR5cGUgPSAiZXJyb3IiOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25MZXZlbC5XYXJuaW5nOg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaXNzdWVUeXBlID0gIndhcm5pbmciOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY2FzZSBOb3RpZmljYXRpb25MZXZlbC5Ob3RlOg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaXNzdWVUeXBlID0gIm5vdGUiOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJVbmtub3duIG5vdGlmaWNhdGlvbiBsZXZlbDogIiArIG5vdGlmaWNhdGlvbi5MZXZlbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKGlzc3VlVHlwZSArICIgIik7DQoNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkobm90aWZpY2F0aW9uLklkKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBzYi5BcHBlbmQobm90aWZpY2F0aW9uLklkICsgIiA6ICIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KG5vdGlmaWNhdGlvbi5SdWxlSWQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHNiLkFwcGVuZChub3RpZmljYXRpb24uUnVsZUlkICsgIiA6ICIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBzYi5BcHBlbmQobm90aWZpY2F0aW9uLk1lc3NhZ2UuVGV4dCk7DQoNCiAgICAgICAgICAgIHJldHVybiBzYi5Ub1N0cmluZygpOw0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1020",
+ "message": {
+ "text": "Consider merging the types defined in 'Microsoft.Json.Pointer' with another namespace."
},
- "hashes": [
- {
- "value": "3131B61A60BF1D07BB768FF8508D8231",
- "algorithm": "md5"
- },
- {
- "value": "4F42D9A5AC5160B3AAE84FAE17EA39A00A2E902A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "E523793EDB38ECF4E7534DA0711697156ED8B89913606AC1AD8FCEE00D68FD14",
- "algorithm": "sha-256"
+ "logicalLocations": [
+ {
+ "index": 17,
+ "fullyQualifiedName": "Microsoft.Json.Pointer"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Conversion.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBEZXNjcmliZXMgaG93IGEgY29udmVydGVyIHRyYW5zZm9ybWVkIHRoZSBvdXRwdXQgb2YgYSBzdGF0aWMgYW5hbHlzaXMgdG9vbCBmcm9tIHRoZSBhbmFseXNpcyB0b29sJ3MgbmF0aXZlIG91dHB1dCBmb3JtYXQgaW50byB0aGUgU0FSSUYgZm9ybWF0Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgQ29udmVyc2lvbiA6IElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8Q29udmVyc2lvbj4gVmFsdWVDb21wYXJlciA9PiBDb252ZXJzaW9uRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhDb252ZXJzaW9uIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLkNvbnZlcnNpb247DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHRvb2wgb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSBjb252ZXJ0ZXIuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidG9vbCIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIFRvb2wgVG9vbCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gaW52b2NhdGlvbiBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIGludm9jYXRpb24gb2YgdGhlIGNvbnZlcnRlci4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJpbnZvY2F0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSW52b2NhdGlvbiBJbnZvY2F0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbG9jYXRpb25zIG9mIHRoZSBhbmFseXNpcyB0b29sJ3MgcGVyLXJ1biBsb2cgZmlsZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiYW5hbHlzaXNUb29sTG9nRmlsZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxGaWxlTG9jYXRpb24+IEFuYWx5c2lzVG9vbExvZ0ZpbGVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJDb252ZXJzaW9uIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIENvbnZlcnNpb24oKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJDb252ZXJzaW9uIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idG9vbCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVG9vbCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Imludm9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEludm9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhbmFseXNpc1Rvb2xMb2dGaWxlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQW5hbHlzaXNUb29sTG9nRmlsZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIENvbnZlcnNpb24oVG9vbCB0b29sLCBJbnZvY2F0aW9uIGludm9jYXRpb24sIElFbnVtZXJhYmxlPEZpbGVMb2NhdGlvbj4gYW5hbHlzaXNUb29sTG9nRmlsZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQodG9vbCwgaW52b2NhdGlvbiwgYW5hbHlzaXNUb29sTG9nRmlsZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQ29udmVyc2lvbiIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgQ29udmVyc2lvbihDb252ZXJzaW9uIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLlRvb2wsIG90aGVyLkludm9jYXRpb24sIG90aGVyLkFuYWx5c2lzVG9vbExvZ0ZpbGVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQ29udmVyc2lvbiBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKENvbnZlcnNpb24pRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IENvbnZlcnNpb24odGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChUb29sIHRvb2wsIEludm9jYXRpb24gaW52b2NhdGlvbiwgSUVudW1lcmFibGU8RmlsZUxvY2F0aW9uPiBhbmFseXNpc1Rvb2xMb2dGaWxlcykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHRvb2wgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBUb29sID0gbmV3IFRvb2wodG9vbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChpbnZvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSW52b2NhdGlvbiA9IG5ldyBJbnZvY2F0aW9uKGludm9jYXRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoYW5hbHlzaXNUb29sTG9nRmlsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEZpbGVMb2NhdGlvbj4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBhbmFseXNpc1Rvb2xMb2dGaWxlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IEZpbGVMb2NhdGlvbih2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBBbmFseXNpc1Rvb2xMb2dGaWxlcyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1014",
+ "level": "error",
+ "message": {
+ "text": "Mark 'Microsoft.Json.Pointer.dll' with CLSCompliant(true) because it exposes externally visible types."
},
- "hashes": [
- {
- "value": "BF816D6C3479A653BB02CEF7B3C83FB0",
- "algorithm": "md5"
- },
- {
- "value": "301280E17FF223AF16B815FA529A193A813515E5",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "A45F14C92A1F81E47A421D601086D2A96D9C23CE330E94697D6CEAEE0FED9545",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 18,
+ "fullyQualifiedName": "microsoft.json.pointer.dll"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Edge.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBSZXByZXNlbnRzIGEgZGlyZWN0ZWQgZWRnZSBpbiBhIGdyYXBoLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRWRnZSA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEVkZ2U+IFZhbHVlQ29tcGFyZXIgPT4gRWRnZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoRWRnZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5FZGdlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBlZGdlIHdpdGhpbiBpdHMgZ3JhcGguDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaWQiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIGVkZ2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibGFiZWwiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIExhYmVsIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJZGVudGlmaWVzIHRoZSBzb3VyY2Ugbm9kZSAodGhlIG5vZGUgYXQgd2hpY2ggdGhlIGVkZ2Ugc3RhcnRzKS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzb3VyY2VOb2RlSWQiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgU291cmNlTm9kZUlkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJZGVudGlmaWVzIHRoZSB0YXJnZXQgbm9kZSAodGhlIG5vZGUgYXQgd2hpY2ggdGhlIGVkZ2UgZW5kcykuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGFyZ2V0Tm9kZUlkIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFRhcmdldE5vZGVJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlZGdlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRWRnZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBFZGdlKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRWRnZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImxhYmVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMYWJlbCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InNvdXJjZU5vZGVJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU291cmNlTm9kZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGFyZ2V0Tm9kZUlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUYXJnZXROb2RlSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBFZGdlKHN0cmluZyBpZCwgTWVzc2FnZSBsYWJlbCwgc3RyaW5nIHNvdXJjZU5vZGVJZCwgc3RyaW5nIHRhcmdldE5vZGVJZCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGlkLCBsYWJlbCwgc291cmNlTm9kZUlkLCB0YXJnZXROb2RlSWQsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRWRnZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgRWRnZShFZGdlIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLklkLCBvdGhlci5MYWJlbCwgb3RoZXIuU291cmNlTm9kZUlkLCBvdGhlci5UYXJnZXROb2RlSWQsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBFZGdlIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoRWRnZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgRWRnZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBpZCwgTWVzc2FnZSBsYWJlbCwgc3RyaW5nIHNvdXJjZU5vZGVJZCwgc3RyaW5nIHRhcmdldE5vZGVJZCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJZCA9IGlkOw0KICAgICAgICAgICAgaWYgKGxhYmVsICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTGFiZWwgPSBuZXcgTWVzc2FnZShsYWJlbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFNvdXJjZU5vZGVJZCA9IHNvdXJjZU5vZGVJZDsNCiAgICAgICAgICAgIFRhcmdldE5vZGVJZCA9IHRhcmdldE5vZGVJZDsNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1824",
+ "message": {
+ "text": "Because assembly 'Microsoft.Json.Pointer.dll' contains a ResX-based resource file, mark it with the NeutralResourcesLanguage attribute, specifying the language of the resources within the assembly. This could improve lookup performance the first time a resource is retrieved."
},
- "hashes": [
- {
- "value": "CECA16D55E1F40B2F816CC313A3D742C",
- "algorithm": "md5"
- },
- {
- "value": "66BEC02CDE283AD8A5C7623554540DDEFB716E64",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4CBCB46B59C457BA81CBD58E4F578FE5C8C56170A131E03B2030CAC0E9EB0CD5",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 18,
+ "fullyQualifiedName": "microsoft.json.pointer.dll"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/EdgeTraversal.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBSZXByZXNlbnRzIHRoZSB0cmF2ZXJzYWwgb2YgYSBzaW5nbGUgZWRnZSBpbiB0aGUgY291cnNlIG9mIGEgZ3JhcGggdHJhdmVyc2FsLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRWRnZVRyYXZlcnNhbCA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEVkZ2VUcmF2ZXJzYWw+IFZhbHVlQ29tcGFyZXIgPT4gRWRnZVRyYXZlcnNhbEVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoRWRnZVRyYXZlcnNhbCBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5FZGdlVHJhdmVyc2FsOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSWRlbnRpZmllcyB0aGUgZWRnZSBiZWluZyB0cmF2ZXJzZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZWRnZUlkIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEVkZ2VJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIgYXMgdGhlIGVkZ2UgaXMgdHJhdmVyc2VkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2UiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIE1lc3NhZ2UgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB2YWx1ZXMgb2YgcmVsZXZhbnQgZXhwcmVzc2lvbnMgYWZ0ZXIgdGhlIGVkZ2UgaGFzIGJlZW4gdHJhdmVyc2VkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZpbmFsU3RhdGUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gRmluYWxTdGF0ZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG51bWJlciBvZiBlZGdlIHRyYXZlcnNhbHMgbmVjZXNzYXJ5IHRvIHJldHVybiBmcm9tIGEgbmVzdGVkIGdyYXBoLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN0ZXBPdmVyRWRnZUNvdW50IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IFN0ZXBPdmVyRWRnZUNvdW50IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGVkZ2UgdHJhdmVyc2FsLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRWRnZVRyYXZlcnNhbCIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBFZGdlVHJhdmVyc2FsKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRWRnZVRyYXZlcnNhbCIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImVkZ2VJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRWRnZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibWVzc2FnZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWVzc2FnZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbmFsU3RhdGUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEZpbmFsU3RhdGUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGVwT3ZlckVkZ2VDb3VudCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RlcE92ZXJFZGdlQ291bnQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBFZGdlVHJhdmVyc2FsKHN0cmluZyBlZGdlSWQsIE1lc3NhZ2UgbWVzc2FnZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IGZpbmFsU3RhdGUsIGludCBzdGVwT3ZlckVkZ2VDb3VudCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGVkZ2VJZCwgbWVzc2FnZSwgZmluYWxTdGF0ZSwgc3RlcE92ZXJFZGdlQ291bnQsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRWRnZVRyYXZlcnNhbCIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgRWRnZVRyYXZlcnNhbChFZGdlVHJhdmVyc2FsIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLkVkZ2VJZCwgb3RoZXIuTWVzc2FnZSwgb3RoZXIuRmluYWxTdGF0ZSwgb3RoZXIuU3RlcE92ZXJFZGdlQ291bnQsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBFZGdlVHJhdmVyc2FsIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoRWRnZVRyYXZlcnNhbClEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgRWRnZVRyYXZlcnNhbCh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBlZGdlSWQsIE1lc3NhZ2UgbWVzc2FnZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IGZpbmFsU3RhdGUsIGludCBzdGVwT3ZlckVkZ2VDb3VudCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBFZGdlSWQgPSBlZGdlSWQ7DQogICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE1lc3NhZ2UgPSBuZXcgTWVzc2FnZShtZXNzYWdlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGZpbmFsU3RhdGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGaW5hbFN0YXRlID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KGZpbmFsU3RhdGUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBTdGVwT3ZlckVkZ2VDb3VudCA9IHN0ZXBPdmVyRWRnZUNvdW50Ow0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1026",
+ "level": "error",
+ "message": {
+ "text": "Replace method 'JsonPointer.JsonPointer(string, JsonPointerRepresentation)' with an overload that supplies all default arguments."
},
- "hashes": [
- {
- "value": "0C63FEC4B6E6A25D148809073B8D2EDC",
- "algorithm": "md5"
- },
- {
- "value": "774C945B1A5F28BAE6B179CD5786310671F88B90",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "45735DC204FC45FD8C138627877C6BA7806E0CCF76236B570FBB689D66957709",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 21,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.JsonPointer..ctor(System.String,Microsoft.Json.Pointer.JsonPointerRepresentation)"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/ExceptionData.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBEZXNjcmliZXMgYSBjb25kaXRpb24gcmVsZXZhbnQgdG8gdGhlIHRvb2wgaXRzZWxmLCBhcyBvcHBvc2VkIHRvIGJlaW5nIHJlbGV2YW50IHRvIGEgZmlsZSBiZWluZyBhbmFseXplZCBieSB0aGUgdG9vbC4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIEV4Y2VwdGlvbkRhdGENCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgRXhjZXB0aW9uRGF0YSBDcmVhdGUoRXhjZXB0aW9uIGV4Y2VwdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBFeGNlcHRpb25EYXRhDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgS2luZCA9IGV4Y2VwdGlvbi5HZXRUeXBlKCkuTmFtZSwNCiAgICAgICAgICAgICAgICBNZXNzYWdlID0gZXhjZXB0aW9uLk1lc3NhZ2UsDQogICAgICAgICAgICAgICAgSW5uZXJFeGNlcHRpb25zID0gR2V0SW5uZXJFeGNlcHRpb25zKGV4Y2VwdGlvbiksDQogICAgICAgICAgICAgICAgU3RhY2sgPSBTdGFjay5DcmVhdGUoZXhjZXB0aW9uLlN0YWNrVHJhY2UpDQogICAgICAgICAgICB9Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgSUxpc3Q8RXhjZXB0aW9uRGF0YT4gR2V0SW5uZXJFeGNlcHRpb25zKEV4Y2VwdGlvbiBleGNlcHRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBpbm5lckV4Y2VwdGlvbnMgPSBuZXcgTGlzdDxFeGNlcHRpb25EYXRhPigpOw0KDQogICAgICAgICAgICBJUmVhZE9ubHlDb2xsZWN0aW9uPEV4Y2VwdGlvbj4gYWdncmVnYXRlSW5uZXJFeGNlcHRpb25zID0gKGV4Y2VwdGlvbiBhcyBBZ2dyZWdhdGVFeGNlcHRpb24pPy5Jbm5lckV4Y2VwdGlvbnM7DQogICAgICAgICAgICBpZiAoYWdncmVnYXRlSW5uZXJFeGNlcHRpb25zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoRXhjZXB0aW9uIGlubmVyRXhjZXB0aW9uIGluIGFnZ3JlZ2F0ZUlubmVyRXhjZXB0aW9ucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlubmVyRXhjZXB0aW9ucy5BZGQoQ3JlYXRlKGlubmVyRXhjZXB0aW9uKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAoZXhjZXB0aW9uLklubmVyRXhjZXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW5uZXJFeGNlcHRpb25zLkFkZChDcmVhdGUoZXhjZXB0aW9uLklubmVyRXhjZXB0aW9uKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBpbm5lckV4Y2VwdGlvbnM7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1812",
+ "message": {
+ "text": "'Resources' is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static methods, consider adding a private constructor to prevent the compiler from generating a default constructor."
},
- "hashes": [
- {
- "value": "98F221F7BD384AB785CD8C5D15FA8699",
- "algorithm": "md5"
- },
- {
- "value": "3E6C49F782BD8228A99F157C6C895AB6D6C9D041",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "542BF9ABFE0F688592CA25CD96556CBA86B09088A497E6BE7914B03FA6EC2D1D",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 22,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.Resources"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/ExceptionData.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRXhjZXB0aW9uRGF0YSA6IElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8RXhjZXB0aW9uRGF0YT4gVmFsdWVDb21wYXJlciA9PiBFeGNlcHRpb25EYXRhRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhFeGNlcHRpb25EYXRhIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLkV4Y2VwdGlvbkRhdGE7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGtpbmQgb2YgZXhjZXB0aW9uLCBmb3IgZXhhbXBsZSwgdGhlIGZ1bGx5IHF1YWxpZmllZCB0eXBlIG5hbWUgb2YgYW4gb2JqZWN0IHRoYXQgd2FzIHRocm93biwgb3IgdGhlIHN5bWJvbGljIG5hbWUgb2YgYSBzaWduYWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAia2luZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBLaW5kIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHBsYWluIHRleHQgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyB0aGUgZXhjZXB0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2UiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHNlcXVlbmNlIG9mIGZ1bmN0aW9uIGNhbGxzIGxlYWRpbmcgdG8gdGhlIGV4Y2VwdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGFjayIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFN0YWNrIFN0YWNrIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBleGNlcHRpb24gb2JqZWN0cyBlYWNoIG9mIHdoaWNoIGlzIGNvbnNpZGVyZWQgYSBjYXVzZSBvZiB0aGlzIGV4Y2VwdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJpbm5lckV4Y2VwdGlvbnMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxFeGNlcHRpb25EYXRhPiBJbm5lckV4Y2VwdGlvbnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkV4Y2VwdGlvbkRhdGEiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgRXhjZXB0aW9uRGF0YSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkV4Y2VwdGlvbkRhdGEiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJraW5kIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBLaW5kIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibWVzc2FnZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWVzc2FnZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YWNrIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTdGFjayIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlubmVyRXhjZXB0aW9ucyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSW5uZXJFeGNlcHRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBFeGNlcHRpb25EYXRhKHN0cmluZyBraW5kLCBzdHJpbmcgbWVzc2FnZSwgU3RhY2sgc3RhY2ssIElFbnVtZXJhYmxlPEV4Y2VwdGlvbkRhdGE+IGlubmVyRXhjZXB0aW9ucykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChraW5kLCBtZXNzYWdlLCBzdGFjaywgaW5uZXJFeGNlcHRpb25zKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkV4Y2VwdGlvbkRhdGEiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEV4Y2VwdGlvbkRhdGEoRXhjZXB0aW9uRGF0YSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5LaW5kLCBvdGhlci5NZXNzYWdlLCBvdGhlci5TdGFjaywgb3RoZXIuSW5uZXJFeGNlcHRpb25zKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgRXhjZXB0aW9uRGF0YSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEV4Y2VwdGlvbkRhdGEpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IEV4Y2VwdGlvbkRhdGEodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChzdHJpbmcga2luZCwgc3RyaW5nIG1lc3NhZ2UsIFN0YWNrIHN0YWNrLCBJRW51bWVyYWJsZTxFeGNlcHRpb25EYXRhPiBpbm5lckV4Y2VwdGlvbnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEtpbmQgPSBraW5kOw0KICAgICAgICAgICAgTWVzc2FnZSA9IG1lc3NhZ2U7DQogICAgICAgICAgICBpZiAoc3RhY2sgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBTdGFjayA9IG5ldyBTdGFjayhzdGFjayk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChpbm5lckV4Y2VwdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEV4Y2VwdGlvbkRhdGE+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gaW5uZXJFeGNlcHRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgRXhjZXB0aW9uRGF0YSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBJbm5lckV4Y2VwdGlvbnMgPSBkZXN0aW5hdGlvbl8wOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'StringExtensions.AtIndex(this string, int)', correct the spelling of 'j' in parameter name 'jPointer' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "77C0502EDEF463B79B01A593CEE37690",
- "algorithm": "md5"
- },
- {
- "value": "CE1389BCF5780C040DDDFD0E7D81422485413FA0",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "E5E4353400ECC577EF6B24EC5ADC2AFE78D6706EA5B178A0EEC536EB6A35AB0B",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 24,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.StringExtensions.AtIndex(System.String,System.Int32)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/ExtensionMethods.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLnVzaW5nIFN5c3RlbTsNCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgU3lzdGVtLlhtbDsNCg0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Xcml0ZXJzOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRXh0ZW5zaW9uTWV0aG9kcw0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBNZXNzYWdlIFRvTWVzc2FnZSh0aGlzIHN0cmluZyB0ZXh0KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IE1lc3NhZ2UgeyBUZXh0ID0gdGV4dCB9Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBPcHRpb25hbGx5RW1pdHRlZERhdGEgVG9GbGFncyh0aGlzIElFbnVtZXJhYmxlPE9wdGlvbmFsbHlFbWl0dGVkRGF0YT4gb3B0aW9uYWxseUVtaXR0ZWREYXRhKQ0KICAgICAgICB7DQogICAgICAgICAgICBPcHRpb25hbGx5RW1pdHRlZERhdGEgY29udmVydGVkVG9GbGFncyA9IE9wdGlvbmFsbHlFbWl0dGVkRGF0YS5Ob25lOw0KICAgICAgICAgICAgaWYgKG9wdGlvbmFsbHlFbWl0dGVkRGF0YSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEFycmF5LkZvckVhY2gob3B0aW9uYWxseUVtaXR0ZWREYXRhLlRvQXJyYXkoKSwgZGF0YSA9PiBjb252ZXJ0ZWRUb0ZsYWdzIHw9IGRhdGEpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gY29udmVydGVkVG9GbGFnczsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgYm9vbCBJbmNsdWRlcyh0aGlzIE9wdGlvbmFsbHlFbWl0dGVkRGF0YSBvcHRpb25hbGx5RW1pdHRlZERhdGEsIE9wdGlvbmFsbHlFbWl0dGVkRGF0YSBvdGhlck9wdGlvbmFsbHlFbWl0dGVkRGF0YSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChvcHRpb25hbGx5RW1pdHRlZERhdGEgJiBvdGhlck9wdGlvbmFsbHlFbWl0dGVkRGF0YSkgPT0gb3RoZXJPcHRpb25hbGx5RW1pdHRlZERhdGE7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIGJvb2wgSW5jbHVkZXModGhpcyBMb2dnaW5nT3B0aW9ucyBsb2dnaW5nT3B0aW9ucywgTG9nZ2luZ09wdGlvbnMgb3RoZXJMb2dnaW5nT3B0aW9ucykNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChsb2dnaW5nT3B0aW9ucyAmIG90aGVyTG9nZ2luZ09wdGlvbnMpID09IG90aGVyTG9nZ2luZ09wdGlvbnM7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHZXRGaWxlTmFtZSh0aGlzIFVyaSB1cmkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghdXJpLklzQWJzb2x1dGVVcmkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIFBhdGguR2V0RmlsZU5hbWUodXJpLkxvY2FsUGF0aCk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBGb3JtYXRGb3JWaXN1YWxTdHVkaW8odGhpcyBSZWdpb24gcmVnaW9uKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAocmVnaW9uID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5FbXB0eTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHJlZ2lvbi5TdGFydExpbmUgPCAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBWUyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZvcm1hdHRpbmcgb3B0aW9uczoNCiAgICAgICAgICAgIC8vICAgIChzdGFydExpbmUpDQogICAgICAgICAgICAvLyAgICAoc3RhcnRMaW5lLWVuZExpbmUpDQogICAgICAgICAgICAvLyAgICAoc3RhcnRMaW5lLHN0YXJ0Q29sdW1uKQ0KICAgICAgICAgICAgLy8gICAgKHN0YXJ0TGluZSxzdGFydENvbHVtbi1lbmRDb2x1bW4pDQogICAgICAgICAgICAvLyAgICAoc3RhcnRMaW5lLHN0YXJ0Q29sdW1uLGVuZExpbmUsZW5kQ29sdW1uKQ0KDQogICAgICAgICAgICBib29sIG11bHRpbGluZSA9IHJlZ2lvbi5FbmRMaW5lID4gcmVnaW9uLlN0YXJ0TGluZTsNCiAgICAgICAgICAgIGJvb2wgbXVsdGljb2x1bW4gPSAobXVsdGlsaW5lIHx8IHJlZ2lvbi5FbmRDb2x1bW4gPiByZWdpb24uU3RhcnRDb2x1bW4pOw0KDQogICAgICAgICAgICBpZiAobXVsdGlsaW5lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChtdWx0aWNvbHVtbiAmJiAocmVnaW9uLlN0YXJ0Q29sdW1uID4gMSB8fCByZWdpb24uRW5kQ29sdW1uID4gMSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyAgKHN0YXJ0TGluZSxzdGFydENvbHVtbixlbmRMaW5lLGVuZENvbHVtbikNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgICAgICAgICAgICAgICAiKCIgKw0KICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLlN0YXJ0TGluZS5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArICIsIiArDQogICAgICAgICAgICAgICAgICAgICAgICAocmVnaW9uLlN0YXJ0Q29sdW1uID4gMCA/IHJlZ2lvbi5TdGFydENvbHVtbi5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSA6ICIxIikgKyAiLCIgKw0KICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLkVuZExpbmUuVG9TdHJpbmcoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSkgKyAiLCIgKw0KICAgICAgICAgICAgICAgICAgICAgICAgKHJlZ2lvbi5FbmRDb2x1bW4gPiAwID8gcmVnaW9uLkVuZENvbHVtbi5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSA6ICIxIikgKw0KICAgICAgICAgICAgICAgICAgICAgICAgIikiOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvLyAgKHN0YXJ0TGluZS1lbmRMaW5lKQ0KICAgICAgICAgICAgICAgIHJldHVybg0KICAgICAgICAgICAgICAgICAgICAiKCIgKw0KICAgICAgICAgICAgICAgICAgICByZWdpb24uU3RhcnRMaW5lLlRvU3RyaW5nKEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUpICsgIi0iICsgcmVnaW9uLkVuZExpbmUuVG9TdHJpbmcoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSkgKw0KICAgICAgICAgICAgICAgICAgICAiKSI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChtdWx0aWNvbHVtbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyAoc3RhcnRMaW5lLHN0YXJ0Q29sdW1uLWVuZENvbHVtbikNCiAgICAgICAgICAgICAgICByZXR1cm4NCiAgICAgICAgICAgICAgICAgICAgIigiICsNCiAgICAgICAgICAgICAgICAgICAgcmVnaW9uLlN0YXJ0TGluZS5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArICIsIiArDQogICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5TdGFydENvbHVtbi5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArICItIiArDQogICAgICAgICAgICAgICAgICAgIHJlZ2lvbi5FbmRDb2x1bW4uVG9TdHJpbmcoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSkgKw0KICAgICAgICAgICAgICAgICAgICAiKSI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChyZWdpb24uU3RhcnRDb2x1bW4gPiAxKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIChzdGFydExpbmUsc3RhcnRDb2x1bW4pDQogICAgICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgICAgICAgICAgICAiKCIgKw0KICAgICAgICAgICAgICAgICAgICAgcmVnaW9uLlN0YXJ0TGluZS5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArICIsIiArIHJlZ2lvbi5TdGFydENvbHVtbi5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArDQogICAgICAgICAgICAgICAgICAgICAiKSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyAoc3RhcnRMaW5lKQ0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgICAgICAgICIoIiArDQogICAgICAgICAgICAgICAgIHJlZ2lvbi5TdGFydExpbmUuVG9TdHJpbmcoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSkgKw0KICAgICAgICAgICAgICAgICAiKSI7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBGb3JtYXRGb3JWaXN1YWxTdHVkaW8odGhpcyBSZXN1bHQgcmVzdWx0LCBJUnVsZSBydWxlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YocmVzdWx0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChydWxlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YocnVsZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgbWVzc2FnZUxpbmVzID0gbmV3IExpc3Q8c3RyaW5nPigpOw0KDQogICAgICAgICAgICBmb3JlYWNoICh2YXIgbG9jYXRpb24gaW4gcmVzdWx0LkxvY2F0aW9ucykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBVcmkgdXJpID0gbG9jYXRpb24uUGh5c2ljYWxMb2NhdGlvbi5GaWxlTG9jYXRpb24uVXJpOw0KICAgICAgICAgICAgICAgIHN0cmluZyBwYXRoID0gdXJpLklzQWJzb2x1dGVVcmkgJiYgdXJpLklzRmlsZSA/IHVyaS5Mb2NhbFBhdGggOiB1cmkuVG9TdHJpbmcoKTsNCiAgICAgICAgICAgICAgICBtZXNzYWdlTGluZXMuQWRkKA0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcuRm9ybWF0KA0KICAgICAgICAgICAgICAgICAgICAgICAgQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSwgInswfXsxfTogezJ9IHszfTogezR9IiwNCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsDQogICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uLlJlZ2lvbi5Gb3JtYXRGb3JWaXN1YWxTdHVkaW8oKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5MZXZlbC5Gb3JtYXRGb3JWaXN1YWxTdHVkaW8oKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5SdWxlSWQsDQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuR2V0TWVzc2FnZVRleHQocnVsZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gc3RyaW5nLkpvaW4oRW52aXJvbm1lbnQuTmV3TGluZSwgbWVzc2FnZUxpbmVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIEZvcm1hdEZvclZpc3VhbFN0dWRpbyh0aGlzIFJlc3VsdExldmVsIGxldmVsKQ0KICAgICAgICB7DQogICAgICAgICAgICBzd2l0Y2ggKGxldmVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgUmVzdWx0TGV2ZWwuRXJyb3I6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiAiZXJyb3IiOw0KDQogICAgICAgICAgICAgICAgY2FzZSBSZXN1bHRMZXZlbC5XYXJuaW5nOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gIndhcm5pbmciOw0KDQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbmZvIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIEdldE1lc3NhZ2VUZXh0KHRoaXMgUmVzdWx0IHJlc3VsdCwgSVJ1bGUgcnVsZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIEdldE1lc3NhZ2VUZXh0KHJlc3VsdCwgcnVsZSwgY29uY2lzZTogZmFsc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgR2V0TWVzc2FnZVRleHQodGhpcyBSZXN1bHQgcmVzdWx0LCBJUnVsZSBydWxlLCBib29sIGNvbmNpc2UpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihyZXN1bHQpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RyaW5nIHRleHQgPSByZXN1bHQuTWVzc2FnZT8uVGV4dDsNCiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eSh0ZXh0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0ZXh0ID0gc3RyaW5nLkVtcHR5OyAgICAvLyBFbnN1cmUgdGhhdCBpdCdzIG5vdCBudWxsLg0KDQogICAgICAgICAgICAgICAgc3RyaW5nIG1lc3NhZ2VJZCA9IHJlc3VsdC5NZXNzYWdlPy5NZXNzYWdlSWQ7DQoNCiAgICAgICAgICAgICAgICBpZiAocnVsZSAhPSBudWxsICYmICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKG1lc3NhZ2VJZCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbWVzc2FnZVN0cmluZzsNCg0KICAgICAgICAgICAgICAgICAgICBzdHJpbmdbXSBhcmd1bWVudHMgPSBudWxsOw0KDQogICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuTWVzc2FnZT8uQXJndW1lbnRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9IG5ldyBzdHJpbmdbcmVzdWx0Lk1lc3NhZ2UuQXJndW1lbnRzLkNvdW50XTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5NZXNzYWdlLkFyZ3VtZW50cy5Db3B5VG8oYXJndW1lbnRzLCAwKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyA9IG5ldyBzdHJpbmdbMF07DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5NZXNzYWdlU3RyaW5ncz8uQ29udGFpbnNLZXkobWVzc2FnZUlkKSA9PSB0cnVlKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlU3RyaW5nID0gcnVsZS5NZXNzYWdlU3RyaW5nc1ttZXNzYWdlSWRdOw0KDQojaWYgREVCVUcNCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudHNDb3VudCA9IGFyZ3VtZW50cy5MZW5ndGg7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50c0NvdW50OyBpKyspDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhc3NlcnQgZmlyZXMsIHRoZXJlIGFyZSB0b28gbWFueSBhcmd1bWVudHMgZm9yIHRoZSBzcGVjaWZpZXINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB0aGVyZSBpcyBhbiBhcmd1bWVudCBpcyBza2lwcGVkIG9yIG5vdCBjb25zdW1lZCBpbiB0aGUgc3BlY2lmaWVyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVidWcuQXNzZXJ0KG1lc3NhZ2VTdHJpbmcuQ29udGFpbnMoInsiICsgaS5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArICJ9IikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KI2VuZGlmDQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBzdHJpbmcuRm9ybWF0KEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUsIG1lc3NhZ2VTdHJpbmcsIGFyZ3VtZW50cyk7DQoNCiNpZiBERUJVRw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhc3NlcnQgZmlyZXMsIGFuIGluc3VmZmljaWVudCAjIG9mIGFyZ3VtZW50cyBtaWdodA0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBiZWVuIHByb3ZpZGVkIHRvIFN0cmluZy5Gb3JtYXQuDQogICAgICAgICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoIXRleHQuQ29udGFpbnMoInsiKSk7DQojZW5kaWYNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNvbmNpc2UpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGV4dCA9IEdldEZpcnN0U2VudGVuY2UodGV4dCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0ZXh0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgR2V0Rmlyc3RTZW50ZW5jZShzdHJpbmcgdGV4dCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZih0ZXh0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGludCBsZW5ndGggPSAwOw0KICAgICAgICAgICAgYm9vbCB3aXRoaW5RdW90ZXMgPSBmYWxzZTsNCiAgICAgICAgICAgIGJvb2wgd2l0aGluUGFyZW50aGVzZXMgPSBmYWxzZTsNCiAgICAgICAgICAgIGJvb2wgbGFzdEVuY291bnRlcmVkV2FzRG90ID0gZmFsc2U7DQogICAgICAgICAgICBib29sIHdpdGhpbkVsbGlwc2lzID0gZmFsc2U7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKGNoYXIgY2ggaW4gdGV4dCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBsZW5ndGgrKzsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnXCcnOg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSdsbCBpZ25vcmUgZXZlcnl0aGluZyB3aXRoaW4gcGFyZW50aGl6ZWQgdGV4dA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW5QYXJlbnRoZXNlcykNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW5RdW90ZXMgPSAhd2l0aGluUXVvdGVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEVuY291bnRlcmVkV2FzRG90ID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJygnOg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpdGhpblF1b3RlcykNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW5QYXJlbnRoZXNlcyA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0RW5jb3VudGVyZWRXYXNEb3QgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnKSc6DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2l0aGluUXVvdGVzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpblBhcmVudGhlc2VzID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0RW5jb3VudGVyZWRXYXNEb3QgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnLic6DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoaW5RdW90ZXMgfHwgd2l0aGluUGFyZW50aGVzZXMgfHwgd2l0aGluRWxsaXBzaXMpIHsgY29udGludWU7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPCB0ZXh0Lkxlbmd0aCAmJiB0ZXh0W2xlbmd0aF0gPT0gJy4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbkVsbGlwc2lzID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0RW5jb3VudGVyZWRXYXNEb3QgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEVuY291bnRlcmVkV2FzRG90ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyIGEgbGluZS1icmVhaywgd2UgcmV0dXJuIGFsbCBsZWFkaW5nIHRleHQuDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1xuJzoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnXHInOg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAod2l0aGluUXVvdGVzIHx8IHdpdGhpblBhcmVudGhlc2VzKSB7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5TdWJzdHJpbmcoMCwgbGVuZ3RoKS5UcmltRW5kKCdccicsICdcbicsICcgJywgJy4nKSArICIuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhIHNwYWNlIGZvbGxvd2luZyBhIHBlcmlvZCwgcmV0dXJuIA0KICAgICAgICAgICAgICAgICAgICAvLyBhbGwgdGV4dCB0ZXJtaW5hdGluZyBpbiB0aGUgcGVyaW9kIChpbmNsdXNpdmUpLg0KICAgICAgICAgICAgICAgICAgICBjYXNlICcgJzoNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0RW5jb3VudGVyZWRXYXNEb3QpIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpblF1b3RlcyB8fCB3aXRoaW5QYXJlbnRoZXNlcykgeyBjb250aW51ZTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQuU3Vic3RyaW5nKDAsIGxlbmd0aCkuVHJpbUVuZCgnXHInLCAnXG4nLCAnICcsICcuJykgKyAiLiI7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0RW5jb3VudGVyZWRXYXNEb3QgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRleHQuVHJpbUVuZCgnLicpICsgIi4iOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5PlJldHJpZXZlcyBhIHByb3BlcnR5IHZhbHVlIGlmIGl0IGV4aXN0cywgb3IgbnVsbC48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+QSBwcm9wZXJ0aWVzIG9iamVjdCBmcm9tIHdoaWNoIHRoZSBwcm9wZXJ0eSBzaGFsbCBiZQ0KICAgICAgICAvLy8gcmV0cmlldmVkLCBvciBudWxsLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ia2V5Ij5UaGUgcHJvcGVydHkgbmFtZSAvIGtleS48L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+DQogICAgICAgIC8vLyBJZiA8cGFyYW1yZWYgbmFtZT0icHJvcGVydGllcyIvPiBpcyBub3QgbnVsbCBhbmQgYW4gZW50cnkgZm9yIHRoZSBzdXBwbGllZCBrZXkgZXhpc3RzLCB0aGUNCiAgICAgICAgLy8vIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGtleTsgb3RoZXJ3aXNlLCBudWxsLg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgc3RyaW5nIFByb3BlcnR5VmFsdWUodGhpcyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBwcm9wZXJ0aWVzLCBzdHJpbmcga2V5KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsICYmIHByb3BlcnRpZXMuVHJ5R2V0VmFsdWUoa2V5LCBvdXQgc3RyaW5nIHByb3BWYWx1ZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHByb3BWYWx1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+Q2hlY2tzIGlmIGEgY2hhcmFjdGVyIGlzIGEgbmV3bGluZS48L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGVzdGVkQ2hhcmFjdGVyIj5UaGUgY2hhcmFjdGVyIHRvIGNoZWNrLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz50cnVlIGlmIG5ld2xpbmUsIGZhbHNlIGlmIG5vdC48L3JldHVybnM+DQogICAgICAgIGludGVybmFsIHN0YXRpYyBib29sIElzTmV3bGluZSh0aGlzIGNoYXIgdGVzdGVkQ2hhcmFjdGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdGVzdGVkQ2hhcmFjdGVyID09ICdccicNCiAgICAgICAgICAgICAgICB8fCB0ZXN0ZWRDaGFyYWN0ZXIgPT0gJ1xuJw0KICAgICAgICAgICAgICAgIHx8IHRlc3RlZENoYXJhY3RlciA9PSAnXHUyMDI4JyAgLy8gVW5pY29kZSBsaW5lIHNlcGFyYXRvcg0KICAgICAgICAgICAgICAgIHx8IHRlc3RlZENoYXJhY3RlciA9PSAnXHUyMDI5JzsgLy8gVW5pY29kZSBwYXJhZ3JhcGggc2VwYXJhdG9yDQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSByYW5nZSBbPHBhcmFtcmVmIG5hbWU9InN0YXJ0SW5kZXgiLz4sDQogICAgICAgIC8vLyA8cGFyYW1yZWYgbmFtZT0ic3RhcnRJbmRleCIvPiArIDxwYXJhbXJlZiBuYW1lPSJ0YXJnZXQiLz48Yz4uTGVuZ3RoPC9jPikgaXMgZXF1YWwgdG8gdGhlDQogICAgICAgIC8vLyBzdXBwbGllZCBzdHJpbmcuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYXJyYXkiPlRoZSBhcnJheSB0byBjaGVjay48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXJ0SW5kZXgiPlRoZSBzdGFydCBpbmRleCBpbiB0aGUgYXJyYXkgdG8gY2hlY2suPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0YXJnZXQiPlRhcmdldCBzdHJpbmcgdG8gbG9vayBmb3IgaW4gdGhlIGFycmF5LjwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz4NCiAgICAgICAgLy8vIHRydWUgaWYgdGhlIHJhbmdlIFs8cGFyYW1yZWYgbmFtZT0ic3RhcnRJbmRleCIvPiwgPHBhcmFtcmVmIG5hbWU9InN0YXJ0SW5kZXgiLz4gKw0KICAgICAgICAvLy8gPHBhcmFtcmVmIG5hbWU9InRhcmdldCIvPjxjPi5MZW5ndGg8L2M+KSBpcyBlcXVhbCB0bw0KICAgICAgICAvLy8gPHBhcmFtcmVmIG5hbWU9InRhcmdldCIvPi4gSWYgdGhlIHJhbmdlIGlzIHVuZGVmaW5lZCBpbiB0aGUgYm91bmRzIG9mIHRoZSBhcnJheSwgZmFsc2UuDQogICAgICAgIC8vLyA8L3JldHVybnM+DQogICAgICAgIGludGVybmFsIHN0YXRpYyBib29sIE1hdGNoZXModGhpcyBjaGFyW10gYXJyYXksIGludCBzdGFydEluZGV4LCBzdHJpbmcgdGFyZ2V0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoc3RhcnRJbmRleCA8IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0Lkxlbmd0aDsNCiAgICAgICAgICAgIGlmICh0YXJnZXRMZW5ndGggKyBzdGFydEluZGV4ID49IGFycmF5Lkxlbmd0aCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZvciAoaW50IGlkeCA9IDA7IGlkeCA8IHRhcmdldExlbmd0aDsgKytpZHgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGFycmF5W2lkeCArIHN0YXJ0SW5kZXhdICE9IHRhcmdldFtpZHhdKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDb25zdW1lcyBjb250ZW50IGZyb20gYW4gWE1MIHJlYWRlciB1bnRpbCB0aGUgZW5kIGVsZW1lbnQgb2YgdGhlIGVsZW1lbnQgYXQgZW5kRWxlbWVudERlcHRoDQogICAgICAgIC8vLyA8cGFyYW1yZWYgbmFtZT0iZW5kRWxlbWVudERlcHRoIi8+LCBpbmNsdWRpbmcgdGhlIGVuZCBlbGVtZW50Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InhtbFJlYWRlciI+VGhlIDxzZWUgY3JlZj0iWG1sUmVhZGVyIi8+IHdob3NlIGNvbnRlbnRzIHNoYWxsIGJlIGNvbnN1bWVkLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZW5kRWxlbWVudERlcHRoIj5UaGUgZW5kRWxlbWVudERlcHRoIG9mIG5vZGUgdG8gY29uc3VtZS48L3BhcmFtPg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgdm9pZCBDb25zdW1lRWxlbWVudE9mRGVwdGgodGhpcyBYbWxSZWFkZXIgeG1sUmVhZGVyLCBpbnQgZW5kRWxlbWVudERlcHRoKQ0KICAgICAgICB7DQogICAgICAgICAgICBpbnQgZW50ZXJpbmdSZWFkZXJEZXB0aCA9IHhtbFJlYWRlci5EZXB0aDsNCg0KICAgICAgICAgICAgaWYgKGVudGVyaW5nUmVhZGVyRGVwdGggPCBlbmRFbGVtZW50RGVwdGgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZW50ZXJpbmdSZWFkZXJEZXB0aCA9PSBlbmRFbGVtZW50RGVwdGgpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gTW92ZSB0byB0aGUgZm9sbG93aW5nIGVsZW1lbnQNCiAgICAgICAgICAgICAgICB4bWxSZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB3aGlsZSAoeG1sUmVhZGVyLkRlcHRoID4gZW5kRWxlbWVudERlcHRoICYmIHhtbFJlYWRlci5SZWFkKCkpIHsgfQ0KDQogICAgICAgICAgICBpZiAoeG1sUmVhZGVyLk5vZGVUeXBlID09IFhtbE5vZGVUeXBlLkVuZEVsZW1lbnQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgLy8gQ29uc3VtZSB0aGUgZW5kIGVsZW1lbnQNCiAgICAgICAgICAgICAgICB4bWxSZWFkZXIuUmVhZCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1305",
+ "level": "error",
+ "message": {
+ "text": "Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'StringExtensions.AtIndex(this string, int)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.",
+ "id": "IFormatProviderAlternateString"
},
- "hashes": [
- {
- "value": "0D511DE9067B7F00E1F0C84E1A74CD16",
- "algorithm": "md5"
- },
- {
- "value": "EC3A663747EADCE8ACFB4A9E5CD21B33B0711607",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "C9B0D5ACEFA10BEF6EA7FC19C8F24C1305A0E525D2FDF0BD4E043BE30388DC4F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 24,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.StringExtensions.AtIndex(System.String,System.Int32)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "System.String.Format(System.String,System.Object,System.Object)#IFormatProviderAlternateString"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/FileChange.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIGNoYW5nZSB0byBhIHNpbmdsZSBmaWxlLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRmlsZUNoYW5nZSA6IElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8RmlsZUNoYW5nZT4gVmFsdWVDb21wYXJlciA9PiBGaWxlQ2hhbmdlRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGaWxlQ2hhbmdlIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLkZpbGVDaGFuZ2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIGZpbGUgdG8gY2hhbmdlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZpbGVMb2NhdGlvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIEZpbGVMb2NhdGlvbiBGaWxlTG9jYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGFycmF5IG9mIHJlcGxhY2VtZW50IG9iamVjdHMsIGVhY2ggb2Ygd2hpY2ggcmVwcmVzZW50cyB0aGUgcmVwbGFjZW1lbnQgb2YgYSBzaW5nbGUgcmFuZ2Ugb2YgYnl0ZXMgaW4gYSBzaW5nbGUgZmlsZSBzcGVjaWZpZWQgYnkgJ2ZpbGVMb2NhdGlvbicuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicmVwbGFjZW1lbnRzIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8UmVwbGFjZW1lbnQ+IFJlcGxhY2VtZW50cyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRmlsZUNoYW5nZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRmlsZUNoYW5nZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVMb2NhdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmlsZUxvY2F0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVwbGFjZW1lbnRzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSZXBsYWNlbWVudHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIEZpbGVDaGFuZ2UoRmlsZUxvY2F0aW9uIGZpbGVMb2NhdGlvbiwgSUVudW1lcmFibGU8UmVwbGFjZW1lbnQ+IHJlcGxhY2VtZW50cykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChmaWxlTG9jYXRpb24sIHJlcGxhY2VtZW50cyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaWxlQ2hhbmdlIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlKEZpbGVDaGFuZ2Ugb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuRmlsZUxvY2F0aW9uLCBvdGhlci5SZXBsYWNlbWVudHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoRmlsZUNoYW5nZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUNoYW5nZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KEZpbGVMb2NhdGlvbiBmaWxlTG9jYXRpb24sIElFbnVtZXJhYmxlPFJlcGxhY2VtZW50PiByZXBsYWNlbWVudHMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChmaWxlTG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGaWxlTG9jYXRpb24gPSBuZXcgRmlsZUxvY2F0aW9uKGZpbGVMb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PFJlcGxhY2VtZW50PigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIHJlcGxhY2VtZW50cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IFJlcGxhY2VtZW50KHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFJlcGxhY2VtZW50cyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'StringExtensions.AtProperty(this string, string)', correct the spelling of 'j' in parameter name 'jPointer' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "CED88867ABF4FCED1CE24173AC8773D9",
- "algorithm": "md5"
- },
- {
- "value": "CEC6B4051B9950C0793AF43BA8B7F72BE702F840",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "E83777B4F44FF6D8CFD99FC711E07D425364721F8B763F02656612E1F2CFF2C7",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 25,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.StringExtensions.AtProperty(System.String,System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/FileData.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIHNpbmdsZSBmaWxlLiBJbiBzb21lIGNhc2VzLCB0aGlzIGZpbGUgbWlnaHQgYmUgbmVzdGVkIHdpdGhpbiBhbm90aGVyIGZpbGUuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBGaWxlRGF0YSA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEZpbGVEYXRhPiBWYWx1ZUNvbXBhcmVyID0+IEZpbGVEYXRhRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGaWxlRGF0YSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5GaWxlRGF0YTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmaWxlTG9jYXRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24gRmlsZUxvY2F0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJZGVudGlmaWVzIHRoZSBrZXkgb2YgdGhlIGltbWVkaWF0ZSBwYXJlbnQgb2YgdGhlIGZpbGUsIGlmIHRoaXMgZmlsZSBpcyBuZXN0ZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicGFyZW50S2V5IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFBhcmVudEtleSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG9mZnNldCBpbiBieXRlcyBvZiB0aGUgZmlsZSB3aXRoaW4gaXRzIGNvbnRhaW5pbmcgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJvZmZzZXQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgT2Zmc2V0IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbGVuZ3RoIG9mIHRoZSBmaWxlIGluIGJ5dGVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxlbmd0aCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBMZW5ndGggeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSByb2xlIG9yIHJvbGVzIHBsYXllZCBieSB0aGUgZmlsZSBpbiB0aGUgYW5hbHlzaXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicm9sZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBGaWxlUm9sZXMgUm9sZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBNSU1FIHR5cGUgKFJGQyAyMDQ1KSBvZiB0aGUgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtaW1lVHlwZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNaW1lVHlwZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLCBleHByZXNzZWQgYXMgYSBNSU1FIEJhc2U2NC1lbmNvZGVkIGJ5dGUgc2VxdWVuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiY29udGVudHMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBGaWxlQ29udGVudCBDb250ZW50cyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gU3BlY2lmaWVzIHRoZSBlbmNvZGluZyBmb3IgYSBmaWxlIG9iamVjdCB0aGF0IHJlZmVycyB0byBhIHRleHQgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJlbmNvZGluZyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBFbmNvZGluZyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgaGFzaCBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIHNwZWNpZmllcyBhIGhhc2hlZCB2YWx1ZSBmb3IgdGhlIGZpbGUsIGFsb25nIHdpdGggdGhlIG5hbWUgb2YgdGhlIGhhc2ggZnVuY3Rpb24gdXNlZCB0byBjb21wdXRlIHRoZSBoYXNoLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImhhc2hlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PEhhc2g+IEhhc2hlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGRhdGUgYW5kIHRpbWUgYXQgd2hpY2ggdGhlIGZpbGUgd2FzIG1vc3QgcmVjZW50bHkgbW9kaWZpZWQuIFNlZSAiRGF0ZS90aW1lIHByb3BlcnRpZXMiIGluIHRoZSBTQVJJRiBzcGVjIGZvciB0aGUgcmVxdWlyZWQgZm9ybWF0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxhc3RNb2RpZmllZFRpbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBEYXRlVGltZSBMYXN0TW9kaWZpZWRUaW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaWxlRGF0YSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlRGF0YSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpbGVEYXRhIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZmlsZUxvY2F0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGaWxlTG9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwYXJlbnRLZXkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFBhcmVudEtleSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9mZnNldCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogT2Zmc2V0IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibGVuZ3RoIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMZW5ndGgiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyb2xlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUm9sZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtaW1lVHlwZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWltZVR5cGUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb250ZW50cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ29udGVudHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlbmNvZGluZyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRW5jb2RpbmciIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJoYXNoZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEhhc2hlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Imxhc3RNb2RpZmllZFRpbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExhc3RNb2RpZmllZFRpbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBGaWxlRGF0YShGaWxlTG9jYXRpb24gZmlsZUxvY2F0aW9uLCBzdHJpbmcgcGFyZW50S2V5LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBGaWxlUm9sZXMgcm9sZXMsIHN0cmluZyBtaW1lVHlwZSwgRmlsZUNvbnRlbnQgY29udGVudHMsIHN0cmluZyBlbmNvZGluZywgSUVudW1lcmFibGU8SGFzaD4gaGFzaGVzLCBEYXRlVGltZSBsYXN0TW9kaWZpZWRUaW1lLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoZmlsZUxvY2F0aW9uLCBwYXJlbnRLZXksIG9mZnNldCwgbGVuZ3RoLCByb2xlcywgbWltZVR5cGUsIGNvbnRlbnRzLCBlbmNvZGluZywgaGFzaGVzLCBsYXN0TW9kaWZpZWRUaW1lLCBwcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpbGVEYXRhIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBGaWxlRGF0YShGaWxlRGF0YSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5GaWxlTG9jYXRpb24sIG90aGVyLlBhcmVudEtleSwgb3RoZXIuT2Zmc2V0LCBvdGhlci5MZW5ndGgsIG90aGVyLlJvbGVzLCBvdGhlci5NaW1lVHlwZSwgb3RoZXIuQ29udGVudHMsIG90aGVyLkVuY29kaW5nLCBvdGhlci5IYXNoZXMsIG90aGVyLkxhc3RNb2RpZmllZFRpbWUsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlRGF0YSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEZpbGVEYXRhKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlRGF0YSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KEZpbGVMb2NhdGlvbiBmaWxlTG9jYXRpb24sIHN0cmluZyBwYXJlbnRLZXksIGludCBvZmZzZXQsIGludCBsZW5ndGgsIEZpbGVSb2xlcyByb2xlcywgc3RyaW5nIG1pbWVUeXBlLCBGaWxlQ29udGVudCBjb250ZW50cywgc3RyaW5nIGVuY29kaW5nLCBJRW51bWVyYWJsZTxIYXNoPiBoYXNoZXMsIERhdGVUaW1lIGxhc3RNb2RpZmllZFRpbWUsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGZpbGVMb2NhdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24oZmlsZUxvY2F0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgUGFyZW50S2V5ID0gcGFyZW50S2V5Ow0KICAgICAgICAgICAgT2Zmc2V0ID0gb2Zmc2V0Ow0KICAgICAgICAgICAgTGVuZ3RoID0gbGVuZ3RoOw0KICAgICAgICAgICAgUm9sZXMgPSByb2xlczsNCiAgICAgICAgICAgIE1pbWVUeXBlID0gbWltZVR5cGU7DQogICAgICAgICAgICBpZiAoY29udGVudHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBDb250ZW50cyA9IG5ldyBGaWxlQ29udGVudChjb250ZW50cyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEVuY29kaW5nID0gZW5jb2Rpbmc7DQogICAgICAgICAgICBpZiAoaGFzaGVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxIYXNoPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGhhc2hlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IEhhc2godmFsdWVfMCkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgSGFzaGVzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgTGFzdE1vZGlmaWVkVGltZSA9IGxhc3RNb2RpZmllZFRpbWU7DQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1305",
+ "level": "error",
+ "message": {
+ "text": "Because the behavior of 'string.Format(string, object, object)' could vary based on the current user's locale settings, replace this call in 'StringExtensions.AtProperty(this string, string)' with a call to 'string.Format(IFormatProvider, string, params object[])'. If the result of 'string.Format(IFormatProvider, string, params object[])' will be displayed to the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will be stored and accessed by software, such as when it is persisted to disk or to a database, specify 'CultureInfo.InvariantCulture'.",
+ "id": "IFormatProviderAlternateString"
},
- "hashes": [
- {
- "value": "4AAF3CF868AC30F7F48C41715AEC1CEF",
- "algorithm": "md5"
- },
- {
- "value": "511197EA48D482E5D5BD88921E1252E3FA124330",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "02C565158688557ECCA71B452230A0FD5BFE0FD007597F8823F4515C7DE187A2",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 25,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.StringExtensions.AtProperty(System.String,System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "System.String.Format(System.String,System.Object,System.Object)#IFormatProviderAlternateString"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/FileData.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uSU87DQp1c2luZyBTeXN0ZW0uVGV4dDsNCnVzaW5nIFNhcmlmV3JpdGVycyA9IE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuV3JpdGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIFJlcHJlc2VudHMgYSBzaW5nbGUgZmlsZS4gSW4gc29tZSBjYXNlcywgdGhpcyBmaWxlIG1pZ2h0IGJlIG5lc3RlZCB3aXRoaW4gYW5vdGhlciBmaWxlLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRmlsZURhdGEgOiBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIEZpbGVEYXRhIENyZWF0ZSgNCiAgICAgICAgICAgIFVyaSB1cmksIA0KICAgICAgICAgICAgT3B0aW9uYWxseUVtaXR0ZWREYXRhIGRhdGFUb0luc2VydCA9IE9wdGlvbmFsbHlFbWl0dGVkRGF0YS5Ob25lLCANCiAgICAgICAgICAgIHN0cmluZyBtaW1lVHlwZSA9IG51bGwsIA0KICAgICAgICAgICAgRW5jb2RpbmcgZW5jb2RpbmcgPSBudWxsLA0KICAgICAgICAgICAgSUZpbGVTeXN0ZW0gZmlsZVN5c3RlbSA9IG51bGwpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgeyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZih1cmkpKTsgfQ0KDQogICAgICAgICAgICBtaW1lVHlwZSA9IG1pbWVUeXBlID8/IFNhcmlmV3JpdGVycy5NaW1lVHlwZS5EZXRlcm1pbmVGcm9tRmlsZUV4dGVuc2lvbih1cmkpOw0KICAgICAgICAgICAgZmlsZVN5c3RlbSA9IGZpbGVTeXN0ZW0gPz8gbmV3IEZpbGVTeXN0ZW0oKTsNCg0KICAgICAgICAgICAgdmFyIGZpbGVEYXRhID0gbmV3IEZpbGVEYXRhKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBFbmNvZGluZyA9IGVuY29kaW5nPy5XZWJOYW1lLA0KICAgICAgICAgICAgICAgIE1pbWVUeXBlID0gbWltZVR5cGUNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gcGVyc2lzdCBmaWxlIGNvbnRlbnRzIGFuZC9vciBjb21wdXRlIGZpbGUgaGFzaCBhbmQgcGVyc2lzdA0KICAgICAgICAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiB0byB0aGUgbG9nIGZpbGUuIEluIHRoZSBldmVudCB0aGF0IHRoZXJlIGlzIHNvbWUgaXNzdWUNCiAgICAgICAgICAgIC8vIGFjY2Vzc2luZyB0aGUgZmlsZSwgZm9yIGV4YW1wbGUsIGR1ZSB0byBBQ0xzIGFwcGxpZWQgdG8gYSBkaXJlY3RvcnksDQogICAgICAgICAgICAvLyB3ZSBjdXJyZW50bHkgc3dhbGxvdyB0aGVzZSBleGNlcHRpb25zIHdpdGhvdXQgcG9wdWxhdGluZyBhbnkgcmVxdWVzdGVkDQogICAgICAgICAgICAvLyBkYXRhIG9yIHB1dHRpbmcgYSBub3RpZmljYXRpb24gaW4gdGhlIGxvZyBmaWxlIHRoYXQgYSBwcm9ibGVtDQogICAgICAgICAgICAvLyBvY2N1cnJlZC4gU29tZXRoaW5nIHRvIGRpc2N1c3MgbW92aW5nIGZvcndhcmQuDQogICAgICAgICAgICB0cnkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoIXVyaS5Jc0Fic29sdXRlVXJpIHx8ICF1cmkuSXNGaWxlIHx8ICFmaWxlU3lzdGVtLkZpbGVFeGlzdHModXJpLkxvY2FsUGF0aCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZURhdGE7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgc3RyaW5nIGZpbGVQYXRoID0gdXJpLkxvY2FsUGF0aDsNCg0KICAgICAgICAgICAgICAgIGlmIChkYXRhVG9JbnNlcnQuSW5jbHVkZXMoT3B0aW9uYWxseUVtaXR0ZWREYXRhLkJpbmFyeUZpbGVzKSAmJg0KICAgICAgICAgICAgICAgICAgICBTYXJpZldyaXRlcnMuTWltZVR5cGUuSXNCaW5hcnlNaW1lVHlwZShtaW1lVHlwZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmaWxlRGF0YS5Db250ZW50cyA9IEdldEVuY29kZWRGaWxlQ29udGVudHMoZmlsZVN5c3RlbSwgZmlsZVBhdGgsIG1pbWVUeXBlLCBlbmNvZGluZyk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGRhdGFUb0luc2VydC5JbmNsdWRlcyhPcHRpb25hbGx5RW1pdHRlZERhdGEuVGV4dEZpbGVzKSAmJg0KICAgICAgICAgICAgICAgICAgICBTYXJpZldyaXRlcnMuTWltZVR5cGUuSXNUZXh0dWFsTWltZVR5cGUobWltZVR5cGUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZmlsZURhdGEuQ29udGVudHMgPSBHZXRFbmNvZGVkRmlsZUNvbnRlbnRzKGZpbGVTeXN0ZW0sIGZpbGVQYXRoLCBtaW1lVHlwZSwgZW5jb2RpbmcpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChkYXRhVG9JbnNlcnQuSW5jbHVkZXMoT3B0aW9uYWxseUVtaXR0ZWREYXRhLkhhc2hlcykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBIYXNoRGF0YSBoYXNoZXMgPSBIYXNoVXRpbGl0aWVzLkNvbXB1dGVIYXNoZXMoZmlsZVBhdGgpOw0KICAgICAgICAgICAgICAgICAgICBmaWxlRGF0YS5IYXNoZXMgPSBuZXcgTGlzdDxIYXNoPg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXcgSGFzaCgpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSBoYXNoZXMuTUQ1LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobSA9ICJtZDUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBIYXNoKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IGhhc2hlcy5TaGExLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobSA9ICJzaGEtMSIsDQogICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEhhc2goKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gaGFzaGVzLlNoYTI1NiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG0gPSAic2hhLTI1NiIsDQogICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgd2hlbiAoZSBpcyBJT0V4Y2VwdGlvbiB8fCBlIGlzIFVuYXV0aG9yaXplZEFjY2Vzc0V4Y2VwdGlvbikgeyB9DQoNCiAgICAgICAgICAgIHJldHVybiBmaWxlRGF0YTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIEZpbGVDb250ZW50IEdldEVuY29kZWRGaWxlQ29udGVudHMoSUZpbGVTeXN0ZW0gZmlsZVN5c3RlbSwgc3RyaW5nIGZpbGVQYXRoLCBzdHJpbmcgbWltZVR5cGUsIEVuY29kaW5nIGlucHV0RmlsZUVuY29kaW5nKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgZmlsZUNvbnRlbnQgPSBuZXcgRmlsZUNvbnRlbnQoKTsNCiAgICAgICAgICAgIGJ5dGVbXSBmaWxlQ29udGVudHMgPSBmaWxlU3lzdGVtLlJlYWRBbGxCeXRlcyhmaWxlUGF0aCk7DQoNCiAgICAgICAgICAgIGlmIChTYXJpZldyaXRlcnMuTWltZVR5cGUuSXNCaW5hcnlNaW1lVHlwZShtaW1lVHlwZSkgfHwgaW5wdXRGaWxlRW5jb2RpbmcgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBmaWxlQ29udGVudC5CaW5hcnkgPSBDb252ZXJ0LlRvQmFzZTY0U3RyaW5nKGZpbGVDb250ZW50cyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZmlsZUNvbnRlbnQuVGV4dCA9IGlucHV0RmlsZUVuY29kaW5nLkdldFN0cmluZyhmaWxlQ29udGVudHMpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gZmlsZUNvbnRlbnQ7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'StringExtensions.UnescapeJsonPointer(this string)', correct the spelling of 'j' in parameter name 'jPointer' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "DA29519F2A960DBB4CC7636FE51B95DA",
- "algorithm": "md5"
- },
- {
- "value": "6D12CB255152492EFC4F8C9AFF181AD20D24D5F8",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "21ED79396DC8189853963CCC6D0561E5ACEE86B26E946B76FD81703A060081F1",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 26,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.StringExtensions.UnescapeJsonPointer(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/FileDataEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBGaWxlRGF0YSBmb3IgZXF1YWxpdHkuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgaW50ZXJuYWwgc2VhbGVkIGNsYXNzIEZpbGVEYXRhRXF1YWxpdHlDb21wYXJlciA6IElFcXVhbGl0eUNvbXBhcmVyPEZpbGVEYXRhPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IEZpbGVEYXRhRXF1YWxpdHlDb21wYXJlciBJbnN0YW5jZSA9IG5ldyBGaWxlRGF0YUVxdWFsaXR5Q29tcGFyZXIoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoRmlsZURhdGEgbGVmdCwgRmlsZURhdGEgcmlnaHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgcmlnaHQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIG51bGwpIHx8IFJlZmVyZW5jZUVxdWFscyhyaWdodCwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIUZpbGVMb2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkZpbGVMb2NhdGlvbiwgcmlnaHQuRmlsZUxvY2F0aW9uKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlBhcmVudEtleSAhPSByaWdodC5QYXJlbnRLZXkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5PZmZzZXQgIT0gcmlnaHQuT2Zmc2V0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTGVuZ3RoICE9IHJpZ2h0Lkxlbmd0aCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlJvbGVzICE9IHJpZ2h0LlJvbGVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTWltZVR5cGUgIT0gcmlnaHQuTWltZVR5cGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIUZpbGVDb250ZW50LlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuQ29udGVudHMsIHJpZ2h0LkNvbnRlbnRzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkVuY29kaW5nICE9IHJpZ2h0LkVuY29kaW5nKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuSGFzaGVzLCByaWdodC5IYXNoZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0Lkhhc2hlcyA9PSBudWxsIHx8IHJpZ2h0Lkhhc2hlcyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0Lkhhc2hlcy5Db3VudCAhPSByaWdodC5IYXNoZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBsZWZ0Lkhhc2hlcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFIYXNoLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuSGFzaGVzW2luZGV4XzBdLCByaWdodC5IYXNoZXNbaW5kZXhfMF0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lkxhc3RNb2RpZmllZFRpbWUgIT0gcmlnaHQuTGFzdE1vZGlmaWVkVGltZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlByb3BlcnRpZXMsIHJpZ2h0LlByb3BlcnRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCByaWdodC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgbGVmdC5Qcm9wZXJ0aWVzLkNvdW50ICE9IHJpZ2h0LlByb3BlcnRpZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFByb3BlcnR5SW5mbyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlByb3BlcnRpZXMuVHJ5R2V0VmFsdWUodmFsdWVfMC5LZXksIG91dCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QuRXF1YWxzKHZhbHVlXzAuVmFsdWUsIHZhbHVlXzEpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShGaWxlRGF0YSBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaW50IHJlc3VsdCA9IDE3Ow0KICAgICAgICAgICAgdW5jaGVja2VkDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG9iai5GaWxlTG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRmlsZUxvY2F0aW9uLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlBhcmVudEtleSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5QYXJlbnRLZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLk9mZnNldC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTGVuZ3RoLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Sb2xlcy5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouTWltZVR5cGUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTWltZVR5cGUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkNvbnRlbnRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkNvbnRlbnRzLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkVuY29kaW5nICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkVuY29kaW5nLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5IYXNoZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIG9iai5IYXNoZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzIgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkxhc3RNb2RpZmllZFRpbWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzMgaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzMuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMy5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzMuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1702",
+ "level": "error",
+ "message": {
+ "text": "The compound word 'PreRelease' in member name 'VersionConstants.PreRelease' exists as a discrete term. If your usage is intended to be single word, case it as 'Prerelease' or strip the first token entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberShouldBeDiscreteTerm"
},
- "hashes": [
- {
- "value": "320D00D3B17C65887C4589EC730B8262",
- "algorithm": "md5"
- },
- {
- "value": "1E58F913ED3849C04CAEE04DB221A09B64AB9E94",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "233EF87F2A9939F37F1802902F5245DD55EAE2B8516667B6EF11036E79B99E56",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Pointer.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 0
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 28,
+ "fullyQualifiedName": "microsoft.json.pointer.dll!Microsoft.Json.Pointer.VersionConstants.PreRelease"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "PreRelease#MemberShouldBeDiscreteTerm"
+ },
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/FileLocation.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBTcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIGEgZmlsZS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIEZpbGVMb2NhdGlvbiA6IElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8RmlsZUxvY2F0aW9uPiBWYWx1ZUNvbXBhcmVyID0+IEZpbGVMb2NhdGlvbkVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoRmlsZUxvY2F0aW9uIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLkZpbGVMb2NhdGlvbjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCByZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkkuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidXJpIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgVXJpIFVyaSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgd2hpY2ggaW5kaXJlY3RseSBzcGVjaWZpZXMgdGhlIGFic29sdXRlIFVSSSB3aXRoIHJlc3BlY3QgdG8gd2hpY2ggYSByZWxhdGl2ZSBVUkkgaW4gdGhlICJ1cmkiIHByb3BlcnR5IGlzIGludGVycHJldGVkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInVyaUJhc2VJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBVcmlCYXNlSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpbGVMb2NhdGlvbiIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24oKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaWxlTG9jYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1cmkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFVyaSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVyaUJhc2VJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVXJpQmFzZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24oVXJpIHVyaSwgc3RyaW5nIHVyaUJhc2VJZCkNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdCh1cmksIHVyaUJhc2VJZCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaWxlTG9jYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEZpbGVMb2NhdGlvbihGaWxlTG9jYXRpb24gb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuVXJpLCBvdGhlci5VcmlCYXNlSWQpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24gRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChGaWxlTG9jYXRpb24pRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVMb2NhdGlvbih0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KFVyaSB1cmksIHN0cmluZyB1cmlCYXNlSWQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICh1cmkgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBVcmkgPSBuZXcgVXJpKHVyaS5PcmlnaW5hbFN0cmluZywgdXJpLklzQWJzb2x1dGVVcmkgPyBVcmlLaW5kLkFic29sdXRlIDogVXJpS2luZC5SZWxhdGl2ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFVyaUJhc2VJZCA9IHVyaUJhc2VJZDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1014",
+ "level": "error",
+ "message": {
+ "text": "Mark 'Microsoft.Json.Schema.dll' with CLSCompliant(true) because it exposes externally visible types."
},
- "hashes": [
+ "locations": [
{
- "value": "3C2862B14F46CCF251A450B8123463CC",
- "algorithm": "md5"
- },
- {
- "value": "AA72A279EA09E4BA957366811425A124E0AFE179",
- "algorithm": "sha-1"
- },
- {
- "value": "68EFE257216B09F1C1CE01702E5F319949E2748F3CBA93A8B27894511C0FE6C5",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 29,
+ "fullyQualifiedName": "microsoft.json.schema.dll"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/FileLocation.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRmlsZUxvY2F0aW9uDQogICAgew0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBdHRlbXB0IHRvIHJlY29uc3RydWN0IGEgVVJJLCBpZiBhcHByb3ByaWF0ZSwgdXNpbmcgUnVuIGluc3RhbmNlIA0KICAgICAgICAvLy8gb3JpZ2luYWxVcmlCYXNlSWQgYW5kIHVyaUJhc2VJZCBwcm9wZXJ0aWVzLiBJZiB0aGlzIG1ldGhvZCBjYW5ub3QNCiAgICAgICAgLy8vIHN1Y2Nlc3NmdWxseSByZWNvbnN0aXR1dGUgYW4gYWJzb2x1dGUgVVJJLCBpdCB3aWxsIHJldHVybiBmYWxzZQ0KICAgICAgICAvLy8gYW5kIHBvcHVsYXRlICdyZXNvbHZlZFVyaScgd2l0aCBudWxsLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVMb2NhdGlvbiI+VGhlIGZpbGVMb2NhdGlvIGluc3RhbmNlIGZyb20gd2hpY2ggYW4gYWJzb2x1dGUgVVJJIHNob3VsZCBiZSByZWNvbnN0cnVjdGVkLCBpZiBwb3NzaWJsZS48L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9yaWdpbmFsVXJpQmFzZUlkcyI+VGhlIG9yaWdpbmFsIHVyaSBiYXNlIGlkIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRvb2wgcnVuLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVzb2x2ZWRVcmkiPlRoZSByZWNvbnN0cnVjdGVkIGFic29sdXRlIFVSSSBvciBudWxsIChpZiBhbiBhYnNvbHV0ZSBVUkkgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQpLjwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz48L3JldHVybnM+DQogICAgICAgIHB1YmxpYyBib29sIFRyeVJlY29uc3RydWN0QWJzb2x1dGVVcmkoSURpY3Rpb25hcnk8c3RyaW5nLCBVcmk+IG9yaWdpbmFsVXJpQmFzZUlkcywgb3V0IFVyaSByZXNvbHZlZFVyaSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmVzb2x2ZWRVcmkgPSB0aGlzLlVyaS5Jc0Fic29sdXRlVXJpID8gdGhpcy5VcmkgOiBudWxsOw0KDQogICAgICAgICAgICAvLyBXZSBjYW4ndCByZXN0b3JlIGFueSBhYnNvbHV0ZSBVUklzIHVubGVzcyBzb21lb25lIGhhcw0KICAgICAgICAgICAgLy8gZGVjb25zdHJ1Y3RlZCB0aGVtIHVzaW5nIHVyaUJhc2VJZCArIG9yaWdpbmFsVXJpQmFzZUlkcw0KICAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJpQmFzZUlkcyA9PSBudWxsKSB7IHJldHVybiB0aGlzLlVyaS5Jc0Fic29sdXRlVXJpOyB9DQoNCiAgICAgICAgICAgIHJlc29sdmVkVXJpID0gdGhpcy5Vcmk7DQoNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkodGhpcy5VcmlCYXNlSWQpICYmDQogICAgICAgICAgICAgICAgIXRoaXMuVXJpLklzQWJzb2x1dGVVcmkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsVXJpQmFzZUlkcy5UcnlHZXRWYWx1ZSh0aGlzLlVyaUJhc2VJZCwgb3V0IFVyaSBvcmlnaW5hbFVyaUJhc2VJZCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFVyaSA9IG5ldyBVcmkob3JpZ2luYWxVcmlCYXNlSWQsIHJlc29sdmVkVXJpLlRvU3RyaW5nKCkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZW4ndCBhYmxlIHRvIHJlY29uc3RydWN0IGEgVVJJIChvciByZXNvbHZlZFVyaSB3YXNuJ3QgYWxyZWFkeSANCiAgICAgICAgICAgIC8vIGFuIGFic29sdXRlIFVSSSBvbiBpbnB1dCksIGluaXRpYWxpemUgb3V0IHBhcmFtZXRlciB0byBudWxsOw0KICAgICAgICAgICAgaWYgKCFyZXNvbHZlZFVyaS5Jc0Fic29sdXRlVXJpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc29sdmVkVXJpID0gbnVsbDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkVXJpICE9IG51bGw7DQogICAgICAgIH0NCiAgICAgICAgcHVibGljIHN0YXRpYyBGaWxlTG9jYXRpb24gQ3JlYXRlRnJvbUZpbGVzRGljdGlvbmFyeUtleShzdHJpbmcga2V5KQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgdXJpQmFzZUlkID0gbnVsbDsNCg0KICAgICAgICAgICAgaWYgKGtleS5TdGFydHNXaXRoKCIjIikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RyaW5nW10gdG9rZW5zID0ga2V5LlNwbGl0KG5ld1tdIHsgJyMnIH0sIFN0cmluZ1NwbGl0T3B0aW9ucy5SZW1vdmVFbXB0eUVudHJpZXMpOw0KICAgICAgICAgICAgICAgIHVyaUJhc2VJZCA9IHRva2Vuc1swXTsNCg0KICAgICAgICAgICAgICAgIC8vICsyIHRvIHNraXAgcGFzdCBsZWFkaW5nIGFuZCB0cmFpbGluZyBvY3RvdGhvcnBlcw0KICAgICAgICAgICAgICAgIGtleSA9IGtleS5TdWJzdHJpbmcodXJpQmFzZUlkLkxlbmd0aCArIDIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVMb2NhdGlvbigpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkoa2V5LCBVcmlLaW5kLlJlbGF0aXZlT3JBYnNvbHV0ZSksDQogICAgICAgICAgICAgICAgIFVyaUJhc2VJZCA9IHVyaUJhc2VJZA0KICAgICAgICAgICAgfTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1824",
+ "message": {
+ "text": "Because assembly 'Microsoft.Json.Schema.dll' contains a ResX-based resource file, mark it with the NeutralResourcesLanguage attribute, specifying the language of the resources within the assembly. This could improve lookup performance the first time a resource is retrieved."
},
- "hashes": [
- {
- "value": "FBF1A444DECE2BBB418676964EE2858E",
- "algorithm": "md5"
- },
- {
- "value": "43BB2601C5B6F8889E749955AE62FB2ED96B8717",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "5A15875080537A619E423FDCB89E7F618C124DD5476E0AA41205246F58C6BCBA",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 29,
+ "fullyQualifiedName": "microsoft.json.schema.dll"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/FileRegionsCache.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7DQp1c2luZyBTeXN0ZW0uSU87DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBUaGlzIGNsYXNzIGlzIGEgZmlsZSBjYWNoZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvcHVsYXRlDQogICAgLy8vIHJlZ2lvbnMgd2l0aCBjb21wcmVoZW5zaXZlIGRhdGEsIHRvIHJldHJpZXZlIGZpbGUgdGV4dA0KICAgIC8vLyBhc3NvY2lhdGVkIHdpdGggYSBTQVJJRiBsb2csIGFuZCB0byBjb25zdHJ1Y3QgdGV4dA0KICAgIC8vLyBzbmlwcGV0cyBhc3NvY2lhdGVkIHdpdGggcmVnaW9uIGluc3RhbmNlcy4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBjbGFzcyBGaWxlUmVnaW9uc0NhY2hlDQogICAgew0KICAgICAgICBpbnRlcm5hbCBJRmlsZVN5c3RlbSBfZmlsZVN5c3RlbTsNCg0KICAgICAgICBwcml2YXRlIHJlYWRvbmx5IFJ1biBfcnVuOw0KICAgICAgICBwcml2YXRlIHJlYWRvbmx5IERpY3Rpb25hcnk8c3RyaW5nLCBOZXdMaW5lSW5kZXg+IF9maWxlUGF0aFRvTmV3TGluZUluZGV4TWFwOw0KDQogICAgICAgIHB1YmxpYyBGaWxlUmVnaW9uc0NhY2hlKFJ1biBydW4pDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIEVhY2ggZmlsZSByZWdpb25zIGNhY2hlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBTQVJJRiBydW4uDQogICAgICAgICAgICAvLyBUaGUgcmVhc29uIGlzIHRoYXQgYSBydW4gcHJvdmlkZXMgYW4gaXNvbGF0ZWQgc2NvcGUgZm9yIA0KICAgICAgICAgICAgLy8gdGhpbmdzIGxpa2UgVVJMcywgcG9pbnQtaW4tdGltZSBmaWxlIGNvbnRlbnRzLCBldGMuDQogICAgICAgICAgICBfcnVuID0gcnVuOw0KDQogICAgICAgICAgICBfZmlsZVN5c3RlbSA9IG5ldyBGaWxlU3lzdGVtKCk7DQogICAgICAgICAgICBfZmlsZVBhdGhUb05ld0xpbmVJbmRleE1hcCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgTmV3TGluZUluZGV4PihTdHJpbmdDb21wYXJlci5PcmRpbmFsSWdub3JlQ2FzZSk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBY2NlcHRzIGEgcGh5c2ljYWwgbG9jYXRpb24gYW5kIHJldHVybnMgYSBSZWdpb24gb2JqZWN0LCBiYXNlZCBvbiB0aGUgaW5wdXQNCiAgICAgICAgLy8vIHBoeXNpY2FsTG9jYXRpb24ucmVnaW9uIHByb3BlcnR5LCB0aGF0IGhhcyBhbGwgaXRzIHByb3BlcnRpZXMgcG9wdWxhdGVkLiBJZiBhbiANCiAgICAgICAgLy8vIGlucHV0IHRleHQgcmVnaW9uLCBmb3IgZXhhbXBsZSwgb25seSBzcGVjaWZpZXMgdGhlIHN0YXJ0TGluZSBwcm9wZXJ0eSwgdGhlIHJldHVybmVkDQogICAgICAgIC8vLyBSZWdpb24gaW5zdGFuY2Ugd2lsbCBoYXZlIGNvbXB1dGVkIGFuZCBwb3B1bGF0ZWQgb3RoZXIgcHJvcGVydGllcywgc3VjaCBhcyBjaGFyT2Zmc2V0LA0KICAgICAgICAvLy8gY2hhckxlbmd0aCwgZXRjLiANCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwaHlzaWNhbExvY2F0aW9uIj5UaGUgcGh5c2ljYWwgbG9jYXRpb24gY29udGFpbmluZyB0aGUgcmVnaW9uIHdoaWNoIHNob3VsZCBiZSBwb3B1bGF0ZWQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwb3B1bGF0ZVNuaXBwZXQiPlNwZWNpZmllcyB3aGV0aGVyIHRoZSBwaHlzaWNhbExvY2F0aW9uLnJlZ2lvbi5zbmlwcGV0IHByb3BlcnR5IHNob3VsZCBiZSBwb3B1bGF0ZWQuPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz4NCiAgICAgICAgcHVibGljIFJlZ2lvbiBQb3B1bGF0ZVRleHRSZWdpb25Qcm9wZXJ0aWVzKFJlZ2lvbiBpbnB1dFJlZ2lvbiwgVXJpIHVyaSwgYm9vbCBwb3B1bGF0ZVNuaXBwZXQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChpbnB1dFJlZ2lvbiA9PSBudWxsIHx8IGlucHV0UmVnaW9uLklzQmluYXJ5UmVnaW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIEZvciBiaW5hcnkgcmVnaW9ucywgb25seSB0aGUgYnl0ZU9mZnNldCBhbmQgYnl0ZUxlbmd0aCBwcm9wZXJ0aWVzDQogICAgICAgICAgICAgICAgLy8gYXJlIHJlbGV2YW50LCBhbmQgdGhlaXIgdmFsdWVzIGFyZSBhbHdheXMgc3BlY2lmaWVkLg0KICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dFJlZ2lvbjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgTmV3TGluZUluZGV4IG5ld0xpbmVJbmRleCA9IEdldE5ld0xpbmVJbmRleCh1cmksIG91dCBzdHJpbmcgZmlsZVRleHQpOw0KICAgICAgICAgICAgcmV0dXJuIFBvcHVsYXRlVGV4dFJlZ2lvblByb3BlcnRpZXMobmV3TGluZUluZGV4LCBpbnB1dFJlZ2lvbiwgZmlsZVRleHQsIHBvcHVsYXRlU25pcHBldCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIFJlZ2lvbiBQb3B1bGF0ZVRleHRSZWdpb25Qcm9wZXJ0aWVzKE5ld0xpbmVJbmRleCBsaW5lSW5kZXgsIFJlZ2lvbiBpbnB1dFJlZ2lvbiwgc3RyaW5nIGZpbGVUZXh0LCBib29sIHBvcHVsYXRlU25pcHBldCkNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gQSBHRU5FUkFMIE5PVEUgT04gVEhFIFBST1BFUlRZIFBPUFVMQVRJT04gUFJPQ0VTUzoNCiAgICAgICAgICAgIC8vIA0KICAgICAgICAgICAgLy8gQXMgYSBydWxlLCBpZiB3ZSBmaW5kIHNvbWUgZXhpc3RpbmcgZGF0YSBvbiB0aGUgcmVnaW9uLCB3ZSB3aWxsIHRydXN0IGl0IA0KICAgICAgICAgICAgLy8gYW5kIGF2b2lkIG92ZXJ3cml0aW5nIGl0LiBXZSB3aWxsIHRha2UgZXZlcnkgb3Bwb3J0dW5pdHksIGhvd2V2ZXIsIHRvIA0KICAgICAgICAgICAgLy8gdmFsaWRhdGUgdGhhdCB0aGUgZXhpc3RpbmcgaW5mb3JtYXRpb24gbWF0Y2hlcyB3aGF0IHRoZSBuZXcgbGluZSBpbmRleA0KICAgICAgICAgICAgLy8gY29tcHV0ZXMuIE5vdGUgdGhhdCB3ZSBjb3VsZCBjb25zaWRlciBtYWtpbmcgdGhlIG5ldyBsaW5lIGluZGV4IG1vcmUNCiAgICAgICAgICAgIC8vIGVmZmljaWVudCBieSBkZWZlcnJpbmcgaXRzIG5ld2xpbmUgY29tcHV0YXRpb25zIHVudGlsIHRoZXkgYXJlIA0KICAgICAgICAgICAgLy8gYWN0dWFsbHkgcmVxdWVzdGVkLiBJZiB3ZSBkbyBzbywgd2UgY291bGQgdXBkYXRlIHRoaXMgY29kZSB0byANCiAgICAgICAgICAgIC8vIGF2b2lkIHZlcmlmeWluZyByZWdpb24gZGF0YSBpbiBjYXNlcyB3aGVyZSByZWdpb25zIGFyZSBmdWxseSANCiAgICAgICAgICAgIC8vIHBvcHVsYXRlZCAoYW5kIHdlIGNhbiBza2lwIGZpbGUgcGFyc2luZyByZXF1aXJlZCB0byBidWlsZA0KICAgICAgICAgICAgLy8gdGhlIG1hcCBvZiBuZXcgbGluZSBvZmZzZXRzKS4NCiAgICAgICAgICAgIERlYnVnLkFzc2VydCghaW5wdXRSZWdpb24uSXNCaW5hcnlSZWdpb24pOw0KDQogICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIGlucHV0IHNvdXJjZSBmaWxlLCB0aGVyZSBpcyBubyB3b3JrIHRvIGRvDQogICAgICAgICAgICBpZiAobGluZUluZGV4ID09IG51bGwpIHsgcmV0dXJuIGlucHV0UmVnaW9uOyB9DQoNCiAgICAgICAgICAgIFJlZ2lvbiByZWdpb24gPSBpbnB1dFJlZ2lvbi5EZWVwQ2xvbmUoKTsNCg0KICAgICAgICAgICAgaWYgKHJlZ2lvbi5TdGFydExpbmUgPT0gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhdmUgYSByZWdpb24gc3BlY2lmaWVkIGVudGlyZWx5IHZpYSBjaGFyT2Zmc2V0DQogICAgICAgICAgICAgICAgUG9wdWxhdGVQcm9wZXJ0aWVzRnJvbUNoYXJPZmZzZXRBbmRMZW5ndGgobGluZUluZGV4LCByZWdpb24pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFBvcHVsYXRlUHJvcGVydGllc0Zyb21TdGFydEFuZEVuZFByb3BlcnRpZXMobGluZUluZGV4LCByZWdpb24sIGZpbGVUZXh0KTsgDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwb3B1bGF0ZVNuaXBwZXQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVnaW9uLlNuaXBwZXQgPSByZWdpb24uU25pcHBldCA/PyBuZXcgRmlsZUNvbnRlbnQoKTsNCg0KICAgICAgICAgICAgICAgIHN0cmluZyBzbmlwcGV0VGV4dCA9IGZpbGVUZXh0LlN1YnN0cmluZyhyZWdpb24uQ2hhck9mZnNldCwgcmVnaW9uLkNoYXJMZW5ndGgpOw0KICAgICAgICAgICAgICAgIGlmIChyZWdpb24uU25pcHBldC5UZXh0ID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZWdpb24uU25pcHBldC5UZXh0ID0gc25pcHBldFRleHQ7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU25pcHBldC5UZXh0ID09IHNuaXBwZXRUZXh0KTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlZ2lvbjsNCiAgICAgICAgfQ0KDQogICAgICAgIGludGVybmFsIFJlZ2lvbiBDb25zdHJ1Y3RNdWx0aWxpbmVDb250ZXh0U25pcHBldChSZWdpb24gaW5wdXRSZWdpb24sIFVyaSB1cmkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChpbnB1dFJlZ2lvbiA9PSBudWxsIHx8IGlucHV0UmVnaW9uLklzQmluYXJ5UmVnaW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIENvbnRleHQgc25pcHBldHMgYXJlIHJlbGV2YW50IG9ubHkgZm9yIHRleHR1YWwgcmVnaW9ucy4NCiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgTmV3TGluZUluZGV4IG5ld0xpbmVJbmRleCA9IEdldE5ld0xpbmVJbmRleCh1cmksIG91dCBzdHJpbmcgZmlsZVRleHQpOw0KICAgICAgICAgICAgaWYgKG5ld0xpbmVJbmRleCA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgbWF4TGluZU51bWJlciA9IG5ld0xpbmVJbmRleC5NYXhpbXVtTGluZU51bWJlcjsNCg0KICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBqdXN0IGdyYWIgYSBzaW5nbGUgbGluZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSByZWdpb24gc3RhcnQNCiAgICAgICAgICAgIC8vIGFuZCBlbmQgbGluZXMsIHJlc3BlY3RpdmVseS4gSW4gdGhlIGZ1dHVyZSwgd2UgY291bGQgbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS4NCiAgICAgICAgICAgIHZhciByZWdpb24gPSBuZXcgUmVnaW9uKCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBTdGFydExpbmUgPSBpbnB1dFJlZ2lvbi5TdGFydExpbmUgPT0gMSA/IDEgOiBpbnB1dFJlZ2lvbi5TdGFydExpbmUgLSAxLA0KICAgICAgICAgICAgICAgIEVuZExpbmUgPSBpbnB1dFJlZ2lvbi5FbmRMaW5lID09IG1heExpbmVOdW1iZXIgPyBtYXhMaW5lTnVtYmVyIDogaW5wdXRSZWdpb24uRW5kTGluZSArIDENCiAgICAgICAgICAgIH07DQogICAgICAgICAgICByZXR1cm4gdGhpcy5Qb3B1bGF0ZVRleHRSZWdpb25Qcm9wZXJ0aWVzKHJlZ2lvbiwgdXJpLCBwb3B1bGF0ZVNuaXBwZXQ6IHRydWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIFBvcHVsYXRlUHJvcGVydGllc0Zyb21DaGFyT2Zmc2V0QW5kTGVuZ3RoKE5ld0xpbmVJbmRleCBuZXdMaW5lSW5kZXgsIFJlZ2lvbiByZWdpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydCghcmVnaW9uLklzQmluYXJ5UmVnaW9uKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRMaW5lID09IDApOw0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5DaGFyTGVuZ3RoID4gMCB8fCByZWdpb24uQ2hhck9mZnNldCA+IDApOw0KDQogICAgICAgICAgICBpbnQgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uOw0KDQogICAgICAgICAgICAvLyBSZXRyaWV2ZSBzdGFydCBhbmQgZW5kIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBuZXcgbGluZSBpbmRleA0KICAgICAgICAgICAgT2Zmc2V0SW5mbyBvZmZzZXRJbmZvID0gbmV3TGluZUluZGV4LkdldE9mZnNldEluZm9Gb3JPZmZzZXQocmVnaW9uLkNoYXJPZmZzZXQpOw0KICAgICAgICAgICAgc3RhcnRMaW5lID0gb2Zmc2V0SW5mby5MaW5lTnVtYmVyOw0KICAgICAgICAgICAgc3RhcnRDb2x1bW4gPSBvZmZzZXRJbmZvLkNvbHVtbk51bWJlcjsNCg0KICAgICAgICAgICAgb2Zmc2V0SW5mbyA9IG5ld0xpbmVJbmRleC5HZXRPZmZzZXRJbmZvRm9yT2Zmc2V0KHJlZ2lvbi5DaGFyT2Zmc2V0ICsgcmVnaW9uLkNoYXJMZW5ndGgpOw0KICAgICAgICAgICAgZW5kTGluZSA9IG9mZnNldEluZm8uTGluZU51bWJlcjsNCg0KICAgICAgICAgICAgLy8gVGhlIGNvbXB1dGF0aW9uIGFib3ZlIHBvaW50cyBvbmUgcGFzdCBvdXIgYWN0dWFsIHJlZ2lvbiwgYmVjYXVzZSBlbmRDb2x1bW4NCiAgICAgICAgICAgIC8vIGlzIGV4Y2x1c2l2ZSBvZiB0aGUgcmVnaW9uLiBUaGlzIGFsbG93cyBmb3IgbGVuZ3RoIHRvIGVhc2lseSBiZSBjb21wdXRlZA0KICAgICAgICAgICAgLy8gZm9yIHNpbmdsZSBsaW5lIHJlZ2lvbnM6IHJlZ2lvbi5FbmRDb2x1bW4gLSByZWdpb24uU3RhcnRDb2x1bW4NCiAgICAgICAgICAgIGVuZENvbHVtbiA9IG9mZnNldEluZm8uQ29sdW1uTnVtYmVyOw0KDQogICAgICAgICAgICAvLyBPbmx5IHNldCB2YWx1ZXMgaWYgdGhleSBhcmVuJ3QgYWxyZWFkeSBzcGVjaWZpZWQNCiAgICAgICAgICAgIGlmIChyZWdpb24uU3RhcnRMaW5lID09IDApIHsgcmVnaW9uLlN0YXJ0TGluZSA9IHN0YXJ0TGluZTsgfQ0KICAgICAgICAgICAgaWYgKHJlZ2lvbi5TdGFydENvbHVtbiA9PSAwKSB7IHJlZ2lvbi5TdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOyB9DQogICAgICAgICAgICBpZiAocmVnaW9uLkVuZExpbmUgPT0gMCkgeyByZWdpb24uRW5kTGluZSA9IGVuZExpbmU7IH0NCiAgICAgICAgICAgIGlmIChyZWdpb24uRW5kQ29sdW1uID09IDApIHsgcmVnaW9uLkVuZENvbHVtbiA9IGVuZENvbHVtbjsgfQ0KDQogICAgICAgICAgICAvLyBWYWxpZGF0ZSBjYXNlcyB3aGVyZSBuZXcgbGluZSBpbmRleCBkaXNhZ3JlZXMgd2l0aCBleHBsaWNpdCB2YWx1ZXMNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRMaW5lID09IHN0YXJ0TGluZSk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLlN0YXJ0Q29sdW1uID09IHN0YXJ0Q29sdW1uKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uRW5kTGluZSA9PSBlbmRMaW5lKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uRW5kQ29sdW1uID09IGVuZENvbHVtbik7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgUG9wdWxhdGVQcm9wZXJ0aWVzRnJvbVN0YXJ0QW5kRW5kUHJvcGVydGllcyhOZXdMaW5lSW5kZXggbGluZUluZGV4LCBSZWdpb24gcmVnaW9uLCBzdHJpbmcgZmlsZVRleHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRMaW5lID4gMCk7DQoNCiAgICAgICAgICAgIC8vIE5vdGU6IGV4ZWN1dGlvbiBvcmRlciBvZiB0aGVzZSBoZWxwZXJzIGlzIGltcG9ydGFudCwgYXMgc29tZSANCiAgICAgICAgICAgIC8vIGNhbGxzIGFzc3VtZSB0aGF0IGNlcnRhaW4gcHJlY2VkaW5nIGhlbHBlcnMgaGF2ZSBleGVjdXRlZCwNCiAgICAgICAgICAgIC8vIHdpdGggdGhlIHJlc3VsdCB0aGF0IGNlcnRhaW4gcHJvcGVydGllcyBhcmUgcG9wdWxhdGVkDQoNCiAgICAgICAgICAgIC8vIFBvcHVsYXRlZCBhdCB0aGlzIHBvaW50OiBTdGFydExpbmUNCiAgICAgICAgICAgIFBvcHVsYXRlRW5kTGluZShyZWdpb24pOw0KDQogICAgICAgICAgICAvLyBQb3B1bGF0ZWQgYXQgdGhpcyBwb2ludDogU3RhcnRMaW5lLCBFbmRMaW5lDQogICAgICAgICAgICBQb3B1bGF0ZVN0YXJ0Q29sdW1uKHJlZ2lvbik7DQoNCiAgICAgICAgICAgIC8vIFBvcHVsYXRlZCBhdCB0aGlzIHBvaW50OiBTdGFydExpbmUsIEVuZExpbmUsIFN0YXJ0Q29sdW1uDQogICAgICAgICAgICBQb3B1bGF0ZUVuZENvbHVtbihsaW5lSW5kZXgsIHJlZ2lvbiwgZmlsZVRleHQpOw0KDQogICAgICAgICAgICAvLyBQb3B1bGF0ZWQgYXQgdGhpcyBwb2ludDogU3RhcnRMaW5lLCBFbmRMaW5lLCBTdGFydENvbHVtbiwgRW5kQ29sdW1uDQogICAgICAgICAgICBQb3B1bGF0ZUNoYXJPZmZzZXQobGluZUluZGV4LCByZWdpb24pOw0KDQogICAgICAgICAgICAvLyBQb3B1bGF0ZWQgYXQgdGhpcyBwb2ludDogU3RhcnRMaW5lLCBFbmRMaW5lLCBTdGFydENvbHVtbiwgRW5kQ29sdW1uLCBDaGFyT2Zmc2V0DQogICAgICAgICAgICBQb3B1bGF0ZUNoYXJMZW5ndGgobGluZUluZGV4LCByZWdpb24pOw0KDQogICAgICAgICAgICAvLyBQb3B1bGF0ZWQgYXQgdGhpcyBwb2ludDogU3RhcnRMaW5lLCBFbmRMaW5lLCBTdGFydENvbHVtbiwgRW5kQ29sdW1uLCBDaGFyT2Zmc2V0LCBDaGFyTGVuZ3RoDQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLlN0YXJ0TGluZSA+IDApOw0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5FbmRMaW5lID4gMCk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoKHJlZ2lvbi5DaGFyT2Zmc2V0ICsgcmVnaW9uLkNoYXJMZW5ndGgpIDw9IGZpbGVUZXh0Lkxlbmd0aCk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLlN0YXJ0Q29sdW1uID4gMCk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLkNoYXJMZW5ndGggPiAwIHx8IChyZWdpb24uU3RhcnRDb2x1bW4gPT0gcmVnaW9uLkVuZENvbHVtbiAmJiByZWdpb24uU3RhcnRMaW5lID09IHJlZ2lvbi5FbmRMaW5lKSk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLkVuZENvbHVtbiA+IDApOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBQb3B1bGF0ZUVuZExpbmUoUmVnaW9uIHJlZ2lvbikNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gUG9wdWxhdGVkIGF0IHRoaXMgcG9pbnQ6IFN0YXJ0TGluZQ0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5TdGFydExpbmUgPiAwKTsNCg0KICAgICAgICAgICAgcmVnaW9uLkVuZExpbmUgPSByZWdpb24uRW5kTGluZSA9PSAwID8gcmVnaW9uLlN0YXJ0TGluZSA6IHJlZ2lvbi5FbmRMaW5lOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBQb3B1bGF0ZVN0YXJ0Q29sdW1uKFJlZ2lvbiByZWdpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFBvcHVsYXRlZCBhdCB0aGlzIHBvaW50OiBTdGFydExpbmUsIEVuZExpbmUNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRMaW5lID4gMCk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLkVuZExpbmUgPiAwKTsNCg0KICAgICAgICAgICAgcmVnaW9uLlN0YXJ0Q29sdW1uID0gcmVnaW9uLlN0YXJ0Q29sdW1uID09IDAgPyAxIDogcmVnaW9uLlN0YXJ0Q29sdW1uOw0KICAgICAgICB9DQoNCg0KICAgICAgICBwcml2YXRlIHZvaWQgUG9wdWxhdGVFbmRDb2x1bW4oTmV3TGluZUluZGV4IGxpbmVJbmRleCwgUmVnaW9uIHJlZ2lvbiwgc3RyaW5nIGZpbGVUZXh0KQ0KICAgICAgICB7DQogICAgICAgICAgICAvLyBQb3B1bGF0ZWQgYXQgdGhpcyBwb2ludDogU3RhcnRMaW5lLCBFbmRMaW5lLCBTdGFydENvbHVtbg0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5TdGFydExpbmUgPiAwKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRDb2x1bW4gPiAwKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uRW5kTGluZSA+IDApOw0KDQogICAgICAgICAgICBpZiAocmVnaW9uLkVuZENvbHVtbiA9PSAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIE5vIGV4cGxpY2l0IGVuZCBjb2x1bW4uIEluY3JlbWVudCBmcm9tIGVuZCBsaW5lIHRocm91Z2gNCiAgICAgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBsaW5lLCBleGNsdWRpbmcgbmV3IGxpbmUgY2hhcmFjdGVycw0KICAgICAgICAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvID0gbGluZUluZGV4LkdldExpbmVJbmZvRm9yTGluZShyZWdpb24uRW5kTGluZSk7DQogICAgICAgICAgICAgICAgaW50IGVuZENvbHVtbk9mZnNldCA9IGxpbmVJbmZvLlN0YXJ0T2Zmc2V0Ow0KDQogICAgICAgICAgICAgICAgd2hpbGUgKGVuZENvbHVtbk9mZnNldCA8IGZpbGVUZXh0Lkxlbmd0aCAmJg0KICAgICAgICAgICAgICAgICAgICAgICAhTmV3TGluZUluZGV4LnNfbmV3TGluZUNoYXJTZXQuQ29udGFpbnMoZmlsZVRleHRbZW5kQ29sdW1uT2Zmc2V0XSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBlbmRDb2x1bW5PZmZzZXQrKzsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBFbmQgY29sdW1ucyBhcmUgMS1pbmRleGVkDQogICAgICAgICAgICAgICAgcmVnaW9uLkVuZENvbHVtbiA9IGVuZENvbHVtbk9mZnNldCAtIGxpbmVJbmZvLlN0YXJ0T2Zmc2V0ICsgMTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgUG9wdWxhdGVDaGFyT2Zmc2V0KE5ld0xpbmVJbmRleCBsaW5lSW5kZXgsIFJlZ2lvbiByZWdpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFBvcHVsYXRlZCBhdCB0aGlzIHBvaW50OiBTdGFydExpbmUsIEVuZExpbmUsIFN0YXJ0Q29sdW1uLCBFbmRDb2x1bW4NCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRMaW5lID4gMCk7DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLkVuZExpbmUgPiAwKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uU3RhcnRDb2x1bW4gPiAwKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uRW5kQ29sdW1uID4gMCk7DQoNCiAgICAgICAgICAgIExpbmVJbmZvIGxpbmVJbmZvID0gbGluZUluZGV4LkdldExpbmVJbmZvRm9yTGluZShyZWdpb24uU3RhcnRMaW5lKTsNCg0KICAgICAgICAgICAgLy8gTm93IHdlIGhhdmUgdGhlIG9mZnNldCBvZiB0aGUgc3RhcnRpbmcgbGluZS4gUG9wdWxhdGUgcmVnaW9uLkNoYXJPZmZzZXQuDQogICAgICAgICAgICBpbnQgb2Zmc2V0ID0gbGluZUluZm8uU3RhcnRPZmZzZXQ7DQogICAgICAgICAgICBvZmZzZXQgKz0gcmVnaW9uLlN0YXJ0Q29sdW1uIC0gMTsNCg0KICAgICAgICAgICAgaWYgKHJlZ2lvbi5DaGFyT2Zmc2V0ID09IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmVnaW9uLkNoYXJPZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLkNoYXJPZmZzZXQgPT0gb2Zmc2V0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBQb3B1bGF0ZUNoYXJMZW5ndGgoTmV3TGluZUluZGV4IGxpbmVJbmRleCwgUmVnaW9uIHJlZ2lvbikNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gUG9wdWxhdGVkIGF0IHRoaXMgcG9pbnQ6IFN0YXJ0TGluZSwgRW5kTGluZSwgU3RhcnRDb2x1bW4sIEVuZENvbHVtbiwgQ2hhck9mZnNldA0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5TdGFydExpbmUgPiAwKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uRW5kTGluZSA+IDApOw0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5TdGFydENvbHVtbiA+IDApOw0KICAgICAgICAgICAgRGVidWcuQXNzZXJ0KHJlZ2lvbi5FbmRDb2x1bW4gPiAwKTsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChyZWdpb24uQ2hhck9mZnNldCA+IDAgfHwgKHJlZ2lvbi5TdGFydExpbmUgPT0gMSAmJiByZWdpb24uU3RhcnRDb2x1bW4gPT0gMSkpOw0KDQogICAgICAgICAgICBMaW5lSW5mbyBsaW5lSW5mbyA9IGxpbmVJbmRleC5HZXRMaW5lSW5mb0ZvckxpbmUocmVnaW9uLkVuZExpbmUpOw0KICAgICAgICAgICAgaW50IGNoYXJMZW5ndGggPSBsaW5lSW5mby5TdGFydE9mZnNldDsNCiAgICAgICAgICAgIGNoYXJMZW5ndGggLT0gcmVnaW9uLkNoYXJPZmZzZXQ7DQogICAgICAgICAgICBjaGFyTGVuZ3RoICs9IHJlZ2lvbi5FbmRDb2x1bW4gLSAxOw0KDQogICAgICAgICAgICBpZiAocmVnaW9uLkNoYXJMZW5ndGggPT0gMCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZWdpb24uQ2hhckxlbmd0aCA9IGNoYXJMZW5ndGg7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQocmVnaW9uLkNoYXJMZW5ndGggPT0gY2hhckxlbmd0aCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIE5ld0xpbmVJbmRleCBHZXROZXdMaW5lSW5kZXgoVXJpIHVyaSwgb3V0IHN0cmluZyBmaWxlVGV4dCkNCiAgICAgICAgew0KICAgICAgICAgICAgZmlsZVRleHQgPSBudWxsOw0KDQogICAgICAgICAgICAvLyBXZSB3aWxsIGV4cGFuZCB0aGlzIGNvZGUgbGF0ZXIgdG8gY29uc3RydWN0IGFsbCBwb3NzaWJsZSBVUkxzIGZyb20NCiAgICAgICAgICAgIC8vIHRoZSBsb2cgZmlsZSwgYmVhcmluZyBpbiBtaW5kIHRoaW5ncyBsaWtlIHVyaUJhc2VJZHMuIEFsc28sIHdlIGNvdWxkDQogICAgICAgICAgICAvLyBjb25zaWRlciBkb3dubG9hZGluZyBhbmQgY2FjaGluZyB3ZWItaG9zdGVkIHNvdXJjZSBmaWxlcy4NCiAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGZpbGVUZXh0ID0gX2ZpbGVTeXN0ZW0uUmVhZEFsbFRleHQodXJpLkxvY2FsUGF0aCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjYXRjaCAoSU9FeGNlcHRpb24pIHsgfQ0KDQogICAgICAgICAgICByZXR1cm4gZmlsZVRleHQgIT0gbnVsbCA/IG5ldyBOZXdMaW5lSW5kZXgoZmlsZVRleHQpIDogbnVsbDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'AdditionalItems.AdditionalItems(AdditionalItems)', validate parameter 'other' before using it."
},
- "hashes": [
- {
- "value": "B3617B1B20FFA43887A19417E632D728",
- "algorithm": "md5"
- },
- {
- "value": "8585D56E82EB1A3C9C563F1907E0A5DB22B31C5A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "0CE142F751CDB256928C9A411D8185BA65391F1E3910A3D5CAFB42B5D637B99B",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 32,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.AdditionalItems..ctor(Microsoft.Json.Schema.AdditionalItems)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Fix.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIHByb3Bvc2VkIGZpeCBmb3IgdGhlIHByb2JsZW0gcmVwcmVzZW50ZWQgYnkgYSByZXN1bHQgb2JqZWN0LiBBIGZpeCBzcGVjaWZpZXMgYSBzZXQgb2YgZmlsZSB0byBtb2RpZnkuIEZvciBlYWNoIGZpbGUsIGl0IHNwZWNpZmllcyBhIHNldCBvZiBieXRlcyB0byByZW1vdmUsIGFuZCBwcm92aWRlcyBhIHNldCBvZiBuZXcgYnl0ZXMgdG8gcmVwbGFjZSB0aGVtLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgRml4IDogSVNhcmlmTm9kZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxGaXg+IFZhbHVlQ29tcGFyZXIgPT4gRml4RXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGaXggb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kIFNhcmlmTm9kZUtpbmQNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmQuRml4Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHRoYXQgZGVzY3JpYmVzIHRoZSBwcm9wb3NlZCBmaXgsIGVuYWJsaW5nIHZpZXdlcnMgdG8gcHJlc2VudCB0aGUgcHJvcG9zZWQgY2hhbmdlIHRvIGFuIGVuZCB1c2VyLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImRlc2NyaXB0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBEZXNjcmlwdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gT25lIG9yIG1vcmUgZmlsZSBjaGFuZ2VzIHRoYXQgY29tcHJpc2UgYSBmaXggZm9yIGEgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZpbGVDaGFuZ2VzIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8RmlsZUNoYW5nZT4gRmlsZUNoYW5nZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpeCIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaXgoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaXgiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkZXNjcmlwdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRGVzY3JpcHRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmaWxlQ2hhbmdlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmlsZUNoYW5nZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIEZpeChNZXNzYWdlIGRlc2NyaXB0aW9uLCBJRW51bWVyYWJsZTxGaWxlQ2hhbmdlPiBmaWxlQ2hhbmdlcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChkZXNjcmlwdGlvbiwgZmlsZUNoYW5nZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRml4IiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBGaXgoRml4IG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLkRlc2NyaXB0aW9uLCBvdGhlci5GaWxlQ2hhbmdlcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlIElTYXJpZk5vZGUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEZpeCBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEZpeClEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgRml4KHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoTWVzc2FnZSBkZXNjcmlwdGlvbiwgSUVudW1lcmFibGU8RmlsZUNoYW5nZT4gZmlsZUNoYW5nZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChkZXNjcmlwdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0gbmV3IE1lc3NhZ2UoZGVzY3JpcHRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZmlsZUNoYW5nZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEZpbGVDaGFuZ2U+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gZmlsZUNoYW5nZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBGaWxlQ2hhbmdlKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEZpbGVDaGFuZ2VzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "D39862C9E21E601706D9A30EEBD951EB",
- "algorithm": "md5"
- },
- {
- "value": "3CEE49CFF9C0118F41A07F7935B4B8410A3A0420",
- "algorithm": "sha-1"
- },
- {
- "value": "54DFB5A61647923CC3F21093A891426DCA6F22424355CA797CAB1813D552254F",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Graph.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIG5ldHdvcmsgb2Ygbm9kZXMgYW5kIGRpcmVjdGVkIGVkZ2VzIHRoYXQgZGVzY3JpYmVzIHNvbWUgYXNwZWN0IG9mIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGUgKGZvciBleGFtcGxlLCBhIGNhbGwgZ3JhcGgpLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgR3JhcGggOiBQcm9wZXJ0eUJhZ0hvbGRlciwgSVNhcmlmTm9kZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxHcmFwaD4gVmFsdWVDb21wYXJlciA9PiBHcmFwaEVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoR3JhcGggb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kIFNhcmlmTm9kZUtpbmQNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmQuR3JhcGg7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIGdyYXBoIHdpdGhpbiBhIHJ1bi5ncmFwaHMgb3IgcmVzdWx0LmdyYXBocyBhcnJheS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJpZCIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBkZXNjcmlwdGlvbiBvZiB0aGUgZ3JhcGguDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZGVzY3JpcHRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIERlc2NyaXB0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBub2RlIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBub2RlcyBvZiB0aGUgZ3JhcGguDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibm9kZXMiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxOb2RlPiBOb2RlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgZWRnZSBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgZWRnZXMgb2YgdGhlIGdyYXBoLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImVkZ2VzIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8RWRnZT4gRWRnZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JhcGguDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJHcmFwaCIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBHcmFwaCgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkdyYXBoIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IElkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGVzY3JpcHRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IERlc2NyaXB0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibm9kZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE5vZGVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZWRnZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEVkZ2VzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgR3JhcGgoc3RyaW5nIGlkLCBNZXNzYWdlIGRlc2NyaXB0aW9uLCBJRW51bWVyYWJsZTxOb2RlPiBub2RlcywgSUVudW1lcmFibGU8RWRnZT4gZWRnZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChpZCwgZGVzY3JpcHRpb24sIG5vZGVzLCBlZGdlcywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJHcmFwaCIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgR3JhcGgoR3JhcGggb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuSWQsIG90aGVyLkRlc2NyaXB0aW9uLCBvdGhlci5Ob2Rlcywgb3RoZXIuRWRnZXMsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBHcmFwaCBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEdyYXBoKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBHcmFwaCh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBpZCwgTWVzc2FnZSBkZXNjcmlwdGlvbiwgSUVudW1lcmFibGU8Tm9kZT4gbm9kZXMsIElFbnVtZXJhYmxlPEVkZ2U+IGVkZ2VzLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIElkID0gaWQ7DQogICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9IG5ldyBNZXNzYWdlKGRlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG5vZGVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxOb2RlPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIG5vZGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgTm9kZSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBOb2RlcyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChlZGdlcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8xID0gbmV3IExpc3Q8RWRnZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiBlZGdlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzEuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMS5BZGQobmV3IEVkZ2UodmFsdWVfMSkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgRWRnZXMgPSBkZXN0aW5hdGlvbl8xOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'AdditionalProperties.AdditionalProperties(AdditionalProperties)', validate parameter 'other' before using it."
},
- "hashes": [
- {
- "value": "7667FE05490023183FCA84B295C6FDE4",
- "algorithm": "md5"
- },
- {
- "value": "7489A0F9246610BC9359F62A13CAA9C44825EBD4",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4C20A65274FE53B55E24A4FBF5872DDD42B51728FA5C2E7F3D4C19DB2E6A43E6",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 34,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.AdditionalProperties..ctor(Microsoft.Json.Schema.AdditionalProperties)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/GraphEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBHcmFwaCBmb3IgZXF1YWxpdHkuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgaW50ZXJuYWwgc2VhbGVkIGNsYXNzIEdyYXBoRXF1YWxpdHlDb21wYXJlciA6IElFcXVhbGl0eUNvbXBhcmVyPEdyYXBoPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IEdyYXBoRXF1YWxpdHlDb21wYXJlciBJbnN0YW5jZSA9IG5ldyBHcmFwaEVxdWFsaXR5Q29tcGFyZXIoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoR3JhcGggbGVmdCwgR3JhcGggcmlnaHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgcmlnaHQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIG51bGwpIHx8IFJlZmVyZW5jZUVxdWFscyhyaWdodCwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5JZCAhPSByaWdodC5JZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghTWVzc2FnZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkRlc2NyaXB0aW9uLCByaWdodC5EZXNjcmlwdGlvbikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Ob2RlcywgcmlnaHQuTm9kZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0Lk5vZGVzID09IG51bGwgfHwgcmlnaHQuTm9kZXMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Ob2Rlcy5Db3VudCAhPSByaWdodC5Ob2Rlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IGxlZnQuTm9kZXMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghTm9kZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0Lk5vZGVzW2luZGV4XzBdLCByaWdodC5Ob2Rlc1tpbmRleF8wXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuRWRnZXMsIHJpZ2h0LkVkZ2VzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5FZGdlcyA9PSBudWxsIHx8IHJpZ2h0LkVkZ2VzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuRWRnZXMuQ291bnQgIT0gcmlnaHQuRWRnZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMSA9IDA7IGluZGV4XzEgPCBsZWZ0LkVkZ2VzLkNvdW50OyArK2luZGV4XzEpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIUVkZ2UuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5FZGdlc1tpbmRleF8xXSwgcmlnaHQuRWRnZXNbaW5kZXhfMV0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlByb3BlcnRpZXMsIHJpZ2h0LlByb3BlcnRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCByaWdodC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgbGVmdC5Qcm9wZXJ0aWVzLkNvdW50ICE9IHJpZ2h0LlByb3BlcnRpZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFByb3BlcnR5SW5mbyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlByb3BlcnRpZXMuVHJ5R2V0VmFsdWUodmFsdWVfMC5LZXksIG91dCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QuRXF1YWxzKHZhbHVlXzAuVmFsdWUsIHZhbHVlXzEpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShHcmFwaCBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaW50IHJlc3VsdCA9IDE3Ow0KICAgICAgICAgICAgdW5jaGVja2VkDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG9iai5JZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5JZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRGVzY3JpcHRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRGVzY3JpcHRpb24uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouTm9kZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIG9iai5Ob2RlcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV8yLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRWRnZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8zIGluIG9iai5FZGdlcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV8zLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzAgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNCBpbiBvYmouUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV80LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8wOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'Dependency.Dependency(Dependency)', validate parameter 'other' before using it."
},
- "hashes": [
- {
- "value": "DAD93F85BFF7FD50C365E9F6588B3B02",
- "algorithm": "md5"
- },
- {
- "value": "46735D446A156A1A96251C6759932E5C0662E5BC",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "33168551F6E4C147517F367BB50DC013AC5016F270659134397941DF58B6B3D7",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 36,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.Dependency..ctor(Microsoft.Json.Schema.Dependency)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/GraphTraversal.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBSZXByZXNlbnRzIGEgcGF0aCB0aHJvdWdoIGEgZ3JhcGguDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBHcmFwaFRyYXZlcnNhbCA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEdyYXBoVHJhdmVyc2FsPiBWYWx1ZUNvbXBhcmVyID0+IEdyYXBoVHJhdmVyc2FsRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhHcmFwaFRyYXZlcnNhbCBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5HcmFwaFRyYXZlcnNhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RyaW5nIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGF0IGdyYXBoIGJlaW5nIHRyYXZlcnNlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJncmFwaElkIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEdyYXBoSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgZGVzY3JpcHRpb24gb2YgdGhpcyBncmFwaCB0cmF2ZXJzYWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZGVzY3JpcHRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIERlc2NyaXB0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBWYWx1ZXMgb2YgcmVsZXZhbnQgZXhwcmVzc2lvbnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBncmFwaCB0cmF2ZXJzYWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaW5pdGlhbFN0YXRlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IEluaXRpYWxTdGF0ZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHNlcXVlbmNlcyBvZiBlZGdlcyB0cmF2ZXJzZWQgYnkgdGhpcyBncmFwaCB0cmF2ZXJzYWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZWRnZVRyYXZlcnNhbHMiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxFZGdlVHJhdmVyc2FsPiBFZGdlVHJhdmVyc2FscyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBncmFwaCB0cmF2ZXJzYWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJHcmFwaFRyYXZlcnNhbCIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBHcmFwaFRyYXZlcnNhbCgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkdyYXBoVHJhdmVyc2FsIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZ3JhcGhJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogR3JhcGhJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImRlc2NyaXB0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBEZXNjcmlwdGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImluaXRpYWxTdGF0ZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSW5pdGlhbFN0YXRlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZWRnZVRyYXZlcnNhbHMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEVkZ2VUcmF2ZXJzYWxzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWwoc3RyaW5nIGdyYXBoSWQsIE1lc3NhZ2UgZGVzY3JpcHRpb24sIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBpbml0aWFsU3RhdGUsIElFbnVtZXJhYmxlPEVkZ2VUcmF2ZXJzYWw+IGVkZ2VUcmF2ZXJzYWxzLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoZ3JhcGhJZCwgZGVzY3JpcHRpb24sIGluaXRpYWxTdGF0ZSwgZWRnZVRyYXZlcnNhbHMsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iR3JhcGhUcmF2ZXJzYWwiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEdyYXBoVHJhdmVyc2FsKEdyYXBoVHJhdmVyc2FsIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLkdyYXBoSWQsIG90aGVyLkRlc2NyaXB0aW9uLCBvdGhlci5Jbml0aWFsU3RhdGUsIG90aGVyLkVkZ2VUcmF2ZXJzYWxzLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgR3JhcGhUcmF2ZXJzYWwgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChHcmFwaFRyYXZlcnNhbClEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhUcmF2ZXJzYWwodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChzdHJpbmcgZ3JhcGhJZCwgTWVzc2FnZSBkZXNjcmlwdGlvbiwgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IGluaXRpYWxTdGF0ZSwgSUVudW1lcmFibGU8RWRnZVRyYXZlcnNhbD4gZWRnZVRyYXZlcnNhbHMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgR3JhcGhJZCA9IGdyYXBoSWQ7DQogICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9IG5ldyBNZXNzYWdlKGRlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGluaXRpYWxTdGF0ZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEluaXRpYWxTdGF0ZSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPihpbml0aWFsU3RhdGUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZWRnZVRyYXZlcnNhbHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEVkZ2VUcmF2ZXJzYWw+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gZWRnZVRyYXZlcnNhbHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBFZGdlVHJhdmVyc2FsKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEVkZ2VUcmF2ZXJzYWxzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1002",
+ "level": "error",
+ "message": {
+ "text": "Change 'List' in 'Dependency.PropertyDependencies' to use Collection, ReadOnlyCollection or KeyedCollection"
},
- "hashes": [
- {
- "value": "1A8F58A3C41689D3C9FA97EDF43D0605",
- "algorithm": "md5"
- },
- {
- "value": "4D6B1633A9FEC1EC85CCE950F1FF0582D23A961E",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "90B96FBC44AAED062F8BEDBB915976DC160A83E8301E0A9DC4E582A29AD94F27",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 37,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.Dependency.PropertyDependencies"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/GraphTraversalEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBHcmFwaFRyYXZlcnNhbCBmb3IgZXF1YWxpdHkuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgaW50ZXJuYWwgc2VhbGVkIGNsYXNzIEdyYXBoVHJhdmVyc2FsRXF1YWxpdHlDb21wYXJlciA6IElFcXVhbGl0eUNvbXBhcmVyPEdyYXBoVHJhdmVyc2FsPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IEdyYXBoVHJhdmVyc2FsRXF1YWxpdHlDb21wYXJlciBJbnN0YW5jZSA9IG5ldyBHcmFwaFRyYXZlcnNhbEVxdWFsaXR5Q29tcGFyZXIoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoR3JhcGhUcmF2ZXJzYWwgbGVmdCwgR3JhcGhUcmF2ZXJzYWwgcmlnaHQpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgcmlnaHQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIG51bGwpIHx8IFJlZmVyZW5jZUVxdWFscyhyaWdodCwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5HcmFwaElkICE9IHJpZ2h0LkdyYXBoSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIU1lc3NhZ2UuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5EZXNjcmlwdGlvbiwgcmlnaHQuRGVzY3JpcHRpb24pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuSW5pdGlhbFN0YXRlLCByaWdodC5Jbml0aWFsU3RhdGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkluaXRpYWxTdGF0ZSA9PSBudWxsIHx8IHJpZ2h0LkluaXRpYWxTdGF0ZSA9PSBudWxsIHx8IGxlZnQuSW5pdGlhbFN0YXRlLkNvdW50ICE9IHJpZ2h0LkluaXRpYWxTdGF0ZS5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBsZWZ0LkluaXRpYWxTdGF0ZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LkluaXRpYWxTdGF0ZS5UcnlHZXRWYWx1ZSh2YWx1ZV8wLktleSwgb3V0IHZhbHVlXzEpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMC5WYWx1ZSAhPSB2YWx1ZV8xKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkVkZ2VUcmF2ZXJzYWxzLCByaWdodC5FZGdlVHJhdmVyc2FscykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuRWRnZVRyYXZlcnNhbHMgPT0gbnVsbCB8fCByaWdodC5FZGdlVHJhdmVyc2FscyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkVkZ2VUcmF2ZXJzYWxzLkNvdW50ICE9IHJpZ2h0LkVkZ2VUcmF2ZXJzYWxzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbGVmdC5FZGdlVHJhdmVyc2Fscy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFFZGdlVHJhdmVyc2FsLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuRWRnZVRyYXZlcnNhbHNbaW5kZXhfMF0sIHJpZ2h0LkVkZ2VUcmF2ZXJzYWxzW2luZGV4XzBdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Qcm9wZXJ0aWVzLCByaWdodC5Qcm9wZXJ0aWVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgcmlnaHQuUHJvcGVydGllcyA9PSBudWxsIHx8IGxlZnQuUHJvcGVydGllcy5Db3VudCAhPSByaWdodC5Qcm9wZXJ0aWVzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIGxlZnQuUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gdmFsdWVfMzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5Qcm9wZXJ0aWVzLlRyeUdldFZhbHVlKHZhbHVlXzIuS2V5LCBvdXQgdmFsdWVfMykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LkVxdWFscyh2YWx1ZV8yLlZhbHVlLCB2YWx1ZV8zKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoR3JhcGhUcmF2ZXJzYWwgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG9iaiwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGludCByZXN1bHQgPSAxNzsNCiAgICAgICAgICAgIHVuY2hlY2tlZA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChvYmouR3JhcGhJZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5HcmFwaElkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5EZXNjcmlwdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5EZXNjcmlwdGlvbi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Jbml0aWFsU3RhdGUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gb2JqLkluaXRpYWxTdGF0ZSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV80LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8wOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRWRnZVRyYXZlcnNhbHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV81IGluIG9iai5FZGdlVHJhdmVyc2FscykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV81LlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzEgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNiBpbiBvYmouUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzEgXj0gdmFsdWVfNi5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV82LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzEgXj0gdmFsdWVfNi5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8xOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'DependencyConverter.WriteJson(JsonWriter, object, JsonSerializer)', validate parameter 'writer' before using it."
},
- "hashes": [
- {
- "value": "1F97D4CAB80D4FD51268CD0EAA519716",
- "algorithm": "md5"
- },
- {
- "value": "6B4E8C65424B839DC7447ACBCE9EDB2C0F9B9381",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "174B9FB99C831201C3FE9DCE518246B0B269F90108334291B14820EE7CBC1E76",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 39,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.DependencyConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/HashData.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIHB1YmxpYyBjbGFzcyBIYXNoRGF0YQ0KICAgIHsNCiAgICAgICAgcHVibGljIEhhc2hEYXRhKHN0cmluZyBtZDUsIHN0cmluZyBzaGExLCBzdHJpbmcgc2hhMjU2KQ0KICAgICAgICB7DQogICAgICAgICAgICBNRDUgPSBtZDU7DQogICAgICAgICAgICBTaGExID0gc2hhMTsNCiAgICAgICAgICAgIFNoYTI1NiA9IHNoYTI1NjsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTUQ1IHsgZ2V0OyB9DQoNCiAgICAgICAgcHVibGljIHN0cmluZyBTaGExIHsgZ2V0OyB9DQoNCiAgICAgICAgcHVibGljIHN0cmluZyBTaGEyNTYgeyBnZXQ7IH0NCg0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1716",
+ "level": "error",
+ "message": {
+ "text": "Rename type 'Error' so that it no longer conflicts with the reserved language keyword 'Error'. Using a reserved keyword as the name of a type makes it harder for consumers in other languages to use the type.",
+ "id": "Type"
},
- "hashes": [
- {
- "value": "8AE9735908187B129F32D064E180FDEC",
- "algorithm": "md5"
- },
- {
- "value": "B138469380253478B851532B25383CF48AC8F5EE",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4111A595C3044B7C6415250D61BEB7B173D4456FF0D6706D44E291E60D80C4FB",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 40,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.Error"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Error#Type"
+ },
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/HashUtilities.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3MuQ29kZUFuYWx5c2lzOw0KdXNpbmcgU3lzdGVtLklPOw0KdXNpbmcgU3lzdGVtLlNlY3VyaXR5LkNyeXB0b2dyYXBoeTsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEhhc2hVdGlsaXRpZXMNCiAgICB7DQogICAgICAgIFtTdXBwcmVzc01lc3NhZ2UoIk1pY3Jvc29mdC5TZWN1cml0eS5DcnlwdG9ncmFwaHkiLCAiQ0E1MzU0OlNIQTFDYW5ub3RCZVVzZWQiKV0NCiAgICAgICAgW1N1cHByZXNzTWVzc2FnZSgiTWljcm9zb2Z0LlNlY3VyaXR5LkNyeXB0b2dyYXBoeSIsICJDQTUzNTA6TUQ1Q2Fubm90QmVVc2VkIildDQogICAgICAgIHB1YmxpYyBzdGF0aWMgSGFzaERhdGEgQ29tcHV0ZUhhc2hlcyhzdHJpbmcgZmlsZU5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHVzaW5nIChGaWxlU3RyZWFtIHN0cmVhbSA9IEZpbGUuT3BlblJlYWQoZmlsZU5hbWUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBidWZmZXJlZFN0cmVhbSA9IG5ldyBCdWZmZXJlZFN0cmVhbShzdHJlYW0sIDEwMjQgKiAzMikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBtZDUsIHNoYTEsIHNoYTI1NjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBjaGVja3N1bTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBtZDVDbmcgPSBNRDUuQ3JlYXRlKCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tzdW0gPSBtZDVDbmcuQ29tcHV0ZUhhc2goYnVmZmVyZWRTdHJlYW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1kNSA9IEJpdENvbnZlcnRlci5Ub1N0cmluZyhjaGVja3N1bSkuUmVwbGFjZSgiLSIsIHN0cmluZy5FbXB0eSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5TZWVrKDAsIFNlZWtPcmlnaW4uQmVnaW4pOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyZWRTdHJlYW0uU2VlaygwLCBTZWVrT3JpZ2luLkJlZ2luKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBzaGExQ25nID0gU0hBMS5DcmVhdGUoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSA9IHNoYTFDbmcuQ29tcHV0ZUhhc2goYnVmZmVyZWRTdHJlYW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYTEgPSBCaXRDb252ZXJ0ZXIuVG9TdHJpbmcoY2hlY2tzdW0pLlJlcGxhY2UoIi0iLCBzdHJpbmcuRW1wdHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0uU2VlaygwLCBTZWVrT3JpZ2luLkJlZ2luKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmVkU3RyZWFtLlNlZWsoMCwgU2Vla09yaWdpbi5CZWdpbik7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nICh2YXIgc2hhMjU2Q25nID0gU0hBMjU2LkNyZWF0ZSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gc2hhMjU2Q25nLkNvbXB1dGVIYXNoKGJ1ZmZlcmVkU3RyZWFtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGEyNTYgPSBCaXRDb252ZXJ0ZXIuVG9TdHJpbmcoY2hlY2tzdW0pLlJlcGxhY2UoIi0iLCBzdHJpbmcuRW1wdHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEhhc2hEYXRhKG1kNSwgc2hhMSwgc2hhMjU2KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbikgeyB9DQogICAgICAgICAgICBjYXRjaCAoVW5hdXRob3JpemVkQWNjZXNzRXhjZXB0aW9uKSB7IH0NCiAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgQ29tcHV0ZVNoYTI1Nkhhc2goc3RyaW5nIGZpbGVOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgc2hhMjU2SGFzaCA9IG51bGw7DQoNCiAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHVzaW5nIChGaWxlU3RyZWFtIHN0cmVhbSA9IEZpbGUuT3BlblJlYWQoZmlsZU5hbWUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBidWZmZXJlZFN0cmVhbSA9IG5ldyBCdWZmZXJlZFN0cmVhbShzdHJlYW0sIDEwMjQgKiAzMikpDQogICAgICAgICAgICAgICAgICAgIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBzaGEgPSBTSEEyNTYuQ3JlYXRlKCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGNoZWNrc3VtID0gc2hhLkNvbXB1dGVIYXNoKGJ1ZmZlcmVkU3RyZWFtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGEyNTZIYXNoID0gQml0Q29udmVydGVyLlRvU3RyaW5nKGNoZWNrc3VtKS5SZXBsYWNlKCItIiwgc3RyaW5nLkVtcHR5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbikgeyB9DQogICAgICAgICAgICBjYXRjaCAoVW5hdXRob3JpemVkQWNjZXNzRXhjZXB0aW9uKSB7IH0NCiAgICAgICAgICAgIHJldHVybiBzaGEyNTZIYXNoOw0KICAgICAgICB9DQoNCiAgICAgICAgW1N1cHByZXNzTWVzc2FnZSgiTWljcm9zb2Z0LlNlY3VyaXR5LkNyeXB0b2dyYXBoeSIsICJDQTUzNTQ6U0hBMUNhbm5vdEJlVXNlZCIpXQ0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBDb21wdXRlU2hhMUhhc2goc3RyaW5nIGZpbGVOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgc2hhMSA9IG51bGw7DQoNCiAgICAgICAgICAgIHRyeQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHVzaW5nIChGaWxlU3RyZWFtIHN0cmVhbSA9IEZpbGUuT3BlblJlYWQoZmlsZU5hbWUpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBidWZmZXJlZFN0cmVhbSA9IG5ldyBCdWZmZXJlZFN0cmVhbShzdHJlYW0sIDEwMjQgKiAzMikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nICh2YXIgc2hhID0gU0hBMS5DcmVhdGUoKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlW10gY2hlY2tzdW0gPSBzaGEuQ29tcHV0ZUhhc2goYnVmZmVyZWRTdHJlYW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYTEgPSBCaXRDb252ZXJ0ZXIuVG9TdHJpbmcoY2hlY2tzdW0pLlJlcGxhY2UoIi0iLCBzdHJpbmcuRW1wdHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uKSB7IH0NCiAgICAgICAgICAgIGNhdGNoIChVbmF1dGhvcml6ZWRBY2Nlc3NFeGNlcHRpb24pIHsgfQ0KICAgICAgICAgICAgcmV0dXJuIHNoYTE7DQogICAgICAgIH0NCg0KICAgICAgICBbU3VwcHJlc3NNZXNzYWdlKCJNaWNyb3NvZnQuU2VjdXJpdHkuQ3J5cHRvZ3JhcGh5IiwgIkNBNTM1MDpNRDVDYW5ub3RCZVVzZWQiKV0NCiAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgQ29tcHV0ZU1ENUhhc2goc3RyaW5nIGZpbGVOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBzdHJpbmcgbWQ1ID0gbnVsbDsNCg0KICAgICAgICAgICAgdHJ5DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdXNpbmcgKEZpbGVTdHJlYW0gc3RyZWFtID0gRmlsZS5PcGVuUmVhZChmaWxlTmFtZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB1c2luZyAodmFyIGJ1ZmZlcmVkU3RyZWFtID0gbmV3IEJ1ZmZlcmVkU3RyZWFtKHN0cmVhbSwgMTAyNCAqIDMyKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgKHZhciBzaGEgPSBNRDUuQ3JlYXRlKCkpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGNoZWNrc3VtID0gc2hhLkNvbXB1dGVIYXNoKGJ1ZmZlcmVkU3RyZWFtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZDUgPSBCaXRDb252ZXJ0ZXIuVG9TdHJpbmcoY2hlY2tzdW0pLlJlcGxhY2UoIi0iLCBzdHJpbmcuRW1wdHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uKSB7IH0NCiAgICAgICAgICAgIGNhdGNoIChVbmF1dGhvcml6ZWRBY2Nlc3NFeGNlcHRpb24pIHsgfQ0KICAgICAgICAgICAgcmV0dXJuIG1kNTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA2201",
+ "level": "error",
+ "message": {
+ "text": "'Error.CreateException(string, params object[])' creates an exception of type 'ApplicationException', an exception type that is not sufficiently specific and should never be raised by user code. If this exception instance might be thrown, use a different exception type.",
+ "id": "TooGeneric"
},
- "hashes": [
- {
- "value": "3E618462D24AFB5387B1CA0D2EC2DB5D",
- "algorithm": "md5"
- },
- {
- "value": "394E5E11D3AABE71A42B17302E84DA41A28D4526",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "ACFA6AEC53C2C6436C9D6F8502AF9DCFF152B9E3E75BE8FCD231CF646469086B",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 41,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.Error.CreateException(System.String,System.Object[])"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "TooGeneric"
+ },
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Invocation.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBUaGUgcnVudGltZSBlbnZpcm9ubWVudCBvZiB0aGUgYW5hbHlzaXMgdG9vbCBydW4uDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBJbnZvY2F0aW9uIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8SW52b2NhdGlvbj4gVmFsdWVDb21wYXJlciA9PiBJbnZvY2F0aW9uRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhJbnZvY2F0aW9uIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLkludm9jYXRpb247DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNldCBvZiBmaWxlcyByZWxldmFudCB0byB0aGUgaW52b2NhdGlvbiBvZiB0aGUgdG9vbC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhdHRhY2htZW50cyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PEF0dGFjaG1lbnQ+IEF0dGFjaG1lbnRzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgY29tbWFuZCBsaW5lIHVzZWQgdG8gaW52b2tlIHRoZSB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvbW1hbmRMaW5lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIENvbW1hbmRMaW5lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBzdHJpbmdzLCBjb250YWluaW5nIGluIG9yZGVyIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgdG9vbCBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImFyZ3VtZW50cyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PHN0cmluZz4gQXJndW1lbnRzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbG9jYXRpb25zIG9mIGFueSByZXNwb25zZSBmaWxlcyBzcGVjaWZpZWQgb24gdGhlIHRvb2wncyBjb21tYW5kIGxpbmUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicmVzcG9uc2VGaWxlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PEZpbGVMb2NhdGlvbj4gUmVzcG9uc2VGaWxlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGRhdGUgYW5kIHRpbWUgYXQgd2hpY2ggdGhlIHJ1biBzdGFydGVkLiBTZWUgIkRhdGUvdGltZSBwcm9wZXJ0aWVzIiBpbiB0aGUgU0FSSUYgc3BlYyBmb3IgdGhlIHJlcXVpcmVkIGZvcm1hdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGFydFRpbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBEYXRlVGltZSBTdGFydFRpbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBkYXRlIGFuZCB0aW1lIGF0IHdoaWNoIHRoZSBydW4gZW5kZWQuIFNlZSAiRGF0ZS90aW1lIHByb3BlcnRpZXMiIGluIHRoZSAgU0FSSUYgc3BlYyBmb3IgdGhlIHJlcXVpcmVkIGZvcm1hdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJlbmRUaW1lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRGF0ZVRpbWUgRW5kVGltZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHByb2Nlc3MgZXhpdCBjb2RlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImV4aXRDb2RlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IEV4aXRDb2RlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGxpc3Qgb2YgcnVudGltZSBjb25kaXRpb25zIGRldGVjdGVkIGJ5IHRoZSB0b29sIGluIHRoZSBjb3Vyc2Ugb2YgdGhlIGFuYWx5c2lzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInRvb2xOb3RpZmljYXRpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8Tm90aWZpY2F0aW9uPiBUb29sTm90aWZpY2F0aW9ucyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBsaXN0IG9mIGNvbmRpdGlvbnMgZGV0ZWN0ZWQgYnkgdGhlIHRvb2wgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhlIHRvb2wncyBjb25maWd1cmF0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8Tm90aWZpY2F0aW9uPiBDb25maWd1cmF0aW9uTm90aWZpY2F0aW9ucyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHJlYXNvbiBmb3IgdGhlIHByb2Nlc3MgZXhpdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJleGl0Q29kZURlc2NyaXB0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEV4aXRDb2RlRGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBuYW1lIG9mIHRoZSBzaWduYWwgdGhhdCBjYXVzZWQgdGhlIHByb2Nlc3MgdG8gZXhpdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJleGl0U2lnbmFsTmFtZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBFeGl0U2lnbmFsTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG51bWVyaWMgdmFsdWUgb2YgdGhlIHNpZ25hbCB0aGF0IGNhdXNlZCB0aGUgcHJvY2VzcyB0byBleGl0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImV4aXRTaWduYWxOdW1iZXIiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgRXhpdFNpZ25hbE51bWJlciB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHJlYXNvbiBnaXZlbiBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IHRoZSBwcm9jZXNzIGZhaWxlZCB0byBzdGFydC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBQcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRvb2wncyBleGVjdXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ0b29sRXhlY3V0aW9uU3VjY2Vzc2Z1bCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGJvb2wgVG9vbEV4ZWN1dGlvblN1Y2Nlc3NmdWwgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBtYWNoaW5lIHRoYXQgaG9zdGVkIHRoZSBhbmFseXNpcyB0b29sIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtYWNoaW5lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1hY2hpbmUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBhY2NvdW50IHRoYXQgcmFuIHRoZSBhbmFseXNpcyB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImFjY291bnQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgQWNjb3VudCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHByb2Nlc3MgaWQgZm9yIHRoZSBhbmFseXNpcyB0b29sIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9jZXNzSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgUHJvY2Vzc0lkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhYnNvbHV0ZSBVUkkgc3BlY2lmeWluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGFuYWx5c2lzIHRvb2wncyBleGVjdXRhYmxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImV4ZWN1dGFibGVMb2NhdGlvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIEZpbGVMb2NhdGlvbiBFeGVjdXRhYmxlTG9jYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIGFuYWx5c2lzIHJvb2wgcnVuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIndvcmtpbmdEaXJlY3RvcnkiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgV29ya2luZ0RpcmVjdG9yeSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGFuYWx5c2lzIHRvb2wgcHJvY2VzcywgZXhwcmVzc2VkIGFzIGtleS92YWx1ZSBwYWlycy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJlbnZpcm9ubWVudFZhcmlhYmxlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBFbnZpcm9ubWVudFZhcmlhYmxlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBmaWxlIGNvbnRhaW5pbmcgdGhlIHN0YW5kYXJkIGlucHV0IHN0cmVhbSB0byB0aGUgcHJvY2VzcyB0aGF0IHdhcyBpbnZva2VkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN0ZGluIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRmlsZUxvY2F0aW9uIFN0ZGluIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGZpbGUgY29udGFpbmluZyB0aGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBmcm9tIHRoZSBwcm9jZXNzIHRoYXQgd2FzIGludm9rZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAic3Rkb3V0IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRmlsZUxvY2F0aW9uIFN0ZG91dCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBmaWxlIGNvbnRhaW5pbmcgdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbSBmcm9tIHRoZSBwcm9jZXNzIHRoYXQgd2FzIGludm9rZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAic3RkZXJyIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRmlsZUxvY2F0aW9uIFN0ZGVyciB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBmaWxlIGNvbnRhaW5pbmcgdGhlIGludGVybGVhdmVkIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGZyb20gdGhlIHByb2Nlc3MgdGhhdCB3YXMgaW52b2tlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGRvdXRTdGRlcnIiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24gU3Rkb3V0U3RkZXJyIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ikludm9jYXRpb24iIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgSW52b2NhdGlvbigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ikludm9jYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhdHRhY2htZW50cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQXR0YWNobWVudHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb21tYW5kTGluZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ29tbWFuZExpbmUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhcmd1bWVudHMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEFyZ3VtZW50cyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJlc3BvbnNlRmlsZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJlc3BvbnNlRmlsZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGFydFRpbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0YXJ0VGltZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImVuZFRpbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEVuZFRpbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJleGl0Q29kZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRXhpdENvZGUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0b29sTm90aWZpY2F0aW9ucyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVG9vbE5vdGlmaWNhdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb25maWd1cmF0aW9uTm90aWZpY2F0aW9ucyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJleGl0Q29kZURlc2NyaXB0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBFeGl0Q29kZURlc2NyaXB0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZXhpdFNpZ25hbE5hbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEV4aXRTaWduYWxOYW1lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZXhpdFNpZ25hbE51bWJlciI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRXhpdFNpZ25hbE51bWJlciIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb2Nlc3NTdGFydEZhaWx1cmVNZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRvb2xFeGVjdXRpb25TdWNjZXNzZnVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUb29sRXhlY3V0aW9uU3VjY2Vzc2Z1bCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1hY2hpbmUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1hY2hpbmUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhY2NvdW50Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBY2NvdW50IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvY2Vzc0lkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9jZXNzSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJleGVjdXRhYmxlTG9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEV4ZWN1dGFibGVMb2NhdGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9IndvcmtpbmdEaXJlY3RvcnkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFdvcmtpbmdEaXJlY3RvcnkiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlbnZpcm9ubWVudFZhcmlhYmxlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRW52aXJvbm1lbnRWYXJpYWJsZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGRpbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RkaW4iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGRvdXQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0ZG91dCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0ZGVyciI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RkZXJyIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3Rkb3V0U3RkZXJyIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTdGRvdXRTdGRlcnIiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBJbnZvY2F0aW9uKElFbnVtZXJhYmxlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzLCBzdHJpbmcgY29tbWFuZExpbmUsIElFbnVtZXJhYmxlPHN0cmluZz4gYXJndW1lbnRzLCBJRW51bWVyYWJsZTxGaWxlTG9jYXRpb24+IHJlc3BvbnNlRmlsZXMsIERhdGVUaW1lIHN0YXJ0VGltZSwgRGF0ZVRpbWUgZW5kVGltZSwgaW50IGV4aXRDb2RlLCBJRW51bWVyYWJsZTxOb3RpZmljYXRpb24+IHRvb2xOb3RpZmljYXRpb25zLCBJRW51bWVyYWJsZTxOb3RpZmljYXRpb24+IGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zLCBzdHJpbmcgZXhpdENvZGVEZXNjcmlwdGlvbiwgc3RyaW5nIGV4aXRTaWduYWxOYW1lLCBpbnQgZXhpdFNpZ25hbE51bWJlciwgc3RyaW5nIHByb2Nlc3NTdGFydEZhaWx1cmVNZXNzYWdlLCBib29sIHRvb2xFeGVjdXRpb25TdWNjZXNzZnVsLCBzdHJpbmcgbWFjaGluZSwgc3RyaW5nIGFjY291bnQsIGludCBwcm9jZXNzSWQsIEZpbGVMb2NhdGlvbiBleGVjdXRhYmxlTG9jYXRpb24sIHN0cmluZyB3b3JraW5nRGlyZWN0b3J5LCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gZW52aXJvbm1lbnRWYXJpYWJsZXMsIEZpbGVMb2NhdGlvbiBzdGRpbiwgRmlsZUxvY2F0aW9uIHN0ZG91dCwgRmlsZUxvY2F0aW9uIHN0ZGVyciwgRmlsZUxvY2F0aW9uIHN0ZG91dFN0ZGVyciwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGF0dGFjaG1lbnRzLCBjb21tYW5kTGluZSwgYXJndW1lbnRzLCByZXNwb25zZUZpbGVzLCBzdGFydFRpbWUsIGVuZFRpbWUsIGV4aXRDb2RlLCB0b29sTm90aWZpY2F0aW9ucywgY29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMsIGV4aXRDb2RlRGVzY3JpcHRpb24sIGV4aXRTaWduYWxOYW1lLCBleGl0U2lnbmFsTnVtYmVyLCBwcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSwgdG9vbEV4ZWN1dGlvblN1Y2Nlc3NmdWwsIG1hY2hpbmUsIGFjY291bnQsIHByb2Nlc3NJZCwgZXhlY3V0YWJsZUxvY2F0aW9uLCB3b3JraW5nRGlyZWN0b3J5LCBlbnZpcm9ubWVudFZhcmlhYmxlcywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBzdGRvdXRTdGRlcnIsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iSW52b2NhdGlvbiIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgSW52b2NhdGlvbihJbnZvY2F0aW9uIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLkF0dGFjaG1lbnRzLCBvdGhlci5Db21tYW5kTGluZSwgb3RoZXIuQXJndW1lbnRzLCBvdGhlci5SZXNwb25zZUZpbGVzLCBvdGhlci5TdGFydFRpbWUsIG90aGVyLkVuZFRpbWUsIG90aGVyLkV4aXRDb2RlLCBvdGhlci5Ub29sTm90aWZpY2F0aW9ucywgb3RoZXIuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMsIG90aGVyLkV4aXRDb2RlRGVzY3JpcHRpb24sIG90aGVyLkV4aXRTaWduYWxOYW1lLCBvdGhlci5FeGl0U2lnbmFsTnVtYmVyLCBvdGhlci5Qcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSwgb3RoZXIuVG9vbEV4ZWN1dGlvblN1Y2Nlc3NmdWwsIG90aGVyLk1hY2hpbmUsIG90aGVyLkFjY291bnQsIG90aGVyLlByb2Nlc3NJZCwgb3RoZXIuRXhlY3V0YWJsZUxvY2F0aW9uLCBvdGhlci5Xb3JraW5nRGlyZWN0b3J5LCBvdGhlci5FbnZpcm9ubWVudFZhcmlhYmxlcywgb3RoZXIuU3RkaW4sIG90aGVyLlN0ZG91dCwgb3RoZXIuU3RkZXJyLCBvdGhlci5TdGRvdXRTdGRlcnIsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBJbnZvY2F0aW9uIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoSW52b2NhdGlvbilEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgSW52b2NhdGlvbih0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KElFbnVtZXJhYmxlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzLCBzdHJpbmcgY29tbWFuZExpbmUsIElFbnVtZXJhYmxlPHN0cmluZz4gYXJndW1lbnRzLCBJRW51bWVyYWJsZTxGaWxlTG9jYXRpb24+IHJlc3BvbnNlRmlsZXMsIERhdGVUaW1lIHN0YXJ0VGltZSwgRGF0ZVRpbWUgZW5kVGltZSwgaW50IGV4aXRDb2RlLCBJRW51bWVyYWJsZTxOb3RpZmljYXRpb24+IHRvb2xOb3RpZmljYXRpb25zLCBJRW51bWVyYWJsZTxOb3RpZmljYXRpb24+IGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zLCBzdHJpbmcgZXhpdENvZGVEZXNjcmlwdGlvbiwgc3RyaW5nIGV4aXRTaWduYWxOYW1lLCBpbnQgZXhpdFNpZ25hbE51bWJlciwgc3RyaW5nIHByb2Nlc3NTdGFydEZhaWx1cmVNZXNzYWdlLCBib29sIHRvb2xFeGVjdXRpb25TdWNjZXNzZnVsLCBzdHJpbmcgbWFjaGluZSwgc3RyaW5nIGFjY291bnQsIGludCBwcm9jZXNzSWQsIEZpbGVMb2NhdGlvbiBleGVjdXRhYmxlTG9jYXRpb24sIHN0cmluZyB3b3JraW5nRGlyZWN0b3J5LCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gZW52aXJvbm1lbnRWYXJpYWJsZXMsIEZpbGVMb2NhdGlvbiBzdGRpbiwgRmlsZUxvY2F0aW9uIHN0ZG91dCwgRmlsZUxvY2F0aW9uIHN0ZGVyciwgRmlsZUxvY2F0aW9uIHN0ZG91dFN0ZGVyciwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoYXR0YWNobWVudHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEF0dGFjaG1lbnQ+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gYXR0YWNobWVudHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBBdHRhY2htZW50KHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgQ29tbWFuZExpbmUgPSBjb21tYW5kTGluZTsNCiAgICAgICAgICAgIGlmIChhcmd1bWVudHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMSA9IG5ldyBMaXN0PHN0cmluZz4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiBhcmd1bWVudHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZCh2YWx1ZV8xKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBBcmd1bWVudHMgPSBkZXN0aW5hdGlvbl8xOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmVzcG9uc2VGaWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8yID0gbmV3IExpc3Q8RmlsZUxvY2F0aW9uPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIHJlc3BvbnNlRmlsZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMiA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8yLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzIuQWRkKG5ldyBGaWxlTG9jYXRpb24odmFsdWVfMikpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgUmVzcG9uc2VGaWxlcyA9IGRlc3RpbmF0aW9uXzI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFN0YXJ0VGltZSA9IHN0YXJ0VGltZTsNCiAgICAgICAgICAgIEVuZFRpbWUgPSBlbmRUaW1lOw0KICAgICAgICAgICAgRXhpdENvZGUgPSBleGl0Q29kZTsNCiAgICAgICAgICAgIGlmICh0b29sTm90aWZpY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8zID0gbmV3IExpc3Q8Tm90aWZpY2F0aW9uPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8zIGluIHRvb2xOb3RpZmljYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMy5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8zLkFkZChuZXcgTm90aWZpY2F0aW9uKHZhbHVlXzMpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFRvb2xOb3RpZmljYXRpb25zID0gZGVzdGluYXRpb25fMzsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzQgPSBuZXcgTGlzdDxOb3RpZmljYXRpb24+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gY29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl80LkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzQuQWRkKG5ldyBOb3RpZmljYXRpb24odmFsdWVfNCkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMgPSBkZXN0aW5hdGlvbl80Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBFeGl0Q29kZURlc2NyaXB0aW9uID0gZXhpdENvZGVEZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIEV4aXRTaWduYWxOYW1lID0gZXhpdFNpZ25hbE5hbWU7DQogICAgICAgICAgICBFeGl0U2lnbmFsTnVtYmVyID0gZXhpdFNpZ25hbE51bWJlcjsNCiAgICAgICAgICAgIFByb2Nlc3NTdGFydEZhaWx1cmVNZXNzYWdlID0gcHJvY2Vzc1N0YXJ0RmFpbHVyZU1lc3NhZ2U7DQogICAgICAgICAgICBUb29sRXhlY3V0aW9uU3VjY2Vzc2Z1bCA9IHRvb2xFeGVjdXRpb25TdWNjZXNzZnVsOw0KICAgICAgICAgICAgTWFjaGluZSA9IG1hY2hpbmU7DQogICAgICAgICAgICBBY2NvdW50ID0gYWNjb3VudDsNCiAgICAgICAgICAgIFByb2Nlc3NJZCA9IHByb2Nlc3NJZDsNCiAgICAgICAgICAgIGlmIChleGVjdXRhYmxlTG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBFeGVjdXRhYmxlTG9jYXRpb24gPSBuZXcgRmlsZUxvY2F0aW9uKGV4ZWN1dGFibGVMb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFdvcmtpbmdEaXJlY3RvcnkgPSB3b3JraW5nRGlyZWN0b3J5Ow0KICAgICAgICAgICAgaWYgKGVudmlyb25tZW50VmFyaWFibGVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRW52aXJvbm1lbnRWYXJpYWJsZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4oZW52aXJvbm1lbnRWYXJpYWJsZXMpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoc3RkaW4gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBTdGRpbiA9IG5ldyBGaWxlTG9jYXRpb24oc3RkaW4pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoc3Rkb3V0ICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3Rkb3V0ID0gbmV3IEZpbGVMb2NhdGlvbihzdGRvdXQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoc3RkZXJyICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RkZXJyID0gbmV3IEZpbGVMb2NhdGlvbihzdGRlcnIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoc3Rkb3V0U3RkZXJyICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3Rkb3V0U3RkZXJyID0gbmV3IEZpbGVMb2NhdGlvbihzdGRvdXRTdGRlcnIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'Items.Items(Items)', validate parameter 'other' before using it."
},
- "hashes": [
- {
- "value": "B7F8F1E56B3DB529CB8B97DA4E67EC49",
- "algorithm": "md5"
- },
- {
- "value": "83F087D5D609D90A60944362D701F07F920B2051",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F94D7323790A0DA57D309D51C4800E61D2F04567BE49D220713640979E3F6E90",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 43,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.Items..ctor(Microsoft.Json.Schema.Items)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/Invocation.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uTGlucTsNCnVzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIEludm9jYXRpb24NCiAgICB7DQogICAgICAgIHByaXZhdGUgSUVudW1lcmFibGU8c3RyaW5nPiBQcm9wZXJ0aWVzVG9Mb2cge2dldDsgc2V0OyB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBJbnZvY2F0aW9uIENyZWF0ZSgNCiAgICAgICAgICAgIGJvb2wgZW1pdE1hY2hpbmVFbnZpcm9ubWVudCA9IGZhbHNlLA0KICAgICAgICAgICAgSUVudW1lcmFibGU8c3RyaW5nPiBwcm9wZXJ0aWVzVG9Mb2cgPSBudWxsKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgaW52b2NhdGlvbiA9IG5ldyBJbnZvY2F0aW9uDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllc1RvTG9nID0gcHJvcGVydGllc1RvTG9nPy5TZWxlY3QocCA9PiBwLlRvVXBwZXJJbnZhcmlhbnQoKSkuVG9MaXN0KCkNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIGludm9jYXRpb24uU3RhcnRUaW1lID0gRGF0ZVRpbWUuVXRjTm93Ow0KDQogICAgICAgICAgICBpZiAoaW52b2NhdGlvbi5TaG91bGRMb2cobmFtZW9mKFByb2Nlc3NJZCkpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGludm9jYXRpb24uUHJvY2Vzc0lkID0gU3lzdGVtLkRpYWdub3N0aWNzLlByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGludm9jYXRpb24uU2hvdWxkTG9nKG5hbWVvZihXb3JraW5nRGlyZWN0b3J5KSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW52b2NhdGlvbi5Xb3JraW5nRGlyZWN0b3J5ID0gRW52aXJvbm1lbnQuQ3VycmVudERpcmVjdG9yeTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGludm9jYXRpb24uU2hvdWxkTG9nKG5hbWVvZihDb21tYW5kTGluZSkpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGludm9jYXRpb24uQ29tbWFuZExpbmUgPSBFbnZpcm9ubWVudC5Db21tYW5kTGluZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGVtaXRNYWNoaW5lRW52aXJvbm1lbnQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW52b2NhdGlvbi5NYWNoaW5lID0gRW52aXJvbm1lbnQuTWFjaGluZU5hbWU7DQogICAgICAgICAgICAgICAgaW52b2NhdGlvbi5BY2NvdW50ID0gRW52aXJvbm1lbnQuVXNlck5hbWU7DQogICAgICAgICAgICAgICAgaW52b2NhdGlvbi5FbnZpcm9ubWVudFZhcmlhYmxlcyA9IENvcHlFbnZpcm9ubWVudFZhcmlhYmxlcygpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoaW52b2NhdGlvbi5TaG91bGRMb2cobmFtZW9mKEV4ZWN1dGFibGVMb2NhdGlvbikpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEFzc2VtYmx5IGFzc2VtYmx5ID0gQXNzZW1ibHkuR2V0RW50cnlBc3NlbWJseSgpID8/IEFzc2VtYmx5LkdldEV4ZWN1dGluZ0Fzc2VtYmx5KCk7DQogICAgICAgICAgICAgICAgaW52b2NhdGlvbi5FeGVjdXRhYmxlTG9jYXRpb24uVXJpID0gbmV3IFVyaShhc3NlbWJseS5Mb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBpbnZvY2F0aW9uOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IENvcHlFbnZpcm9ubWVudFZhcmlhYmxlcygpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4oKTsNCiAgICAgICAgICAgIHZhciB2YXJpYWJsZXMgPSBFbnZpcm9ubWVudC5HZXRFbnZpcm9ubWVudFZhcmlhYmxlcygpOw0KDQogICAgICAgICAgICBmb3JlYWNoIChEaWN0aW9uYXJ5RW50cnkgZW50cnkgaW4gdmFyaWFibGVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdFsoc3RyaW5nKWVudHJ5LktleV0gPSAoc3RyaW5nKWVudHJ5LlZhbHVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBib29sIFNob3VsZExvZyhzdHJpbmcgcHJvcGVydHlOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gUHJvcGVydGllc1RvTG9nICE9IG51bGwgJiYgUHJvcGVydGllc1RvTG9nLkNvbnRhaW5zKHByb3BlcnR5TmFtZS5Ub1VwcGVySW52YXJpYW50KCkpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'Items.Schemas' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "8F2CE7A51BEDCDA0B96E20EAFA68B16F",
- "algorithm": "md5"
- },
- {
- "value": "30BDAA3886EB9ED2B7E10607E97AC57EB3D1751D",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "68BDC2EF50BC992E6AF2F81E5C6B88CFB24ED794B4C9976B5B5A75186F1A228D",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 44,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.Items.Schemas"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/InvocationEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBJbnZvY2F0aW9uIGZvciBlcXVhbGl0eS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgSW52b2NhdGlvbkVxdWFsaXR5Q29tcGFyZXIgOiBJRXF1YWxpdHlDb21wYXJlcjxJbnZvY2F0aW9uPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IEludm9jYXRpb25FcXVhbGl0eUNvbXBhcmVyIEluc3RhbmNlID0gbmV3IEludm9jYXRpb25FcXVhbGl0eUNvbXBhcmVyKCk7DQoNCiAgICAgICAgcHVibGljIGJvb2wgRXF1YWxzKEludm9jYXRpb24gbGVmdCwgSW52b2NhdGlvbiByaWdodCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCByaWdodCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgbnVsbCkgfHwgUmVmZXJlbmNlRXF1YWxzKHJpZ2h0LCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkF0dGFjaG1lbnRzLCByaWdodC5BdHRhY2htZW50cykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuQXR0YWNobWVudHMgPT0gbnVsbCB8fCByaWdodC5BdHRhY2htZW50cyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkF0dGFjaG1lbnRzLkNvdW50ICE9IHJpZ2h0LkF0dGFjaG1lbnRzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbGVmdC5BdHRhY2htZW50cy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFBdHRhY2htZW50LlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuQXR0YWNobWVudHNbaW5kZXhfMF0sIHJpZ2h0LkF0dGFjaG1lbnRzW2luZGV4XzBdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5Db21tYW5kTGluZSAhPSByaWdodC5Db21tYW5kTGluZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkFyZ3VtZW50cywgcmlnaHQuQXJndW1lbnRzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Bcmd1bWVudHMgPT0gbnVsbCB8fCByaWdodC5Bcmd1bWVudHMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Bcmd1bWVudHMuQ291bnQgIT0gcmlnaHQuQXJndW1lbnRzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzEgPSAwOyBpbmRleF8xIDwgbGVmdC5Bcmd1bWVudHMuQ291bnQ7ICsraW5kZXhfMSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0LkFyZ3VtZW50c1tpbmRleF8xXSAhPSByaWdodC5Bcmd1bWVudHNbaW5kZXhfMV0pDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUmVzcG9uc2VGaWxlcywgcmlnaHQuUmVzcG9uc2VGaWxlcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUmVzcG9uc2VGaWxlcyA9PSBudWxsIHx8IHJpZ2h0LlJlc3BvbnNlRmlsZXMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5SZXNwb25zZUZpbGVzLkNvdW50ICE9IHJpZ2h0LlJlc3BvbnNlRmlsZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMiA9IDA7IGluZGV4XzIgPCBsZWZ0LlJlc3BvbnNlRmlsZXMuQ291bnQ7ICsraW5kZXhfMikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghRmlsZUxvY2F0aW9uLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuUmVzcG9uc2VGaWxlc1tpbmRleF8yXSwgcmlnaHQuUmVzcG9uc2VGaWxlc1tpbmRleF8yXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuU3RhcnRUaW1lICE9IHJpZ2h0LlN0YXJ0VGltZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkVuZFRpbWUgIT0gcmlnaHQuRW5kVGltZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkV4aXRDb2RlICE9IHJpZ2h0LkV4aXRDb2RlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuVG9vbE5vdGlmaWNhdGlvbnMsIHJpZ2h0LlRvb2xOb3RpZmljYXRpb25zKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Ub29sTm90aWZpY2F0aW9ucyA9PSBudWxsIHx8IHJpZ2h0LlRvb2xOb3RpZmljYXRpb25zID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuVG9vbE5vdGlmaWNhdGlvbnMuQ291bnQgIT0gcmlnaHQuVG9vbE5vdGlmaWNhdGlvbnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMyA9IDA7IGluZGV4XzMgPCBsZWZ0LlRvb2xOb3RpZmljYXRpb25zLkNvdW50OyArK2luZGV4XzMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIU5vdGlmaWNhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlRvb2xOb3RpZmljYXRpb25zW2luZGV4XzNdLCByaWdodC5Ub29sTm90aWZpY2F0aW9uc1tpbmRleF8zXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMsIHJpZ2h0LkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9ucyA9PSBudWxsIHx8IHJpZ2h0LkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMuQ291bnQgIT0gcmlnaHQuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfNCA9IDA7IGluZGV4XzQgPCBsZWZ0LkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zLkNvdW50OyArK2luZGV4XzQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIU5vdGlmaWNhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zW2luZGV4XzRdLCByaWdodC5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9uc1tpbmRleF80XSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuRXhpdENvZGVEZXNjcmlwdGlvbiAhPSByaWdodC5FeGl0Q29kZURlc2NyaXB0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuRXhpdFNpZ25hbE5hbWUgIT0gcmlnaHQuRXhpdFNpZ25hbE5hbWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5FeGl0U2lnbmFsTnVtYmVyICE9IHJpZ2h0LkV4aXRTaWduYWxOdW1iZXIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5Qcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSAhPSByaWdodC5Qcm9jZXNzU3RhcnRGYWlsdXJlTWVzc2FnZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlRvb2xFeGVjdXRpb25TdWNjZXNzZnVsICE9IHJpZ2h0LlRvb2xFeGVjdXRpb25TdWNjZXNzZnVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTWFjaGluZSAhPSByaWdodC5NYWNoaW5lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQWNjb3VudCAhPSByaWdodC5BY2NvdW50KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuUHJvY2Vzc0lkICE9IHJpZ2h0LlByb2Nlc3NJZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghRmlsZUxvY2F0aW9uLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuRXhlY3V0YWJsZUxvY2F0aW9uLCByaWdodC5FeGVjdXRhYmxlTG9jYXRpb24pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuV29ya2luZ0RpcmVjdG9yeSAhPSByaWdodC5Xb3JraW5nRGlyZWN0b3J5KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuRW52aXJvbm1lbnRWYXJpYWJsZXMsIHJpZ2h0LkVudmlyb25tZW50VmFyaWFibGVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5FbnZpcm9ubWVudFZhcmlhYmxlcyA9PSBudWxsIHx8IHJpZ2h0LkVudmlyb25tZW50VmFyaWFibGVzID09IG51bGwgfHwgbGVmdC5FbnZpcm9ubWVudFZhcmlhYmxlcy5Db3VudCAhPSByaWdodC5FbnZpcm9ubWVudFZhcmlhYmxlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBsZWZ0LkVudmlyb25tZW50VmFyaWFibGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHZhbHVlXzE7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuRW52aXJvbm1lbnRWYXJpYWJsZXMuVHJ5R2V0VmFsdWUodmFsdWVfMC5LZXksIG91dCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAuVmFsdWUgIT0gdmFsdWVfMSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIUZpbGVMb2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlN0ZGluLCByaWdodC5TdGRpbikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIUZpbGVMb2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlN0ZG91dCwgcmlnaHQuU3Rkb3V0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghRmlsZUxvY2F0aW9uLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuU3RkZXJyLCByaWdodC5TdGRlcnIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFGaWxlTG9jYXRpb24uVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5TdGRvdXRTdGRlcnIsIHJpZ2h0LlN0ZG91dFN0ZGVycikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Qcm9wZXJ0aWVzLCByaWdodC5Qcm9wZXJ0aWVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgcmlnaHQuUHJvcGVydGllcyA9PSBudWxsIHx8IGxlZnQuUHJvcGVydGllcy5Db3VudCAhPSByaWdodC5Qcm9wZXJ0aWVzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIGxlZnQuUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gdmFsdWVfMzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5Qcm9wZXJ0aWVzLlRyeUdldFZhbHVlKHZhbHVlXzIuS2V5LCBvdXQgdmFsdWVfMykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LkVxdWFscyh2YWx1ZV8yLlZhbHVlLCB2YWx1ZV8zKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoSW52b2NhdGlvbiBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaW50IHJlc3VsdCA9IDE3Ow0KICAgICAgICAgICAgdW5jaGVja2VkDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG9iai5BdHRhY2htZW50cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gb2JqLkF0dGFjaG1lbnRzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV80ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzQuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Db21tYW5kTGluZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Db21tYW5kTGluZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouQXJndW1lbnRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNSBpbiBvYmouQXJndW1lbnRzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV81ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUmVzcG9uc2VGaWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzYgaW4gb2JqLlJlc3BvbnNlRmlsZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzYgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfNi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlN0YXJ0VGltZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRW5kVGltZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRXhpdENvZGUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlRvb2xOb3RpZmljYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNyBpbiBvYmouVG9vbE5vdGlmaWNhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzcgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfNy5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOCBpbiBvYmouQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzggIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfOC5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkV4aXRDb2RlRGVzY3JpcHRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRXhpdENvZGVEZXNjcmlwdGlvbi5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRXhpdFNpZ25hbE5hbWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRXhpdFNpZ25hbE5hbWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkV4aXRTaWduYWxOdW1iZXIuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlByb2Nlc3NTdGFydEZhaWx1cmVNZXNzYWdlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlByb2Nlc3NTdGFydEZhaWx1cmVNZXNzYWdlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Ub29sRXhlY3V0aW9uU3VjY2Vzc2Z1bC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouTWFjaGluZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5NYWNoaW5lLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5BY2NvdW50ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkFjY291bnQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlByb2Nlc3NJZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouRXhlY3V0YWJsZUxvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkV4ZWN1dGFibGVMb2NhdGlvbi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Xb3JraW5nRGlyZWN0b3J5ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLldvcmtpbmdEaXJlY3RvcnkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkVudmlyb25tZW50VmFyaWFibGVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV85IGluIG9iai5FbnZpcm9ubWVudFZhcmlhYmxlcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfOS5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV85LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfOS5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8wOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouU3RkaW4gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouU3RkaW4uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouU3Rkb3V0ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlN0ZG91dC5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5TdGRlcnIgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouU3RkZXJyLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlN0ZG91dFN0ZGVyciAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5TdGRvdXRTdGRlcnIuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzEgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMTAgaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8xIF49IHZhbHVlXzEwLktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEwLlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzEgXj0gdmFsdWVfMTAuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2104",
+ "level": "error",
+ "message": {
+ "text": "Remove the read-only designation from 'ItemsConverter.Instance' or change the field to one that is an immutable reference type. If the reference type 'ItemsConverter' is, in fact, immutable, exclude this message."
},
- "hashes": [
- {
- "value": "E3D8FCCB82FB0787C532DCB3F4078AEE",
- "algorithm": "md5"
- },
- {
- "value": "ECBEA09D7A59885EF430C7201442E4BAC8B871FE",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "5616A76578C3D6C3F402B3CB06947A764FFAD849FA4159B71F1EDD7DE150713A",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 46,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.ItemsConverter.Instance"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Security",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Location.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBUaGUgbG9jYXRpb24gd2hlcmUgYW4gYW5hbHlzaXMgdG9vbCBwcm9kdWNlZCBhIHJlc3VsdC4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIExvY2F0aW9uIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8TG9jYXRpb24+IFZhbHVlQ29tcGFyZXIgPT4gTG9jYXRpb25FcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKExvY2F0aW9uIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLkxvY2F0aW9uOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSWRlbnRpZmllcyB0aGUgZmlsZSB3aGVyZSB0aGUgYW5hbHlzaXMgdG9vbCBwcm9kdWNlZCB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInBoeXNpY2FsTG9jYXRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBQaHlzaWNhbExvY2F0aW9uIFBoeXNpY2FsTG9jYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBodW1hbi1yZWFkYWJsZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbG9naWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgYW5hbHlzaXMgdG9vbCBwcm9kdWNlZCB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHJlbGV2YW50IHRvIHRoZSBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNldCBvZiByZWdpb25zIHJlbGV2YW50IHRvIHRoZSBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhbm5vdGF0aW9ucyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFJlZ2lvbj4gQW5ub3RhdGlvbnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJMb2NhdGlvbiIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBMb2NhdGlvbigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkxvY2F0aW9uIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGh5c2ljYWxMb2NhdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUGh5c2ljYWxMb2NhdGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYW5ub3RhdGlvbnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEFubm90YXRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgTG9jYXRpb24oUGh5c2ljYWxMb2NhdGlvbiBwaHlzaWNhbExvY2F0aW9uLCBzdHJpbmcgZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSwgTWVzc2FnZSBtZXNzYWdlLCBJRW51bWVyYWJsZTxSZWdpb24+IGFubm90YXRpb25zLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQocGh5c2ljYWxMb2NhdGlvbiwgZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSwgbWVzc2FnZSwgYW5ub3RhdGlvbnMsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTG9jYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIExvY2F0aW9uKExvY2F0aW9uIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLlBoeXNpY2FsTG9jYXRpb24sIG90aGVyLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIG90aGVyLk1lc3NhZ2UsIG90aGVyLkFubm90YXRpb25zLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgTG9jYXRpb24gRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChMb2NhdGlvbilEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgTG9jYXRpb24odGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChQaHlzaWNhbExvY2F0aW9uIHBoeXNpY2FsTG9jYXRpb24sIHN0cmluZyBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lLCBNZXNzYWdlIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFJlZ2lvbj4gYW5ub3RhdGlvbnMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHBoeXNpY2FsTG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24ocGh5c2ljYWxMb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgPSBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lOw0KICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UobWVzc2FnZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChhbm5vdGF0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8wID0gbmV3IExpc3Q8UmVnaW9uPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGFubm90YXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgUmVnaW9uKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEFubm90YXRpb25zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'ItemsConverter.WriteJson(JsonWriter, object, JsonSerializer)', validate parameter 'writer' before using it."
},
- "hashes": [
- {
- "value": "304BA61E2EA0D957F92B58810F0A6EE3",
- "algorithm": "md5"
- },
- {
- "value": "CD5D7D810A7B15284F0A59ECB3B6858DDD606F2A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "A9BEA81D95B646499752F1FDAF3561CD4BD1444450F9D3E5B19147A5A4B3A282",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 47,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.ItemsConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Message.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBFbmNhcHN1bGF0ZXMgYSBtZXNzYWdlIGludGVuZGVkIHRvIGJlIHJlYWQgYnkgdGhlIGVuZCB1c2VyLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgTWVzc2FnZSA6IElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8TWVzc2FnZT4gVmFsdWVDb21wYXJlciA9PiBNZXNzYWdlRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhNZXNzYWdlIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLk1lc3NhZ2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHBsYWluIHRleHQgbWVzc2FnZSBzdHJpbmcuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGV4dCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBUZXh0IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgcmVzb3VyY2UgaWQgZm9yIGEgcGxhaW4gdGV4dCBtZXNzYWdlIHN0cmluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTWVzc2FnZUlkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHJpY2ggdGV4dCBtZXNzYWdlIHN0cmluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJyaWNoVGV4dCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBSaWNoVGV4dCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHJlc291cmNlIGlkIGZvciBhIHJpY2ggdGV4dCBtZXNzYWdlIHN0cmluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJyaWNoTWVzc2FnZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJpY2hNZXNzYWdlSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGFycmF5IG9mIHN0cmluZ3MgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBtZXNzYWdlIHN0cmluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhcmd1bWVudHMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxzdHJpbmc+IEFyZ3VtZW50cyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTWVzc2FnZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBNZXNzYWdlKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTWVzc2FnZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRleHQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRleHQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlSWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2VJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJpY2hUZXh0Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSaWNoVGV4dCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJpY2hNZXNzYWdlSWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJpY2hNZXNzYWdlSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhcmd1bWVudHMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEFyZ3VtZW50cyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgTWVzc2FnZShzdHJpbmcgdGV4dCwgc3RyaW5nIG1lc3NhZ2VJZCwgc3RyaW5nIHJpY2hUZXh0LCBzdHJpbmcgcmljaE1lc3NhZ2VJZCwgSUVudW1lcmFibGU8c3RyaW5nPiBhcmd1bWVudHMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQodGV4dCwgbWVzc2FnZUlkLCByaWNoVGV4dCwgcmljaE1lc3NhZ2VJZCwgYXJndW1lbnRzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik1lc3NhZ2UiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIE1lc3NhZ2UoTWVzc2FnZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5UZXh0LCBvdGhlci5NZXNzYWdlSWQsIG90aGVyLlJpY2hUZXh0LCBvdGhlci5SaWNoTWVzc2FnZUlkLCBvdGhlci5Bcmd1bWVudHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBNZXNzYWdlIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoTWVzc2FnZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgTWVzc2FnZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyB0ZXh0LCBzdHJpbmcgbWVzc2FnZUlkLCBzdHJpbmcgcmljaFRleHQsIHN0cmluZyByaWNoTWVzc2FnZUlkLCBJRW51bWVyYWJsZTxzdHJpbmc+IGFyZ3VtZW50cykNCiAgICAgICAgew0KICAgICAgICAgICAgVGV4dCA9IHRleHQ7DQogICAgICAgICAgICBNZXNzYWdlSWQgPSBtZXNzYWdlSWQ7DQogICAgICAgICAgICBSaWNoVGV4dCA9IHJpY2hUZXh0Ow0KICAgICAgICAgICAgUmljaE1lc3NhZ2VJZCA9IHJpY2hNZXNzYWdlSWQ7DQogICAgICAgICAgICBpZiAoYXJndW1lbnRzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxzdHJpbmc+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gYXJndW1lbnRzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQodmFsdWVfMCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgQXJndW1lbnRzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "F5BAA08F493A944DD3F9A0B08940472B",
- "algorithm": "md5"
- },
- {
- "value": "CED8BAF3A2EBAAB14386E8EDC40BB1D918F694EB",
- "algorithm": "sha-1"
- },
- {
- "value": "0D70C6C8FB7367177FAC0EA130104BA6881D7D9C3AD834B50D9CBB5B8768EF95",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Node.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBSZXByZXNlbnRzIGEgbm9kZSBpbiBhIGdyYXBoLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgTm9kZSA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPE5vZGU+IFZhbHVlQ29tcGFyZXIgPT4gTm9kZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoTm9kZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5Ob2RlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBub2RlIHdpdGhpbiBpdHMgZ3JhcGguDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaWQiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc2hvcnQgZGVzY3JpcHRpb24gb2YgdGhlIG5vZGUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibGFiZWwiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIExhYmVsIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGNvZGUgbG9jYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvY2F0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTG9jYXRpb24gTG9jYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFycmF5IG9mIGNoaWxkIG5vZGVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNoaWxkcmVuIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8Tm9kZT4gQ2hpbGRyZW4geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9kZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik5vZGUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgTm9kZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik5vZGUiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsYWJlbCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTGFiZWwiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2NhdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTG9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjaGlsZHJlbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ2hpbGRyZW4iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBOb2RlKHN0cmluZyBpZCwgTWVzc2FnZSBsYWJlbCwgTG9jYXRpb24gbG9jYXRpb24sIElFbnVtZXJhYmxlPE5vZGU+IGNoaWxkcmVuLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoaWQsIGxhYmVsLCBsb2NhdGlvbiwgY2hpbGRyZW4sIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm9kZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgTm9kZShOb2RlIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLklkLCBvdGhlci5MYWJlbCwgb3RoZXIuTG9jYXRpb24sIG90aGVyLkNoaWxkcmVuLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgTm9kZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKE5vZGUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IE5vZGUodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChzdHJpbmcgaWQsIE1lc3NhZ2UgbGFiZWwsIExvY2F0aW9uIGxvY2F0aW9uLCBJRW51bWVyYWJsZTxOb2RlPiBjaGlsZHJlbiwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJZCA9IGlkOw0KICAgICAgICAgICAgaWYgKGxhYmVsICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTGFiZWwgPSBuZXcgTWVzc2FnZShsYWJlbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIExvY2F0aW9uID0gbmV3IExvY2F0aW9uKGxvY2F0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNoaWxkcmVuICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxOb2RlPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGNoaWxkcmVuKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgTm9kZSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBDaGlsZHJlbiA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'JsonSchema.JsonSchema(JsonSchema)', validate parameter 'other' before using it."
},
- "hashes": [
- {
- "value": "AE683B289E9F3A8BE53B898076A90CDF",
- "algorithm": "md5"
- },
- {
- "value": "4C9D90EB84C3A61C29A27DFA86876B9A5428D430",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F95EED45A5E8F3F48B1761C30447544A1583F260E13E53CC53DE9194B04B5D93",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 49,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema..ctor(Microsoft.Json.Schema.JsonSchema)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Notification.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBEZXNjcmliZXMgYSBjb25kaXRpb24gcmVsZXZhbnQgdG8gdGhlIHRvb2wgaXRzZWxmLCBhcyBvcHBvc2VkIHRvIGJlaW5nIHJlbGV2YW50IHRvIGEgdGFyZ2V0IGJlaW5nIGFuYWx5emVkIGJ5IHRoZSB0b29sLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgTm90aWZpY2F0aW9uIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8Tm90aWZpY2F0aW9uPiBWYWx1ZUNvbXBhcmVyID0+IE5vdGlmaWNhdGlvbkVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoTm90aWZpY2F0aW9uIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLk5vdGlmaWNhdGlvbjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBjb25kaXRpb24gdGhhdCB3YXMgZW5jb3VudGVyZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzdGFibGUsIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydWxlIChpZiBhbnkpIHRvIHdoaWNoIHRoaXMgbm90aWZpY2F0aW9uIGlzIHJlbGV2YW50LiBJZiAncnVsZUtleScgaXMgbm90IHNwZWNpZmllZCwgdGhpcyBtZW1iZXIgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgcnVsZSBtZXRhZGF0YSBmcm9tIHRoZSBydWxlcyBkaWN0aW9uYXJ5LCBpZiBpdCBleGlzdHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGZpbGUgYW5kIHJlZ2lvbiByZWxldmFudCB0byB0aGlzIG5vdGlmaWNhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwaHlzaWNhbExvY2F0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgUGh5c2ljYWxMb2NhdGlvbiBQaHlzaWNhbExvY2F0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIG1lc3NhZ2UgdGhhdCBkZXNjcmliZXMgdGhlIGNvbmRpdGlvbiB0aGF0IHdhcyBlbmNvdW50ZXJlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHZhbHVlIHNwZWNpZnlpbmcgdGhlIHNldmVyaXR5IGxldmVsIG9mIHRoZSBub3RpZmljYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibGV2ZWwiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBOb3RpZmljYXRpb25MZXZlbCBMZXZlbCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRocmVhZCBpZGVudGlmaWVyIG9mIHRoZSBjb2RlIHRoYXQgZ2VuZXJhdGVkIHRoZSBub3RpZmljYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGhyZWFkSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgVGhyZWFkSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBkYXRlIGFuZCB0aW1lIGF0IHdoaWNoIHRoZSBhbmFseXNpcyB0b29sIGdlbmVyYXRlZCB0aGUgbm90aWZpY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInRpbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBEYXRlVGltZSBUaW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgcnVudGltZSBleGNlcHRpb24sIGlmIGFueSwgcmVsZXZhbnQgdG8gdGhpcyBub3RpZmljYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZXhjZXB0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRXhjZXB0aW9uRGF0YSBFeGNlcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm90aWZpY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm90aWZpY2F0aW9uIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIE5vdGlmaWNhdGlvbigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik5vdGlmaWNhdGlvbiIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1bGVJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUnVsZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGh5c2ljYWxMb2NhdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUGh5c2ljYWxMb2NhdGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsZXZlbCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTGV2ZWwiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0aHJlYWRJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVGhyZWFkSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0aW1lIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUaW1lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBFeGNlcHRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBOb3RpZmljYXRpb24oc3RyaW5nIGlkLCBzdHJpbmcgcnVsZUlkLCBQaHlzaWNhbExvY2F0aW9uIHBoeXNpY2FsTG9jYXRpb24sIE1lc3NhZ2UgbWVzc2FnZSwgTm90aWZpY2F0aW9uTGV2ZWwgbGV2ZWwsIGludCB0aHJlYWRJZCwgRGF0ZVRpbWUgdGltZSwgRXhjZXB0aW9uRGF0YSBleGNlcHRpb24sIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChpZCwgcnVsZUlkLCBwaHlzaWNhbExvY2F0aW9uLCBtZXNzYWdlLCBsZXZlbCwgdGhyZWFkSWQsIHRpbWUsIGV4Y2VwdGlvbiwgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJOb3RpZmljYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24gb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuSWQsIG90aGVyLlJ1bGVJZCwgb3RoZXIuUGh5c2ljYWxMb2NhdGlvbiwgb3RoZXIuTWVzc2FnZSwgb3RoZXIuTGV2ZWwsIG90aGVyLlRocmVhZElkLCBvdGhlci5UaW1lLCBvdGhlci5FeGNlcHRpb24sIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBOb3RpZmljYXRpb24gRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChOb3RpZmljYXRpb24pRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IE5vdGlmaWNhdGlvbih0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBpZCwgc3RyaW5nIHJ1bGVJZCwgUGh5c2ljYWxMb2NhdGlvbiBwaHlzaWNhbExvY2F0aW9uLCBNZXNzYWdlIG1lc3NhZ2UsIE5vdGlmaWNhdGlvbkxldmVsIGxldmVsLCBpbnQgdGhyZWFkSWQsIERhdGVUaW1lIHRpbWUsIEV4Y2VwdGlvbkRhdGEgZXhjZXB0aW9uLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIElkID0gaWQ7DQogICAgICAgICAgICBSdWxlSWQgPSBydWxlSWQ7DQogICAgICAgICAgICBpZiAocGh5c2ljYWxMb2NhdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFBoeXNpY2FsTG9jYXRpb24gPSBuZXcgUGh5c2ljYWxMb2NhdGlvbihwaHlzaWNhbExvY2F0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UobWVzc2FnZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIExldmVsID0gbGV2ZWw7DQogICAgICAgICAgICBUaHJlYWRJZCA9IHRocmVhZElkOw0KICAgICAgICAgICAgVGltZSA9IHRpbWU7DQogICAgICAgICAgICBpZiAoZXhjZXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRXhjZXB0aW9uID0gbmV3IEV4Y2VwdGlvbkRhdGEoZXhjZXB0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "337377498B9A6A224540DD3CB90792E0",
- "algorithm": "md5"
- },
- {
- "value": "09A4E4D60A87F0341A09BAB253EBCCF9DD22E625",
- "algorithm": "sha-1"
- },
- {
- "value": "A9025B0C9C3534A1CF3ECBEF647FD4D44C4C746A2651B1E0587FA483D72E6483",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/PropertiesDictionary.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBOZXd0b25zb2Z0Lkpzb247DQp1c2luZyBOZXd0b25zb2Z0Lkpzb24uTGlucTsNCnVzaW5nIFN5c3RlbTsNCnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkltbXV0YWJsZTsNCnVzaW5nIFN5c3RlbS5Db21wb25lbnRNb2RlbDsNCnVzaW5nIFN5c3RlbS5JTzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBTeXN0ZW0uWG1sOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIFtTZXJpYWxpemFibGVdDQogICAgW0pzb25Db252ZXJ0ZXIodHlwZW9mKFR5cGVkUHJvcGVydGllc0RpY3Rpb25hcnlDb252ZXJ0ZXIpKV0NCiAgICBwdWJsaWMgY2xhc3MgUHJvcGVydGllc0RpY3Rpb25hcnkgOiBUeXBlZFByb3BlcnRpZXNEaWN0aW9uYXJ5PG9iamVjdD4NCiAgICB7DQogICAgICAgIGludGVybmFsIGNvbnN0IHN0cmluZyBERUZBVUxUX1BPTElDWV9OQU1FID0gImRlZmF1bHQiOw0KDQogICAgICAgIHB1YmxpYyBQcm9wZXJ0aWVzRGljdGlvbmFyeSgpIDogdGhpcyhudWxsKSB7IH0NCg0KICAgICAgICBwdWJsaWMgUHJvcGVydGllc0RpY3Rpb25hcnkoUHJvcGVydGllc0RpY3Rpb25hcnkgaW5pdGlhbGl6ZXIpIDoNCiAgICAgICAgICAgIHRoaXMoaW5pdGlhbGl6ZXIsIG51bGwpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBQcm9wZXJ0aWVzRGljdGlvbmFyeSgNCiAgICAgICAgICAgIFByb3BlcnRpZXNEaWN0aW9uYXJ5IGluaXRpYWxpemVyLA0KICAgICAgICAgICAgSUVxdWFsaXR5Q29tcGFyZXI8c3RyaW5nPiBjb21wYXJlcikNCiAgICAgICAgICAgIDogYmFzZShpbml0aWFsaXplciwgY29tcGFyZXIpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIHByb3RlY3RlZCBQcm9wZXJ0aWVzRGljdGlvbmFyeShTZXJpYWxpemF0aW9uSW5mbyBpbmZvLCBTdHJlYW1pbmdDb250ZXh0IGNvbnRleHQpDQogICAgICAgICAgICA6IGJhc2UoaW5mbywgY29udGV4dCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBUIEdldFByb3BlcnR5PFQ+KFBlckxhbmd1YWdlT3B0aW9uPFQ+IHNldHRpbmcpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBHZXRQcm9wZXJ0eShzZXR0aW5nLCBjYWNoZURlZmF1bHQ6IHRydWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgVCBHZXRQcm9wZXJ0eTxUPihQZXJMYW5ndWFnZU9wdGlvbjxUPiBzZXR0aW5nLCBib29sIGNhY2hlRGVmYXVsdCkNCg0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoc2V0dGluZyA9PSBudWxsKSB7IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHNldHRpbmcpKTsgfQ0KDQogICAgICAgICAgICBQcm9wZXJ0aWVzRGljdGlvbmFyeSBwcm9wZXJ0aWVzID0gR2V0U2V0dGluZ3NDb250YWluZXIoc2V0dGluZywgY2FjaGVEZWZhdWx0KTsNCg0KICAgICAgICAgICAgVCB2YWx1ZTsNCiAgICAgICAgICAgIGlmICghcHJvcGVydGllcy5UcnlHZXRQcm9wZXJ0eShzZXR0aW5nLk5hbWUsIG91dCB2YWx1ZSkgJiYgc2V0dGluZy5EZWZhdWx0VmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IHNldHRpbmcuRGVmYXVsdFZhbHVlKCk7DQoNCiAgICAgICAgICAgICAgICBpZiAoY2FjaGVEZWZhdWx0KSB7IHByb3BlcnRpZXNbc2V0dGluZy5OYW1lXSA9IHZhbHVlOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdmFsdWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBTZXRQcm9wZXJ0eShJT3B0aW9uIHNldHRpbmcsIG9iamVjdCB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgU2V0UHJvcGVydHkoc2V0dGluZywgdmFsdWUsIGNhY2hlRGVzY3JpcHRpb246IGZhbHNlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIFNldFByb3BlcnR5KElPcHRpb24gc2V0dGluZywgb2JqZWN0IHZhbHVlLCBib29sIGNhY2hlRGVzY3JpcHRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIFNldFByb3BlcnR5KHNldHRpbmcsIHZhbHVlLCBjYWNoZURlc2NyaXB0aW9uLCB0cnVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIFNldFByb3BlcnR5KElPcHRpb24gc2V0dGluZywgb2JqZWN0IHZhbHVlLCBib29sIGNhY2hlRGVzY3JpcHRpb24sIGJvb2wgcGVyc2lzdFRvU2V0dGluZ3NDb250YWluZXIpDQoNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHNldHRpbmcgPT0gbnVsbCkgeyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihzZXR0aW5nKSk7IH0NCg0KICAgICAgICAgICAgUHJvcGVydGllc0RpY3Rpb25hcnkgcHJvcGVydGllcyA9IHBlcnNpc3RUb1NldHRpbmdzQ29udGFpbmVyID8gR2V0U2V0dGluZ3NDb250YWluZXIoc2V0dGluZywgdHJ1ZSkgOiB0aGlzOw0KDQogICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCAmJiBwcm9wZXJ0aWVzLkNvbnRhaW5zS2V5KHNldHRpbmcuTmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcHJvcGVydGllcy5SZW1vdmUoc2V0dGluZy5OYW1lKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChjYWNoZURlc2NyaXB0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFNldHRpbmdOYW1lVG9EZXNjcmlwdGlvbnNNYXAgPSBTZXR0aW5nTmFtZVRvRGVzY3JpcHRpb25zTWFwID8/IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPigpOw0KICAgICAgICAgICAgICAgIFNldHRpbmdOYW1lVG9EZXNjcmlwdGlvbnNNYXBbc2V0dGluZy5OYW1lXSA9IHNldHRpbmcuRGVzY3JpcHRpb247DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHByb3BlcnRpZXNbc2V0dGluZy5OYW1lXSA9IHZhbHVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaW50ZXJuYWwgYm9vbCBUcnlHZXRQcm9wZXJ0eTxUPihzdHJpbmcga2V5LCBvdXQgVCB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgdmFsdWUgPSBkZWZhdWx0KFQpOw0KDQogICAgICAgICAgICBvYmplY3QgcmVzdWx0Ow0KICAgICAgICAgICAgaWYgKHRoaXMuVHJ5R2V0VmFsdWUoa2V5LCBvdXQgcmVzdWx0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGlzIFQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChUKXJlc3VsdDsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCBpcyBKVG9rZW4pDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICgoSlRva2VuKXJlc3VsdCkuVG9PYmplY3Q8VD4oKTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiBUcnlDb252ZXJ0RnJvbVN0cmluZygoc3RyaW5nKXJlc3VsdCwgb3V0IHZhbHVlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBQcm9wZXJ0aWVzRGljdGlvbmFyeSBHZXRTZXR0aW5nc0NvbnRhaW5lcihJT3B0aW9uIHNldHRpbmcsIGJvb2wgY2FjaGVEZWZhdWx0KQ0KICAgICAgICB7DQogICAgICAgICAgICBQcm9wZXJ0aWVzRGljdGlvbmFyeSBwcm9wZXJ0aWVzID0gdGhpczsNCg0KICAgICAgICAgICAgaWYgKFN0cmluZy5Jc051bGxPckVtcHR5KE5hbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG9iamVjdCBwcm9wZXJ0aWVzT2JqZWN0Ow0KICAgICAgICAgICAgICAgIHN0cmluZyBmZWF0dXJlT3B0aW9uc05hbWUgPSBzZXR0aW5nLkZlYXR1cmUgKyAiLk9wdGlvbnMiOw0KICAgICAgICAgICAgICAgIGlmICghVHJ5R2V0VmFsdWUoZmVhdHVyZU9wdGlvbnNOYW1lLCBvdXQgcHJvcGVydGllc09iamVjdCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXNEaWN0aW9uYXJ5KCk7DQogICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZURlZmF1bHQpIHsgdGhpc1tmZWF0dXJlT3B0aW9uc05hbWVdID0gcHJvcGVydGllczsgfQ0KICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzLk5hbWUgPSBmZWF0dXJlT3B0aW9uc05hbWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSAoUHJvcGVydGllc0RpY3Rpb25hcnkpcHJvcGVydGllc09iamVjdDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcHJvcGVydGllczsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIGJvb2wgVHJ5Q29udmVydEZyb21TdHJpbmc8VD4oc3RyaW5nIHNvdXJjZSwgb3V0IFQgZGVzdGluYXRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gZGVmYXVsdChUKTsNCiAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgVHlwZUNvbnZlcnRlciBjb252ZXJ0ZXIgPSBUeXBlRGVzY3JpcHRvci5HZXRDb252ZXJ0ZXIodHlwZW9mKFQpKTsNCiAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gKFQpY29udmVydGVyLkNvbnZlcnRGcm9tKHNvdXJjZSk7DQogICAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb24gIT0gbnVsbDsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIFNhdmVUb0pzb24oc3RyaW5nIGZpbGVQYXRoLCBib29sIHByZXR0eVByaW50ID0gdHJ1ZSkNCiAgICAgICAgew0KDQogICAgICAgICAgICBOZXd0b25zb2Z0Lkpzb24uRm9ybWF0dGluZyBmb3JtYXR0aW5nID0gcHJldHR5UHJpbnQNCiAgICAgICAgICAgICAgICA/IE5ld3RvbnNvZnQuSnNvbi5Gb3JtYXR0aW5nLkluZGVudGVkDQogICAgICAgICAgICAgICAgOiBOZXd0b25zb2Z0Lkpzb24uRm9ybWF0dGluZy5Ob25lOw0KDQogICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSBuZXcgSnNvblNlcmlhbGl6ZXJTZXR0aW5ncw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEZvcm1hdHRpbmcgPSBmb3JtYXR0aW5nDQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgRmlsZS5Xcml0ZUFsbFRleHQoZmlsZVBhdGgsIEpzb25Db252ZXJ0LlNlcmlhbGl6ZU9iamVjdCh0aGlzLCBzZXR0aW5ncykpOw0KICAgICAgICB9DQoNCg0KICAgICAgICBwdWJsaWMgdm9pZCBMb2FkRnJvbUpzb24oc3RyaW5nIGZpbGVQYXRoKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgcHJvcGVydGllcyA9IEpzb25Db252ZXJ0LkRlc2VyaWFsaXplT2JqZWN0PFByb3BlcnRpZXNEaWN0aW9uYXJ5PihGaWxlLlJlYWRBbGxUZXh0KGZpbGVQYXRoKSk7DQogICAgICAgICAgICB0aGlzLkNsZWFyKCk7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKHN0cmluZyBrZXkgaW4gcHJvcGVydGllcy5LZXlzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRoaXNba2V5XSA9IHByb3BlcnRpZXNba2V5XTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIFNhdmVUb1htbChzdHJpbmcgZmlsZVBhdGgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHVzaW5nICh2YXIgd3JpdGVyID0gbmV3IEZpbGVTdHJlYW0oZmlsZVBhdGgsIEZpbGVNb2RlLkNyZWF0ZSwgRmlsZUFjY2Vzcy5Xcml0ZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU2F2ZVRvWG1sKHdyaXRlcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBTYXZlVG9YbWwoU3RyZWFtIHN0cmVhbSkNCiAgICAgICAgew0KICAgICAgICAgICAgdmFyIHNldHRpbmdzID0gbmV3IFhtbFdyaXRlclNldHRpbmdzIHsgSW5kZW50ID0gdHJ1ZSB9Ow0KICAgICAgICAgICAgdXNpbmcgKFhtbFdyaXRlciB3cml0ZXIgPSBYbWxXcml0ZXIuQ3JlYXRlKHN0cmVhbSwgc2V0dGluZ3MpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRoaXMuU2F2ZVByb3BlcnRpZXNUb1htbFN0cmVhbSh3cml0ZXIsIHNldHRpbmdzLCBudWxsLCBTZXR0aW5nTmFtZVRvRGVzY3JpcHRpb25zTWFwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIExvYWRGcm9tWG1sKHN0cmluZyBmaWxlUGF0aCkNCiAgICAgICAgew0KICAgICAgICAgICAgdXNpbmcgKHZhciByZWFkZXIgPSBuZXcgRmlsZVN0cmVhbShmaWxlUGF0aCwgRmlsZU1vZGUuT3BlbiwgRmlsZUFjY2Vzcy5SZWFkKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBMb2FkRnJvbVhtbChyZWFkZXIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBwdWJsaWMgdm9pZCBMb2FkRnJvbVhtbChTdHJlYW0gc3RyZWFtKQ0KICAgICAgICB7DQogICAgICAgICAgICB2YXIgc2V0dGluZ3MgPSBuZXcgWG1sUmVhZGVyU2V0dGluZ3MNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEdGRQcm9jZXNzaW5nID0gRHRkUHJvY2Vzc2luZy5JZ25vcmUsDQogICAgICAgICAgICAgICAgWG1sUmVzb2x2ZXIgPSBudWxsDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICB1c2luZyAoWG1sUmVhZGVyIHJlYWRlciA9IFhtbFJlYWRlci5DcmVhdGUoc3RyZWFtLCBzZXR0aW5ncykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHJlYWRlci5Jc1N0YXJ0RWxlbWVudChQcm9wZXJ0aWVzRGljdGlvbmFyeUV4dGVuc2lvbk1ldGhvZHMuUFJPUEVSVElFU19JRCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBib29sIGlzRW1wdHkgPSByZWFkZXIuSXNFbXB0eUVsZW1lbnQ7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuQ2xlYXIoKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBkbyBub3QgcmVjb3ZlciB0aGUgcHJvcGVydHkgYmFnIGlkDQogICAgICAgICAgICAgICAgICAgIC8vICAgICAgIGFzIHRoZXJlIGlzIG5vIGN1cnJlbnQgcHJvZHVjdCB1c2UgZm9yIHRoZSB2YWx1ZQ0KDQogICAgICAgICAgICAgICAgICAgIHJlYWRlci5SZWFkU3RhcnRFbGVtZW50KFByb3BlcnRpZXNEaWN0aW9uYXJ5RXh0ZW5zaW9uTWV0aG9kcy5QUk9QRVJUSUVTX0lEKTsNCg0KICAgICAgICAgICAgICAgICAgICB0aGlzLkxvYWRQcm9wZXJ0aWVzRnJvbVhtbFN0cmVhbShyZWFkZXIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkpIHJlYWRlci5SZWFkRW5kRWxlbWVudCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEN1cnJlbnQgY29uc3VtZXJzIG9mIHRoaXMgZGF0YSBleHBlY3QgdGhhdCBjaGlsZCBuYW1lc3BhY2VzDQogICAgICAgIC8vIHdpbGwgYWx3YXlzIHByZWNlZGUgcGFyZW50IG5hbWVzcGFjZXMsIGlmIGFsc28gaW5jbHVkZWQuDQogICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW1tdXRhYmxlQXJyYXk8c3RyaW5nPiBEZWZhdWx0TmFtZXNwYWNlcyA9IG5ldyBMaXN0PHN0cmluZz4oDQogICAgICAgICAgICBuZXcgc3RyaW5nW10gew0KICAgICAgICAgICAgICAgICJNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLiIsDQogICAgICAgICAgICAgICAgIk1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuIg0KICAgICAgICAgICAgfSkuVG9JbW11dGFibGVBcnJheSgpOw0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.AllOf' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "36DFB9A85D22D6344A1657C46E7AC486",
- "algorithm": "md5"
- },
- {
- "value": "0B788B4C9EB196419737328A57B4D8A1B9D2B7C9",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "60E55DBF351B4565EDC1CEBD3D9DD5BE6A1577E8B002EF488815C40447FC1CEB",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 50,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.AllOf"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/PropertyBagHolder.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7DQp1c2luZyBTeXN0ZW0uR2xvYmFsaXphdGlvbjsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5SZWFkZXJzOw0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5WaXNpdG9yczsNCnVzaW5nIE5ld3RvbnNvZnQuSnNvbjsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEJhc2UgY2xhc3MgZm9yIG9iamVjdHMgdGhhdCBjYW4gaG9sZCBwcm9wZXJ0aWVzIG9mIGFyYml0cmFyeSB0eXBlcy4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBQcm9wZXJ0eUJhZ0hvbGRlciA6IElQcm9wZXJ0eUJhZ0hvbGRlcg0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSBjb25zdCBzdHJpbmcgTnVsbFZhbHVlID0gIm51bGwiOw0KDQogICAgICAgIHByb3RlY3RlZCBQcm9wZXJ0eUJhZ0hvbGRlcigpDQogICAgICAgIHsNCiAgICAgICAgICAgIFRhZ3MgPSBuZXcgVGFnc0NvbGxlY3Rpb24odGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBbSnNvbklnbm9yZV0NCiAgICAgICAgcHVibGljIElMaXN0PHN0cmluZz4gUHJvcGVydHlOYW1lcw0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gUHJvcGVydGllcyAhPSBudWxsID8gUHJvcGVydGllcy5LZXlzLlRvTGlzdCgpIDogbmV3IExpc3Q8c3RyaW5nPigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBydW4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtKc29uQ29udmVydGVyKHR5cGVvZihQcm9wZXJ0eUJhZ0NvbnZlcnRlcikpXQ0KICAgICAgICBbSnNvblByb3BlcnR5KCJwcm9wZXJ0aWVzIiwgRGVmYXVsdFZhbHVlSGFuZGxpbmcgPSBEZWZhdWx0VmFsdWVIYW5kbGluZy5JZ25vcmUpXQ0KICAgICAgICBpbnRlcm5hbCB2aXJ0dWFsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgcHVibGljIGJvb2wgVHJ5R2V0UHJvcGVydHkoc3RyaW5nIHByb3BlcnR5TmFtZSwgb3V0IHN0cmluZyB2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFByb3BlcnRpZXMgIT0gbnVsbCAmJiBQcm9wZXJ0aWVzLktleXMuQ29udGFpbnMocHJvcGVydHlOYW1lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IEdldFByb3BlcnR5KHByb3BlcnR5TmFtZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhbHVlID0gbnVsbDsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdHJpbmcgR2V0UHJvcGVydHkoc3RyaW5nIHByb3BlcnR5TmFtZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFQcm9wZXJ0eU5hbWVzLkNvbnRhaW5zKHByb3BlcnR5TmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oDQogICAgICAgICAgICAgICAgICAgIHN0cmluZy5Gb3JtYXQoDQogICAgICAgICAgICAgICAgICAgICAgICBDdWx0dXJlSW5mby5DdXJyZW50Q3VsdHVyZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIFNka1Jlc291cmNlcy5Qcm9wZXJ0eURvZXNOb3RFeGlzdCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIVByb3BlcnRpZXNbcHJvcGVydHlOYW1lXS5Jc1N0cmluZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbihTZGtSZXNvdXJjZXMuQ2FsbEdlbmVyaWNHZXRQcm9wZXJ0eSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0cmluZyB2YWx1ZSA9IFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXS5TZXJpYWxpemVkVmFsdWU7DQoNCiAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgcXVvdGVzIGFyb3VuZCB0aGUgc2VyaWFsaXplZCB2YWx1ZSAoIngiID0+IHgpIC0tIHVubGVzcyBpdCdzIG51bGwuDQogICAgICAgICAgICByZXR1cm4gdmFsdWUuRXF1YWxzKE51bGxWYWx1ZSwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKQ0KICAgICAgICAgICAgICAgID8gbnVsbA0KICAgICAgICAgICAgICAgIDogdmFsdWUuU3Vic3RyaW5nKDEsIHZhbHVlLkxlbmd0aCAtIDIpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGJvb2wgVHJ5R2V0UHJvcGVydHk8VD4oc3RyaW5nIHByb3BlcnR5TmFtZSwgb3V0IFQgdmFsdWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChQcm9wZXJ0aWVzICE9IG51bGwgJiYgUHJvcGVydGllcy5LZXlzLkNvbnRhaW5zKHByb3BlcnR5TmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFsdWUgPSBHZXRQcm9wZXJ0eTxUPihwcm9wZXJ0eU5hbWUpOw0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHQoVCk7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgVCBHZXRQcm9wZXJ0eTxUPihzdHJpbmcgcHJvcGVydHlOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIVByb3BlcnR5TmFtZXMuQ29udGFpbnMocHJvcGVydHlOYW1lKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nLkZvcm1hdCgNCiAgICAgICAgICAgICAgICAgICAgICAgIEN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlLA0KICAgICAgICAgICAgICAgICAgICAgICAgU2RrUmVzb3VyY2VzLlByb3BlcnR5RG9lc05vdEV4aXN0LA0KICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBKc29uQ29udmVydC5EZXNlcmlhbGl6ZU9iamVjdDxUPihQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0uU2VyaWFsaXplZFZhbHVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIFNldFByb3BlcnR5PFQ+KHN0cmluZyBwcm9wZXJ0eU5hbWUsIFQgdmFsdWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChQcm9wZXJ0aWVzID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4oKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgYm9vbCBpc1N0cmluZyA9IHR5cGVvZihUKSA9PSB0eXBlb2Yoc3RyaW5nKTsNCg0KICAgICAgICAgICAgc3RyaW5nIHNlcmlhbGl6ZWRWYWx1ZTsNCiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRWYWx1ZSA9IE51bGxWYWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVmFsdWUgPSBKc29uQ29udmVydC5Ub1N0cmluZyh2YWx1ZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgYXBwcm9wcmlhdGUgc2VyaWFsaXplciBzZXR0aW5ncw0KICAgICAgICAgICAgICAgICAgICBKc29uU2VyaWFsaXplclNldHRpbmdzIHNldHRpbmdzID0gbnVsbDsNCg0KICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlOYW1lLlN0YXJ0c1dpdGgoInNhcmlmdjIvIikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzID0gU2FyaWZUcmFuc2Zvcm1lclV0aWxpdGllcy5Kc29uU2V0dGluZ3NWMkNvbXBhY3Q7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHlOYW1lLlN0YXJ0c1dpdGgoInNhcmlmdjEvIikpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzID0gU2FyaWZUcmFuc2Zvcm1lclV0aWxpdGllcy5Kc29uU2V0dGluZ3NWMUNvbXBhY3Q7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkVmFsdWUgPSBKc29uQ29udmVydC5TZXJpYWxpemVPYmplY3QodmFsdWUsIHNldHRpbmdzKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAgDQogICAgICAgICAgICBQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gPSBuZXcgU2VyaWFsaXplZFByb3BlcnR5SW5mbyhzZXJpYWxpemVkVmFsdWUsIGlzU3RyaW5nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2b2lkIFNldFByb3BlcnRpZXNGcm9tKElQcm9wZXJ0eUJhZ0hvbGRlciBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGUgY29uY3JldGUgY2xhc3MgYmVjYXVzZSB0aGUgSVByb3BlcnR5QmFnSG9sZGVyIGludGVyZmFjZQ0KICAgICAgICAgICAgLy8gZG9lc24ndCBleHBvc2UgdGhlIHJhdyBQcm9wZXJ0aWVzIGFycmF5Lg0KICAgICAgICAgICAgUHJvcGVydHlCYWdIb2xkZXIgb3RoZXJIb2xkZXIgPSBvdGhlciBhcyBQcm9wZXJ0eUJhZ0hvbGRlcjsNCiAgICAgICAgICAgIERlYnVnLkFzc2VydChvdGhlckhvbGRlciAhPSBudWxsKTsNCg0KICAgICAgICAgICAgUHJvcGVydGllcyA9IG90aGVyLlByb3BlcnR5TmFtZXMuQ291bnQgPiAwID8gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPigpIDogbnVsbDsNCg0KICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIHByb3BlcnR5TmFtZSBpbiBvdGhlci5Qcm9wZXJ0eU5hbWVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gb3RoZXJJbmZvID0gb3RoZXJIb2xkZXIuUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdOw0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXSA9IG5ldyBTZXJpYWxpemVkUHJvcGVydHlJbmZvKG90aGVySW5mby5TZXJpYWxpemVkVmFsdWUsIG90aGVySW5mby5Jc1N0cmluZyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdm9pZCBSZW1vdmVQcm9wZXJ0eShzdHJpbmcgcHJvcGVydHlOYW1lKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMuUmVtb3ZlKHByb3BlcnR5TmFtZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBbSnNvbklnbm9yZV0NCiAgICAgICAgcHVibGljIFRhZ3NDb2xsZWN0aW9uIFRhZ3MgeyBnZXQ7IH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.AnyOf' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "AA9BE7560260940CAD63E22FBCA39BA0",
- "algorithm": "md5"
- },
- {
- "value": "65AA216134DDC7A1EFF4B90540EE5F92A7A1B010",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "D981E6A766927CFDE7A991FCE97782BB6C7F8F20192AE99E247E3C2EA47ED58E",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 51,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.AnyOf"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Region.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIHJlZ2lvbiB3aXRoaW4gYSBmaWxlIHdoZXJlIGEgcmVzdWx0IHdhcyBkZXRlY3RlZC4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFJlZ2lvbiA6IElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8UmVnaW9uPiBWYWx1ZUNvbXBhcmVyID0+IFJlZ2lvbkVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUmVnaW9uIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlJlZ2lvbjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBsaW5lIG51bWJlciBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSByZWdpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAic3RhcnRMaW5lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IFN0YXJ0TGluZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgcmVnaW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN0YXJ0Q29sdW1uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IFN0YXJ0Q29sdW1uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbGluZSBudW1iZXIgb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSByZWdpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZW5kTGluZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBFbmRMaW5lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgY29sdW1uIG51bWJlciBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgZW5kIG9mIHRoZSByZWdpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZW5kQ29sdW1uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IEVuZENvbHVtbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHplcm8tYmFzZWQgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSByZWdpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiY2hhck9mZnNldCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBDaGFyT2Zmc2V0IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbGVuZ3RoIG9mIHRoZSByZWdpb24gaW4gY2hhcmFjdGVycy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJjaGFyTGVuZ3RoIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IENoYXJMZW5ndGggeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB6ZXJvLWJhc2VkIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgb2YgdGhlIGZpcnN0IGJ5dGUgaW4gdGhlIHJlZ2lvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJieXRlT2Zmc2V0IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IEJ5dGVPZmZzZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBsZW5ndGggb2YgdGhlIHJlZ2lvbiBpbiBieXRlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJieXRlTGVuZ3RoIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IEJ5dGVMZW5ndGggeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBwb3J0aW9uIG9mIHRoZSBmaWxlIGNvbnRlbnRzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzbmlwcGV0IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRmlsZUNvbnRlbnQgU25pcHBldCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHJlbGV2YW50IHRvIHRoZSByZWdpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibWVzc2FnZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIE1lc3NhZ2UgTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVnaW9uIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJlZ2lvbigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlJlZ2lvbiIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXJ0TGluZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RhcnRMaW5lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhcnRDb2x1bW4iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0YXJ0Q29sdW1uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZW5kTGluZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRW5kTGluZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImVuZENvbHVtbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRW5kQ29sdW1uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY2hhck9mZnNldCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ2hhck9mZnNldCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNoYXJMZW5ndGgiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IENoYXJMZW5ndGgiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJieXRlT2Zmc2V0Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBCeXRlT2Zmc2V0IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYnl0ZUxlbmd0aCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQnl0ZUxlbmd0aCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InNuaXBwZXQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFNuaXBwZXQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBSZWdpb24oaW50IHN0YXJ0TGluZSwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZW5kTGluZSwgaW50IGVuZENvbHVtbiwgaW50IGNoYXJPZmZzZXQsIGludCBjaGFyTGVuZ3RoLCBpbnQgYnl0ZU9mZnNldCwgaW50IGJ5dGVMZW5ndGgsIEZpbGVDb250ZW50IHNuaXBwZXQsIE1lc3NhZ2UgbWVzc2FnZSkNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGNoYXJPZmZzZXQsIGNoYXJMZW5ndGgsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNuaXBwZXQsIG1lc3NhZ2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVnaW9uIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBSZWdpb24oUmVnaW9uIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLlN0YXJ0TGluZSwgb3RoZXIuU3RhcnRDb2x1bW4sIG90aGVyLkVuZExpbmUsIG90aGVyLkVuZENvbHVtbiwgb3RoZXIuQ2hhck9mZnNldCwgb3RoZXIuQ2hhckxlbmd0aCwgb3RoZXIuQnl0ZU9mZnNldCwgb3RoZXIuQnl0ZUxlbmd0aCwgb3RoZXIuU25pcHBldCwgb3RoZXIuTWVzc2FnZSk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlIElTYXJpZk5vZGUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJlZ2lvbiBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKFJlZ2lvbilEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnaW9uKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoaW50IHN0YXJ0TGluZSwgaW50IHN0YXJ0Q29sdW1uLCBpbnQgZW5kTGluZSwgaW50IGVuZENvbHVtbiwgaW50IGNoYXJPZmZzZXQsIGludCBjaGFyTGVuZ3RoLCBpbnQgYnl0ZU9mZnNldCwgaW50IGJ5dGVMZW5ndGgsIEZpbGVDb250ZW50IHNuaXBwZXQsIE1lc3NhZ2UgbWVzc2FnZSkNCiAgICAgICAgew0KICAgICAgICAgICAgU3RhcnRMaW5lID0gc3RhcnRMaW5lOw0KICAgICAgICAgICAgU3RhcnRDb2x1bW4gPSBzdGFydENvbHVtbjsNCiAgICAgICAgICAgIEVuZExpbmUgPSBlbmRMaW5lOw0KICAgICAgICAgICAgRW5kQ29sdW1uID0gZW5kQ29sdW1uOw0KICAgICAgICAgICAgQ2hhck9mZnNldCA9IGNoYXJPZmZzZXQ7DQogICAgICAgICAgICBDaGFyTGVuZ3RoID0gY2hhckxlbmd0aDsNCiAgICAgICAgICAgIEJ5dGVPZmZzZXQgPSBieXRlT2Zmc2V0Ow0KICAgICAgICAgICAgQnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGg7DQogICAgICAgICAgICBpZiAoc25pcHBldCAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFNuaXBwZXQgPSBuZXcgRmlsZUNvbnRlbnQoc25pcHBldCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlKG1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1502",
+ "message": {
+ "text": "'JsonSchema.Collapse(JsonSchema, JsonSchema)' has a cyclomatic complexity of 34. Rewrite or refactor the method to reduce complexity to 25."
},
- "hashes": [
- {
- "value": "592E757599D474D88F775C79F4486F30",
- "algorithm": "md5"
- },
- {
- "value": "97B9BEC4CB09143EAFA75A7027241A1EBD6FC9C0",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "02312DE73D068A311F4F1E27BD3D51EDD51D736BF8BE7A57B0D6F8CEC02D68C3",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 52,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Collapse(Microsoft.Json.Schema.JsonSchema,Microsoft.Json.Schema.JsonSchema)"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Maintainability",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Resources.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gQ29udGFpbmVyIGZvciBpdGVtcyB0aGF0IHJlcXVpcmUgbG9jYWxpemF0aW9uLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgUmVzb3VyY2VzIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8UmVzb3VyY2VzPiBWYWx1ZUNvbXBhcmVyID0+IFJlc291cmNlc0VxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUmVzb3VyY2VzIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlJlc291cmNlczsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgZGljdGlvbmFyeSwgZWFjaCBvZiB3aG9zZSBrZXlzIGlzIGEgcmVzb3VyY2UgaWRlbnRpZmllciBhbmQgZWFjaCBvZiB3aG9zZSB2YWx1ZXMgaXMgYSBsb2NhbGl6ZWQgc3RyaW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2VTdHJpbmdzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IE1lc3NhZ2VTdHJpbmdzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGRpY3Rpb25hcnksIGVhY2ggb2Ygd2hvc2Uga2V5cyBpcyBhIHN0cmluZyBhbmQgZWFjaCBvZiB3aG9zZSB2YWx1ZXMgaXMgYSAncnVsZScgb2JqZWN0LCB0aGF0IGRlc2NyaWJlIGFsbCBydWxlcyBhc3NvY2lhdGVkIHdpdGggYW4gYW5hbHlzaXMgdG9vbCBvciBhIHNwZWNpZmljIHJ1biBvZiBhbiBhbmFseXNpcyB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJ1bGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBSdWxlPiBSdWxlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVzb3VyY2VzIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJlc291cmNlcygpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlJlc291cmNlcyIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2VTdHJpbmdzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlU3RyaW5ncyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1bGVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSdWxlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgUmVzb3VyY2VzKElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBtZXNzYWdlU3RyaW5ncywgSURpY3Rpb25hcnk8c3RyaW5nLCBSdWxlPiBydWxlcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChtZXNzYWdlU3RyaW5ncywgcnVsZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVzb3VyY2VzIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBSZXNvdXJjZXMoUmVzb3VyY2VzIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLk1lc3NhZ2VTdHJpbmdzLCBvdGhlci5SdWxlcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlIElTYXJpZk5vZGUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJlc291cmNlcyBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKFJlc291cmNlcylEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUmVzb3VyY2VzKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IG1lc3NhZ2VTdHJpbmdzLCBJRGljdGlvbmFyeTxzdHJpbmcsIFJ1bGU+IHJ1bGVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobWVzc2FnZVN0cmluZ3MgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBNZXNzYWdlU3RyaW5ncyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPihtZXNzYWdlU3RyaW5ncyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChydWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJ1bGVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBSdWxlPihydWxlcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.Definitions' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "212301ED58B646843406DDEDD0B5E522",
- "algorithm": "md5"
- },
- {
- "value": "337E856B7570B0EE7E729F13EF733477FE62A6AE",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "5EBBE3F42FF37D3156187C952788EEA5742C29873968ABBE9DF86F9209E24096",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 53,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Definitions"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Result.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIHJlc3VsdCBwcm9kdWNlZCBieSBhbiBhbmFseXNpcyB0b29sLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgUmVzdWx0IDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8UmVzdWx0PiBWYWx1ZUNvbXBhcmVyID0+IFJlc3VsdEVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUmVzdWx0IG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlJlc3VsdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzdGFibGUsIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydWxlIChpZiBhbnkpIHRvIHdoaWNoIHRoaXMgbm90aWZpY2F0aW9uIGlzIHJlbGV2YW50LiBJZiAncnVsZUtleScgaXMgbm90IHNwZWNpZmllZCwgdGhpcyBtZW1iZXIgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgcnVsZSBtZXRhZGF0YSBmcm9tIHRoZSBydWxlcyBkaWN0aW9uYXJ5LCBpZiBpdCBleGlzdHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBzZXZlcml0eSBsZXZlbCBvZiB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxldmVsIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgUmVzdWx0TGV2ZWwgTGV2ZWwgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyB0aGUgcmVzdWx0LiBUaGUgZmlyc3Qgc2VudGVuY2Ugb2YgdGhlIG1lc3NhZ2Ugb25seSB3aWxsIGJlIGRpc3BsYXllZCB3aGVuIHZpc2libGUgc3BhY2UgaXMgbGltaXRlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHJ1bGUgdXNlZCBpbiB0aGlzIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJydWxlTWVzc2FnZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVNZXNzYWdlSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIElkZW50aWZpZXMgdGhlIGZpbGUgdGhhdCB0aGUgYW5hbHlzaXMgdG9vbCB3YXMgaW5zdHJ1Y3RlZCB0byBzY2FuLiBUaGlzIG5lZWQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBmaWxlIHdoZXJlIHRoZSByZXN1bHQgYWN0dWFsbHkgb2NjdXJyZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiYW5hbHlzaXNUYXJnZXQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBGaWxlTG9jYXRpb24gQW5hbHlzaXNUYXJnZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIE9uZSBvciBtb3JlIGxvY2F0aW9ucyB3aGVyZSB0aGUgcmVzdWx0IG9jY3VycmVkLiBTcGVjaWZ5IG9ubHkgb25lIGxvY2F0aW9uIHVubGVzcyB0aGUgcHJvYmxlbSBpbmRpY2F0ZWQgYnkgdGhlIHJlc3VsdCBjYW4gb25seSBiZSBjb3JyZWN0ZWQgYnkgbWFraW5nIGEgY2hhbmdlIGF0IGV2ZXJ5IHNwZWNpZmllZCBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJsb2NhdGlvbnMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxMb2NhdGlvbj4gTG9jYXRpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0YWJsZSwgdW5pcXVlIGlkZW50aWZlciBmb3IgdGhlIHJlc3VsdCBpbiB0aGUgZm9ybSBvZiBhIEdVSUQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaW5zdGFuY2VHdWlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEluc3RhbmNlR3VpZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdGFibGUsIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXF1aXZhbGVuY2UgY2xhc3Mgb2YgbG9naWNhbGx5IGlkZW50aWNhbCByZXN1bHRzIHRvIHdoaWNoIHRoaXMgcmVzdWx0IGJlbG9uZ3MsIGluIHRoZSBmb3JtIG9mIGEgR1VJRC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJjb3JyZWxhdGlvbkd1aWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgQ29ycmVsYXRpb25HdWlkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNldCBvZiBzdHJpbmdzIHRoYXQgY29udHJpYnV0ZSB0byB0aGUgc3RhYmxlLCB1bmlxdWUgaWRlbnRpdHkgb2YgdGhlIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwYXJ0aWFsRmluZ2VycHJpbnRzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IFBhcnRpYWxGaW5nZXJwcmludHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc2V0IG9mIHN0cmluZ3MgZWFjaCBvZiB3aGljaCBpbmRpdmlkdWFsbHkgZGVmaW5lcyBhIHN0YWJsZSwgdW5pcXVlIGlkZW50aXR5IGZvciB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZpbmdlcnByaW50cyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBGaW5nZXJwcmludHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGFycmF5IG9mICdzdGFjaycgb2JqZWN0cyByZWxldmFudCB0byB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN0YWNrcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFN0YWNrPiBTdGFja3MgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGFycmF5IG9mICdjb2RlRmxvdycgb2JqZWN0cyByZWxldmFudCB0byB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvZGVGbG93cyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PENvZGVGbG93PiBDb2RlRmxvd3MgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGFycmF5IG9mIG9uZSBvciBtb3JlIHVuaXF1ZSAnZ3JhcGgnIG9iamVjdHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZ3JhcGhzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8R3JhcGg+IEdyYXBocyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2Ygb25lIG9yIG1vcmUgdW5pcXVlICdncmFwaFRyYXZlcnNhbCcgb2JqZWN0cy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJncmFwaFRyYXZlcnNhbHMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxHcmFwaFRyYXZlcnNhbD4gR3JhcGhUcmF2ZXJzYWxzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNldCBvZiBsb2NhdGlvbnMgcmVsZXZhbnQgdG8gdGhpcyByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicmVsYXRlZExvY2F0aW9ucyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PExvY2F0aW9uPiBSZWxhdGVkTG9jYXRpb25zIHsgZ2V0OyBzZXQ7IH0NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdXBwcmVzc2lvblN0YXRlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFN1cHByZXNzaW9uU3RhdGVzIFN1cHByZXNzaW9uU3RhdGVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgc3RhdGUgb2YgYSByZXN1bHQgcmVsYXRpdmUgdG8gYSBiYXNlbGluZSBvZiBhIHByZXZpb3VzIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJiYXNlbGluZVN0YXRlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgQmFzZWxpbmVTdGF0ZSBCYXNlbGluZVN0YXRlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNldCBvZiBmaWxlcyByZWxldmFudCB0byB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImF0dGFjaG1lbnRzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8QXR0YWNobWVudD4gQXR0YWNobWVudHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBVUklzIG9mIHRoZSB3b3JrIGl0ZW1zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc3VsdA0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIndvcmtJdGVtVXJpcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFVyaT4gV29ya0l0ZW1VcmlzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBhbmFseXNpc1Rvb2xMb2dGaWxlQ29udGVudHMgb2JqZWN0cyB3aGljaCBzcGVjaWZ5IHRoZSBwb3J0aW9ucyBvZiBhbiBhbmFseXNpcyB0b29sJ3Mgb3V0cHV0IHRoYXQgYSBjb252ZXJ0ZXIgdHJhbnNmb3JtZWQgaW50byB0aGUgcmVzdWx0IG9iamVjdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJjb252ZXJzaW9uUHJvdmVuYW5jZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFBoeXNpY2FsTG9jYXRpb24+IENvbnZlcnNpb25Qcm92ZW5hbmNlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiAnZml4JyBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIHJlcHJlc2VudHMgYSBwcm9wb3NlZCBmaXggdG8gdGhlIHByb2JsZW0gaW5kaWNhdGVkIGJ5IHRoZSByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZml4ZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxGaXg+IEZpeGVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlJlc3VsdCIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBSZXN1bHQoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSZXN1bHQiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJydWxlSWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJ1bGVJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImxldmVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMZXZlbCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJydWxlTWVzc2FnZUlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSdWxlTWVzc2FnZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYW5hbHlzaXNUYXJnZXQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEFuYWx5c2lzVGFyZ2V0IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9jYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMb2NhdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpbnN0YW5jZUd1aWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEluc3RhbmNlR3VpZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNvcnJlbGF0aW9uR3VpZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ29ycmVsYXRpb25HdWlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icGFydGlhbEZpbmdlcnByaW50cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUGFydGlhbEZpbmdlcnByaW50cyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbmdlcnByaW50cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmluZ2VycHJpbnRzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhY2tzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTdGFja3MiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb2RlRmxvd3MiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IENvZGVGbG93cyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImdyYXBocyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogR3JhcGhzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZ3JhcGhUcmF2ZXJzYWxzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBHcmFwaFRyYXZlcnNhbHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyZWxhdGVkTG9jYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSZWxhdGVkTG9jYXRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3VwcHJlc3Npb25TdGF0ZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN1cHByZXNzaW9uU3RhdGVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYmFzZWxpbmVTdGF0ZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQmFzZWxpbmVTdGF0ZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImF0dGFjaG1lbnRzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBdHRhY2htZW50cyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9IndvcmtJdGVtVXJpcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogV29ya0l0ZW1VcmlzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29udmVyc2lvblByb3ZlbmFuY2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IENvbnZlcnNpb25Qcm92ZW5hbmNlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZml4ZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEZpeGVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgUmVzdWx0KHN0cmluZyBydWxlSWQsIFJlc3VsdExldmVsIGxldmVsLCBNZXNzYWdlIG1lc3NhZ2UsIHN0cmluZyBydWxlTWVzc2FnZUlkLCBGaWxlTG9jYXRpb24gYW5hbHlzaXNUYXJnZXQsIElFbnVtZXJhYmxlPExvY2F0aW9uPiBsb2NhdGlvbnMsIHN0cmluZyBpbnN0YW5jZUd1aWQsIHN0cmluZyBjb3JyZWxhdGlvbkd1aWQsIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBwYXJ0aWFsRmluZ2VycHJpbnRzLCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gZmluZ2VycHJpbnRzLCBJRW51bWVyYWJsZTxTdGFjaz4gc3RhY2tzLCBJRW51bWVyYWJsZTxDb2RlRmxvdz4gY29kZUZsb3dzLCBJRW51bWVyYWJsZTxHcmFwaD4gZ3JhcGhzLCBJRW51bWVyYWJsZTxHcmFwaFRyYXZlcnNhbD4gZ3JhcGhUcmF2ZXJzYWxzLCBJRW51bWVyYWJsZTxMb2NhdGlvbj4gcmVsYXRlZExvY2F0aW9ucywgU3VwcHJlc3Npb25TdGF0ZXMgc3VwcHJlc3Npb25TdGF0ZXMsIEJhc2VsaW5lU3RhdGUgYmFzZWxpbmVTdGF0ZSwgSUVudW1lcmFibGU8QXR0YWNobWVudD4gYXR0YWNobWVudHMsIElFbnVtZXJhYmxlPFVyaT4gd29ya0l0ZW1VcmlzLCBJRW51bWVyYWJsZTxQaHlzaWNhbExvY2F0aW9uPiBjb252ZXJzaW9uUHJvdmVuYW5jZSwgSUVudW1lcmFibGU8Rml4PiBmaXhlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KHJ1bGVJZCwgbGV2ZWwsIG1lc3NhZ2UsIHJ1bGVNZXNzYWdlSWQsIGFuYWx5c2lzVGFyZ2V0LCBsb2NhdGlvbnMsIGluc3RhbmNlR3VpZCwgY29ycmVsYXRpb25HdWlkLCBwYXJ0aWFsRmluZ2VycHJpbnRzLCBmaW5nZXJwcmludHMsIHN0YWNrcywgY29kZUZsb3dzLCBncmFwaHMsIGdyYXBoVHJhdmVyc2FscywgcmVsYXRlZExvY2F0aW9ucywgc3VwcHJlc3Npb25TdGF0ZXMsIGJhc2VsaW5lU3RhdGUsIGF0dGFjaG1lbnRzLCB3b3JrSXRlbVVyaXMsIGNvbnZlcnNpb25Qcm92ZW5hbmNlLCBmaXhlcywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSZXN1bHQiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIFJlc3VsdChSZXN1bHQgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuUnVsZUlkLCBvdGhlci5MZXZlbCwgb3RoZXIuTWVzc2FnZSwgb3RoZXIuUnVsZU1lc3NhZ2VJZCwgb3RoZXIuQW5hbHlzaXNUYXJnZXQsIG90aGVyLkxvY2F0aW9ucywgb3RoZXIuSW5zdGFuY2VHdWlkLCBvdGhlci5Db3JyZWxhdGlvbkd1aWQsIG90aGVyLlBhcnRpYWxGaW5nZXJwcmludHMsIG90aGVyLkZpbmdlcnByaW50cywgb3RoZXIuU3RhY2tzLCBvdGhlci5Db2RlRmxvd3MsIG90aGVyLkdyYXBocywgb3RoZXIuR3JhcGhUcmF2ZXJzYWxzLCBvdGhlci5SZWxhdGVkTG9jYXRpb25zLCBvdGhlci5TdXBwcmVzc2lvblN0YXRlcywgb3RoZXIuQmFzZWxpbmVTdGF0ZSwgb3RoZXIuQXR0YWNobWVudHMsIG90aGVyLldvcmtJdGVtVXJpcywgb3RoZXIuQ29udmVyc2lvblByb3ZlbmFuY2UsIG90aGVyLkZpeGVzLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgUmVzdWx0IERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoUmVzdWx0KURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXN1bHQodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChzdHJpbmcgcnVsZUlkLCBSZXN1bHRMZXZlbCBsZXZlbCwgTWVzc2FnZSBtZXNzYWdlLCBzdHJpbmcgcnVsZU1lc3NhZ2VJZCwgRmlsZUxvY2F0aW9uIGFuYWx5c2lzVGFyZ2V0LCBJRW51bWVyYWJsZTxMb2NhdGlvbj4gbG9jYXRpb25zLCBzdHJpbmcgaW5zdGFuY2VHdWlkLCBzdHJpbmcgY29ycmVsYXRpb25HdWlkLCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gcGFydGlhbEZpbmdlcnByaW50cywgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IGZpbmdlcnByaW50cywgSUVudW1lcmFibGU8U3RhY2s+IHN0YWNrcywgSUVudW1lcmFibGU8Q29kZUZsb3c+IGNvZGVGbG93cywgSUVudW1lcmFibGU8R3JhcGg+IGdyYXBocywgSUVudW1lcmFibGU8R3JhcGhUcmF2ZXJzYWw+IGdyYXBoVHJhdmVyc2FscywgSUVudW1lcmFibGU8TG9jYXRpb24+IHJlbGF0ZWRMb2NhdGlvbnMsIFN1cHByZXNzaW9uU3RhdGVzIHN1cHByZXNzaW9uU3RhdGVzLCBCYXNlbGluZVN0YXRlIGJhc2VsaW5lU3RhdGUsIElFbnVtZXJhYmxlPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzLCBJRW51bWVyYWJsZTxVcmk+IHdvcmtJdGVtVXJpcywgSUVudW1lcmFibGU8UGh5c2ljYWxMb2NhdGlvbj4gY29udmVyc2lvblByb3ZlbmFuY2UsIElFbnVtZXJhYmxlPEZpeD4gZml4ZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgUnVsZUlkID0gcnVsZUlkOw0KICAgICAgICAgICAgTGV2ZWwgPSBsZXZlbDsNCiAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVzc2FnZSA9IG5ldyBNZXNzYWdlKG1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBSdWxlTWVzc2FnZUlkID0gcnVsZU1lc3NhZ2VJZDsNCiAgICAgICAgICAgIGlmIChhbmFseXNpc1RhcmdldCAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEFuYWx5c2lzVGFyZ2V0ID0gbmV3IEZpbGVMb2NhdGlvbihhbmFseXNpc1RhcmdldCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PExvY2F0aW9uPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGxvY2F0aW9ucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IExvY2F0aW9uKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIExvY2F0aW9ucyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluc3RhbmNlR3VpZCA9IGluc3RhbmNlR3VpZDsNCiAgICAgICAgICAgIENvcnJlbGF0aW9uR3VpZCA9IGNvcnJlbGF0aW9uR3VpZDsNCiAgICAgICAgICAgIGlmIChwYXJ0aWFsRmluZ2VycHJpbnRzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUGFydGlhbEZpbmdlcnByaW50cyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPihwYXJ0aWFsRmluZ2VycHJpbnRzKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGZpbmdlcnByaW50cyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEZpbmdlcnByaW50cyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPihmaW5nZXJwcmludHMpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoc3RhY2tzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzEgPSBuZXcgTGlzdDxTdGFjaz4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiBzdGFja3MpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMSA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzEuQWRkKG5ldyBTdGFjayh2YWx1ZV8xKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBTdGFja3MgPSBkZXN0aW5hdGlvbl8xOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoY29kZUZsb3dzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzIgPSBuZXcgTGlzdDxDb2RlRmxvdz4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMiBpbiBjb2RlRmxvd3MpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMiA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8yLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzIuQWRkKG5ldyBDb2RlRmxvdyh2YWx1ZV8yKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBDb2RlRmxvd3MgPSBkZXN0aW5hdGlvbl8yOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZ3JhcGhzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzMgPSBuZXcgTGlzdDxHcmFwaD4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMyBpbiBncmFwaHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8zLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzMuQWRkKG5ldyBHcmFwaCh2YWx1ZV8zKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBHcmFwaHMgPSBkZXN0aW5hdGlvbl8zOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZ3JhcGhUcmF2ZXJzYWxzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzQgPSBuZXcgTGlzdDxHcmFwaFRyYXZlcnNhbD4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNCBpbiBncmFwaFRyYXZlcnNhbHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl80LkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzQuQWRkKG5ldyBHcmFwaFRyYXZlcnNhbCh2YWx1ZV80KSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBHcmFwaFRyYXZlcnNhbHMgPSBkZXN0aW5hdGlvbl80Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmVsYXRlZExvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl81ID0gbmV3IExpc3Q8TG9jYXRpb24+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzUgaW4gcmVsYXRlZExvY2F0aW9ucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV81ID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzUuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fNS5BZGQobmV3IExvY2F0aW9uKHZhbHVlXzUpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFJlbGF0ZWRMb2NhdGlvbnMgPSBkZXN0aW5hdGlvbl81Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBTdXBwcmVzc2lvblN0YXRlcyA9IHN1cHByZXNzaW9uU3RhdGVzOw0KICAgICAgICAgICAgQmFzZWxpbmVTdGF0ZSA9IGJhc2VsaW5lU3RhdGU7DQogICAgICAgICAgICBpZiAoYXR0YWNobWVudHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fNiA9IG5ldyBMaXN0PEF0dGFjaG1lbnQ+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzYgaW4gYXR0YWNobWVudHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNiA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl82LkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzYuQWRkKG5ldyBBdHRhY2htZW50KHZhbHVlXzYpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0gZGVzdGluYXRpb25fNjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHdvcmtJdGVtVXJpcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl83ID0gbmV3IExpc3Q8VXJpPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV83IGluIHdvcmtJdGVtVXJpcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzcuQWRkKHZhbHVlXzcpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFdvcmtJdGVtVXJpcyA9IGRlc3RpbmF0aW9uXzc7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChjb252ZXJzaW9uUHJvdmVuYW5jZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl84ID0gbmV3IExpc3Q8UGh5c2ljYWxMb2NhdGlvbj4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOCBpbiBjb252ZXJzaW9uUHJvdmVuYW5jZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV84ID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzguQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fOC5BZGQobmV3IFBoeXNpY2FsTG9jYXRpb24odmFsdWVfOCkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgQ29udmVyc2lvblByb3ZlbmFuY2UgPSBkZXN0aW5hdGlvbl84Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZml4ZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fOSA9IG5ldyBMaXN0PEZpeD4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOSBpbiBmaXhlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV85ID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzkuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fOS5BZGQobmV3IEZpeCh2YWx1ZV85KSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBGaXhlcyA9IGRlc3RpbmF0aW9uXzk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.Dependencies' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "65F9CCFAC07820CFAF6F507F2F5F7266",
- "algorithm": "md5"
- },
- {
- "value": "2712737413EFBAB9CF68A6E6DCA58B2ED36CA7B2",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "99E87448C8B5DEF9C048F32C9B412FD7043AF94903006A3F88CAC6F7EC5B641C",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 54,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Dependencies"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/ResultEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBSZXN1bHQgZm9yIGVxdWFsaXR5Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBSZXN1bHRFcXVhbGl0eUNvbXBhcmVyIDogSUVxdWFsaXR5Q29tcGFyZXI8UmVzdWx0Pg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IFJlc3VsdEVxdWFsaXR5Q29tcGFyZXIgSW5zdGFuY2UgPSBuZXcgUmVzdWx0RXF1YWxpdHlDb21wYXJlcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhSZXN1bHQgbGVmdCwgUmVzdWx0IHJpZ2h0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIHJpZ2h0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCBudWxsKSB8fCBSZWZlcmVuY2VFcXVhbHMocmlnaHQsIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuUnVsZUlkICE9IHJpZ2h0LlJ1bGVJZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkxldmVsICE9IHJpZ2h0LkxldmVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFNZXNzYWdlLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuTWVzc2FnZSwgcmlnaHQuTWVzc2FnZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5SdWxlTWVzc2FnZUlkICE9IHJpZ2h0LlJ1bGVNZXNzYWdlSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIUZpbGVMb2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkFuYWx5c2lzVGFyZ2V0LCByaWdodC5BbmFseXNpc1RhcmdldCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Mb2NhdGlvbnMsIHJpZ2h0LkxvY2F0aW9ucykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuTG9jYXRpb25zID09IG51bGwgfHwgcmlnaHQuTG9jYXRpb25zID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuTG9jYXRpb25zLkNvdW50ICE9IHJpZ2h0LkxvY2F0aW9ucy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IGxlZnQuTG9jYXRpb25zLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIUxvY2F0aW9uLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuTG9jYXRpb25zW2luZGV4XzBdLCByaWdodC5Mb2NhdGlvbnNbaW5kZXhfMF0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lkluc3RhbmNlR3VpZCAhPSByaWdodC5JbnN0YW5jZUd1aWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5Db3JyZWxhdGlvbkd1aWQgIT0gcmlnaHQuQ29ycmVsYXRpb25HdWlkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUGFydGlhbEZpbmdlcnByaW50cywgcmlnaHQuUGFydGlhbEZpbmdlcnByaW50cykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUGFydGlhbEZpbmdlcnByaW50cyA9PSBudWxsIHx8IHJpZ2h0LlBhcnRpYWxGaW5nZXJwcmludHMgPT0gbnVsbCB8fCBsZWZ0LlBhcnRpYWxGaW5nZXJwcmludHMuQ291bnQgIT0gcmlnaHQuUGFydGlhbEZpbmdlcnByaW50cy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBsZWZ0LlBhcnRpYWxGaW5nZXJwcmludHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgdmFsdWVfMTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5QYXJ0aWFsRmluZ2VycHJpbnRzLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wLlZhbHVlICE9IHZhbHVlXzEpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuRmluZ2VycHJpbnRzLCByaWdodC5GaW5nZXJwcmludHMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkZpbmdlcnByaW50cyA9PSBudWxsIHx8IHJpZ2h0LkZpbmdlcnByaW50cyA9PSBudWxsIHx8IGxlZnQuRmluZ2VycHJpbnRzLkNvdW50ICE9IHJpZ2h0LkZpbmdlcnByaW50cy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMiBpbiBsZWZ0LkZpbmdlcnByaW50cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8zOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LkZpbmdlcnByaW50cy5UcnlHZXRWYWx1ZSh2YWx1ZV8yLktleSwgb3V0IHZhbHVlXzMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMi5WYWx1ZSAhPSB2YWx1ZV8zKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlN0YWNrcywgcmlnaHQuU3RhY2tzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5TdGFja3MgPT0gbnVsbCB8fCByaWdodC5TdGFja3MgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5TdGFja3MuQ291bnQgIT0gcmlnaHQuU3RhY2tzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzEgPSAwOyBpbmRleF8xIDwgbGVmdC5TdGFja3MuQ291bnQ7ICsraW5kZXhfMSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghU3RhY2suVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5TdGFja3NbaW5kZXhfMV0sIHJpZ2h0LlN0YWNrc1tpbmRleF8xXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuQ29kZUZsb3dzLCByaWdodC5Db2RlRmxvd3MpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkNvZGVGbG93cyA9PSBudWxsIHx8IHJpZ2h0LkNvZGVGbG93cyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkNvZGVGbG93cy5Db3VudCAhPSByaWdodC5Db2RlRmxvd3MuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMiA9IDA7IGluZGV4XzIgPCBsZWZ0LkNvZGVGbG93cy5Db3VudDsgKytpbmRleF8yKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFDb2RlRmxvdy5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkNvZGVGbG93c1tpbmRleF8yXSwgcmlnaHQuQ29kZUZsb3dzW2luZGV4XzJdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5HcmFwaHMsIHJpZ2h0LkdyYXBocykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuR3JhcGhzID09IG51bGwgfHwgcmlnaHQuR3JhcGhzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuR3JhcGhzLkNvdW50ICE9IHJpZ2h0LkdyYXBocy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8zID0gMDsgaW5kZXhfMyA8IGxlZnQuR3JhcGhzLkNvdW50OyArK2luZGV4XzMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIUdyYXBoLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuR3JhcGhzW2luZGV4XzNdLCByaWdodC5HcmFwaHNbaW5kZXhfM10pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkdyYXBoVHJhdmVyc2FscywgcmlnaHQuR3JhcGhUcmF2ZXJzYWxzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5HcmFwaFRyYXZlcnNhbHMgPT0gbnVsbCB8fCByaWdodC5HcmFwaFRyYXZlcnNhbHMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5HcmFwaFRyYXZlcnNhbHMuQ291bnQgIT0gcmlnaHQuR3JhcGhUcmF2ZXJzYWxzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzQgPSAwOyBpbmRleF80IDwgbGVmdC5HcmFwaFRyYXZlcnNhbHMuQ291bnQ7ICsraW5kZXhfNCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghR3JhcGhUcmF2ZXJzYWwuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5HcmFwaFRyYXZlcnNhbHNbaW5kZXhfNF0sIHJpZ2h0LkdyYXBoVHJhdmVyc2Fsc1tpbmRleF80XSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUmVsYXRlZExvY2F0aW9ucywgcmlnaHQuUmVsYXRlZExvY2F0aW9ucykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUmVsYXRlZExvY2F0aW9ucyA9PSBudWxsIHx8IHJpZ2h0LlJlbGF0ZWRMb2NhdGlvbnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5SZWxhdGVkTG9jYXRpb25zLkNvdW50ICE9IHJpZ2h0LlJlbGF0ZWRMb2NhdGlvbnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfNSA9IDA7IGluZGV4XzUgPCBsZWZ0LlJlbGF0ZWRMb2NhdGlvbnMuQ291bnQ7ICsraW5kZXhfNSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghTG9jYXRpb24uVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5SZWxhdGVkTG9jYXRpb25zW2luZGV4XzVdLCByaWdodC5SZWxhdGVkTG9jYXRpb25zW2luZGV4XzVdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5TdXBwcmVzc2lvblN0YXRlcyAhPSByaWdodC5TdXBwcmVzc2lvblN0YXRlcykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkJhc2VsaW5lU3RhdGUgIT0gcmlnaHQuQmFzZWxpbmVTdGF0ZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkF0dGFjaG1lbnRzLCByaWdodC5BdHRhY2htZW50cykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuQXR0YWNobWVudHMgPT0gbnVsbCB8fCByaWdodC5BdHRhY2htZW50cyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkF0dGFjaG1lbnRzLkNvdW50ICE9IHJpZ2h0LkF0dGFjaG1lbnRzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzYgPSAwOyBpbmRleF82IDwgbGVmdC5BdHRhY2htZW50cy5Db3VudDsgKytpbmRleF82KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFBdHRhY2htZW50LlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuQXR0YWNobWVudHNbaW5kZXhfNl0sIHJpZ2h0LkF0dGFjaG1lbnRzW2luZGV4XzZdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Xb3JrSXRlbVVyaXMsIHJpZ2h0LldvcmtJdGVtVXJpcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuV29ya0l0ZW1VcmlzID09IG51bGwgfHwgcmlnaHQuV29ya0l0ZW1VcmlzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuV29ya0l0ZW1VcmlzLkNvdW50ICE9IHJpZ2h0LldvcmtJdGVtVXJpcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF83ID0gMDsgaW5kZXhfNyA8IGxlZnQuV29ya0l0ZW1VcmlzLkNvdW50OyArK2luZGV4XzcpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAobGVmdC5Xb3JrSXRlbVVyaXNbaW5kZXhfN10gIT0gcmlnaHQuV29ya0l0ZW1VcmlzW2luZGV4XzddKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkNvbnZlcnNpb25Qcm92ZW5hbmNlLCByaWdodC5Db252ZXJzaW9uUHJvdmVuYW5jZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuQ29udmVyc2lvblByb3ZlbmFuY2UgPT0gbnVsbCB8fCByaWdodC5Db252ZXJzaW9uUHJvdmVuYW5jZSA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkNvbnZlcnNpb25Qcm92ZW5hbmNlLkNvdW50ICE9IHJpZ2h0LkNvbnZlcnNpb25Qcm92ZW5hbmNlLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzggPSAwOyBpbmRleF84IDwgbGVmdC5Db252ZXJzaW9uUHJvdmVuYW5jZS5Db3VudDsgKytpbmRleF84KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFQaHlzaWNhbExvY2F0aW9uLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuQ29udmVyc2lvblByb3ZlbmFuY2VbaW5kZXhfOF0sIHJpZ2h0LkNvbnZlcnNpb25Qcm92ZW5hbmNlW2luZGV4XzhdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5GaXhlcywgcmlnaHQuRml4ZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkZpeGVzID09IG51bGwgfHwgcmlnaHQuRml4ZXMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5GaXhlcy5Db3VudCAhPSByaWdodC5GaXhlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF85ID0gMDsgaW5kZXhfOSA8IGxlZnQuRml4ZXMuQ291bnQ7ICsraW5kZXhfOSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghRml4LlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuRml4ZXNbaW5kZXhfOV0sIHJpZ2h0LkZpeGVzW2luZGV4XzldKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Qcm9wZXJ0aWVzLCByaWdodC5Qcm9wZXJ0aWVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgcmlnaHQuUHJvcGVydGllcyA9PSBudWxsIHx8IGxlZnQuUHJvcGVydGllcy5Db3VudCAhPSByaWdodC5Qcm9wZXJ0aWVzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV80IGluIGxlZnQuUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gdmFsdWVfNTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5Qcm9wZXJ0aWVzLlRyeUdldFZhbHVlKHZhbHVlXzQuS2V5LCBvdXQgdmFsdWVfNSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LkVxdWFscyh2YWx1ZV80LlZhbHVlLCB2YWx1ZV81KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoUmVzdWx0IG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJ1bGVJZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5SdWxlSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkxldmVsLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgaWYgKG9iai5NZXNzYWdlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLk1lc3NhZ2UuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUnVsZU1lc3NhZ2VJZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5SdWxlTWVzc2FnZUlkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5BbmFseXNpc1RhcmdldCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5BbmFseXNpc1RhcmdldC5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Mb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV82IGluIG9iai5Mb2NhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzYgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfNi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkluc3RhbmNlR3VpZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5JbnN0YW5jZUd1aWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkNvcnJlbGF0aW9uR3VpZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Db3JyZWxhdGlvbkd1aWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlBhcnRpYWxGaW5nZXJwcmludHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzcgaW4gb2JqLlBhcnRpYWxGaW5nZXJwcmludHMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzcuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNy5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzcuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkZpbmdlcnByaW50cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzEgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOCBpbiBvYmouRmluZ2VycHJpbnRzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMSBePSB2YWx1ZV84LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzguVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMSBePSB2YWx1ZV84LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzE7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5TdGFja3MgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV85IGluIG9iai5TdGFja3MpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzkgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfOS5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkNvZGVGbG93cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzEwIGluIG9iai5Db2RlRmxvd3MpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEwICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzEwLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouR3JhcGhzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMTEgaW4gb2JqLkdyYXBocykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMTEgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMTEuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5HcmFwaFRyYXZlcnNhbHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xMiBpbiBvYmouR3JhcGhUcmF2ZXJzYWxzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xMiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV8xMi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJlbGF0ZWRMb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xMyBpbiBvYmouUmVsYXRlZExvY2F0aW9ucykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMTMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMTMuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5TdXBwcmVzc2lvblN0YXRlcy5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouQmFzZWxpbmVTdGF0ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouQXR0YWNobWVudHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xNCBpbiBvYmouQXR0YWNobWVudHMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzE0ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzE0LlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouV29ya0l0ZW1VcmlzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMTUgaW4gb2JqLldvcmtJdGVtVXJpcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMTUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMTUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouQ29udmVyc2lvblByb3ZlbmFuY2UgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xNiBpbiBvYmouQ29udmVyc2lvblByb3ZlbmFuY2UpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzE2ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzE2LlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRml4ZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xNyBpbiBvYmouRml4ZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzE3ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzE3LlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzIgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMTggaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8yIF49IHZhbHVlXzE4LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzE4LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzIgXj0gdmFsdWVfMTguVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.Enum' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "9E375847C58469C3FED90AD0AF4C93B6",
- "algorithm": "md5"
- },
- {
- "value": "D281861267B27163CA18CD515FFDBCC41F658602",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "CB574E9BD5EFB0888951B6586ACC91B72B70A3DBAD6CE8419EE0196CF7DB5965",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 55,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Enum"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Rule.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBEZXNjcmliZXMgYW4gYW5hbHlzaXMgcnVsZS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFJ1bGUgOiBQcm9wZXJ0eUJhZ0hvbGRlciwgSVJ1bGUsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8UnVsZT4gVmFsdWVDb21wYXJlciA9PiBSdWxlRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhSdWxlIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlJ1bGU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0YWJsZSwgb3BhcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImlkIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIElkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHJ1bGUgaWRlbnRpZmllciB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIHRvIGFuIGVuZCB1c2VyLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm5hbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIE5hbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgY29uY2lzZSBkZXNjcmlwdGlvbiBvZiB0aGUgcnVsZS4gU2hvdWxkIGJlIGEgc2luZ2xlIHNlbnRlbmNlIHRoYXQgaXMgdW5kZXJzdGFuZGFibGUgd2hlbiB2aXNpYmxlIHNwYWNlIGlzIGxpbWl0ZWQgdG8gYSBzaW5nbGUgbGluZSBvZiB0ZXh0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInNob3J0RGVzY3JpcHRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIFNob3J0RGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bGUuIFNob3VsZCwgYXMgZmFyIGFzIHBvc3NpYmxlLCBwcm92aWRlIGRldGFpbHMgc3VmZmljaWVudCB0byBlbmFibGUgcmVzb2x1dGlvbiBvZiBhbnkgcHJvYmxlbSBpbmRpY2F0ZWQgYnkgdGhlIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmdWxsRGVzY3JpcHRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBNZXNzYWdlIEZ1bGxEZXNjcmlwdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzZXQgb2YgbmFtZS92YWx1ZSBwYWlycyB3aXRoIGFyYml0cmFyeSBuYW1lcy4gVGhlIHZhbHVlIHdpdGhpbiBlYWNoIG5hbWUvdmFsdWUgcGFpciBjb25zaXN0cyBvZiBwbGFpbiB0ZXh0IGludGVyc3BlcnNlZCB3aXRoIHBsYWNlaG9sZGVycywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWVzc2FnZSBpbiBjb21iaW5hdGlvbiB3aXRoIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgYWRkaXRpb25hbCBzdHJpbmcgYXJndW1lbnRzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2VTdHJpbmdzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IE1lc3NhZ2VTdHJpbmdzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNldCBvZiBuYW1lL3ZhbHVlIHBhaXJzIHdpdGggYXJiaXRyYXJ5IG5hbWVzLiBUaGUgdmFsdWUgd2l0aGluIGVhY2ggbmFtZS92YWx1ZSBwYWlyIGNvbnNpc3RzIG9mIHJpY2ggdGV4dCBpbnRlcnNwZXJzZWQgd2l0aCBwbGFjZWhvbGRlcnMsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIG1lc3NhZ2UgaW4gY29tYmluYXRpb24gd2l0aCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGFkZGl0aW9uYWwgc3RyaW5nIGFyZ3VtZW50cy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJyaWNoTWVzc2FnZVN0cmluZ3MiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gUmljaE1lc3NhZ2VTdHJpbmdzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgcnVsZSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIGF0IHJ1bnRpbWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiY29uZmlndXJhdGlvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFJ1bGVDb25maWd1cmF0aW9uIENvbmZpZ3VyYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgVVJJIHdoZXJlIHRoZSBwcmltYXJ5IGRvY3VtZW50YXRpb24gZm9yIHRoZSBydWxlIGNhbiBiZSBmb3VuZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJoZWxwVXJpIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgVXJpIEhlbHBVcmkgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFByb3ZpZGVzIHRoZSBwcmltYXJ5IGRvY3VtZW50YXRpb24gZm9yIHRoZSBydWxlLCB1c2VmdWwgd2hlbiB0aGVyZSBpcyBubyBvbmxpbmUgZG9jdW1lbnRhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJoZWxwIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBIZWxwIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJ1bGUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdWxlIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJ1bGUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdWxlIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IElkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTmFtZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InNob3J0RGVzY3JpcHRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFNob3J0RGVzY3JpcHRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmdWxsRGVzY3JpcHRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEZ1bGxEZXNjcmlwdGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2VTdHJpbmdzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlU3RyaW5ncyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJpY2hNZXNzYWdlU3RyaW5ncyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmljaE1lc3NhZ2VTdHJpbmdzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29uZmlndXJhdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ29uZmlndXJhdGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImhlbHBVcmkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEhlbHBVcmkiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJoZWxwIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBIZWxwIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgUnVsZShzdHJpbmcgaWQsIE1lc3NhZ2UgbmFtZSwgTWVzc2FnZSBzaG9ydERlc2NyaXB0aW9uLCBNZXNzYWdlIGZ1bGxEZXNjcmlwdGlvbiwgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IG1lc3NhZ2VTdHJpbmdzLCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gcmljaE1lc3NhZ2VTdHJpbmdzLCBSdWxlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBVcmkgaGVscFVyaSwgTWVzc2FnZSBoZWxwLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoaWQsIG5hbWUsIHNob3J0RGVzY3JpcHRpb24sIGZ1bGxEZXNjcmlwdGlvbiwgbWVzc2FnZVN0cmluZ3MsIHJpY2hNZXNzYWdlU3RyaW5ncywgY29uZmlndXJhdGlvbiwgaGVscFVyaSwgaGVscCwgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdWxlIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBSdWxlKFJ1bGUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuSWQsIG90aGVyLk5hbWUsIG90aGVyLlNob3J0RGVzY3JpcHRpb24sIG90aGVyLkZ1bGxEZXNjcmlwdGlvbiwgb3RoZXIuTWVzc2FnZVN0cmluZ3MsIG90aGVyLlJpY2hNZXNzYWdlU3RyaW5ncywgb3RoZXIuQ29uZmlndXJhdGlvbiwgb3RoZXIuSGVscFVyaSwgb3RoZXIuSGVscCwgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlIElTYXJpZk5vZGUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJ1bGUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChSdWxlKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBSdWxlKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIGlkLCBNZXNzYWdlIG5hbWUsIE1lc3NhZ2Ugc2hvcnREZXNjcmlwdGlvbiwgTWVzc2FnZSBmdWxsRGVzY3JpcHRpb24sIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBtZXNzYWdlU3RyaW5ncywgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IHJpY2hNZXNzYWdlU3RyaW5ncywgUnVsZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgVXJpIGhlbHBVcmksIE1lc3NhZ2UgaGVscCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJZCA9IGlkOw0KICAgICAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBOYW1lID0gbmV3IE1lc3NhZ2UobmFtZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChzaG9ydERlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU2hvcnREZXNjcmlwdGlvbiA9IG5ldyBNZXNzYWdlKHNob3J0RGVzY3JpcHRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZnVsbERlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRnVsbERlc2NyaXB0aW9uID0gbmV3IE1lc3NhZ2UoZnVsbERlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKG1lc3NhZ2VTdHJpbmdzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVzc2FnZVN0cmluZ3MgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4obWVzc2FnZVN0cmluZ3MpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmljaE1lc3NhZ2VTdHJpbmdzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmljaE1lc3NhZ2VTdHJpbmdzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KHJpY2hNZXNzYWdlU3RyaW5ncyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiA9IG5ldyBSdWxlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGhlbHBVcmkgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBIZWxwVXJpID0gbmV3IFVyaShoZWxwVXJpLk9yaWdpbmFsU3RyaW5nLCBoZWxwVXJpLklzQWJzb2x1dGVVcmkgPyBVcmlLaW5kLkFic29sdXRlIDogVXJpS2luZC5SZWxhdGl2ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChoZWxwICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSGVscCA9IG5ldyBNZXNzYWdlKGhlbHApOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1502",
+ "message": {
+ "text": "'JsonSchema.Equals(JsonSchema)' has a cyclomatic complexity of 50. Rewrite or refactor the method to reduce complexity to 25."
},
- "hashes": [
- {
- "value": "BF00F24519A56D81CBA532B0710C7A58",
- "algorithm": "md5"
- },
- {
- "value": "F898D7FCFAE05081A777D3F033E17202BC42FF48",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "DF241CACD78F0DDF27C71E700ECCEA3059F41128C4D9758DA1804DB1D5DBFC2A",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 56,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Equals(Microsoft.Json.Schema.JsonSchema)"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Maintainability",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/ReportingConfiguration.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBJbmZvcm1hdGlvbiBhYm91dCBhIHJ1bGUgdGhhdCBjYW4gYmUgY29uZmlndXJlZCBhdCBydW50aW1lLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgUnVsZUNvbmZpZ3VyYXRpb24gOiBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFJ1bGVDb25maWd1cmF0aW9uPiBWYWx1ZUNvbXBhcmVyID0+IFJ1bGVDb25maWd1cmF0aW9uRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhSdWxlQ29uZmlndXJhdGlvbiBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5SdWxlQ29uZmlndXJhdGlvbjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBydWxlIHdpbGwgYmUgZXZhbHVhdGVkIGR1cmluZyB0aGUgc2Nhbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJlbmFibGVkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgYm9vbCBFbmFibGVkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgc2V2ZXJpdHkgbGV2ZWwgb2YgdGhlIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJkZWZhdWx0TGV2ZWwiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBSdWxlQ29uZmlndXJhdGlvbkRlZmF1bHRMZXZlbCBEZWZhdWx0TGV2ZWwgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENvbnRhaW5zIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhpcyBydWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInBhcmFtZXRlcnMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFBhcmFtZXRlcnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlJ1bGVDb25maWd1cmF0aW9uIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJ1bGVDb25maWd1cmF0aW9uKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUnVsZUNvbmZpZ3VyYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlbmFibGVkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBFbmFibGVkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGVmYXVsdExldmVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBEZWZhdWx0TGV2ZWwiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwYXJhbWV0ZXJzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQYXJhbWV0ZXJzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBSdWxlQ29uZmlndXJhdGlvbihib29sIGVuYWJsZWQsIFJ1bGVDb25maWd1cmF0aW9uRGVmYXVsdExldmVsIGRlZmF1bHRMZXZlbCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwYXJhbWV0ZXJzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGVuYWJsZWQsIGRlZmF1bHRMZXZlbCwgcGFyYW1ldGVycyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdWxlQ29uZmlndXJhdGlvbiIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgUnVsZUNvbmZpZ3VyYXRpb24oUnVsZUNvbmZpZ3VyYXRpb24gb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuRW5hYmxlZCwgb3RoZXIuRGVmYXVsdExldmVsLCBvdGhlci5QYXJhbWV0ZXJzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgUnVsZUNvbmZpZ3VyYXRpb24gRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChSdWxlQ29uZmlndXJhdGlvbilEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUnVsZUNvbmZpZ3VyYXRpb24odGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChib29sIGVuYWJsZWQsIFJ1bGVDb25maWd1cmF0aW9uRGVmYXVsdExldmVsIGRlZmF1bHRMZXZlbCwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwYXJhbWV0ZXJzKQ0KICAgICAgICB7DQogICAgICAgICAgICBFbmFibGVkID0gZW5hYmxlZDsNCiAgICAgICAgICAgIERlZmF1bHRMZXZlbCA9IGRlZmF1bHRMZXZlbDsNCiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUGFyYW1ldGVycyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocGFyYW1ldGVycyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.OneOf' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "62C3B6D82E1638BEF4D4DF893034A729",
- "algorithm": "md5"
- },
- {
- "value": "73A324FEB1351A041D54A253499089CBD15368DF",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "D42411545783351B503C120EAF43D6EFE2B89F16D7364947613E4199CB9618F1",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 57,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.OneOf"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/RuleEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBSdWxlIGZvciBlcXVhbGl0eS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgUnVsZUVxdWFsaXR5Q29tcGFyZXIgOiBJRXF1YWxpdHlDb21wYXJlcjxSdWxlPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IFJ1bGVFcXVhbGl0eUNvbXBhcmVyIEluc3RhbmNlID0gbmV3IFJ1bGVFcXVhbGl0eUNvbXBhcmVyKCk7DQoNCiAgICAgICAgcHVibGljIGJvb2wgRXF1YWxzKFJ1bGUgbGVmdCwgUnVsZSByaWdodCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCByaWdodCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgbnVsbCkgfHwgUmVmZXJlbmNlRXF1YWxzKHJpZ2h0LCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LklkICE9IHJpZ2h0LklkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFNZXNzYWdlLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuTmFtZSwgcmlnaHQuTmFtZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIU1lc3NhZ2UuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5TaG9ydERlc2NyaXB0aW9uLCByaWdodC5TaG9ydERlc2NyaXB0aW9uKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghTWVzc2FnZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkZ1bGxEZXNjcmlwdGlvbiwgcmlnaHQuRnVsbERlc2NyaXB0aW9uKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0Lk1lc3NhZ2VTdHJpbmdzLCByaWdodC5NZXNzYWdlU3RyaW5ncykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuTWVzc2FnZVN0cmluZ3MgPT0gbnVsbCB8fCByaWdodC5NZXNzYWdlU3RyaW5ncyA9PSBudWxsIHx8IGxlZnQuTWVzc2FnZVN0cmluZ3MuQ291bnQgIT0gcmlnaHQuTWVzc2FnZVN0cmluZ3MuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5NZXNzYWdlU3RyaW5ncykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0Lk1lc3NhZ2VTdHJpbmdzLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wLlZhbHVlICE9IHZhbHVlXzEpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUmljaE1lc3NhZ2VTdHJpbmdzLCByaWdodC5SaWNoTWVzc2FnZVN0cmluZ3MpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlJpY2hNZXNzYWdlU3RyaW5ncyA9PSBudWxsIHx8IHJpZ2h0LlJpY2hNZXNzYWdlU3RyaW5ncyA9PSBudWxsIHx8IGxlZnQuUmljaE1lc3NhZ2VTdHJpbmdzLkNvdW50ICE9IHJpZ2h0LlJpY2hNZXNzYWdlU3RyaW5ncy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMiBpbiBsZWZ0LlJpY2hNZXNzYWdlU3RyaW5ncykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8zOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlJpY2hNZXNzYWdlU3RyaW5ncy5UcnlHZXRWYWx1ZSh2YWx1ZV8yLktleSwgb3V0IHZhbHVlXzMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMi5WYWx1ZSAhPSB2YWx1ZV8zKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghUnVsZUNvbmZpZ3VyYXRpb24uVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5Db25maWd1cmF0aW9uLCByaWdodC5Db25maWd1cmF0aW9uKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkhlbHBVcmkgIT0gcmlnaHQuSGVscFVyaSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghTWVzc2FnZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkhlbHAsIHJpZ2h0LkhlbHApKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUHJvcGVydGllcywgcmlnaHQuUHJvcGVydGllcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUHJvcGVydGllcyA9PSBudWxsIHx8IHJpZ2h0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCBsZWZ0LlByb3BlcnRpZXMuQ291bnQgIT0gcmlnaHQuUHJvcGVydGllcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNCBpbiBsZWZ0LlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVkUHJvcGVydHlJbmZvIHZhbHVlXzU7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuUHJvcGVydGllcy5UcnlHZXRWYWx1ZSh2YWx1ZV80LktleSwgb3V0IHZhbHVlXzUpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoIW9iamVjdC5FcXVhbHModmFsdWVfNC5WYWx1ZSwgdmFsdWVfNSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgaW50IEdldEhhc2hDb2RlKFJ1bGUgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG9iaiwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGludCByZXN1bHQgPSAxNzsNCiAgICAgICAgICAgIHVuY2hlY2tlZA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChvYmouSWQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLk5hbWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTmFtZS5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5TaG9ydERlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlNob3J0RGVzY3JpcHRpb24uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRnVsbERlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkZ1bGxEZXNjcmlwdGlvbi5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5NZXNzYWdlU3RyaW5ncyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzAgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNiBpbiBvYmouTWVzc2FnZVN0cmluZ3MpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzYuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNi5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzYuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJpY2hNZXNzYWdlU3RyaW5ncyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzEgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNyBpbiBvYmouUmljaE1lc3NhZ2VTdHJpbmdzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMSBePSB2YWx1ZV83LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzcuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMSBePSB2YWx1ZV83LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzE7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Db25maWd1cmF0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkNvbmZpZ3VyYXRpb24uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouSGVscFVyaSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5IZWxwVXJpLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5IZWxwICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkhlbHAuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzIgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOCBpbiBvYmouUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzIgXj0gdmFsdWVfOC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV84LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzIgXj0gdmFsdWVfOC5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8yOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.PatternProperties' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "EC13AE1A8D21D2810A305AD5675690F1",
- "algorithm": "md5"
- },
- {
- "value": "0B68D73934671D23230105E9EF0CEC9DF89B78BE",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "6F80EEF3B1FF6629273EA07C293DA27AC3568EE3E7BB472662F9DA2C28F5054D",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 58,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.PatternProperties"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/RuleUtilities.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SZXNvdXJjZXM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgcHVibGljIHN0YXRpYyBjbGFzcyBSdWxlVXRpbGl0aWVzDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIFJlc3VsdCBCdWlsZFJlc3VsdChSZXN1bHRMZXZlbCBsZXZlbCwgSUFuYWx5c2lzQ29udGV4dCBjb250ZXh0LCBSZWdpb24gcmVnaW9uLCBzdHJpbmcgcnVsZU1lc3NhZ2VJZCwgcGFyYW1zIHN0cmluZ1tdIGFyZ3VtZW50cykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihjb250ZXh0KSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChhcmd1bWVudHMgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihhcmd1bWVudHMpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcnVsZU1lc3NhZ2VJZCA9IE5vcm1hbGl6ZVJ1bGVNZXNzYWdlSWQocnVsZU1lc3NhZ2VJZCwgY29udGV4dC5SdWxlLklkKTsNCg0KICAgICAgICAgICAgUmVzdWx0IHJlc3VsdCA9IG5ldyBSZXN1bHQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSdWxlSWQgPSBjb250ZXh0LlJ1bGUuSWQsDQogICAgICAgICAgICAgICAgUnVsZU1lc3NhZ2VJZCA9IHJ1bGVNZXNzYWdlSWQsDQoNCiAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50cyA9IGFyZ3VtZW50cw0KICAgICAgICAgICAgICAgIH0sDQoNCiAgICAgICAgICAgICAgICBMZXZlbCA9IGxldmVsDQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICBzdHJpbmcgdGFyZ2V0UGF0aCA9IGNvbnRleHQuVGFyZ2V0VXJpPy5Mb2NhbFBhdGg7DQogICAgICAgICAgICBpZiAodGFyZ2V0UGF0aCAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlc3VsdC5Mb2NhdGlvbnMgPSBuZXcgTGlzdDxMb2NhdGlvbj4gew0KICAgICAgICAgICAgICAgICAgICBuZXcgU2FyaWYuTG9jYXRpb24gew0KICAgICAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IG5ldyBQaHlzaWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUxvY2F0aW9uID0gbmV3IEZpbGVMb2NhdGlvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXJpID0gbmV3IFVyaSh0YXJnZXRQYXRoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaW9uID0gcmVnaW9uDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGV2ZWwgPT0gUmVzdWx0TGV2ZWwuV2FybmluZykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjb250ZXh0LlJ1bnRpbWVFcnJvcnMgfD0gUnVudGltZUNvbmRpdGlvbnMuT25lT3JNb3JlV2FybmluZ3NGaXJlZDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxldmVsID09IFJlc3VsdExldmVsLkVycm9yKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNvbnRleHQuUnVudGltZUVycm9ycyB8PSBSdW50aW1lQ29uZGl0aW9ucy5PbmVPck1vcmVFcnJvcnNGaXJlZDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gQnVpbGREaWN0aW9uYXJ5KA0KICAgICAgICAgICAgUmVzb3VyY2VNYW5hZ2VyIHJlc291cmNlTWFuYWdlciwgDQogICAgICAgICAgICBJRW51bWVyYWJsZTxzdHJpbmc+IHJlc291cmNlTmFtZXMsIA0KICAgICAgICAgICAgc3RyaW5nIHJ1bGVJZCwNCiAgICAgICAgICAgIHN0cmluZyBwcmVmaXggPSBudWxsKQ0KICAgICAgICB7DQogICAgICAgICAgICAvL3ZhbGlkYXRpb24NCiAgICAgICAgICAgIGlmIChyZXNvdXJjZU5hbWVzID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YocmVzb3VyY2VOYW1lcykpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmVzb3VyY2VNYW5hZ2VyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YocmVzb3VyY2VNYW5hZ2VyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIE5vdGUgdGhpcyBkaWN0aW9uYXJ5IHByb3ZpZGVzIGZvciBjYXNlLWluc2Vuc2l0aXZlIGtleXMNCiAgICAgICAgICAgIHZhciBkaWN0aW9uYXJ5ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KFN0cmluZ0NvbXBhcmVyLk9yZGluYWxJZ25vcmVDYXNlKTsNCg0KICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIHJlc291cmNlTmFtZSBpbiByZXNvdXJjZU5hbWVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN0cmluZyByZXNvdXJjZVZhbHVlID0gcmVzb3VyY2VNYW5hZ2VyLkdldFN0cmluZyhyZXNvdXJjZU5hbWUpOw0KDQogICAgICAgICAgICAgICAgc3RyaW5nIG5vcm1hbGl6ZWRSZXNvdXJjZU5hbWUgPSBOb3JtYWxpemVSdWxlTWVzc2FnZUlkKHJlc291cmNlTmFtZSwgcnVsZUlkLCBwcmVmaXgpOw0KDQogICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB1c2UgdGhlIG5vbi1ub3JtYWxpemVkIGtleSB0byByZXRyaWV2ZSB0aGUgcmVzb3VyY2UgdmFsdWUNCiAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5W25vcm1hbGl6ZWRSZXNvdXJjZU5hbWVdID0gcmVzb3VyY2VWYWx1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gV2UgbmVlZCB0byByZXR1cm4gbnVsbCBoZXJlLCBvdGhlcndpc2UgdGhpcyBlbXB0eSBkaWN0aW9uYXJ5IHdpbGwgc2VyaWFsaXplIHRvIFNBUklGIGxvZ3MgdW5uZWNlc3NhcmlseQ0KICAgICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnkuQ291bnQgPiAwID8gZGljdGlvbmFyeSA6IG51bGw7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBOb3JtYWxpemVSdWxlTWVzc2FnZUlkKHN0cmluZyBydWxlTWVzc2FnZUlkLCBzdHJpbmcgcnVsZUlkLCBzdHJpbmcgcHJlZml4ID0gbnVsbCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHJ1bGVNZXNzYWdlSWQgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihydWxlTWVzc2FnZUlkKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkocnVsZUlkKSAmJiBydWxlTWVzc2FnZUlkLlN0YXJ0c1dpdGgocnVsZUlkICsgIl8iLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJ1bGVNZXNzYWdlSWQgPSBydWxlTWVzc2FnZUlkLlN1YnN0cmluZyhydWxlSWQuTGVuZ3RoICsgMSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkocHJlZml4KSAmJiBydWxlTWVzc2FnZUlkLlN0YXJ0c1dpdGgocHJlZml4ICsgIl8iLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJ1bGVNZXNzYWdlSWQgPSBydWxlTWVzc2FnZUlkLlN1YnN0cmluZyhwcmVmaXguTGVuZ3RoICsgMSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBydWxlTWVzc2FnZUlkOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.Properties' to be read-only by removing the property setter."
},
- "hashes": [
+ "locations": [
{
- "value": "93684A7440017F05201F4E29606EBBA4",
- "algorithm": "md5"
- },
- {
- "value": "5570AE316F9E61559C61CA3875F9A6B688D96851",
- "algorithm": "sha-1"
- },
- {
- "value": "8EA29232B592730E588E478B29E3F10503AEC1171CA58A9BEBA284525A41DA5F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 59,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Properties"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Run.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBEZXNjcmliZXMgYSBzaW5nbGUgcnVuIG9mIGFuIGFuYWx5c2lzIHRvb2wsIGFuZCBjb250YWlucyB0aGUgb3V0cHV0IG9mIHRoYXQgcnVuLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgUnVuIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8UnVuPiBWYWx1ZUNvbXBhcmVyID0+IFJ1bkVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUnVuIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlJ1bjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0b29sIG9yIHRvb2wgcGlwZWxpbmUgdGhhdCBnZW5lcmF0ZWQgdGhlIHJlc3VsdHMgaW4gdGhpcyBydW4uIEEgcnVuIGNhbiBvbmx5IGNvbnRhaW4gcmVzdWx0cyBwcm9kdWNlZCBieSBhIHNpbmdsZSB0b29sIG9yIHRvb2wgcGlwZWxpbmUuIEEgcnVuIGNhbiBhZ2dyZWdhdGUgcmVzdWx0cyBmcm9tIG11bHRpcGxlIGxvZyBmaWxlcywgYXMgbG9uZyBhcyBjb250ZXh0IGFyb3VuZCB0aGUgdG9vbCBydW4gKHRvb2wgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhbmQgdGhlIGxpa2UpIGlzIGlkZW50aWNhbCBmb3IgYWxsIGFnZ3JlZ2F0ZWQgZmlsZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidG9vbCIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIFRvb2wgVG9vbCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gRGVzY3JpYmVzIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBhbmFseXNpcyB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImludm9jYXRpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8SW52b2NhdGlvbj4gSW52b2NhdGlvbnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgY29udmVyc2lvbiBvYmplY3QgdGhhdCBkZXNjcmliZXMgaG93IGEgY29udmVydGVyIHRyYW5zZm9ybWVkIGFuIGFuYWx5c2lzIHRvb2wncyBuYXRpdmUgb3V0cHV0IGZvcm1hdCBpbnRvIHRoZSBTQVJJRiBmb3JtYXQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiY29udmVyc2lvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIENvbnZlcnNpb24gQ29udmVyc2lvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gU3BlY2lmaWVzIHRoZSByZXZpc2lvbiBpbiB2ZXJzaW9uIGNvbnRyb2wgb2YgdGhlIGZpbGVzIHRoYXQgd2VyZSBzY2FubmVkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInZlcnNpb25Db250cm9sUHJvdmVuYW5jZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFZlcnNpb25Db250cm9sRGV0YWlscz4gVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgYWJzb2x1dGUgVVJJIHNwZWNpZmllZCBieSBlYWNoIHVyaUJhc2VJZCBzeW1ib2wgb24gdGhlIG1hY2hpbmUgd2hlcmUgdGhlIHRvb2wgb3JpZ2luYWxseSByYW4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAib3JpZ2luYWxVcmlCYXNlSWRzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBVcmk+IE9yaWdpbmFsVXJpQmFzZUlkcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBkaWN0aW9uYXJ5IGVhY2ggb2Ygd2hvc2Uga2V5cyBpcyBhIFVSSSBhbmQgZWFjaCBvZiB3aG9zZSB2YWx1ZXMgaXMgYSBmaWxlIG9iamVjdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmaWxlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+IEZpbGVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGRpY3Rpb25hcnksIGVhY2ggb2Ygd2hvc2Uga2V5cyBzcGVjaWZpZXMgYSBsb2dpY2FsIGxvY2F0aW9uIHN1Y2ggYXMgYSBuYW1lc3BhY2UsIHR5cGUgb3IgZnVuY3Rpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibG9naWNhbExvY2F0aW9ucyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElEaWN0aW9uYXJ5PHN0cmluZywgTG9naWNhbExvY2F0aW9uPiBMb2dpY2FsTG9jYXRpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBvbmUgb3IgbW9yZSB1bmlxdWUgJ2dyYXBoJyBvYmplY3RzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImdyYXBocyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PEdyYXBoPiBHcmFwaHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzZXQgb2YgcmVzdWx0cyBjb250YWluZWQgaW4gYW4gU0FSSUYgbG9nLiBUaGUgcmVzdWx0cyBhcnJheSBjYW4gYmUgb21pdHRlZCB3aGVuIGEgcnVuIGlzIHNvbGVseSBleHBvcnRpbmcgcnVsZXMgbWV0YWRhdGEuIEl0IG11c3QgYmUgcHJlc2VudCAoYnV0IG1heSBiZSBlbXB0eSkgaW4gdGhlIGV2ZW50IHRoYXQgYSBsb2cgZmlsZSByZXByZXNlbnRzIGFuIGFjdHVhbCBzY2FuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJlc3VsdHMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxSZXN1bHQ+IFJlc3VsdHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEl0ZW1zIHRoYXQgY2FuIGJlIGxvY2FsaXplZCwgc3VjaCBhcyBtZXNzYWdlIHN0cmluZ3MgYW5kIHJ1bGUgbWV0YWRhdGEuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicmVzb3VyY2VzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgUmVzb3VyY2VzIFJlc291cmNlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdGFibGUsIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcnVuLCBpbiB0aGUgZm9ybSBvZiBhIEdVSUQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaW5zdGFuY2VHdWlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEluc3RhbmNlR3VpZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBsb2dpY2FsIGlkZW50aWZpZXIgZm9yIGEgcnVuLCBmb3IgZXhhbXBsZSwgJ25pZ2h0bHkgQ2xhbmcgYW5hbHl6ZXIgcnVuJy4gTXVsdGlwbGUgcnVucyBvZiB0aGUgc2FtZSB0eXBlIGNhbiBoYXZlIHRoZSBzYW1lIHN0YWJsZUlkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvZ2ljYWxJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBMb2dpY2FsSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJkZXNjcmlwdGlvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIE1lc3NhZ2UgRGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgZ2xvYmFsIGlkZW50aWZpZXIgdGhhdCBhbGxvd3MgdGhlIHJ1biB0byBiZSBjb3JyZWxhdGVkIHdpdGggb3RoZXIgYXJ0aWZhY3RzIHByb2R1Y2VkIGJ5IGEgbGFyZ2VyIGF1dG9tYXRpb24gcHJvY2Vzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhdXRvbWF0aW9uTG9naWNhbElkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEF1dG9tYXRpb25Mb2dpY2FsSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSAnaW5zdGFuY2VHdWlkJyBwcm9wZXJ0eSBvZiBhIHByZXZpb3VzIFNBUklGICdydW4nIHRoYXQgY29tcHJpc2VzIHRoZSBiYXNlbGluZSB0aGF0IHdhcyB1c2VkIHRvIGNvbXB1dGUgcmVzdWx0ICdiYXNlbGluZVN0YXRlJyBwcm9wZXJ0aWVzIGZvciB0aGUgcnVuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImJhc2VsaW5lSW5zdGFuY2VHdWlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEJhc2VsaW5lSW5zdGFuY2VHdWlkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIGZvciB3aGljaCB0aGUgcnVuIHdhcyB0YXJnZXRlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhcmNoaXRlY3R1cmUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgQXJjaGl0ZWN0dXJlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgTUlNRSB0eXBlIG9mIGFsbCByaWNoIHRleHQgbWVzc2FnZSBwcm9wZXJ0aWVzIGluIHRoZSBydW4uIERlZmF1bHQ6ICJ0ZXh0L21hcmtkb3duO3ZhcmlhbnQ9R0ZNIg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJpY2hNZXNzYWdlTWltZVR5cGUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgUmljaE1lc3NhZ2VNaW1lVHlwZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHN0cmluZyB1c2VkIHRvIHJlcGxhY2Ugc2Vuc2l0aXZlIGluZm9ybWF0aW9uIGluIGEgcmVkYWN0aW9uLWF3YXJlIHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJlZGFjdGlvblRva2VuIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJlZGFjdGlvblRva2VuIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBTcGVjaWZpZXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIGFueSBmaWxlIG9iamVjdCB0aGF0IHJlZmVycyB0byBhIHRleHQgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJkZWZhdWx0RmlsZUVuY29kaW5nIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIERlZmF1bHRGaWxlRW5jb2RpbmcgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFNwZWNpZmllcyB0aGUgdW5pdCBpbiB3aGljaCB0aGUgdG9vbCBtZWFzdXJlcyBjb2x1bW5zLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvbHVtbktpbmQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBDb2x1bW5LaW5kIENvbHVtbktpbmQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcnVuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUnVuIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJ1bigpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlJ1biIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRvb2wiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRvb2wiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpbnZvY2F0aW9ucyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSW52b2NhdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb252ZXJzaW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBDb252ZXJzaW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBWZXJzaW9uQ29udHJvbFByb3ZlbmFuY2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvcmlnaW5hbFVyaUJhc2VJZHMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE9yaWdpbmFsVXJpQmFzZUlkcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGaWxlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImxvZ2ljYWxMb2NhdGlvbnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExvZ2ljYWxMb2NhdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJncmFwaHMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEdyYXBocyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJlc3VsdHMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJlc3VsdHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyZXNvdXJjZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJlc291cmNlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Imluc3RhbmNlR3VpZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSW5zdGFuY2VHdWlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9naWNhbElkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMb2dpY2FsSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkZXNjcmlwdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRGVzY3JpcHRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhdXRvbWF0aW9uTG9naWNhbElkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBdXRvbWF0aW9uTG9naWNhbElkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYmFzZWxpbmVJbnN0YW5jZUd1aWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEJhc2VsaW5lSW5zdGFuY2VHdWlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYXJjaGl0ZWN0dXJlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBcmNoaXRlY3R1cmUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyaWNoTWVzc2FnZU1pbWVUeXBlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSaWNoTWVzc2FnZU1pbWVUeXBlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVkYWN0aW9uVG9rZW4iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJlZGFjdGlvblRva2VuIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGVmYXVsdEZpbGVFbmNvZGluZyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRGVmYXVsdEZpbGVFbmNvZGluZyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNvbHVtbktpbmQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IENvbHVtbktpbmQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBSdW4oVG9vbCB0b29sLCBJRW51bWVyYWJsZTxJbnZvY2F0aW9uPiBpbnZvY2F0aW9ucywgQ29udmVyc2lvbiBjb252ZXJzaW9uLCBJRW51bWVyYWJsZTxWZXJzaW9uQ29udHJvbERldGFpbHM+IHZlcnNpb25Db250cm9sUHJvdmVuYW5jZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBVcmk+IG9yaWdpbmFsVXJpQmFzZUlkcywgSURpY3Rpb25hcnk8c3RyaW5nLCBGaWxlRGF0YT4gZmlsZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgTG9naWNhbExvY2F0aW9uPiBsb2dpY2FsTG9jYXRpb25zLCBJRW51bWVyYWJsZTxHcmFwaD4gZ3JhcGhzLCBJRW51bWVyYWJsZTxSZXN1bHQ+IHJlc3VsdHMsIFJlc291cmNlcyByZXNvdXJjZXMsIHN0cmluZyBpbnN0YW5jZUd1aWQsIHN0cmluZyBsb2dpY2FsSWQsIE1lc3NhZ2UgZGVzY3JpcHRpb24sIHN0cmluZyBhdXRvbWF0aW9uTG9naWNhbElkLCBzdHJpbmcgYmFzZWxpbmVJbnN0YW5jZUd1aWQsIHN0cmluZyBhcmNoaXRlY3R1cmUsIHN0cmluZyByaWNoTWVzc2FnZU1pbWVUeXBlLCBzdHJpbmcgcmVkYWN0aW9uVG9rZW4sIHN0cmluZyBkZWZhdWx0RmlsZUVuY29kaW5nLCBDb2x1bW5LaW5kIGNvbHVtbktpbmQsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdCh0b29sLCBpbnZvY2F0aW9ucywgY29udmVyc2lvbiwgdmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlLCBvcmlnaW5hbFVyaUJhc2VJZHMsIGZpbGVzLCBsb2dpY2FsTG9jYXRpb25zLCBncmFwaHMsIHJlc3VsdHMsIHJlc291cmNlcywgaW5zdGFuY2VHdWlkLCBsb2dpY2FsSWQsIGRlc2NyaXB0aW9uLCBhdXRvbWF0aW9uTG9naWNhbElkLCBiYXNlbGluZUluc3RhbmNlR3VpZCwgYXJjaGl0ZWN0dXJlLCByaWNoTWVzc2FnZU1pbWVUeXBlLCByZWRhY3Rpb25Ub2tlbiwgZGVmYXVsdEZpbGVFbmNvZGluZywgY29sdW1uS2luZCwgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdW4iIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIFJ1bihSdW4gb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuVG9vbCwgb3RoZXIuSW52b2NhdGlvbnMsIG90aGVyLkNvbnZlcnNpb24sIG90aGVyLlZlcnNpb25Db250cm9sUHJvdmVuYW5jZSwgb3RoZXIuT3JpZ2luYWxVcmlCYXNlSWRzLCBvdGhlci5GaWxlcywgb3RoZXIuTG9naWNhbExvY2F0aW9ucywgb3RoZXIuR3JhcGhzLCBvdGhlci5SZXN1bHRzLCBvdGhlci5SZXNvdXJjZXMsIG90aGVyLkluc3RhbmNlR3VpZCwgb3RoZXIuTG9naWNhbElkLCBvdGhlci5EZXNjcmlwdGlvbiwgb3RoZXIuQXV0b21hdGlvbkxvZ2ljYWxJZCwgb3RoZXIuQmFzZWxpbmVJbnN0YW5jZUd1aWQsIG90aGVyLkFyY2hpdGVjdHVyZSwgb3RoZXIuUmljaE1lc3NhZ2VNaW1lVHlwZSwgb3RoZXIuUmVkYWN0aW9uVG9rZW4sIG90aGVyLkRlZmF1bHRGaWxlRW5jb2RpbmcsIG90aGVyLkNvbHVtbktpbmQsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBSdW4gRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChSdW4pRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFJ1bih0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KFRvb2wgdG9vbCwgSUVudW1lcmFibGU8SW52b2NhdGlvbj4gaW52b2NhdGlvbnMsIENvbnZlcnNpb24gY29udmVyc2lvbiwgSUVudW1lcmFibGU8VmVyc2lvbkNvbnRyb2xEZXRhaWxzPiB2ZXJzaW9uQ29udHJvbFByb3ZlbmFuY2UsIElEaWN0aW9uYXJ5PHN0cmluZywgVXJpPiBvcmlnaW5hbFVyaUJhc2VJZHMsIElEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+IGZpbGVzLCBJRGljdGlvbmFyeTxzdHJpbmcsIExvZ2ljYWxMb2NhdGlvbj4gbG9naWNhbExvY2F0aW9ucywgSUVudW1lcmFibGU8R3JhcGg+IGdyYXBocywgSUVudW1lcmFibGU8UmVzdWx0PiByZXN1bHRzLCBSZXNvdXJjZXMgcmVzb3VyY2VzLCBzdHJpbmcgaW5zdGFuY2VHdWlkLCBzdHJpbmcgbG9naWNhbElkLCBNZXNzYWdlIGRlc2NyaXB0aW9uLCBzdHJpbmcgYXV0b21hdGlvbkxvZ2ljYWxJZCwgc3RyaW5nIGJhc2VsaW5lSW5zdGFuY2VHdWlkLCBzdHJpbmcgYXJjaGl0ZWN0dXJlLCBzdHJpbmcgcmljaE1lc3NhZ2VNaW1lVHlwZSwgc3RyaW5nIHJlZGFjdGlvblRva2VuLCBzdHJpbmcgZGVmYXVsdEZpbGVFbmNvZGluZywgQ29sdW1uS2luZCBjb2x1bW5LaW5kLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICh0b29sICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVG9vbCA9IG5ldyBUb29sKHRvb2wpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoaW52b2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEludm9jYXRpb24+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gaW52b2NhdGlvbnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBJbnZvY2F0aW9uKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEludm9jYXRpb25zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNvbnZlcnNpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBDb252ZXJzaW9uID0gbmV3IENvbnZlcnNpb24oY29udmVyc2lvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICh2ZXJzaW9uQ29udHJvbFByb3ZlbmFuY2UgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMSA9IG5ldyBMaXN0PFZlcnNpb25Db250cm9sRGV0YWlscz4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiB2ZXJzaW9uQ29udHJvbFByb3ZlbmFuY2UpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMSA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzEuQWRkKG5ldyBWZXJzaW9uQ29udHJvbERldGFpbHModmFsdWVfMSkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlID0gZGVzdGluYXRpb25fMTsNCiAgICAgICAgICAgIH07DQogICAgICAgICAgICBpZiAoZmlsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGaWxlcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzIgaW4gZmlsZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBGaWxlcy5BZGQodmFsdWVfMi5LZXksIG5ldyBGaWxlRGF0YSh2YWx1ZV8yLlZhbHVlKSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobG9naWNhbExvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIExvZ2ljYWxMb2NhdGlvbnMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIExvZ2ljYWxMb2NhdGlvbj4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMyBpbiBsb2dpY2FsTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgTG9naWNhbExvY2F0aW9ucy5BZGQodmFsdWVfMy5LZXksIG5ldyBMb2dpY2FsTG9jYXRpb24odmFsdWVfMy5WYWx1ZSkpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGdyYXBocyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8yID0gbmV3IExpc3Q8R3JhcGg+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gZ3JhcGhzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzQgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMi5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8yLkFkZChuZXcgR3JhcGgodmFsdWVfNCkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgR3JhcGhzID0gZGVzdGluYXRpb25fMjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHJlc3VsdHMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNSBpbiByZXN1bHRzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzUgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMy5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8zLkFkZChuZXcgUmVzdWx0KHZhbHVlXzUpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFJlc3VsdHMgPSBkZXN0aW5hdGlvbl8zOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmVzb3VyY2VzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVzb3VyY2VzID0gbmV3IFJlc291cmNlcyhyZXNvdXJjZXMpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbnN0YW5jZUd1aWQgPSBpbnN0YW5jZUd1aWQ7DQogICAgICAgICAgICBMb2dpY2FsSWQgPSBsb2dpY2FsSWQ7DQogICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9IG5ldyBNZXNzYWdlKGRlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgQXV0b21hdGlvbkxvZ2ljYWxJZCA9IGF1dG9tYXRpb25Mb2dpY2FsSWQ7DQogICAgICAgICAgICBCYXNlbGluZUluc3RhbmNlR3VpZCA9IGJhc2VsaW5lSW5zdGFuY2VHdWlkOw0KICAgICAgICAgICAgQXJjaGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJlOw0KICAgICAgICAgICAgUmljaE1lc3NhZ2VNaW1lVHlwZSA9IHJpY2hNZXNzYWdlTWltZVR5cGU7DQogICAgICAgICAgICBSZWRhY3Rpb25Ub2tlbiA9IHJlZGFjdGlvblRva2VuOw0KICAgICAgICAgICAgRGVmYXVsdEZpbGVFbmNvZGluZyA9IGRlZmF1bHRGaWxlRW5jb2Rpbmc7DQogICAgICAgICAgICBDb2x1bW5LaW5kID0gY29sdW1uS2luZDsNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.Required' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "F00F5FA48C2DEAE37D498B1238BB07A9",
- "algorithm": "md5"
- },
- {
- "value": "E9116997B69DBFB201A9C4D0A9868B21AEB76554",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "67221D94750490357A78124536512D96FFD610C2F0040F083AF8EC36B37FAF5F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 60,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Required"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/RunEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBSdW4gZm9yIGVxdWFsaXR5Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBSdW5FcXVhbGl0eUNvbXBhcmVyIDogSUVxdWFsaXR5Q29tcGFyZXI8UnVuPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IFJ1bkVxdWFsaXR5Q29tcGFyZXIgSW5zdGFuY2UgPSBuZXcgUnVuRXF1YWxpdHlDb21wYXJlcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhSdW4gbGVmdCwgUnVuIHJpZ2h0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIHJpZ2h0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCBudWxsKSB8fCBSZWZlcmVuY2VFcXVhbHMocmlnaHQsIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFUb29sLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuVG9vbCwgcmlnaHQuVG9vbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5JbnZvY2F0aW9ucywgcmlnaHQuSW52b2NhdGlvbnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0Lkludm9jYXRpb25zID09IG51bGwgfHwgcmlnaHQuSW52b2NhdGlvbnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5JbnZvY2F0aW9ucy5Db3VudCAhPSByaWdodC5JbnZvY2F0aW9ucy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IGxlZnQuSW52b2NhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghSW52b2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0Lkludm9jYXRpb25zW2luZGV4XzBdLCByaWdodC5JbnZvY2F0aW9uc1tpbmRleF8wXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFDb252ZXJzaW9uLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuQ29udmVyc2lvbiwgcmlnaHQuQ29udmVyc2lvbikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5WZXJzaW9uQ29udHJvbFByb3ZlbmFuY2UsIHJpZ2h0LlZlcnNpb25Db250cm9sUHJvdmVuYW5jZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlID09IG51bGwgfHwgcmlnaHQuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlLkNvdW50ICE9IHJpZ2h0LlZlcnNpb25Db250cm9sUHJvdmVuYW5jZS5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8xID0gMDsgaW5kZXhfMSA8IGxlZnQuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlLkNvdW50OyArK2luZGV4XzEpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIVZlcnNpb25Db250cm9sRGV0YWlscy5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlZlcnNpb25Db250cm9sUHJvdmVuYW5jZVtpbmRleF8xXSwgcmlnaHQuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlW2luZGV4XzFdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5PcmlnaW5hbFVyaUJhc2VJZHMsIHJpZ2h0Lk9yaWdpbmFsVXJpQmFzZUlkcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuT3JpZ2luYWxVcmlCYXNlSWRzID09IG51bGwgfHwgcmlnaHQuT3JpZ2luYWxVcmlCYXNlSWRzID09IG51bGwgfHwgbGVmdC5PcmlnaW5hbFVyaUJhc2VJZHMuQ291bnQgIT0gcmlnaHQuT3JpZ2luYWxVcmlCYXNlSWRzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGxlZnQuT3JpZ2luYWxVcmlCYXNlSWRzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgVXJpIHZhbHVlXzE7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuT3JpZ2luYWxVcmlCYXNlSWRzLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wLlZhbHVlICE9IHZhbHVlXzEpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuRmlsZXMsIHJpZ2h0LkZpbGVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5GaWxlcyA9PSBudWxsIHx8IHJpZ2h0LkZpbGVzID09IG51bGwgfHwgbGVmdC5GaWxlcy5Db3VudCAhPSByaWdodC5GaWxlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMiBpbiBsZWZ0LkZpbGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgRmlsZURhdGEgdmFsdWVfMzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5GaWxlcy5UcnlHZXRWYWx1ZSh2YWx1ZV8yLktleSwgb3V0IHZhbHVlXzMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoIUZpbGVEYXRhLlZhbHVlQ29tcGFyZXIuRXF1YWxzKHZhbHVlXzIuVmFsdWUsIHZhbHVlXzMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkxvZ2ljYWxMb2NhdGlvbnMsIHJpZ2h0LkxvZ2ljYWxMb2NhdGlvbnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkxvZ2ljYWxMb2NhdGlvbnMgPT0gbnVsbCB8fCByaWdodC5Mb2dpY2FsTG9jYXRpb25zID09IG51bGwgfHwgbGVmdC5Mb2dpY2FsTG9jYXRpb25zLkNvdW50ICE9IHJpZ2h0LkxvZ2ljYWxMb2NhdGlvbnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gbGVmdC5Mb2dpY2FsTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgTG9naWNhbExvY2F0aW9uIHZhbHVlXzU7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuTG9naWNhbExvY2F0aW9ucy5UcnlHZXRWYWx1ZSh2YWx1ZV80LktleSwgb3V0IHZhbHVlXzUpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoIUxvZ2ljYWxMb2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyh2YWx1ZV80LlZhbHVlLCB2YWx1ZV81KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5HcmFwaHMsIHJpZ2h0LkdyYXBocykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuR3JhcGhzID09IG51bGwgfHwgcmlnaHQuR3JhcGhzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuR3JhcGhzLkNvdW50ICE9IHJpZ2h0LkdyYXBocy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8yID0gMDsgaW5kZXhfMiA8IGxlZnQuR3JhcGhzLkNvdW50OyArK2luZGV4XzIpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIUdyYXBoLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuR3JhcGhzW2luZGV4XzJdLCByaWdodC5HcmFwaHNbaW5kZXhfMl0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlJlc3VsdHMsIHJpZ2h0LlJlc3VsdHMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlJlc3VsdHMgPT0gbnVsbCB8fCByaWdodC5SZXN1bHRzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUmVzdWx0cy5Db3VudCAhPSByaWdodC5SZXN1bHRzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzMgPSAwOyBpbmRleF8zIDwgbGVmdC5SZXN1bHRzLkNvdW50OyArK2luZGV4XzMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIVJlc3VsdC5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlJlc3VsdHNbaW5kZXhfM10sIHJpZ2h0LlJlc3VsdHNbaW5kZXhfM10pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghUmVzb3VyY2VzLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuUmVzb3VyY2VzLCByaWdodC5SZXNvdXJjZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuSW5zdGFuY2VHdWlkICE9IHJpZ2h0Lkluc3RhbmNlR3VpZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkxvZ2ljYWxJZCAhPSByaWdodC5Mb2dpY2FsSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIU1lc3NhZ2UuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5EZXNjcmlwdGlvbiwgcmlnaHQuRGVzY3JpcHRpb24pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQXV0b21hdGlvbkxvZ2ljYWxJZCAhPSByaWdodC5BdXRvbWF0aW9uTG9naWNhbElkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQmFzZWxpbmVJbnN0YW5jZUd1aWQgIT0gcmlnaHQuQmFzZWxpbmVJbnN0YW5jZUd1aWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5BcmNoaXRlY3R1cmUgIT0gcmlnaHQuQXJjaGl0ZWN0dXJlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuUmljaE1lc3NhZ2VNaW1lVHlwZSAhPSByaWdodC5SaWNoTWVzc2FnZU1pbWVUeXBlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuUmVkYWN0aW9uVG9rZW4gIT0gcmlnaHQuUmVkYWN0aW9uVG9rZW4pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5EZWZhdWx0RmlsZUVuY29kaW5nICE9IHJpZ2h0LkRlZmF1bHRGaWxlRW5jb2RpbmcpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5Db2x1bW5LaW5kICE9IHJpZ2h0LkNvbHVtbktpbmQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Qcm9wZXJ0aWVzLCByaWdodC5Qcm9wZXJ0aWVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgcmlnaHQuUHJvcGVydGllcyA9PSBudWxsIHx8IGxlZnQuUHJvcGVydGllcy5Db3VudCAhPSByaWdodC5Qcm9wZXJ0aWVzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV82IGluIGxlZnQuUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gdmFsdWVfNzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5Qcm9wZXJ0aWVzLlRyeUdldFZhbHVlKHZhbHVlXzYuS2V5LCBvdXQgdmFsdWVfNykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LkVxdWFscyh2YWx1ZV82LlZhbHVlLCB2YWx1ZV83KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoUnVuIG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlRvb2wgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouVG9vbC5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5JbnZvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzggaW4gb2JqLkludm9jYXRpb25zKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV84ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzguVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Db252ZXJzaW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkNvbnZlcnNpb24uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOSBpbiBvYmouVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV85ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzkuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5PcmlnaW5hbFVyaUJhc2VJZHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzEwIGluIG9iai5PcmlnaW5hbFVyaUJhc2VJZHMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzEwLktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEwLlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfMTAuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMDsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkZpbGVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMSA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xMSBpbiBvYmouRmlsZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8xIF49IHZhbHVlXzExLktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzExLlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzEgXj0gdmFsdWVfMTEuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkxvZ2ljYWxMb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8yID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzEyIGluIG9iai5Mb2dpY2FsTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMiBePSB2YWx1ZV8xMi5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xMi5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8yIF49IHZhbHVlXzEyLlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzI7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5HcmFwaHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xMyBpbiBvYmouR3JhcGhzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xMyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV8xMy5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJlc3VsdHMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xNCBpbiBvYmouUmVzdWx0cykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMTQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMTQuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5SZXNvdXJjZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouUmVzb3VyY2VzLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkluc3RhbmNlR3VpZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5JbnN0YW5jZUd1aWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkxvZ2ljYWxJZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Mb2dpY2FsSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkRlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkRlc2NyaXB0aW9uLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkF1dG9tYXRpb25Mb2dpY2FsSWQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouQXV0b21hdGlvbkxvZ2ljYWxJZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouQmFzZWxpbmVJbnN0YW5jZUd1aWQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouQmFzZWxpbmVJbnN0YW5jZUd1aWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkFyY2hpdGVjdHVyZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5BcmNoaXRlY3R1cmUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJpY2hNZXNzYWdlTWltZVR5cGUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouUmljaE1lc3NhZ2VNaW1lVHlwZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUmVkYWN0aW9uVG9rZW4gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouUmVkYWN0aW9uVG9rZW4uR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkRlZmF1bHRGaWxlRW5jb2RpbmcgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRGVmYXVsdEZpbGVFbmNvZGluZy5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouQ29sdW1uS2luZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzMgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMTUgaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8zIF49IHZhbHVlXzE1LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzE1LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzMgXj0gdmFsdWVfMTUuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA2227",
+ "message": {
+ "text": "Change 'JsonSchema.Type' to be read-only by removing the property setter."
},
- "hashes": [
- {
- "value": "6D64C3708F7D38563D5FE9A6EE16B681",
- "algorithm": "md5"
- },
- {
- "value": "AD113B252659D032AD08B61365530C48921DB311",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "1C4991D7993C768215A508CE4BBFECD2F2510402E5FBB5F00CCB0D701DB14D54",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 61,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Type"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/SarifLog.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBTdGF0aWMgQW5hbHlzaXMgUmVzdWx0cyBGb3JtYXQgKFNBUklGKSBWZXJzaW9uIDIuMC4wIEpTT04gU2NoZW1hOiBhIHN0YW5kYXJkIGZvcm1hdCBmb3IgdGhlIG91dHB1dCBvZiBzdGF0aWMgYW5hbHlzaXMgYW5kIG90aGVyIHRvb2xzLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgU2FyaWZMb2cgOiBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFNhcmlmTG9nPiBWYWx1ZUNvbXBhcmVyID0+IFNhcmlmTG9nRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhTYXJpZkxvZyBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5TYXJpZkxvZzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBVUkkgb2YgdGhlIEpTT04gc2NoZW1hIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZlcnNpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiJHNjaGVtYSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFVyaSBTY2hlbWFVcmkgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBTQVJJRiBmb3JtYXQgdmVyc2lvbiBvZiB0aGlzIGxvZyBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInZlcnNpb24iLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBTYXJpZlZlcnNpb24gVmVyc2lvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHNldCBvZiBydW5zIGNvbnRhaW5lZCBpbiB0aGlzIGxvZyBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJ1bnMiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxSdW4+IFJ1bnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlNhcmlmTG9nIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTG9nKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU2FyaWZMb2ciIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzY2hlbWFVcmkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFNjaGVtYVVyaSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZlcnNpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFZlcnNpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJydW5zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSdW5zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBTYXJpZkxvZyhVcmkgc2NoZW1hVXJpLCBTYXJpZlZlcnNpb24gdmVyc2lvbiwgSUVudW1lcmFibGU8UnVuPiBydW5zKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KHNjaGVtYVVyaSwgdmVyc2lvbiwgcnVucyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTYXJpZkxvZyIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgU2FyaWZMb2coU2FyaWZMb2cgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuU2NoZW1hVXJpLCBvdGhlci5WZXJzaW9uLCBvdGhlci5SdW5zKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZMb2cgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChTYXJpZkxvZylEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgU2FyaWZMb2codGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChVcmkgc2NoZW1hVXJpLCBTYXJpZlZlcnNpb24gdmVyc2lvbiwgSUVudW1lcmFibGU8UnVuPiBydW5zKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoc2NoZW1hVXJpICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU2NoZW1hVXJpID0gbmV3IFVyaShzY2hlbWFVcmkuT3JpZ2luYWxTdHJpbmcsIHNjaGVtYVVyaS5Jc0Fic29sdXRlVXJpID8gVXJpS2luZC5BYnNvbHV0ZSA6IFVyaUtpbmQuUmVsYXRpdmUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBWZXJzaW9uID0gdmVyc2lvbjsNCiAgICAgICAgICAgIGlmIChydW5zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxSdW4+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gcnVucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IFJ1bih2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBSdW5zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1721",
+ "level": "error",
+ "message": {
+ "text": "The property name 'JsonSchema.Type' is confusing given the existence of inherited method 'object.GetType()'. Rename or remove this property.",
+ "id": "BaseType"
},
- "hashes": [
- {
- "value": "C3915E9BC79377B9E4D62934A98D038E",
- "algorithm": "md5"
- },
- {
- "value": "2A76711731CEC006916E528D8BEEC06B73FCB18C",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "AA817B0C2D84D1FB27E3C6921F117482DA2F45C60532DD94D660637934AD686A",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 61,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchema.Type"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/SarifRewritingVisitor.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gUmV3cml0aW5nIHZpc2l0b3IgZm9yIHRoZSBTYXJpZiBvYmplY3QgbW9kZWwuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIGFic3RyYWN0IGNsYXNzIFNhcmlmUmV3cml0aW5nVmlzaXRvcg0KICAgIHsNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gU3RhcnRzIGEgcmV3cml0aW5nIHZpc2l0IG9mIGEgbm9kZSBpbiB0aGUgU2FyaWYgb2JqZWN0IG1vZGVsLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im5vZGUiPg0KICAgICAgICAvLy8gVGhlIG5vZGUgdG8gcmV3cml0ZS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz4NCiAgICAgICAgLy8vIEEgcmV3cml0dGVuIGluc3RhbmNlIG9mIHRoZSBub2RlLg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBvYmplY3QgVmlzaXQoSVNhcmlmTm9kZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gdGhpcy5WaXNpdEFjdHVhbChub2RlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFZpc2l0cyBhbmQgcmV3cml0ZXMgYSBub2RlIGluIHRoZSBTYXJpZiBvYmplY3QgbW9kZWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibm9kZSI+DQogICAgICAgIC8vLyBUaGUgbm9kZSB0byByZXdyaXRlLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxyZXR1cm5zPg0KICAgICAgICAvLy8gQSByZXdyaXR0ZW4gaW5zdGFuY2Ugb2YgdGhlIG5vZGUuDQogICAgICAgIC8vLyA8L3JldHVybnM+DQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIG9iamVjdCBWaXNpdEFjdHVhbChJU2FyaWZOb2RlIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbigibm9kZSIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBzd2l0Y2ggKG5vZGUuU2FyaWZOb2RlS2luZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuQXR0YWNobWVudDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0QXR0YWNobWVudCgoQXR0YWNobWVudClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuQ29kZUZsb3c6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdENvZGVGbG93KChDb2RlRmxvdylub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuQ29udmVyc2lvbjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0Q29udmVyc2lvbigoQ29udmVyc2lvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRWRnZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0RWRnZSgoRWRnZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRWRnZVRyYXZlcnNhbDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0RWRnZVRyYXZlcnNhbCgoRWRnZVRyYXZlcnNhbClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRXhjZXB0aW9uRGF0YToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0RXhjZXB0aW9uRGF0YSgoRXhjZXB0aW9uRGF0YSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRmlsZUNoYW5nZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0RmlsZUNoYW5nZSgoRmlsZUNoYW5nZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRmlsZUNvbnRlbnQ6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEZpbGVDb250ZW50KChGaWxlQ29udGVudClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRmlsZURhdGE6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEZpbGVEYXRhKChGaWxlRGF0YSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRmlsZUxvY2F0aW9uOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRGaWxlTG9jYXRpb24oKEZpbGVMb2NhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuRml4Og0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRGaXgoKEZpeClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuR3JhcGg6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEdyYXBoKChHcmFwaClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuR3JhcGhUcmF2ZXJzYWw6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEdyYXBoVHJhdmVyc2FsKChHcmFwaFRyYXZlcnNhbClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuSGFzaDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0SGFzaCgoSGFzaClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuSW52b2NhdGlvbjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0SW52b2NhdGlvbigoSW52b2NhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuTG9jYXRpb246DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdExvY2F0aW9uKChMb2NhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuTG9naWNhbExvY2F0aW9uOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRMb2dpY2FsTG9jYXRpb24oKExvZ2ljYWxMb2NhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuTWVzc2FnZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0TWVzc2FnZSgoTWVzc2FnZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuTm9kZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0Tm9kZSgoTm9kZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuTm90aWZpY2F0aW9uOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXROb3RpZmljYXRpb24oKE5vdGlmaWNhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUGh5c2ljYWxMb2NhdGlvbjoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0UGh5c2ljYWxMb2NhdGlvbigoUGh5c2ljYWxMb2NhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUmVjdGFuZ2xlOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRSZWN0YW5nbGUoKFJlY3RhbmdsZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUmVnaW9uOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRSZWdpb24oKFJlZ2lvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUmVwbGFjZW1lbnQ6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFJlcGxhY2VtZW50KChSZXBsYWNlbWVudClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUmVzb3VyY2VzOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRSZXNvdXJjZXMoKFJlc291cmNlcylub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUmVzdWx0Og0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRSZXN1bHQoKFJlc3VsdClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUnVsZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0UnVsZSgoUnVsZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUnVsZUNvbmZpZ3VyYXRpb246DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFJ1bGVDb25maWd1cmF0aW9uKChSdWxlQ29uZmlndXJhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuUnVuOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRSdW4oKFJ1bilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuU2FyaWZMb2c6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFNhcmlmTG9nKChTYXJpZkxvZylub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuU3RhY2s6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFN0YWNrKChTdGFjaylub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuU3RhY2tGcmFtZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0U3RhY2tGcmFtZSgoU3RhY2tGcmFtZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuVGhyZWFkRmxvdzoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0VGhyZWFkRmxvdygoVGhyZWFkRmxvdylub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuVGhyZWFkRmxvd0xvY2F0aW9uOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRUaHJlYWRGbG93TG9jYXRpb24oKFRocmVhZEZsb3dMb2NhdGlvbilub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuVG9vbDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0VG9vbCgoVG9vbClub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmQuVmVyc2lvbkNvbnRyb2xEZXRhaWxzOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRWZXJzaW9uQ29udHJvbERldGFpbHMoKFZlcnNpb25Db250cm9sRGV0YWlscylub2RlKTsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgVCBWaXNpdE51bGxDaGVja2VkPFQ+KFQgbm9kZSkgd2hlcmUgVCA6IGNsYXNzLCBJU2FyaWZOb2RlDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiAoVClWaXNpdChub2RlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEF0dGFjaG1lbnQgVmlzaXRBdHRhY2htZW50KEF0dGFjaG1lbnQgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLkRlc2NyaXB0aW9uID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkRlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgICAgICBub2RlLkZpbGVMb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5GaWxlTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLlJlZ2lvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5SZWdpb25zLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuUmVnaW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5SZWdpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLlJlY3RhbmdsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5SZWN0YW5nbGVzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuUmVjdGFuZ2xlc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5SZWN0YW5nbGVzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBDb2RlRmxvdyBWaXNpdENvZGVGbG93KENvZGVGbG93IG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5NZXNzYWdlID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLk1lc3NhZ2UpOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLlRocmVhZEZsb3dzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuVGhyZWFkRmxvd3MuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5UaHJlYWRGbG93c1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5UaHJlYWRGbG93c1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgQ29udmVyc2lvbiBWaXNpdENvbnZlcnNpb24oQ29udmVyc2lvbiBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuVG9vbCA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Ub29sKTsNCiAgICAgICAgICAgICAgICBub2RlLkludm9jYXRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuSW52b2NhdGlvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuQW5hbHlzaXNUb29sTG9nRmlsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5BbmFseXNpc1Rvb2xMb2dGaWxlcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkFuYWx5c2lzVG9vbExvZ0ZpbGVzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkFuYWx5c2lzVG9vbExvZ0ZpbGVzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBFZGdlIFZpc2l0RWRnZShFZGdlIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5MYWJlbCA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5MYWJlbCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgRWRnZVRyYXZlcnNhbCBWaXNpdEVkZ2VUcmF2ZXJzYWwoRWRnZVRyYXZlcnNhbCBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuTWVzc2FnZSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5NZXNzYWdlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBFeGNlcHRpb25EYXRhIFZpc2l0RXhjZXB0aW9uRGF0YShFeGNlcHRpb25EYXRhIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5TdGFjayA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5TdGFjayk7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuSW5uZXJFeGNlcHRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuSW5uZXJFeGNlcHRpb25zLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuSW5uZXJFeGNlcHRpb25zW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLklubmVyRXhjZXB0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgRmlsZUNoYW5nZSBWaXNpdEZpbGVDaGFuZ2UoRmlsZUNoYW5nZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuRmlsZUxvY2F0aW9uID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkZpbGVMb2NhdGlvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuUmVwbGFjZW1lbnRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUmVwbGFjZW1lbnRzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuUmVwbGFjZW1lbnRzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlJlcGxhY2VtZW50c1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgRmlsZUNvbnRlbnQgVmlzaXRGaWxlQ29udGVudChGaWxlQ29udGVudCBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEZpbGVEYXRhIFZpc2l0RmlsZURhdGEoRmlsZURhdGEgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLkZpbGVMb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5GaWxlTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIG5vZGUuQ29udGVudHMgPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQ29udGVudHMpOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLkhhc2hlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkhhc2hlcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkhhc2hlc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5IYXNoZXNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEZpbGVMb2NhdGlvbiBWaXNpdEZpbGVMb2NhdGlvbihGaWxlTG9jYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBGaXggVmlzaXRGaXgoRml4IG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5EZXNjcmlwdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5EZXNjcmlwdGlvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuRmlsZUNoYW5nZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5GaWxlQ2hhbmdlcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkZpbGVDaGFuZ2VzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkZpbGVDaGFuZ2VzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBHcmFwaCBWaXNpdEdyYXBoKEdyYXBoIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5EZXNjcmlwdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5EZXNjcmlwdGlvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuTm9kZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Ob2Rlcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLk5vZGVzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLk5vZGVzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLkVkZ2VzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuRWRnZXMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5FZGdlc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5FZGdlc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgR3JhcGhUcmF2ZXJzYWwgVmlzaXRHcmFwaFRyYXZlcnNhbChHcmFwaFRyYXZlcnNhbCBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuRGVzY3JpcHRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRGVzY3JpcHRpb24pOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLkVkZ2VUcmF2ZXJzYWxzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuRWRnZVRyYXZlcnNhbHMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5FZGdlVHJhdmVyc2Fsc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5FZGdlVHJhdmVyc2Fsc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgSGFzaCBWaXNpdEhhc2goSGFzaCBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEludm9jYXRpb24gVmlzaXRJbnZvY2F0aW9uKEludm9jYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5BdHRhY2htZW50cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkF0dGFjaG1lbnRzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuQXR0YWNobWVudHNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQXR0YWNobWVudHNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuUmVzcG9uc2VGaWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLlJlc3BvbnNlRmlsZXMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5SZXNwb25zZUZpbGVzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlJlc3BvbnNlRmlsZXNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuVG9vbE5vdGlmaWNhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Ub29sTm90aWZpY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlRvb2xOb3RpZmljYXRpb25zW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlRvb2xOb3RpZmljYXRpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBub2RlLkV4ZWN1dGFibGVMb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5FeGVjdXRhYmxlTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIG5vZGUuU3RkaW4gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuU3RkaW4pOw0KICAgICAgICAgICAgICAgIG5vZGUuU3Rkb3V0ID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlN0ZG91dCk7DQogICAgICAgICAgICAgICAgbm9kZS5TdGRlcnIgPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuU3RkZXJyKTsNCiAgICAgICAgICAgICAgICBub2RlLlN0ZG91dFN0ZGVyciA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5TdGRvdXRTdGRlcnIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIExvY2F0aW9uIFZpc2l0TG9jYXRpb24oTG9jYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLlBoeXNpY2FsTG9jYXRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUGh5c2ljYWxMb2NhdGlvbik7DQogICAgICAgICAgICAgICAgbm9kZS5NZXNzYWdlID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLk1lc3NhZ2UpOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLkFubm90YXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuQW5ub3RhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Bbm5vdGF0aW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Bbm5vdGF0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgTG9naWNhbExvY2F0aW9uIFZpc2l0TG9naWNhbExvY2F0aW9uKExvZ2ljYWxMb2NhdGlvbiBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIE1lc3NhZ2UgVmlzaXRNZXNzYWdlKE1lc3NhZ2Ugbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBOb2RlIFZpc2l0Tm9kZShOb2RlIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5MYWJlbCA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5MYWJlbCk7DQogICAgICAgICAgICAgICAgbm9kZS5Mb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Mb2NhdGlvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuQ2hpbGRyZW4gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5DaGlsZHJlbi5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkNoaWxkcmVuW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkNoaWxkcmVuW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBOb3RpZmljYXRpb24gVmlzaXROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5QaHlzaWNhbExvY2F0aW9uID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlBoeXNpY2FsTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIG5vZGUuTWVzc2FnZSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5NZXNzYWdlKTsNCiAgICAgICAgICAgICAgICBub2RlLkV4Y2VwdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5FeGNlcHRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFBoeXNpY2FsTG9jYXRpb24gVmlzaXRQaHlzaWNhbExvY2F0aW9uKFBoeXNpY2FsTG9jYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLkZpbGVMb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5GaWxlTG9jYXRpb24pOw0KICAgICAgICAgICAgICAgIG5vZGUuUmVnaW9uID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlJlZ2lvbik7DQogICAgICAgICAgICAgICAgbm9kZS5Db250ZXh0UmVnaW9uID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkNvbnRleHRSZWdpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFJlY3RhbmdsZSBWaXNpdFJlY3RhbmdsZShSZWN0YW5nbGUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLk1lc3NhZ2UgPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuTWVzc2FnZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgUmVnaW9uIFZpc2l0UmVnaW9uKFJlZ2lvbiBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuU25pcHBldCA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5TbmlwcGV0KTsNCiAgICAgICAgICAgICAgICBub2RlLk1lc3NhZ2UgPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuTWVzc2FnZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgUmVwbGFjZW1lbnQgVmlzaXRSZXBsYWNlbWVudChSZXBsYWNlbWVudCBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuRGVsZXRlZFJlZ2lvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5EZWxldGVkUmVnaW9uKTsNCiAgICAgICAgICAgICAgICBub2RlLkluc2VydGVkQ29udGVudCA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5JbnNlcnRlZENvbnRlbnQpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFJlc291cmNlcyBWaXNpdFJlc291cmNlcyhSZXNvdXJjZXMgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBSZXN1bHQgVmlzaXRSZXN1bHQoUmVzdWx0IG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5NZXNzYWdlID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLk1lc3NhZ2UpOw0KICAgICAgICAgICAgICAgIG5vZGUuQW5hbHlzaXNUYXJnZXQgPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQW5hbHlzaXNUYXJnZXQpOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLkxvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkxvY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkxvY2F0aW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Mb2NhdGlvbnNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuU3RhY2tzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuU3RhY2tzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuU3RhY2tzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlN0YWNrc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5Db2RlRmxvd3MgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Db2RlRmxvd3MuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Db2RlRmxvd3NbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQ29kZUZsb3dzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLkdyYXBocyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkdyYXBocy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkdyYXBoc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5HcmFwaHNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuR3JhcGhUcmF2ZXJzYWxzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuR3JhcGhUcmF2ZXJzYWxzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuR3JhcGhUcmF2ZXJzYWxzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkdyYXBoVHJhdmVyc2Fsc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5SZWxhdGVkTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUmVsYXRlZExvY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlJlbGF0ZWRMb2NhdGlvbnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUmVsYXRlZExvY2F0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5BdHRhY2htZW50cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkF0dGFjaG1lbnRzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuQXR0YWNobWVudHNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQXR0YWNobWVudHNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuQ29udmVyc2lvblByb3ZlbmFuY2UgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Db252ZXJzaW9uUHJvdmVuYW5jZS5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkNvbnZlcnNpb25Qcm92ZW5hbmNlW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkNvbnZlcnNpb25Qcm92ZW5hbmNlW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLkZpeGVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuRml4ZXMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5GaXhlc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5GaXhlc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgUnVsZSBWaXNpdFJ1bGUoUnVsZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuTmFtZSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5OYW1lKTsNCiAgICAgICAgICAgICAgICBub2RlLlNob3J0RGVzY3JpcHRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuU2hvcnREZXNjcmlwdGlvbik7DQogICAgICAgICAgICAgICAgbm9kZS5GdWxsRGVzY3JpcHRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRnVsbERlc2NyaXB0aW9uKTsNCiAgICAgICAgICAgICAgICBub2RlLkNvbmZpZ3VyYXRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQ29uZmlndXJhdGlvbik7DQogICAgICAgICAgICAgICAgbm9kZS5IZWxwID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkhlbHApOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFJ1bGVDb25maWd1cmF0aW9uIFZpc2l0UnVsZUNvbmZpZ3VyYXRpb24oUnVsZUNvbmZpZ3VyYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBSdW4gVmlzaXRSdW4oUnVuIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5Ub29sID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlRvb2wpOw0KICAgICAgICAgICAgICAgIGlmIChub2RlLkludm9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuSW52b2NhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5JbnZvY2F0aW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5JbnZvY2F0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBub2RlLkNvbnZlcnNpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuQ29udmVyc2lvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuVmVyc2lvbkNvbnRyb2xQcm92ZW5hbmNlW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlZlcnNpb25Db250cm9sUHJvdmVuYW5jZVtpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5GaWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBub2RlLkZpbGVzLktleXMuVG9BcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIga2V5IGluIGtleXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IG5vZGUuRmlsZXNba2V5XTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuRmlsZXNba2V5XSA9IFZpc2l0TnVsbENoZWNrZWQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuTG9naWNhbExvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBub2RlLkxvZ2ljYWxMb2NhdGlvbnMuS2V5cy5Ub0FycmF5KCk7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBrZXkgaW4ga2V5cykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5Mb2dpY2FsTG9jYXRpb25zW2tleV07DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLkxvZ2ljYWxMb2NhdGlvbnNba2V5XSA9IFZpc2l0TnVsbENoZWNrZWQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuR3JhcGhzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuR3JhcGhzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuR3JhcGhzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkdyYXBoc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5SZXN1bHRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUmVzdWx0cy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlJlc3VsdHNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUmVzdWx0c1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBub2RlLlJlc291cmNlcyA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5SZXNvdXJjZXMpOw0KICAgICAgICAgICAgICAgIG5vZGUuRGVzY3JpcHRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRGVzY3JpcHRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFNhcmlmTG9nIFZpc2l0U2FyaWZMb2coU2FyaWZMb2cgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5SdW5zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUnVucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlJ1bnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUnVuc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgU3RhY2sgVmlzaXRTdGFjayhTdGFjayBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuTWVzc2FnZSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5NZXNzYWdlKTsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5GcmFtZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5GcmFtZXMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5GcmFtZXNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRnJhbWVzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBTdGFja0ZyYW1lIFZpc2l0U3RhY2tGcmFtZShTdGFja0ZyYW1lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5Mb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Mb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgVGhyZWFkRmxvdyBWaXNpdFRocmVhZEZsb3coVGhyZWFkRmxvdyBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIG5vZGUuTWVzc2FnZSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5NZXNzYWdlKTsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5Mb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Mb2NhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Mb2NhdGlvbnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuTG9jYXRpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBUaHJlYWRGbG93TG9jYXRpb24gVmlzaXRUaHJlYWRGbG93TG9jYXRpb24oVGhyZWFkRmxvd0xvY2F0aW9uIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5Mb2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Mb2NhdGlvbik7DQogICAgICAgICAgICAgICAgbm9kZS5TdGFjayA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5TdGFjayk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgVG9vbCBWaXNpdFRvb2woVG9vbCBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFZlcnNpb25Db250cm9sRGV0YWlscyBWaXNpdFZlcnNpb25Db250cm9sRGV0YWlscyhWZXJzaW9uQ29udHJvbERldGFpbHMgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCiAgICB9DQp9"
+ ],
+ "partialFingerprints": {
+ "UniqueId": "BaseType"
},
- "hashes": [
- {
- "value": "255FED93CB148C33831A7DDE0968654C",
- "algorithm": "md5"
- },
- {
- "value": "73956B7D814430A63C53931B8F9282020C4061FB",
- "algorithm": "sha-1"
- },
- {
- "value": "7F6A1759D284B096905C58C2FE1F22D1FE388E9F2E4267EB3C81D94074B633C8",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/SarifUtilities.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5HbG9iYWxpemF0aW9uOw0KdXNpbmcgU3lzdGVtLklPOw0KdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247DQp1c2luZyBTeXN0ZW0uUmVzb3VyY2VzOw0KdXNpbmcgU3lzdGVtLlRleHQ7DQp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgcHVibGljIHN0YXRpYyBjbGFzcyBTYXJpZlV0aWxpdGllcw0KICAgIHsNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgUmVnZXggc19zZW1WZXIyMDAgPSBuZXcgUmVnZXgoQCJeKD88bWFqb3I+XGQrKVwuKD88bWlub3I+XGQrKVwuKD88cGF0Y2g+XGQrKSgtKD88cHJlcmVsZWFzZT5bQS1aYS16MC05XC1cLl0rKSk/KFwrKD88YnVpbGQ+W0EtWmEtejAtOVwtXC5dKykpPyQiLCBSZWdleE9wdGlvbnMuQ29tcGlsZWQpOw0KICAgICAgICBwdWJsaWMgc3RhdGljIGJvb2wgSXNTZW1hbnRpY1ZlcnNpb25pbmdDb21wYXRpYmxlKHRoaXMgc3RyaW5nIHZlcnNpb25UZXh0KQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gc19zZW1WZXIyMDAuSXNNYXRjaCh2ZXJzaW9uVGV4dCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBWMV8wXzAgPSAiMS4wLjAiOw0KICAgICAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBWMV8wXzBfQkVUQV81ID0gIjEuMC4wLWJldGEuNSI7DQogICAgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIFYyXzBfMCA9ICIyLjAuMCI7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gUmV0dXJucyBhbiBJU08gODYwMSBjb21wYXRpYmxlIHVuaXZlcnNhbCBkYXRlIHRpbWUgZm9ybWF0IHN0cmluZyB3aXRoDQogICAgICAgIC8vLyBzZWNvbmRzIHByZWNpc2lvbiwgdXNlZCB0byBwcm9kdWNlIHRpbWVzIHN1Y2ggYXMgIjIwMTYtMDMtMDJUMDE6NDQ6NTBaIg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHN0cmluZyBTYXJpZkRhdGVUaW1lRm9ybWF0U2Vjb25kc1ByZWNpc2lvbiA9ICJ5eXl5Jy0nTU0nLSdkZCdUJ0hIJzonbW0nOidzcydaJyI7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gUmV0dXJucyBhbiBJU08gODYwMSBjb21wYXRpYmxlIHVuaXZlcnNhbCBkYXRlIHRpbWUgZm9ybWF0IHN0cmluZyB3aXRoDQogICAgICAgIC8vLyBtaWxsaXNlY29uZHMgcHJlY2lzaW9uLCB1c2VkIHRvIHByb2R1Y2UgdGltZXMgc3VjaCBhcyAiMjAxNi0wMy0wMlQwMTo0NDo1MC4xMjNaIg0KICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHN0cmluZyBTYXJpZkRhdGVUaW1lRm9ybWF0TWlsbGlzZWNvbmRzUHJlY2lzaW9uID0gInl5eXknLSdNTSctJ2RkJ1QnSEgnOidtbSc6J3NzLmZmZidaJyI7DQoNCg0KICAgICAgICBwdWJsaWMgc3RhdGljIFNhcmlmVmVyc2lvbiBDb252ZXJ0VG9TYXJpZlZlcnNpb24odGhpcyBzdHJpbmcgc2FyaWZWZXJzaW9uVGV4dCkNCiAgICAgICAgew0KICAgICAgICAgICAgc3dpdGNoIChzYXJpZlZlcnNpb25UZXh0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgVjFfMF8wX0JFVEFfNTogcmV0dXJuIFNhcmlmVmVyc2lvbi5PbmVaZXJvWmVyb0JldGFGaXZlOw0KICAgICAgICAgICAgICAgIGNhc2UgVjFfMF8wOiByZXR1cm4gU2FyaWZWZXJzaW9uLk9uZVplcm9aZXJvOw0KICAgICAgICAgICAgICAgIGNhc2UgVjJfMF8wOiByZXR1cm4gU2FyaWZWZXJzaW9uLlR3b1plcm9aZXJvOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gU2FyaWZWZXJzaW9uLlVua25vd247DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBDb252ZXJ0VG9UZXh0KHRoaXMgU2FyaWZWZXJzaW9uIHNhcmlmVmVyc2lvbikNCiAgICAgICAgew0KICAgICAgICAgICAgc3dpdGNoIChzYXJpZlZlcnNpb24pDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZlZlcnNpb24uT25lWmVyb1plcm9CZXRhRml2ZTogeyByZXR1cm4gVjFfMF8wX0JFVEFfNTsgfQ0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZWZXJzaW9uLk9uZVplcm9aZXJvOiB7IHJldHVybiBWMV8wXzA7IH0NCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmVmVyc2lvbi5Ud29aZXJvWmVybzogeyByZXR1cm4gVjJfMF8wOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gInVua25vd24iOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBVcmkgQ29udmVydFRvU2NoZW1hVXJpKHRoaXMgU2FyaWZWZXJzaW9uIHNhcmlmVmVyc2lvbikNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBVcmkoImh0dHA6Ly9qc29uLnNjaGVtYXN0b3JlLm9yZy9zYXJpZi0iICsgc2FyaWZWZXJzaW9uLkNvbnZlcnRUb1RleHQoKSwgVXJpS2luZC5BYnNvbHV0ZSk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IEJ1aWxkTWVzc2FnZUZvcm1hdHMoSUVudW1lcmFibGU8c3RyaW5nPiByZXNvdXJjZU5hbWVzLCBSZXNvdXJjZU1hbmFnZXIgcmVzb3VyY2VNYW5hZ2VyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAocmVzb3VyY2VOYW1lcyA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHJlc291cmNlTmFtZXMpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHJlc291cmNlTWFuYWdlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHJlc291cmNlTWFuYWdlcikpOw0KICAgICAgICAgICAgfQ0KDQoNCiAgICAgICAgICAgIC8vIE5vdGUgdGhpcyBkaWN0aW9uYXJ5IHByb3ZpZGVzIGZvciBjYXNlLWluc2Vuc2l0aXZlIGtleXMNCiAgICAgICAgICAgIHZhciBkaWN0aW9uYXJ5ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KFN0cmluZ0NvbXBhcmVyLk9yZGluYWxJZ25vcmVDYXNlKTsNCg0KICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIHJlc291cmNlTmFtZSBpbiByZXNvdXJjZU5hbWVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN0cmluZyByZXNvdXJjZVZhbHVlID0gcmVzb3VyY2VNYW5hZ2VyLkdldFN0cmluZyhyZXNvdXJjZU5hbWUpOw0KICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXSA9IHJlc291cmNlVmFsdWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5Ow0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEluaXRpYWxpemVGcm9tQXNzZW1ibHkodGhpcyBUb29sIHRvb2wsIEFzc2VtYmx5IGFzc2VtYmx5KQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0aWFsaXplRnJvbUFzc2VtYmx5KHRvb2wsIGFzc2VtYmx5LCBwcmVyZWxlYXNlSW5mbzogbnVsbCk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgSW5pdGlhbGl6ZUZyb21Bc3NlbWJseSh0aGlzIFRvb2wgdG9vbCwgQXNzZW1ibHkgYXNzZW1ibHksIHN0cmluZyBwcmVyZWxlYXNlSW5mbykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGFzc2VtYmx5ID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoYXNzZW1ibHkpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHRvb2wgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZih0b29sKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0cmluZyBuYW1lID0gUGF0aC5HZXRGaWxlTmFtZVdpdGhvdXRFeHRlbnNpb24oYXNzZW1ibHkuTG9jYXRpb24pOw0KICAgICAgICAgICAgVmVyc2lvbiB2ZXJzaW9uID0gYXNzZW1ibHkuR2V0TmFtZSgpLlZlcnNpb247DQoNCiAgICAgICAgICAgIHRvb2wuTmFtZSA9IG5hbWU7DQogICAgICAgICAgICB0b29sLlZlcnNpb24gPSB2ZXJzaW9uLk1ham9yLlRvU3RyaW5nKEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUpICsgIi4iICsgdmVyc2lvbi5NaW5vci5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKSArICIuIiArIHZlcnNpb24uQnVpbGQuVG9TdHJpbmcoQ3VsdHVyZUluZm8uSW52YXJpYW50Q3VsdHVyZSk7DQogICAgICAgICAgICB0b29sLkZ1bGxOYW1lID0gbmFtZSArICIgIiArIHRvb2wuVmVyc2lvbiArIChwcmVyZWxlYXNlSW5mbyA/PyAiIik7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBGb3JtYXRNZXNzYWdlKHRoaXMgRXhjZXB0aW9uIGV4Y2VwdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKGV4Y2VwdGlvbikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBSZXRyaWV2ZXMgYSBmb3JtYXR0ZWQgbWVzc2FnZSB0aGF0IGluY2x1ZGVzIGV4Y2VwdGlvbiB0eXBlIGRldGFpbHMsIGUuZy4NCiAgICAgICAgICAgIC8vIFN5c3RlbS5JbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uOiBPcGVyYXRpb24gaXMgbm90IHZhbGlkIGR1ZSB0byB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgb2JqZWN0Lg0KICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbi5Ub1N0cmluZygpLlNwbGl0KG5ldyBzdHJpbmdbXSB7IEVudmlyb25tZW50Lk5ld0xpbmUgfSwgU3RyaW5nU3BsaXRPcHRpb25zLk5vbmUpWzBdOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIEFkZE9yVXBkYXRlRGljdGlvbmFyeUVudHJ5PFRLZXksIFRWYWx1ZT4oSURpY3Rpb25hcnk8VEtleSwgVFZhbHVlPiBkaWN0aW9uYXJ5LCBUS2V5IGtleSwgVFZhbHVlIHZhbCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGRpY3Rpb25hcnkuQ29udGFpbnNLZXkoa2V5KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5W2tleV0gPSB2YWw7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZGljdGlvbmFyeS5BZGQoa2V5LCB2YWwpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBDb2RlRmxvdyBDcmVhdGVTaW5nbGVUaHJlYWRlZENvZGVGbG93KElFbnVtZXJhYmxlPFRocmVhZEZsb3dMb2NhdGlvbj4gbG9jYXRpb25zID0gbnVsbCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2RlRmxvdw0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFRocmVhZEZsb3dzID0gbmV3IExpc3Q8VGhyZWFkRmxvdz4oKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgbmV3IFRocmVhZEZsb3cNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25zID0gbmV3IExpc3Q8VGhyZWFkRmxvd0xvY2F0aW9uPihsb2NhdGlvbnMgPz8gbmV3IFRocmVhZEZsb3dMb2NhdGlvbltdeyB9KQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIEdldFV0ZjhCYXNlNjRTdHJpbmcoc3RyaW5nIHMpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBHZXRCYXNlNjRTdHJpbmcocywgRW5jb2RpbmcuVVRGOCk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBHZXRCYXNlNjRTdHJpbmcoc3RyaW5nIHMsIEVuY29kaW5nIGVuY29kaW5nKQ0KICAgICAgICB7DQogICAgICAgICAgICBieXRlW10gYnl0ZXMgPSBlbmNvZGluZy5HZXRCeXRlcyhzKTsNCiAgICAgICAgICAgIHJldHVybiBDb252ZXJ0LlRvQmFzZTY0U3RyaW5nKGJ5dGVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgc3RyaW5nIERlY29kZUJhc2U2NFN0cmluZyhzdHJpbmcgcywgRW5jb2RpbmcgZW5jb2RpbmcgPSBudWxsKQ0KICAgICAgICB7DQogICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nID8/IEVuY29kaW5nLlVURjg7DQogICAgICAgICAgICBieXRlW10gYnl0ZXMgPSBDb252ZXJ0LkZyb21CYXNlNjRTdHJpbmcocyk7DQogICAgICAgICAgICByZXR1cm4gZW5jb2RpbmcuR2V0U3RyaW5nKGJ5dGVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdGF0aWMgaW50IEdldEJ5dGVMZW5ndGgoY2hhcltdIGNoYXJzLCBFbmNvZGluZyBlbmNvZGluZykNCiAgICAgICAgew0KICAgICAgICAgICAgY2hhcnMgPSBjaGFycyA/PyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihjaGFycykpOw0KICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyA/PyB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihlbmNvZGluZykpOw0KDQogICAgICAgICAgICBzdHJpbmcgcyA9IG5ldyBTdHJpbmcoY2hhcnMpOw0KICAgICAgICAgICAgcmV0dXJuIEdldEJ5dGVMZW5ndGgocywgZW5jb2RpbmcpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBpbnQgR2V0Qnl0ZUxlbmd0aChzdHJpbmcgcywgRW5jb2RpbmcgZW5jb2RpbmcpDQogICAgICAgIHsNCiAgICAgICAgICAgIHMgPSBzID8/IHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHMpKTsNCiAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgPz8gdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2YoZW5jb2RpbmcpKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgYnl0ZVtdIGJ5dGVzID0gZW5jb2RpbmcuR2V0Qnl0ZXMocyk7DQogICAgICAgICAgICByZXR1cm4gYnl0ZXMuTGVuZ3RoOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1725",
+ "level": "error",
+ "message": {
+ "text": "In member 'JsonSchemaContractResolver.ResolveContract(Type)', change parameter name 'objectType' to 'type' in order to match the identifier as it has been declared in 'CamelCasePropertyNamesContractResolver.ResolveContract(Type)'."
},
- "hashes": [
- {
- "value": "A9AFF0B515C8A296DD1914464D70C1EF",
- "algorithm": "md5"
- },
- {
- "value": "E35835099F8BF83F3CF06FD7CF756AD4C0659E38",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "921EF3620C4C06B60271DB98B2840A8917E242F82D7C4B9947FC88B750543E1F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 63,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchemaContractResolver.ResolveContract(System.Type)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0#"
+ },
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/SarifUtilitiesVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmU7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgcHVibGljIHN0YXRpYyBjbGFzcyBTYXJpZlV0aWxpdGllc1ZlcnNpb25PbmUNCiAgICB7DQogICAgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIFYxXzBfMCA9ICIxLjAuMCI7DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBzdHJpbmcgQ29udmVydFRvVGV4dCh0aGlzIFNhcmlmVmVyc2lvblZlcnNpb25PbmUgc2FyaWZWZXJzaW9uKQ0KICAgICAgICB7DQogICAgICAgICAgICBzd2l0Y2ggKHNhcmlmVmVyc2lvbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmVmVyc2lvblZlcnNpb25PbmUuT25lWmVyb1plcm86DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWMV8wXzA7DQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJVbnN1cHBvcnRlZCBTQVJJRiB2ZXJzaW9uIiwgbmFtZW9mKHNhcmlmVmVyc2lvbikpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBVcmkgQ29udmVydFRvU2NoZW1hVXJpKHRoaXMgU2FyaWZWZXJzaW9uVmVyc2lvbk9uZSBzYXJpZlZlcnNpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgVXJpKCJodHRwOi8vanNvbi5zY2hlbWFzdG9yZS5vcmcvc2FyaWYtIiArIHNhcmlmVmVyc2lvbi5Db252ZXJ0VG9UZXh0KCksIFVyaUtpbmQuQWJzb2x1dGUpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'JsonSchemaExtensions.SafeGetType(this JsonSchema)', validate parameter 'schema' before using it."
},
- "hashes": [
- {
- "value": "A52EB971CECB082E88FB3926503B4AA4",
- "algorithm": "md5"
- },
- {
- "value": "061C7EFC892A655AB56CEC80929E858C95A9A0CC",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "90E582F79B8D7E0B7D884E1E13377363A523E97561C74DA8D4D68BDFC77D4A56",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 65,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSchemaExtensions.SafeGetType(Microsoft.Json.Schema.JsonSchema)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Stack.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIGNhbGwgc3RhY2sgdGhhdCBpcyByZWxldmFudCB0byBhIHJlc3VsdC4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFN0YWNrIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8U3RhY2s+IFZhbHVlQ29tcGFyZXIgPT4gU3RhY2tFcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKFN0YWNrIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlN0YWNrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHJlbGV2YW50IHRvIHRoaXMgY2FsbCBzdGFjay4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTWVzc2FnZSBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBzdGFjayBmcmFtZXMgdGhhdCByZXByZXNlbnQgYSBzZXF1ZW5jZSBvZiBjYWxscywgcmVuZGVyZWQgaW4gcmV2ZXJzZSBjaHJvbm9sb2dpY2FsIG9yZGVyLCB0aGF0IGNvbXByaXNlIHRoZSBjYWxsIHN0YWNrLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZyYW1lcyIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFN0YWNrRnJhbWU+IEZyYW1lcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGFjay4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlN0YWNrIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFN0YWNrKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU3RhY2siIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZnJhbWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGcmFtZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBTdGFjayhNZXNzYWdlIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFN0YWNrRnJhbWU+IGZyYW1lcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KG1lc3NhZ2UsIGZyYW1lcywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFjayIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgU3RhY2soU3RhY2sgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuTWVzc2FnZSwgb3RoZXIuRnJhbWVzLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU3RhY2sgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChTdGFjaylEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhY2sodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChNZXNzYWdlIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFN0YWNrRnJhbWU+IGZyYW1lcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIE1lc3NhZ2UgPSBuZXcgTWVzc2FnZShtZXNzYWdlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGZyYW1lcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8wID0gbmV3IExpc3Q8U3RhY2tGcmFtZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBmcmFtZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBTdGFja0ZyYW1lKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEZyYW1lcyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'JsonSerializerExtensions.CaptureError(this JsonSerializer, JToken, ErrorNumber, params object[])', correct the spelling of 'j' in parameter name 'jToken' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "6D7567EB0BC943A322E6767C737F4364",
- "algorithm": "md5"
- },
- {
- "value": "7F077705D9925C54A711E91257D05BC7E8EFA538",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "875D49CFC9CC3400FB2338FAE54E8203542CDA4F1EFAB1B6A4CA04B482BCA4A8",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 67,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSerializerExtensions.CaptureError(Newtonsoft.Json.JsonSerializer,Newtonsoft.Json.Linq.JToken,Microsoft.Json.Schema.ErrorNumber,System.Object[])"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/Stack.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7DQp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7DQp1c2luZyBTeXN0ZW0uVGV4dDsNCnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICBwdWJsaWMgZW51bSBTdGFja0Zvcm1hdA0KICAgIHsNCiAgICAgICAgRGVmYXVsdCwNCiAgICAgICAgVHJhaWxpbmdOZXdMaW5lDQogICAgfQ0KDQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIGNhbGwgc3RhY2sgcmVsZXZhbnQgdG8gYSBTQVJJRiByZXN1bHQuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBTdGFjaw0KICAgIHsNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlIG9uZSBvciBtb3JlIFN0YWNrIGluc3RhbmNlcyBmcm9tIGEgLk5FVCBleGNlcHRpb24uIENhcHR1cmVzDQogICAgICAgIC8vLyBpbm5lciBleGNlcHRpb25zIGFuZCBoYW5kbGVzIGFnZ3JlZ2F0ZWQgZXhjZXB0aW9ucy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJleGNlcHRpb24iPjwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSVNldDxTdGFjaz4gQ3JlYXRlU3RhY2tzKEV4Y2VwdGlvbiBleGNlcHRpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIEhhc2hTZXQ8U3RhY2s+IHN0YWNrczsNCiAgICAgICAgICAgIFF1ZXVlPEV4Y2VwdGlvbj4gZXhjZXB0aW9uczsNCg0KICAgICAgICAgICAgc3RhY2tzID0gbmV3IEhhc2hTZXQ8U3RhY2s+KCk7DQogICAgICAgICAgICBleGNlcHRpb25zID0gbmV3IFF1ZXVlPEV4Y2VwdGlvbj4obmV3IEV4Y2VwdGlvbltdIHsgZXhjZXB0aW9uIH0pOw0KDQogICAgICAgICAgICB3aGlsZSAoZXhjZXB0aW9ucy5Db3VudCA+IDApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RhY2sgc3RhY2s7DQogICAgICAgICAgICAgICAgRXhjZXB0aW9uIGN1cnJlbnQ7DQoNCiAgICAgICAgICAgICAgICBjdXJyZW50ID0gZXhjZXB0aW9ucy5EZXF1ZXVlKCk7DQoNCiAgICAgICAgICAgICAgICB2YXIgYWdncmVnYXRlZCA9IGN1cnJlbnQgYXMgQWdncmVnYXRlRXhjZXB0aW9uOw0KICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdGVkICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChFeGNlcHRpb24gZSBpbiBhZ2dyZWdhdGVkLklubmVyRXhjZXB0aW9ucykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5FbnF1ZXVlKGUpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIEFnZ3JlZ2F0ZWRFeGNlcHRpb25zIHN1cmZhY2UgdGhlIGZpcnN0IGV4Y2VwdGlvbg0KICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgYWdncmVnYXRpb24gYXMgSW5uZXJFeGNlcHRpb24sIHNvIHdlIGRvbid0DQogICAgICAgICAgICAgICAgICAgIC8vIHJlZXhhbWluZSB0aGlzIHByb3BlcnR5IGZvciB0aGF0IGV4Y2VwdGlvbiB0eXBlIChhcw0KICAgICAgICAgICAgICAgICAgICAvLyBpdCBpcyBhbHJlYWR5IGVucXVldWVkIGZyb20gaW5zcGVjdGluZyBJbm5lckV4Y2VwdGlvbnMpLg0KICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5Jbm5lckV4Y2VwdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLkVucXVldWUoY3VycmVudC5Jbm5lckV4Y2VwdGlvbik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBzdGFjayA9IENyZWF0ZShjdXJyZW50LlN0YWNrVHJhY2UpOw0KDQogICAgICAgICAgICAgICAgc3RhY2suTWVzc2FnZSA9IG5ldyBNZXNzYWdlIHsgVGV4dCA9IGN1cnJlbnQuRm9ybWF0TWVzc2FnZSgpIH07DQoNCiAgICAgICAgICAgICAgICBzdGFja3MuQWRkKHN0YWNrKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHN0YWNrczsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBTQVJJRiBTdGFjayBpbnN0YW5jZSBmcm9tIGEgLk5FVCBTdGFja1RyYWNlIGluc3RhbmNlDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhY2tUcmFjZSI+PC9wYXJhbT4NCiAgICAgICAgcHVibGljIFN0YWNrKFN0YWNrVHJhY2Ugc3RhY2tUcmFjZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHN0YWNrVHJhY2UuRnJhbWVDb3VudCA9PSAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdGhpcy5GcmFtZXMgPSBuZXcgU3RhY2tGcmFtZVtzdGFja1RyYWNlLkZyYW1lQ291bnRdOw0KDQogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YWNrVHJhY2UuRnJhbWVDb3VudDsgaSsrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRoaXMuRnJhbWVzW2ldID0gU3RhY2tGcmFtZS5DcmVhdGUoc3RhY2tUcmFjZS5HZXRGcmFtZShpKSk7ICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIFNBUklGIFN0YWNrIGluc3RhbmNlIGZyb20gYSAuTkVUIFN0YWNrVHJhY2UNCiAgICAgICAgLy8vIHRleHQgcmVwcmVzZW50YXRpb24gKGFzIHJldHVybmVkIGJ5IFN0YWNrVHJhY2UuVG9TdHJpbmcoKSkNCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGFja1RyYWNlIj48L3BhcmFtPg0KICAgICAgICBwdWJsaWMgc3RhdGljIFN0YWNrIENyZWF0ZShzdHJpbmcgc3RhY2tUcmFjZSkNCiAgICAgICAgew0KICAgICAgICAgICAgU3RhY2sgc3RhY2sgPSBuZXcgU3RhY2soKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YWNrVHJhY2UpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBzdGFjazsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RhY2suRnJhbWVzID0gbmV3IExpc3Q8U3RhY2tGcmFtZT4oKTsNCg0KICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ2V4KFN0YWNrRnJhbWUuQVQgKyBAIihbXildK1wpKSgiICsgU3RhY2tGcmFtZS5JTiArIEAiKFteOl0rOlteOl0rKSIgKyBTdGFja0ZyYW1lLkxJTkUgKyBAIiAoLiopKT8iLCBSZWdleE9wdGlvbnMuQ29tcGlsZWQpOw0KDQogICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgbGluZSBpbiBzdGFja1RyYWNlLlNwbGl0KG5ldyBzdHJpbmdbXSB7IEVudmlyb25tZW50Lk5ld0xpbmUgfSwgU3RyaW5nU3BsaXRPcHRpb25zLk5vbmUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIGF0IFR5cGUuTWV0aG9kKCkgaW4gRmlsZS5jcyA6IGxpbmUgWA0KICAgICAgICAgICAgICAgIHN0cmluZyBjdXJyZW50ID0gbGluZTsNCg0KICAgICAgICAgICAgICAgIHZhciBzdGFja0ZyYW1lID0gbmV3IFN0YWNrRnJhbWUoKTsNCg0KICAgICAgICAgICAgICAgIE1hdGNoIG1hdGNoID0gcmVnZXguTWF0Y2gobGluZSk7DQoNCiAgICAgICAgICAgICAgICBpZiAobWF0Y2guU3VjY2VzcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0YWNrRnJhbWUuTG9jYXRpb24gPSBuZXcgTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSA9IG1hdGNoLkdyb3Vwc1sxXS5WYWx1ZQ0KICAgICAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkobWF0Y2guR3JvdXBzWzJdLlZhbHVlKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGZpbGVOYW1lID0gbWF0Y2guR3JvdXBzWzNdLlZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBpbnQuUGFyc2UobWF0Y2guR3JvdXBzWzRdLlZhbHVlKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5Mb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlTG9jYXRpb24gPSBuZXcgRmlsZUxvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcmkgPSBuZXcgVXJpKGZpbGVOYW1lKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaW9uID0gbmV3IFJlZ2lvbg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRMaW5lID0gbGluZU51bWJlcg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc3RhY2suRnJhbWVzLkFkZChzdGFja0ZyYW1lKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHN0YWNrOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBUb1N0cmluZygpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBUb1N0cmluZyhTdGFja0Zvcm1hdC5EZWZhdWx0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBzdHJpbmcgVG9TdHJpbmcoU3RhY2tGb3JtYXQgc3RhY2tGb3JtYXQpDQogICAgICAgIHsgICAgICAgICAgIA0KICAgICAgICAgICAgaWYgKHRoaXMuRnJhbWVzID09IG51bGwpIHsgcmV0dXJuICJbTm8gZnJhbWVzXSI7IH0NCg0KICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKDI1NSk7DQoNCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGhpcy5GcmFtZXMuQ291bnQ7IGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBTdGFja0ZyYW1lIHNmID0gdGhpcy5GcmFtZXNbaV07DQoNCiAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHsgc2IuQXBwZW5kTGluZSgpOyB9DQoNCiAgICAgICAgICAgICAgICBzYi5BcHBlbmQoc2YuVG9TdHJpbmcoKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChzdGFja0Zvcm1hdCA9PSBTdGFja0Zvcm1hdC5UcmFpbGluZ05ld0xpbmUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc2IuQXBwZW5kTGluZSgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gc2IuVG9TdHJpbmcoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'JsonSerializerExtensions.CaptureError(this JsonSerializer, JToken, ErrorNumber, params object[])', validate parameter 'serializer' before using it."
},
- "hashes": [
- {
- "value": "003A4944A3F8358DEA2C829BCF6BE977",
- "algorithm": "md5"
- },
- {
- "value": "2B9A9B3BB1A863ED99A2BBDB38F8198FE1E720C6",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "8C61D5F8E47506D922926A94C1B63E4BA25708CE94AE58A4F7F06A3B54174DFB",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 67,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSerializerExtensions.CaptureError(Newtonsoft.Json.JsonSerializer,Newtonsoft.Json.Linq.JToken,Microsoft.Json.Schema.ErrorNumber,System.Object[])"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/StackFrame.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIGZ1bmN0aW9uIGNhbGwgd2l0aGluIGEgc3RhY2sgdHJhY2UuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBTdGFja0ZyYW1lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8U3RhY2tGcmFtZT4gVmFsdWVDb21wYXJlciA9PiBTdGFja0ZyYW1lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhTdGFja0ZyYW1lIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlN0YWNrRnJhbWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbG9jYXRpb24gdG8gd2hpY2ggdGhpcyBzdGFjayBmcmFtZSByZWZlcnMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibG9jYXRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBMb2NhdGlvbiBMb2NhdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBjb2RlIG9mIHRoaXMgc3RhY2sgZnJhbWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibW9kdWxlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1vZHVsZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRocmVhZCBpZGVudGlmaWVyIG9mIHRoZSBzdGFjayBmcmFtZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ0aHJlYWRJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBUaHJlYWRJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGFkZHJlc3Mgb2YgdGhlIG1ldGhvZCBvciBmdW5jdGlvbiB0aGF0IGlzIGV4ZWN1dGluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhZGRyZXNzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IEFkZHJlc3MgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBvZmZzZXQgZnJvbSB0aGUgbWV0aG9kIG9yIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm9mZnNldCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBPZmZzZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBjYWxsIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInBhcmFtZXRlcnMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxzdHJpbmc+IFBhcmFtZXRlcnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhY2sgZnJhbWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFja0ZyYW1lIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFN0YWNrRnJhbWUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFja0ZyYW1lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExvY2F0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibW9kdWxlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNb2R1bGUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0aHJlYWRJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVGhyZWFkSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhZGRyZXNzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBZGRyZXNzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib2Zmc2V0Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBPZmZzZXQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwYXJhbWV0ZXJzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQYXJhbWV0ZXJzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgU3RhY2tGcmFtZShMb2NhdGlvbiBsb2NhdGlvbiwgc3RyaW5nIG1vZHVsZSwgaW50IHRocmVhZElkLCBpbnQgYWRkcmVzcywgaW50IG9mZnNldCwgSUVudW1lcmFibGU8c3RyaW5nPiBwYXJhbWV0ZXJzLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQobG9jYXRpb24sIG1vZHVsZSwgdGhyZWFkSWQsIGFkZHJlc3MsIG9mZnNldCwgcGFyYW1ldGVycywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFja0ZyYW1lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBTdGFja0ZyYW1lKFN0YWNrRnJhbWUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuTG9jYXRpb24sIG90aGVyLk1vZHVsZSwgb3RoZXIuVGhyZWFkSWQsIG90aGVyLkFkZHJlc3MsIG90aGVyLk9mZnNldCwgb3RoZXIuUGFyYW1ldGVycywgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlIElTYXJpZk5vZGUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFN0YWNrRnJhbWUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChTdGFja0ZyYW1lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGFja0ZyYW1lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoTG9jYXRpb24gbG9jYXRpb24sIHN0cmluZyBtb2R1bGUsIGludCB0aHJlYWRJZCwgaW50IGFkZHJlc3MsIGludCBvZmZzZXQsIElFbnVtZXJhYmxlPHN0cmluZz4gcGFyYW1ldGVycywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBMb2NhdGlvbiA9IG5ldyBMb2NhdGlvbihsb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIE1vZHVsZSA9IG1vZHVsZTsNCiAgICAgICAgICAgIFRocmVhZElkID0gdGhyZWFkSWQ7DQogICAgICAgICAgICBBZGRyZXNzID0gYWRkcmVzczsNCiAgICAgICAgICAgIE9mZnNldCA9IG9mZnNldDsNCiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxzdHJpbmc+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gcGFyYW1ldGVycykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKHZhbHVlXzApOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFBhcmFtZXRlcnMgPSBkZXN0aW5hdGlvbl8wOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA2237",
+ "level": "error",
+ "message": {
+ "text": "Add [Serializable] to 'JsonSyntaxException' as this type implements ISerializable."
},
- "hashes": [
- {
- "value": "FA317DA44D9253A2A1AE95D49840AF68",
- "algorithm": "md5"
- },
- {
- "value": "5CC77B8B5A3DA5C69E24AEE0A5E5CA395AA75B76",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "26A00A72CF23C804DC31153626C35F110FAD59B623184BA8AC20AB559C7A79D6",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 68,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSyntaxException"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/StackFrame.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkdsb2JhbGl6YXRpb247DQp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCnVzaW5nIFN5c3RlbS5UZXh0Ow0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZg0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gQSBzdGFjayBmcmFtZSBvZiBhIFNBUklGIHN0YWNrLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgU3RhY2tGcmFtZQ0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgY29uc3Qgc3RyaW5nIElOID0gIiBpbiAiOw0KICAgICAgICBpbnRlcm5hbCBjb25zdCBzdHJpbmcgQVQgPSAiICAgYXQgIjsNCiAgICAgICAgaW50ZXJuYWwgY29uc3Qgc3RyaW5nIExJTkUgPSAiOmxpbmUiOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBTQVJJRiBTdGFja0ZyYW1lIGluc3RhbmNlIGZyb20gYSAuTkVUIFN0YWNrRnJhbWUgaW5zdGFuY2UNCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGFja1RyYWNlIj48L3BhcmFtPg0KICAgICAgICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPg0KICAgICAgICBwdWJsaWMgc3RhdGljIFN0YWNrRnJhbWUgQ3JlYXRlKFN5c3RlbS5EaWFnbm9zdGljcy5TdGFja0ZyYW1lIGRvdE5ldFN0YWNrRnJhbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIC8vIFRoaXMgdmFsdWUgaXMgLTEgaWYgbm90IHByZXNlbnQNCiAgICAgICAgICAgIGludCBpbE9mZnNldCA9IGRvdE5ldFN0YWNrRnJhbWUuR2V0SUxPZmZzZXQoKTsNCiAgICAgICAgICAgIHN0cmluZyBmaWxlTmFtZSA9IGRvdE5ldFN0YWNrRnJhbWUuR2V0RmlsZU5hbWUoKTsNCiAgICAgICAgICAgIGludCBuYXRpdmVPZmZzZXQgPSBkb3ROZXRTdGFja0ZyYW1lLkdldE5hdGl2ZU9mZnNldCgpOw0KICAgICAgICAgICAgTWV0aG9kQmFzZSBtZXRob2RCYXNlID0gZG90TmV0U3RhY2tGcmFtZS5HZXRNZXRob2QoKTsNCiAgICAgICAgICAgIEFzc2VtYmx5IGFzc2VtYmx5ID0gbWV0aG9kQmFzZT8uRGVjbGFyaW5nVHlwZS5Bc3NlbWJseTsNCiAgICAgICAgICAgIHN0cmluZyBmdWxseVF1YWxpZmllZE5hbWUgPSBDcmVhdGVGdWxseVF1YWxpZmllZE5hbWUobWV0aG9kQmFzZSk7DQoNCiAgICAgICAgICAgIFN0YWNrRnJhbWUgc3RhY2tGcmFtZSA9IG5ldyBTdGFja0ZyYW1lDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTW9kdWxlID0gYXNzZW1ibHk/LkdldE5hbWUoKS5OYW1lLA0KICAgICAgICAgICAgICAgIExvY2F0aW9uID0gbmV3IExvY2F0aW9uDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBGdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lID0gZnVsbHlRdWFsaWZpZWROYW1lDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgaWYgKGZpbGVOYW1lICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5Mb2NhdGlvbiA9IG5ldyBMb2NhdGlvbg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiA9IG5ldyBQaHlzaWNhbExvY2F0aW9uDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVMb2NhdGlvbiA9IG5ldyBGaWxlTG9jYXRpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcmkgPSBuZXcgVXJpKGZpbGVOYW1lKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lvbiA9IG5ldyBSZWdpb24NCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydExpbmUgPSBkb3ROZXRTdGFja0ZyYW1lLkdldEZpbGVMaW5lTnVtYmVyKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRDb2x1bW4gPSBkb3ROZXRTdGFja0ZyYW1lLkdldEZpbGVDb2x1bW5OdW1iZXIoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGlsT2Zmc2V0ICE9IC0xKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN0YWNrRnJhbWUuT2Zmc2V0ID0gaWxPZmZzZXQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChuYXRpdmVPZmZzZXQgIT0gLTEpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RhY2tGcmFtZS5TZXRQcm9wZXJ0eSgiTmF0aXZlT2Zmc2V0IiwgbmF0aXZlT2Zmc2V0LlRvU3RyaW5nKEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHN0YWNrRnJhbWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkNCiAgICAgICAgew0KICAgICAgICAgICAgc3RyaW5nIHJlc3VsdCA9IEFUICsgdGhpcy5Mb2NhdGlvbj8uRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZTsNCg0KICAgICAgICAgICAgaWYgKHRoaXMuTG9jYXRpb24/LlBoeXNpY2FsTG9jYXRpb24/LkZpbGVMb2NhdGlvbj8uVXJpICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RyaW5nIGZpbGVOYW1lID0gdGhpcy5Mb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uLkZpbGVMb2NhdGlvbi5VcmkuTG9jYWxQYXRoOw0KICAgICAgICAgICAgICAgIHJlc3VsdCArPSBJTiArIGZpbGVOYW1lOw0KDQogICAgICAgICAgICAgICAgaWYgKHRoaXMuTG9jYXRpb24/LlBoeXNpY2FsTG9jYXRpb24/LlJlZ2lvbiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGxpbmVOdW1iZXIgPSB0aGlzLkxvY2F0aW9uLlBoeXNpY2FsTG9jYXRpb24uUmVnaW9uLlN0YXJ0TGluZS5Ub1N0cmluZyhDdWx0dXJlSW5mby5JbnZhcmlhbnRDdWx0dXJlKTsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IExJTkUgKyAiICIgKyBsaW5lTnVtYmVyOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBDcmVhdGVGdWxseVF1YWxpZmllZE5hbWUoTWV0aG9kQmFzZSBtZXRob2RCYXNlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobWV0aG9kQmFzZSA9PSBudWxsKSB7IHJldHVybiBudWxsOyAgfQ0KDQogICAgICAgICAgICB2YXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KDQogICAgICAgICAgICBUeXBlIHR5cGUgPSBtZXRob2RCYXNlLkRlY2xhcmluZ1R5cGU7DQogICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIHR5cGUgKG5vbiBnbG9iYWwgbWV0aG9kKSBwcmludCBpdA0KICAgICAgICAgICAgaWYgKHR5cGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBzYi5BcHBlbmQodHlwZS5GdWxsTmFtZS5SZXBsYWNlKCcrJywgJy4nKSk7DQogICAgICAgICAgICAgICAgc2IuQXBwZW5kKCIuIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzYi5BcHBlbmQobWV0aG9kQmFzZS5OYW1lKTsNCg0KICAgICAgICAgICAgLy8gZGVhbCB3aXRoIHRoZSBnZW5lcmljIHBvcnRpb24gb2YgdGhlIG1ldGhvZA0KICAgICAgICAgICAgaWYgKG1ldGhvZEJhc2UgaXMgTWV0aG9kSW5mbyAmJiAoKE1ldGhvZEluZm8pbWV0aG9kQmFzZSkuSXNHZW5lcmljTWV0aG9kKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFR5cGVbXSB0eXBlQXJndW1lbnRzID0gKChNZXRob2RJbmZvKW1ldGhvZEJhc2UpLkdldEdlbmVyaWNBcmd1bWVudHMoKTsNCiAgICAgICAgICAgICAgICBzYi5BcHBlbmQoIlsiKTsNCiAgICAgICAgICAgICAgICBpbnQgayA9IDA7DQogICAgICAgICAgICAgICAgYm9vbCBmaXJzdFR5cGVQYXJhbWV0ZXIgPSB0cnVlOw0KICAgICAgICAgICAgICAgIHdoaWxlIChrIDwgdHlwZUFyZ3VtZW50cy5MZW5ndGgpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RUeXBlUGFyYW1ldGVyID09IGZhbHNlKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBzYi5BcHBlbmQoIiwiKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0VHlwZVBhcmFtZXRlciA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgc2IuQXBwZW5kKHR5cGVBcmd1bWVudHNba10uTmFtZSk7DQogICAgICAgICAgICAgICAgICAgIGsrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2IuQXBwZW5kKCJdIik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIGFyZ3VtZW50cyBwcmludGluZw0KICAgICAgICAgICAgc2IuQXBwZW5kKCIoIik7DQogICAgICAgICAgICBQYXJhbWV0ZXJJbmZvW10gcGFyYW1ldGVySW5mb3MgPSBtZXRob2RCYXNlLkdldFBhcmFtZXRlcnMoKTsNCiAgICAgICAgICAgIGJvb2wgZmlyc3RQYXJhbWV0ZXJJbmZvID0gdHJ1ZTsNCiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcGFyYW1ldGVySW5mb3MuTGVuZ3RoOyBqKyspDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGZpcnN0UGFyYW1ldGVySW5mbyA9PSBmYWxzZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHNiLkFwcGVuZCgiLCAiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZmlyc3RQYXJhbWV0ZXJJbmZvID0gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgU3RyaW5nIHR5cGVOYW1lID0gIjxVbmtub3duVHlwZT4iOw0KICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJJbmZvc1tqXS5QYXJhbWV0ZXJUeXBlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB0eXBlTmFtZSA9IHBhcmFtZXRlckluZm9zW2pdLlBhcmFtZXRlclR5cGUuTmFtZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2IuQXBwZW5kKHR5cGVOYW1lICsgIiAiICsgcGFyYW1ldGVySW5mb3Nbal0uTmFtZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzYi5BcHBlbmQoIikiKTsNCg0KICAgICAgICAgICAgcmV0dXJuIHNiLlRvU3RyaW5nKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1032",
+ "level": "error",
+ "message": {
+ "text": "Change the accessibility of 'JsonSyntaxException.JsonSyntaxException(SerializationInfo, StreamingContext)' to protected.",
+ "id": "Accessibility"
},
- "hashes": [
- {
- "value": "51F335C189184FE5ACB85CCB4807DDB4",
- "algorithm": "md5"
- },
- {
- "value": "45A4CC3C51D272DC2C3680D7D277EA514C9B2A26",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "13CD80639C65BA74ECC11D44B9E2483C8BB9316FA5D9FCD989ED56B29579B3FE",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 69,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JsonSyntaxException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Accessibility"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/ThreadFlow.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgVGhyZWFkRmxvdyA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFRocmVhZEZsb3c+IFZhbHVlQ29tcGFyZXIgPT4gVGhyZWFkRmxvd0VxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoVGhyZWFkRmxvdyBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5UaHJlYWRGbG93Ow0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gc3RyaW5nIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgdGhyZWFkRmxvdyB3aXRoaW4gdGhlIGNvZGVGbG93IGluIHdoaWNoIGl0IG9jY3Vycy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJpZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHJlbGV2YW50IHRvIHRoZSBjb2RlIGZsb3cuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibWVzc2FnZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIE1lc3NhZ2UgTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgJ3RocmVhZEZsb3dMb2NhdGlvbicgb2JqZWN0cywgZWFjaCBvZiB3aGljaCBkZXNjcmliZXMgYSBzaW5nbGUgbG9jYXRpb24gdmlzaXRlZCBieSB0aGUgdG9vbCBpbiB0aGUgY291cnNlIG9mIHByb2R1Y2luZyB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvY2F0aW9ucyIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFRocmVhZEZsb3dMb2NhdGlvbj4gTG9jYXRpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUgZmxvdy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlRocmVhZEZsb3ciIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgVGhyZWFkRmxvdygpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlRocmVhZEZsb3ciIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9jYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMb2NhdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBUaHJlYWRGbG93KHN0cmluZyBpZCwgTWVzc2FnZSBtZXNzYWdlLCBJRW51bWVyYWJsZTxUaHJlYWRGbG93TG9jYXRpb24+IGxvY2F0aW9ucywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGlkLCBtZXNzYWdlLCBsb2NhdGlvbnMsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iVGhyZWFkRmxvdyIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgVGhyZWFkRmxvdyhUaHJlYWRGbG93IG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLklkLCBvdGhlci5NZXNzYWdlLCBvdGhlci5Mb2NhdGlvbnMsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBUaHJlYWRGbG93IERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoVGhyZWFkRmxvdylEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgVGhyZWFkRmxvdyh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBpZCwgTWVzc2FnZSBtZXNzYWdlLCBJRW51bWVyYWJsZTxUaHJlYWRGbG93TG9jYXRpb24+IGxvY2F0aW9ucywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJZCA9IGlkOw0KICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBNZXNzYWdlID0gbmV3IE1lc3NhZ2UobWVzc2FnZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PFRocmVhZEZsb3dMb2NhdGlvbj4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBsb2NhdGlvbnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBUaHJlYWRGbG93TG9jYXRpb24odmFsdWVfMCkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgTG9jYXRpb25zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'JTokenTypeExtensions.ToSchemaType(this JTokenType)', correct the spelling of 'j' in parameter name 'jTokenType' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "9A2258A3BDB761443BE4CADA240BEDE0",
- "algorithm": "md5"
- },
- {
- "value": "2EE064A3068240CFE4ACDCC7E9589D6C5CE65FB5",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "2086A44F7E4B8634ED034B9EBB8380E50A11E91615DF152A7302CB46E667D784",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 71,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.JTokenTypeExtensions.ToSchemaType(Newtonsoft.Json.Linq.JTokenType)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/ThreadFlowLocation.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBBIGxvY2F0aW9uIHZpc2l0ZWQgYnkgYW4gYW5hbHlzaXMgdG9vbCBpbiB0aGUgY291cnNlIG9mIHNpbXVsYXRpbmcgb3IgbW9uaXRvcmluZyB0aGUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFRocmVhZEZsb3dMb2NhdGlvbiA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFRocmVhZEZsb3dMb2NhdGlvbj4gVmFsdWVDb21wYXJlciA9PiBUaHJlYWRGbG93TG9jYXRpb25FcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKFRocmVhZEZsb3dMb2NhdGlvbiBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmQgU2FyaWZOb2RlS2luZA0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZC5UaHJlYWRGbG93TG9jYXRpb247DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgMC1iYXNlZCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGxvY2F0aW9uIGluIHRoZSBjb2RlIGZsb3cgd2l0aGluIHdoaWNoIGl0IG9jY3Vycy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGVwIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IFN0ZXAgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBjb2RlIGxvY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvY2F0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTG9jYXRpb24gTG9jYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBjYWxsIHN0YWNrIGxlYWRpbmcgdG8gdGhpcyBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGFjayIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFN0YWNrIFN0YWNrIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHRoaXMgbG9jYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAia2luZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBLaW5kIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgY29udGFpbnMgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRpbmcuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibW9kdWxlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1vZHVsZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBkaWN0aW9uYXJ5LCBlYWNoIG9mIHdob3NlIGtleXMgc3BlY2lmaWVzIGEgdmFyaWFibGUgb3IgZXhwcmVzc2lvbiwgdGhlIGFzc29jaWF0ZWQgdmFsdWUgb2Ygd2hpY2ggcmVwcmVzZW50cyB0aGUgdmFyaWFibGUgb3IgZXhwcmVzc2lvbiB2YWx1ZS4gRm9yIGFuIGFubm90YXRpb24gb2Yga2luZCAnY29udGludWF0aW9uJywgZm9yIGV4YW1wbGUsIHRoaXMgZGljdGlvbmFyeSBtaWdodCBob2xkIHRoZSBjdXJyZW50IGFzc3VtZWQgdmFsdWVzIG9mIGEgc2V0IG9mIGdsb2JhbCB2YXJpYWJsZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAic3RhdGUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gU3RhdGUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGludGVnZXIgcmVwcmVzZW50aW5nIGEgY29udGFpbm1lbnQgaGllcmFyY2h5IHdpdGhpbiB0aGUgdGhyZWFkIGZsb3cNCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJuZXN0aW5nTGV2ZWwiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgTmVzdGluZ0xldmVsIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgdGVtcG9yYWwgb3JkZXIgaW4gd2hpY2ggZXhlY3V0aW9uIHJlYWNoZWQgdGhpcyBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJleGVjdXRpb25PcmRlciIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBFeGVjdXRpb25PcmRlciB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRpbWUgYXQgd2hpY2ggdGhpcyBsb2NhdGlvbiB3YXMgZXhlY3V0ZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGltZXN0YW1wIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRGF0ZVRpbWUgVGltZXN0YW1wIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBTcGVjaWZpZXMgdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBsb2NhdGlvbiBpbiB1bmRlcnN0YW5kaW5nIHRoZSBjb2RlIGZsb3cgaW4gd2hpY2ggaXQgb2NjdXJzLiBUaGUgb3JkZXIgZnJvbSBtb3N0IHRvIGxlYXN0IGltcG9ydGFudCBpcyAiZXNzZW50aWFsIiwgImltcG9ydGFudCIsICJ1bmltcG9ydGFudCIuIERlZmF1bHQ6ICJpbXBvcnRhbnQiLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImltcG9ydGFuY2UiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBUaHJlYWRGbG93TG9jYXRpb25JbXBvcnRhbmNlIEltcG9ydGFuY2UgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlRocmVhZEZsb3dMb2NhdGlvbiIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBUaHJlYWRGbG93TG9jYXRpb24oKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUaHJlYWRGbG93TG9jYXRpb24iIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzdGVwIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTdGVwIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExvY2F0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhY2siPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0YWNrIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ia2luZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogS2luZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1vZHVsZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTW9kdWxlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdGUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0YXRlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmVzdGluZ0xldmVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBOZXN0aW5nTGV2ZWwiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJleGVjdXRpb25PcmRlciI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRXhlY3V0aW9uT3JkZXIiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0aW1lc3RhbXAiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRpbWVzdGFtcCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImltcG9ydGFuY2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEltcG9ydGFuY2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBUaHJlYWRGbG93TG9jYXRpb24oaW50IHN0ZXAsIExvY2F0aW9uIGxvY2F0aW9uLCBTdGFjayBzdGFjaywgc3RyaW5nIGtpbmQsIHN0cmluZyBtb2R1bGUsIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBzdGF0ZSwgaW50IG5lc3RpbmdMZXZlbCwgaW50IGV4ZWN1dGlvbk9yZGVyLCBEYXRlVGltZSB0aW1lc3RhbXAsIFRocmVhZEZsb3dMb2NhdGlvbkltcG9ydGFuY2UgaW1wb3J0YW5jZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KHN0ZXAsIGxvY2F0aW9uLCBzdGFjaywga2luZCwgbW9kdWxlLCBzdGF0ZSwgbmVzdGluZ0xldmVsLCBleGVjdXRpb25PcmRlciwgdGltZXN0YW1wLCBpbXBvcnRhbmNlLCBwcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlRocmVhZEZsb3dMb2NhdGlvbiIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgVGhyZWFkRmxvd0xvY2F0aW9uKFRocmVhZEZsb3dMb2NhdGlvbiBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5TdGVwLCBvdGhlci5Mb2NhdGlvbiwgb3RoZXIuU3RhY2ssIG90aGVyLktpbmQsIG90aGVyLk1vZHVsZSwgb3RoZXIuU3RhdGUsIG90aGVyLk5lc3RpbmdMZXZlbCwgb3RoZXIuRXhlY3V0aW9uT3JkZXIsIG90aGVyLlRpbWVzdGFtcCwgb3RoZXIuSW1wb3J0YW5jZSwgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlIElTYXJpZk5vZGUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFRocmVhZEZsb3dMb2NhdGlvbiBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKFRocmVhZEZsb3dMb2NhdGlvbilEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgVGhyZWFkRmxvd0xvY2F0aW9uKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoaW50IHN0ZXAsIExvY2F0aW9uIGxvY2F0aW9uLCBTdGFjayBzdGFjaywgc3RyaW5nIGtpbmQsIHN0cmluZyBtb2R1bGUsIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBzdGF0ZSwgaW50IG5lc3RpbmdMZXZlbCwgaW50IGV4ZWN1dGlvbk9yZGVyLCBEYXRlVGltZSB0aW1lc3RhbXAsIFRocmVhZEZsb3dMb2NhdGlvbkltcG9ydGFuY2UgaW1wb3J0YW5jZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBTdGVwID0gc3RlcDsNCiAgICAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIExvY2F0aW9uID0gbmV3IExvY2F0aW9uKGxvY2F0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHN0YWNrICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RhY2sgPSBuZXcgU3RhY2soc3RhY2spOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBLaW5kID0ga2luZDsNCiAgICAgICAgICAgIE1vZHVsZSA9IG1vZHVsZTsNCiAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFN0YXRlID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KHN0YXRlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgTmVzdGluZ0xldmVsID0gbmVzdGluZ0xldmVsOw0KICAgICAgICAgICAgRXhlY3V0aW9uT3JkZXIgPSBleGVjdXRpb25PcmRlcjsNCiAgICAgICAgICAgIFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsNCiAgICAgICAgICAgIEltcG9ydGFuY2UgPSBpbXBvcnRhbmNlOw0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'MustBeStringConverter.CanConvert(Type)', validate parameter 'objectType' before using it."
},
- "hashes": [
- {
- "value": "5A59682DD4EE74EF806FE488C6871D18",
- "algorithm": "md5"
- },
+ "locations": [
{
- "value": "B69176D6B0E6EE46E8A030F11950DAFC2D95BF3D",
- "algorithm": "sha-1"
- },
- {
- "value": "F2B974484ACCC1604161A1E802CB7CEEFE60B5AEC59B8176E7231BA0F059F688",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 73,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.MustBeStringConverter.CanConvert(System.Type)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/ThreadFlowLocationEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlZmluZXMgbWV0aG9kcyB0byBzdXBwb3J0IHRoZSBjb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdHlwZSBUaHJlYWRGbG93TG9jYXRpb24gZm9yIGVxdWFsaXR5Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjU2LjAuMCIpXQ0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBUaHJlYWRGbG93TG9jYXRpb25FcXVhbGl0eUNvbXBhcmVyIDogSUVxdWFsaXR5Q29tcGFyZXI8VGhyZWFkRmxvd0xvY2F0aW9uPg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IFRocmVhZEZsb3dMb2NhdGlvbkVxdWFsaXR5Q29tcGFyZXIgSW5zdGFuY2UgPSBuZXcgVGhyZWFkRmxvd0xvY2F0aW9uRXF1YWxpdHlDb21wYXJlcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhUaHJlYWRGbG93TG9jYXRpb24gbGVmdCwgVGhyZWFkRmxvd0xvY2F0aW9uIHJpZ2h0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIHJpZ2h0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCBudWxsKSB8fCBSZWZlcmVuY2VFcXVhbHMocmlnaHQsIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuU3RlcCAhPSByaWdodC5TdGVwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFMb2NhdGlvbi5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkxvY2F0aW9uLCByaWdodC5Mb2NhdGlvbikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIVN0YWNrLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuU3RhY2ssIHJpZ2h0LlN0YWNrKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LktpbmQgIT0gcmlnaHQuS2luZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lk1vZHVsZSAhPSByaWdodC5Nb2R1bGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5TdGF0ZSwgcmlnaHQuU3RhdGUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlN0YXRlID09IG51bGwgfHwgcmlnaHQuU3RhdGUgPT0gbnVsbCB8fCBsZWZ0LlN0YXRlLkNvdW50ICE9IHJpZ2h0LlN0YXRlLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGxlZnQuU3RhdGUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgdmFsdWVfMTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5TdGF0ZS5UcnlHZXRWYWx1ZSh2YWx1ZV8wLktleSwgb3V0IHZhbHVlXzEpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMC5WYWx1ZSAhPSB2YWx1ZV8xKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lk5lc3RpbmdMZXZlbCAhPSByaWdodC5OZXN0aW5nTGV2ZWwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5FeGVjdXRpb25PcmRlciAhPSByaWdodC5FeGVjdXRpb25PcmRlcikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlRpbWVzdGFtcCAhPSByaWdodC5UaW1lc3RhbXApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5JbXBvcnRhbmNlICE9IHJpZ2h0LkltcG9ydGFuY2UpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Qcm9wZXJ0aWVzLCByaWdodC5Qcm9wZXJ0aWVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgcmlnaHQuUHJvcGVydGllcyA9PSBudWxsIHx8IGxlZnQuUHJvcGVydGllcy5Db3VudCAhPSByaWdodC5Qcm9wZXJ0aWVzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIGxlZnQuUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gdmFsdWVfMzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5Qcm9wZXJ0aWVzLlRyeUdldFZhbHVlKHZhbHVlXzIuS2V5LCBvdXQgdmFsdWVfMykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LkVxdWFscyh2YWx1ZV8yLlZhbHVlLCB2YWx1ZV8zKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoVGhyZWFkRmxvd0xvY2F0aW9uIG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlN0ZXAuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLkxvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkxvY2F0aW9uLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlN0YWNrICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlN0YWNrLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLktpbmQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouS2luZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouTW9kdWxlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLk1vZHVsZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouU3RhdGUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gb2JqLlN0YXRlKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV80LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzQuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV80LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzA7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5OZXN0aW5nTGV2ZWwuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkV4ZWN1dGlvbk9yZGVyLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5UaW1lc3RhbXAuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkltcG9ydGFuY2UuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8xID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzUgaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8xIF49IHZhbHVlXzUuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNS5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8xIF49IHZhbHVlXzUuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "F4F0377B92362D56AAD4A0267628C0F2",
- "algorithm": "md5"
- },
- {
- "value": "118007B9D81EEBE13605E4ED801D06421832B2A4",
- "algorithm": "sha-1"
- },
- {
- "value": "E8907D08915A15D4C28497983D7236B24F74D5C4E224BA0BFDE6B0646EC9AD9A",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/Tool.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBUaGUgYW5hbHlzaXMgdG9vbCB0aGF0IHdhcyBydW4uDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Ni4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBUb29sIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8VG9vbD4gVmFsdWVDb21wYXJlciA9PiBUb29sRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhUb29sIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlRvb2w7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbmFtZSBvZiB0aGUgdG9vbC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJuYW1lIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE5hbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBuYW1lIG9mIHRoZSB0b29sIGFsb25nIHdpdGggaXRzIHZlcnNpb24gYW5kIGFueSBvdGhlciB1c2VmdWwgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24sIHN1Y2ggYXMgaXRzIGxvY2FsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmdWxsTmFtZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBGdWxsTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRvb2wgdmVyc2lvbiwgaW4gd2hhdGV2ZXIgZm9ybWF0IHRoZSB0b29sIG5hdGl2ZWx5IHByb3ZpZGVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgVmVyc2lvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRvb2wgdmVyc2lvbiBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBTZW1hbnRpYyBWZXJzaW9uaW5nIDIuMC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzZW1hbnRpY1ZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgU2VtYW50aWNWZXJzaW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgYmluYXJ5IHZlcnNpb24gb2YgdGhlIHRvb2wncyBwcmltYXJ5IGV4ZWN1dGFibGUgZmlsZSAoZm9yIG9wZXJhdGluZyBzeXN0ZW1zIHN1Y2ggYXMgV2luZG93cyB0aGF0IHByb3ZpZGUgdGhhdCBpbmZvcm1hdGlvbikuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZmlsZVZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRmlsZVZlcnNpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBhYnNvbHV0ZSBVUkkgZnJvbSB3aGljaCB0aGUgdG9vbCBjYW4gYmUgZG93bmxvYWRlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJkb3dubG9hZFVyaSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFVyaSBEb3dubG9hZFVyaSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB2ZXJzaW9uIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgU0FSSUYgbG9nZ2luZyBjb21wb25lbnQgdGhhdCBnZW5lcmF0ZWQgdGhpcyBmaWxlLCBpZiBpdCBpcyB2ZXJzaW9uZWQgc2VwYXJhdGVseSBmcm9tIHRoZSB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInNhcmlmTG9nZ2VyVmVyc2lvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBTYXJpZkxvZ2dlclZlcnNpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB0b29sIGxhbmd1YWdlIChleHByZXNzZWQgYXMgYW4gSVNPIDY0OSB0d28tbGV0dGVyIGxvd2VyY2FzZSBjdWx0dXJlIGNvZGUpIGFuZCByZWdpb24gKGV4cHJlc3NlZCBhcyBhbiBJU08gMzE2NiB0d28tbGV0dGVyIHVwcGVyY2FzZSBzdWJjdWx0dXJlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIGEgY291bnRyeSBvciByZWdpb24pLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxhbmd1YWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIExhbmd1YWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRvb2wuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUb29sIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFRvb2woKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUb29sIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibmFtZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTmFtZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZ1bGxOYW1lIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGdWxsTmFtZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZlcnNpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFZlcnNpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzZW1hbnRpY1ZlcnNpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFNlbWFudGljVmVyc2lvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpbGVWZXJzaW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGaWxlVmVyc2lvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImRvd25sb2FkVXJpIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBEb3dubG9hZFVyaSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InNhcmlmTG9nZ2VyVmVyc2lvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU2FyaWZMb2dnZXJWZXJzaW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibGFuZ3VhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExhbmd1YWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgVG9vbChzdHJpbmcgbmFtZSwgc3RyaW5nIGZ1bGxOYW1lLCBzdHJpbmcgdmVyc2lvbiwgc3RyaW5nIHNlbWFudGljVmVyc2lvbiwgc3RyaW5nIGZpbGVWZXJzaW9uLCBVcmkgZG93bmxvYWRVcmksIHN0cmluZyBzYXJpZkxvZ2dlclZlcnNpb24sIHN0cmluZyBsYW5ndWFnZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KG5hbWUsIGZ1bGxOYW1lLCB2ZXJzaW9uLCBzZW1hbnRpY1ZlcnNpb24sIGZpbGVWZXJzaW9uLCBkb3dubG9hZFVyaSwgc2FyaWZMb2dnZXJWZXJzaW9uLCBsYW5ndWFnZSwgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUb29sIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBUb29sKFRvb2wgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuTmFtZSwgb3RoZXIuRnVsbE5hbWUsIG90aGVyLlZlcnNpb24sIG90aGVyLlNlbWFudGljVmVyc2lvbiwgb3RoZXIuRmlsZVZlcnNpb24sIG90aGVyLkRvd25sb2FkVXJpLCBvdGhlci5TYXJpZkxvZ2dlclZlcnNpb24sIG90aGVyLkxhbmd1YWdlLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGUgSVNhcmlmTm9kZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgVG9vbCBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKFRvb2wpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFRvb2wodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChzdHJpbmcgbmFtZSwgc3RyaW5nIGZ1bGxOYW1lLCBzdHJpbmcgdmVyc2lvbiwgc3RyaW5nIHNlbWFudGljVmVyc2lvbiwgc3RyaW5nIGZpbGVWZXJzaW9uLCBVcmkgZG93bmxvYWRVcmksIHN0cmluZyBzYXJpZkxvZ2dlclZlcnNpb24sIHN0cmluZyBsYW5ndWFnZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBOYW1lID0gbmFtZTsNCiAgICAgICAgICAgIEZ1bGxOYW1lID0gZnVsbE5hbWU7DQogICAgICAgICAgICBWZXJzaW9uID0gdmVyc2lvbjsNCiAgICAgICAgICAgIFNlbWFudGljVmVyc2lvbiA9IHNlbWFudGljVmVyc2lvbjsNCiAgICAgICAgICAgIEZpbGVWZXJzaW9uID0gZmlsZVZlcnNpb247DQogICAgICAgICAgICBpZiAoZG93bmxvYWRVcmkgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBEb3dubG9hZFVyaSA9IG5ldyBVcmkoZG93bmxvYWRVcmkuT3JpZ2luYWxTdHJpbmcsIGRvd25sb2FkVXJpLklzQWJzb2x1dGVVcmkgPyBVcmlLaW5kLkFic29sdXRlIDogVXJpS2luZC5SZWxhdGl2ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFNhcmlmTG9nZ2VyVmVyc2lvbiA9IHNhcmlmTG9nZ2VyVmVyc2lvbjsNCiAgICAgICAgICAgIExhbmd1YWdlID0gbGFuZ3VhZ2U7DQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'MustBeStringConverter.ReadJson(JsonReader, Type, object, JsonSerializer)', validate parameter 'reader' before using it."
},
- "hashes": [
- {
- "value": "99699D9C873AEF94C1731B3C0F9580AE",
- "algorithm": "md5"
- },
- {
- "value": "6ECB4480689B929863DE27EBBFE1E777434876A0",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "C22FB7E827C03BE5149FF17819DDA922840AF1461FB5E832114544EDF6EC6CDE",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 74,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.MustBeStringConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Core/Tool.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkRpYWdub3N0aWNzOw0KdXNpbmcgU3lzdGVtLkdsb2JhbGl6YXRpb247DQp1c2luZyBTeXN0ZW0uSU87DQp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIFRoZSBhbmFseXNpcyB0b29sIHRoYXQgd2FzIHJ1bi4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFRvb2wgDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIFRvb2wgQ3JlYXRlRnJvbUFzc2VtYmx5RGF0YShzdHJpbmcgcHJlcmVsZWFzZUluZm8gPSBudWxsKQ0KICAgICAgICB7DQogICAgICAgICAgICBBc3NlbWJseSBhc3NlbWJseSA9IEFzc2VtYmx5LkdldEVudHJ5QXNzZW1ibHkoKSA/PyBBc3NlbWJseS5HZXRFeGVjdXRpbmdBc3NlbWJseSgpOw0KICAgICAgICAgICAgc3RyaW5nIG5hbWUgPSBQYXRoLkdldEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbihhc3NlbWJseS5Mb2NhdGlvbik7DQoNCiAgICAgICAgICAgIFRvb2wgdG9vbCA9IG5ldyBUb29sKCk7DQoNCiAgICAgICAgICAgIC8vICduYW1lJw0KICAgICAgICAgICAgdG9vbC5OYW1lID0gbmFtZTsNCg0KICAgICAgICAgICAgLy8gJ3ZlcnNpb24nIDogcHJpbWFyeSB0b29sIHZlcnNpb24uDQogICAgICAgICAgICBWZXJzaW9uIHZlcnNpb24gPSBhc3NlbWJseS5HZXROYW1lKCkuVmVyc2lvbjsNCiAgICAgICAgICAgIHRvb2wuVmVyc2lvbiA9IHZlcnNpb24uVG9TdHJpbmcoKTsNCg0KICAgICAgICAgICAgLy8gU3ludGhlc2l6ZWQgc2VtdmVyIDIuMCB2ZXJzaW9uIHJlcXVpcmVkIGJ5IHNwZWMNCiAgICAgICAgICAgIHRvb2wuU2VtYW50aWNWZXJzaW9uID0gdmVyc2lvbi5NYWpvci5Ub1N0cmluZygpICsgIi4iICsgdmVyc2lvbi5NaW5vci5Ub1N0cmluZygpICsgIi4iICsgdmVyc2lvbi5CdWlsZC5Ub1N0cmluZygpOw0KDQogICAgICAgICAgICAvLyBCaW5hcnkgZmlsZSB2ZXJzaW9uDQogICAgICAgICAgICBGaWxlVmVyc2lvbkluZm8gZmlsZVZlcnNpb24gPSBGaWxlVmVyc2lvbkluZm8uR2V0VmVyc2lvbkluZm8oYXNzZW1ibHkuTG9jYXRpb24pOw0KDQogICAgICAgICAgICBpZiAoZmlsZVZlcnNpb24uRmlsZVZlcnNpb24gIT0gdG9vbC5WZXJzaW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRvb2wuRmlsZVZlcnNpb24gPSBmaWxlVmVyc2lvbi5GaWxlVmVyc2lvbjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdG9vbC5GdWxsTmFtZSA9IG5hbWUgKyAiICIgKyB0b29sLlZlcnNpb24gKyAocHJlcmVsZWFzZUluZm8gPz8gIiIpOw0KDQogICAgICAgICAgICB0b29sLkxhbmd1YWdlID0gQ3VsdHVyZUluZm8uQ3VycmVudEN1bHR1cmUuTmFtZTsNCg0KICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShmaWxlVmVyc2lvbi5Db21tZW50cykpIHsgdG9vbC5TZXRQcm9wZXJ0eSgiQ29tbWVudHMiLCBmaWxlVmVyc2lvbi5Db21tZW50cyk7IH0NCiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZmlsZVZlcnNpb24uQ29tcGFueU5hbWUpKSB7IHRvb2wuU2V0UHJvcGVydHkoIkNvbXBhbnlOYW1lIiwgZmlsZVZlcnNpb24uQ29tcGFueU5hbWUpOyB9DQogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGZpbGVWZXJzaW9uLlByb2R1Y3ROYW1lKSkgeyB0b29sLlNldFByb3BlcnR5KCJQcm9kdWN0TmFtZSIsIGZpbGVWZXJzaW9uLlByb2R1Y3ROYW1lKTsgfQ0KDQogICAgICAgICAgICByZXR1cm4gdG9vbDsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1802",
+ "message": {
+ "text": "Field 'RefProperty.s_inputPattern' is declared as 'static readonly' but is initialized with a constant value '(?[^\"]\")\\$ref(?\"\\s*:)'. Mark this field as 'const' instead."
},
- "hashes": [
- {
- "value": "E47C8CC1A595DCBF365140F465B15CFA",
- "algorithm": "md5"
- },
- {
- "value": "5E70DBF35502B7A9AAAD8DE139B7CAF40673E138",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4964B196548775FE6CC2D2F4FAAF5CCC8E4B93815DB25602AAA2220EAD011E83",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 76,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.RefProperty.s_inputPattern"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/TypedPropertiesDictionaryConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7DQp1c2luZyBTeXN0ZW0uRGlhZ25vc3RpY3M7DQp1c2luZyBTeXN0ZW0uTGlucTsNCnVzaW5nIE5ld3RvbnNvZnQuSnNvbjsNCnVzaW5nIE5ld3RvbnNvZnQuSnNvbi5Db252ZXJ0ZXJzOw0KdXNpbmcgTmV3dG9uc29mdC5Kc29uLkxpbnE7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgcHVibGljIGNsYXNzIFR5cGVkUHJvcGVydGllc0RpY3Rpb25hcnlDb252ZXJ0ZXIgOiBKc29uQ29udmVydGVyDQogICAgew0KICAgICAgICBwdWJsaWMgVHlwZWRQcm9wZXJ0aWVzRGljdGlvbmFyeUNvbnZlcnRlcigpDQogICAgICAgIHsNCiAgICAgICAgICAgIF92ZXJzaW9uQ29udmVydGVyID0gbmV3IFZlcnNpb25Db252ZXJ0ZXIoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgVmVyc2lvbkNvbnZlcnRlciBfdmVyc2lvbkNvbnZlcnRlcjsNCg0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgYm9vbCBDYW5Db252ZXJ0KFR5cGUgb2JqZWN0VHlwZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG9iamVjdFR5cGUgPT0gdHlwZW9mKFN0cmluZ1NldCkgfHwNCiAgICAgICAgICAgICAgICAgICBvYmplY3RUeXBlID09IHR5cGVvZihJbnRlZ2VyU2V0KSB8fA0KICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUgPT0gdHlwZW9mKFByb3BlcnRpZXNEaWN0aW9uYXJ5KSB8fA0KICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUgPT0gdHlwZW9mKElEaWN0aW9uYXJ5KTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSBvYmplY3QgUmVhZEpzb24oSnNvblJlYWRlciByZWFkZXIsIFR5cGUgb2JqZWN0VHlwZSwgb2JqZWN0IGV4aXN0aW5nVmFsdWUsIEpzb25TZXJpYWxpemVyIHNlcmlhbGl6ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIEpBcnJheSBqYTsNCg0KICAgICAgICAgICAgaWYgKG9iamVjdFR5cGUgPT0gdHlwZW9mKFN0cmluZ1NldCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgamEgPSBKQXJyYXkuTG9hZChyZWFkZXIpOw0KICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nU2V0KGphLlZhbHVlcygpLlNlbGVjdCh0b2tlbiA9PiB0b2tlbi5Ub1N0cmluZygpKSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmIChvYmplY3RUeXBlID09IHR5cGVvZihJbnRlZ2VyU2V0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBqYSA9IEpBcnJheS5Mb2FkKHJlYWRlcik7DQogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnRlZ2VyU2V0KGphLlZhbHVlcygpLlNlbGVjdCh0b2tlbiA9PiBJbnQzMi5QYXJzZSh0b2tlbi5Ub1N0cmluZygpKSkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAob2JqZWN0VHlwZSA9PSB0eXBlb2YoVmVyc2lvbikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIEpzb25Db252ZXJ0LkRlc2VyaWFsaXplT2JqZWN0PFZlcnNpb24+KHJlYWRlci5SZWFkQXNTdHJpbmcoKSwgX3ZlcnNpb25Db252ZXJ0ZXIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBKT2JqZWN0IGpvID0gSk9iamVjdC5Mb2FkKHJlYWRlcik7DQogICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFByb3BlcnRpZXNEaWN0aW9uYXJ5KCk7DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKEpQcm9wZXJ0eSBwcm9wZXJ0eSBpbiBqby5Qcm9wZXJ0aWVzKCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RyaW5nIGtleSA9IHByb3BlcnR5Lk5hbWU7DQogICAgICAgICAgICAgICAgSlRva2VuIHRva2VuID0gcHJvcGVydHkuVmFsdWU7DQoNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3BlcnR5LlZhbHVlLlR5cGUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBjYXNlIEpUb2tlblR5cGUuU3RyaW5nOg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRva2VuLlRvT2JqZWN0PHN0cmluZz4oc2VyaWFsaXplcik7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBjYXNlIEpUb2tlblR5cGUuSW50ZWdlcjoNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0b2tlbi5Ub09iamVjdDxpbnQ+KHNlcmlhbGl6ZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgY2FzZSBKVG9rZW5UeXBlLkJvb2xlYW46DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gdG9rZW4uVG9PYmplY3Q8Ym9vbD4oc2VyaWFsaXplcik7DQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBjYXNlIEpUb2tlblR5cGUuT2JqZWN0Og0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRva2VuLlRvT2JqZWN0PFByb3BlcnRpZXNEaWN0aW9uYXJ5PihzZXJpYWxpemVyKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNhc2UgSlRva2VuVHlwZS5BcnJheToNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgamEgPSAoSkFycmF5KXByb3BlcnR5LlZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGphLkNoaWxkcmVuKCkuRmlyc3QoKS5UeXBlID09IEpUb2tlblR5cGUuSW50ZWdlcikNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHRva2VuLlRvT2JqZWN0PEludGVnZXJTZXQ+KHNlcmlhbGl6ZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYnVnLkFzc2VydChqYS5DaGlsZHJlbigpLkZpcnN0KCkuVHlwZSA9PSBKVG9rZW5UeXBlLlN0cmluZyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0gPSB0b2tlbi5Ub09iamVjdDxTdHJpbmdTZXQ+KHNlcmlhbGl6ZXIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIFdyaXRlSnNvbihKc29uV3JpdGVyIHdyaXRlciwgb2JqZWN0IHZhbHVlLCBKc29uU2VyaWFsaXplciBzZXJpYWxpemVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBKQXJyYXkgamE7DQogICAgICAgICAgICBpZiAodmFsdWUgaXMgU3RyaW5nU2V0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFN0cmluZ1NldCBoYXNoU2V0ID0gKFN0cmluZ1NldCl2YWx1ZTsNCiAgICAgICAgICAgICAgICBqYSA9IG5ldyBKQXJyYXkoaGFzaFNldC5TZWxlY3QoaSA9PiBuZXcgSlZhbHVlKGkpKSk7DQogICAgICAgICAgICAgICAgamEuV3JpdGVUbyh3cml0ZXIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgaXMgSW50ZWdlclNldCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBJbnRlZ2VyU2V0IGhhc2hTZXQgPSAoSW50ZWdlclNldCl2YWx1ZTsNCiAgICAgICAgICAgICAgICBqYSA9IG5ldyBKQXJyYXkoaGFzaFNldC5TZWxlY3QoaSA9PiBuZXcgSlZhbHVlKGkpKSk7DQogICAgICAgICAgICAgICAgamEuV3JpdGVUbyh3cml0ZXIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkaWN0aW9uYXJ5ID0gKElEaWN0aW9uYXJ5KXZhbHVlOw0KICAgICAgICAgICAgICAgIHdyaXRlci5Xcml0ZVN0YXJ0T2JqZWN0KCk7DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcga2V5IGluIGRpY3Rpb25hcnkuS2V5cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHdyaXRlci5Xcml0ZVByb3BlcnR5TmFtZShrZXkpOw0KDQogICAgICAgICAgICAgICAgICAgIG9iamVjdCBkaWN0aW9uYXJ5VmFsdWUgPSBkaWN0aW9uYXJ5W2tleV07DQoNCiAgICAgICAgICAgICAgICAgICAgVHlwZSB0ID0gdHlwZW9mKG9iamVjdCk7DQogICAgICAgICAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5VmFsdWUgaXMgSURpY3Rpb25hcnkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlWYWx1ZSBpcyBJbnRlZ2VyU2V0ICB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgZGljdGlvbmFyeVZhbHVlIGlzIFN0cmluZ1NldCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVKc29uKHdyaXRlciwgZGljdGlvbmFyeVZhbHVlLCBzZXJpYWxpemVyKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkaWN0aW9uYXJ5VmFsdWUgaXMgVmVyc2lvbikNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplci5TZXJpYWxpemUod3JpdGVyLCBkaWN0aW9uYXJ5VmFsdWUuVG9TdHJpbmcoKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLlNlcmlhbGl6ZSh3cml0ZXIsIGRpY3Rpb25hcnlWYWx1ZSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICB3cml0ZXIuV3JpdGVFbmRPYmplY3QoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KfQ0K"
+ {
+ "ruleId": "CA1802",
+ "message": {
+ "text": "Field 'RefProperty.s_outputPattern' is declared as 'static readonly' but is initialized with a constant value '(?[^\"]\")\\$\\$ref(?\"\\s*:)'. Mark this field as 'const' instead."
},
- "hashes": [
- {
- "value": "45C4AC90649D7D26688BE79D362F44FB",
- "algorithm": "md5"
- },
- {
- "value": "B90716D3CD34C4E5BBADDA903C3711C883694276",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "8036FBEED1BC3A3CEC129A0951A1260DA1B79B71C757CC43260DD38FD3981A16",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 77,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.RefProperty.s_outputPattern"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/UriHelper.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uVGV4dDsNCnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYNCnsNCiAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFVyaUhlbHBlcg0KICAgIHsNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlIGEgc3ludGFjdGljYWxseSB2YWxpZCBVUkkgZnJvbSBhIHBhdGggdGhhdCBtaWdodCBiZQ0KICAgICAgICAvLy8gYWJzb2x1dGUgb3IgcmVsYXRpdmUsIGFuZCB0aGF0IG1pZ2h0IHJlcXVpcmUgcGVyY2VudC1lbmNvZGluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwYXRoIj4NCiAgICAgICAgLy8vIFRoZSBwYXRoIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYSBzeW50YWN0aWNhbGx5IHZhbGlkIFVSSS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz4NCiAgICAgICAgLy8vIEEgc3ludGFjdGljYWxseSB2YWxpZCBVUkkgcmVwcmVzZW50aW5nIDxwYXJhbXJlZiBuYW1lPSJwYXRoIi8+Lg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICAvLy8gPHJlbWFya3M+DQogICAgICAgIC8vLyBJbiBnZW5lcmFsLCA8cGFyYW1yZWYgbmFtZT0icGF0aCIvPiBtaWdodCBiZToNCiAgICAgICAgLy8vIA0KICAgICAgICAvLy8gMS4gUG9zc2libGUgdG8gaW50ZXJwcmV0IGFzIGFuIGFic29sdXRlIHBhdGggLyBhYnNvbHV0ZSBVUkkNCiAgICAgICAgLy8vIDIuIFBvc3NpYmxlIHRvIGludGVycHJldCBhcyBhIHJlbGF0aXZlIHBhdGggLyByZWxhdGl2ZSBVUkkNCiAgICAgICAgLy8vIDMuIE5laXRoZXINCiAgICAgICAgLy8vDQogICAgICAgIC8vLyBXZSBtdXN0IGNyZWF0ZSBhIHZhbGlkIFVSSSB0byBwZXJzaXN0IGluIHRoZSBTQVJJRiBsb2cuIFdlIHByb2NlZWQgYXMgZm9sbG93czoNCiAgICAgICAgLy8vDQogICAgICAgIC8vLyAxLiBUcnkgdG8gY3JlYXRlIGFuIGFic29sdXRlIFN5c3RlbS5VcmkuIElmIHRoYXQgc3VjY2VlZHMsIHRha2UgaXRzDQogICAgICAgIC8vLyBBYnNvbHV0ZVVyaSwgd2hpY2ggKHVubGlrZSBVcmkuVG9TdHJpbmcoKSkgd2lsbCBiZSBwcm9wZXJseSBwZXJjZW50LWVuY29kZWQuDQogICAgICAgIC8vLw0KICAgICAgICAvLy8gMi4gVHJ5IHRvIGNyZWF0ZSBhIHJlbGF0aXZlIFN5c3RlbS5VcmkuIElmIHRoYXQgc3VjY2VlZHMsIHdlIHdhbnQgdG8gd3JpdGUgaXQgb3V0LA0KICAgICAgICAvLy8gYnV0IHNpbmNlIHRoaXMgaXMgYSByZWxhdGl2ZSBVUkksIHdlIGNhbid0IGFjY2VzcyBpdHMgQWJzb2x1dGVVcmkgb3IgQWJzb2x1dGVQYXRoDQogICAgICAgIC8vLyBwcm9wZXJ0eSAtLSBhbmQgYWdhaW4sIFVyaS5Ub1N0cmluZygpIGRvZXMgbm90IHBlcmZvcm0gcGVyY2VudCBlbmNvZGluZy4NCiAgICAgICAgLy8vIA0KICAgICAgICAvLy8gV2UgdXNlIHRoaXMgd29ya2Fyb3VuZDoNCiAgICAgICAgLy8vIA0KICAgICAgICAvLy8gICAgIGEuIENvbWJpbmUgdGhlIHJlbGF0aXZlIHBhdGggd2l0aCBhbiBhcmJpdHJhcnkgc2NoZW1lIGFuZCBob3N0IHRvIGZvcm0NCiAgICAgICAgLy8vICAgICAgICBhbiBhYnNvbHV0ZSBVUkkuDQogICAgICAgIC8vLyAgICAgYi4gRXh0cmFjdCB0aGUgQWJzb2x1dGVQYXRoIHByb3BlcnR5LCB3aGljaCB3aWxsIGJlIHBlcmNlbnQgZW5jb2RlZC4NCiAgICAgICAgLy8vICAgICANCiAgICAgICAgLy8vDQogICAgICAgIC8vLyAzLiBJZiBhbGwgZWxzZSBmYWlscywgd2UgaGF2ZSBhIHN0cmluZyB0aGF0IHdlIGNhbid0IGNvbnZlcnQgdG8gYSBTeXN0ZW0uVXJpLA0KICAgICAgICAvLy8gc28ganVzdCBwZXJjZW50IGVuY29kZSB0aGUgd2hvbGUgdGhpbmcuIFRoaXMgc2hvdWxkIGJlIGV4dHJlbWVseSByYXJlIGluIHByYWN0aWNlLg0KICAgICAgICAvLy8NCiAgICAgICAgLy8vIFRoYW5rcyBhbmQgYSB0aXAgbycgdGhlIGhhdCB0byBAbmd1ZXJyZXJhIGZvciB0aGlzIGNvZGUgKGFuZCBmb3IgdGhlIGNvbW1lbnQpLg0KICAgICAgICAvLy8gPC9yZW1hcmtzPg0KICAgICAgICBwdWJsaWMgc3RhdGljIHN0cmluZyBNYWtlVmFsaWRVcmkoc3RyaW5nIHBhdGgpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShwYXRoKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihwYXRoKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFVyaSB1cmk7DQogICAgICAgICAgICBzdHJpbmcgdmFsaWRVcmk7DQogICAgICAgICAgICBpZiAoVXJpLlRyeUNyZWF0ZShwYXRoLCBVcmlLaW5kLkFic29sdXRlLCBvdXQgdXJpKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YWxpZFVyaSA9IHVyaS5BYnNvbHV0ZVVyaTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYgKFVyaS5UcnlDcmVhdGUocGF0aCwgVXJpS2luZC5SZWxhdGl2ZSwgb3V0IHVyaSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVXJpQnVpbGRlciBidWlsZGVyID0gbmV3IFVyaUJ1aWxkZXIoImh0dHAiLCAid3d3LmV4YW1wbGUuY29tIiwgODAsIHBhdGgpOw0KICAgICAgICAgICAgICAgIHZhbGlkVXJpID0gYnVpbGRlci5VcmkuQWJzb2x1dGVQYXRoOw0KDQogICAgICAgICAgICAgICAgLy8gU2luY2Ugd2hhdCB3ZSBhY3R1YWxseSB3YW50IGlzIGEgcmVsYXRpdmUgcGF0aCwgc3RyaXAgdGhlIGxlYWRpbmcgIi8iDQogICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgQWJzb2x1dGVQYXRoIC0tIHVubGVzcyB0aGUgaW5wdXQgc3RyaW5nIHN0YXJ0ZWQgd2l0aCAiLyIuDQogICAgICAgICAgICAgICAgaWYgKCFwYXRoLlN0YXJ0c1dpdGgoIi8iLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWwpICYmDQogICAgICAgICAgICAgICAgICAgICFwYXRoLlN0YXJ0c1dpdGgoQCJcIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHZhbGlkVXJpID0gdmFsaWRVcmkuU3Vic3RyaW5nKDEpOw0KDQogICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIFVyaUJ1aWxkZXIgY29uc3RydWN0cyBhbiBhYnNvbHV0ZSBVUkksIGl0IHN0cmlwcyBhbnkNCiAgICAgICAgICAgICAgICAgICAgLy8gbGVhZGluZyAiLiIgYW5kICIuLiIgc2VnbWVudHMgKCJkb3Qtc2VnbWVudHMiLCBhcyBSRkMgMzk4NiBjYWxscw0KICAgICAgICAgICAgICAgICAgICAvLyB0aGVtKS4gR2x1ZSB0aGVtIGJhY2sgb24gc28gd2UgZG9uJ3QgbG9zZSB0aGUgcmVsYXRpdmUgcGF0aA0KICAgICAgICAgICAgICAgICAgICAvLyBpbmZvcm1hdGlvbi4NCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGxlYWRpbmdEb3RTZWdtZW50cyA9IEdldExlYWRpbmdEb3RTZWdtZW50cyhwYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShsZWFkaW5nRG90U2VnbWVudHMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YWxpZFVyaSA9IGxlYWRpbmdEb3RTZWdtZW50cyArIHZhbGlkVXJpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhbGlkVXJpID0gU3lzdGVtLk5ldC5XZWJVdGlsaXR5LlVybEVuY29kZShwYXRoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHZhbGlkVXJpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUmVnZXggc19vbmVEb3RQYXR0ZXJuID0NCiAgICAgICAgICAgIG5ldyBSZWdleChAIl5cLltcXC9dIiwgUmVnZXhPcHRpb25zLkNvbXBpbGVkIHwgUmVnZXhPcHRpb25zLkN1bHR1cmVJbnZhcmlhbnQpOw0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFJlZ2V4IHNfdHdvRG90UGF0dGVybiA9DQogICAgICAgICAgICBuZXcgUmVnZXgoQCJeXC5cLltcXC9dIiwgUmVnZXhPcHRpb25zLkNvbXBpbGVkIHwgUmVnZXhPcHRpb25zLkN1bHR1cmVJbnZhcmlhbnQpOw0KDQogICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBHZXRMZWFkaW5nRG90U2VnbWVudHMoc3RyaW5nIHBhdGgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7DQoNCiAgICAgICAgICAgIGJvb2wgbW9yZURvdFNlZ21lbnRzID0gdHJ1ZTsNCiAgICAgICAgICAgIHdoaWxlIChtb3JlRG90U2VnbWVudHMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHNfb25lRG90UGF0dGVybi5Jc01hdGNoKHBhdGgpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGguU3Vic3RyaW5nKDIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBlbHNlIGlmIChzX3R3b0RvdFBhdHRlcm4uSXNNYXRjaChwYXRoKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLlN1YnN0cmluZygzKTsNCiAgICAgICAgICAgICAgICAgICAgc2IuQXBwZW5kKCIuLi8iKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgbW9yZURvdFNlZ21lbnRzID0gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBDb3JuZXIgY2FzZTogdGhlIHBhdGggaXMgZW50aXJlbHkgY29tcG9zZWQgb2YgYSBzaW5nbGUgdHdvLWRvdCBzZWdtZW50LA0KICAgICAgICAgICAgLy8gb3IgZW5kcyB3aXRoIGEgdHdvLWRvdCBzZWdtZW50Lg0KICAgICAgICAgICAgaWYgKHBhdGguRXF1YWxzKCIuLiIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc2IuQXBwZW5kKCIuLiIpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gc2IuVG9TdHJpbmcoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'SchemaReader.ReadSchema(TextReader, string)', validate parameter 'reader' before using it."
},
- "hashes": [
- {
- "value": "2BF551B35A7B7F08DB59927BDF6A5259",
- "algorithm": "md5"
- },
- {
- "value": "E06214BD010F41E1875B294AD75E21FBDC0E7584",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "55E2955EDAFC4CFD9EAA72F2895485820CB8D6A1A13C7EB143B19A770FF14FBD",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 79,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaReader.ReadSchema(System.IO.TextReader,System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Autogenerated/VersionControlDetails.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmDQp7DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTYuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgVmVyc2lvbkNvbnRyb2xEZXRhaWxzIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8VmVyc2lvbkNvbnRyb2xEZXRhaWxzPiBWYWx1ZUNvbXBhcmVyID0+IFZlcnNpb25Db250cm9sRGV0YWlsc0VxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoVmVyc2lvbkNvbnRyb2xEZXRhaWxzIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZCBTYXJpZk5vZGVLaW5kDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kLlZlcnNpb25Db250cm9sRGV0YWlsczsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBhYnNvbHV0ZSBVUkkgb2YgdGhlIHJlcG9zaXRvcnkuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidXJpIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgVXJpIFVyaSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgdGhhdCB1bmlxdWVseSBhbmQgcGVybWFuZW50bHkgaWRlbnRpZmllcyB0aGUgcmV2aXNpb24gd2l0aGluIHRoZSByZXBvc2l0b3J5Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJldmlzaW9uSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgUmV2aXNpb25JZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG5hbWUgb2YgYSBicmFuY2ggY29udGFpbmluZyB0aGUgcmV2aXNpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiYnJhbmNoIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEJyYW5jaCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB0YWcgdGhhdCBoYXMgYmVlbiBhcHBsaWVkIHRvIHRoZSByZXZpc2lvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ0YWciLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgVGFnIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgZGF0ZSBhbmQgdGltZSBhdCB3aGljaCB0aGUgcmV2aXNpb24gd2FzIGNyZWF0ZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGltZXN0YW1wIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRGF0ZVRpbWUgVGltZXN0YW1wIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJldmlzaW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iVmVyc2lvbkNvbnRyb2xEZXRhaWxzIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFZlcnNpb25Db250cm9sRGV0YWlscygpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlZlcnNpb25Db250cm9sRGV0YWlscyIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVyaSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVXJpIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmV2aXNpb25JZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmV2aXNpb25JZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImJyYW5jaCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQnJhbmNoIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGFnIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUYWciIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0aW1lc3RhbXAiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRpbWVzdGFtcCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb3BlcnRpZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFByb3BlcnRpZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIFZlcnNpb25Db250cm9sRGV0YWlscyhVcmkgdXJpLCBzdHJpbmcgcmV2aXNpb25JZCwgc3RyaW5nIGJyYW5jaCwgc3RyaW5nIHRhZywgRGF0ZVRpbWUgdGltZXN0YW1wLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQodXJpLCByZXZpc2lvbklkLCBicmFuY2gsIHRhZywgdGltZXN0YW1wLCBwcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlZlcnNpb25Db250cm9sRGV0YWlscyIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgVmVyc2lvbkNvbnRyb2xEZXRhaWxzKFZlcnNpb25Db250cm9sRGV0YWlscyBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5VcmksIG90aGVyLlJldmlzaW9uSWQsIG90aGVyLkJyYW5jaCwgb3RoZXIuVGFnLCBvdGhlci5UaW1lc3RhbXAsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZSBJU2FyaWZOb2RlLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBWZXJzaW9uQ29udHJvbERldGFpbHMgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChWZXJzaW9uQ29udHJvbERldGFpbHMpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFZlcnNpb25Db250cm9sRGV0YWlscyh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KFVyaSB1cmksIHN0cmluZyByZXZpc2lvbklkLCBzdHJpbmcgYnJhbmNoLCBzdHJpbmcgdGFnLCBEYXRlVGltZSB0aW1lc3RhbXAsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHVyaSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkodXJpLk9yaWdpbmFsU3RyaW5nLCB1cmkuSXNBYnNvbHV0ZVVyaSA/IFVyaUtpbmQuQWJzb2x1dGUgOiBVcmlLaW5kLlJlbGF0aXZlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgUmV2aXNpb25JZCA9IHJldmlzaW9uSWQ7DQogICAgICAgICAgICBCcmFuY2ggPSBicmFuY2g7DQogICAgICAgICAgICBUYWcgPSB0YWc7DQogICAgICAgICAgICBUaW1lc3RhbXAgPSB0aW1lc3RhbXA7DQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA2000",
+ "message": {
+ "text": "In method 'SchemaReader.ReadSchema(string, string)', object 'new StringReader(jsonText)' is not disposed along all exception paths. Call System.IDisposable.Dispose on object 'new StringReader(jsonText)' before all references to it are out of scope.",
+ "id": "ExceptionEdge"
},
- "hashes": [
- {
- "value": "AB6766B206D2C1100FFED634E9E4B054",
- "algorithm": "md5"
- },
- {
- "value": "07EAB0F49C64C7BEFC53CD125AF841C6B42D56B6",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "456B93C8A853D0E73A25BAC72FA46806F88F52A58AB70F5A73877D4A0B24712A",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 80,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaReader.ReadSchema(System.String,System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "ExceptionEdge"
+ },
+ "properties": {
+ "Category": "Microsoft.Reliability",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/SarifLogBaseliner.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5CYXNlbGluZQ0Kew0KICAgIGludGVybmFsIGNsYXNzIFNhcmlmTG9nQmFzZWxpbmVyIDogSVNhcmlmTG9nQmFzZWxpbmVyDQogICAgew0KICAgICAgICBJRXF1YWxpdHlDb21wYXJlcjxSZXN1bHQ+IFJlc3VsdENvbXBhcmF0b3I7DQoNCiAgICAgICAgcHVibGljIFNhcmlmTG9nQmFzZWxpbmVyKElFcXVhbGl0eUNvbXBhcmVyPFJlc3VsdD4gY29tcGFyYXRvcikNCiAgICAgICAgew0KICAgICAgICAgICAgUmVzdWx0Q29tcGFyYXRvciA9IGNvbXBhcmF0b3I7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgUnVuIENyZWF0ZUJhc2VsaW5lZFJ1bihSdW4gYmFzZUxpbmUsIFJ1biBuZXh0TG9nKQ0KICAgICAgICB7DQogICAgICAgICAgICBSdW4gZGlmZmVyZW5jZWRSdW4gPSBuZXh0TG9nLkRlZXBDbG9uZSgpOw0KICAgICAgICAgICAgZGlmZmVyZW5jZWRSdW4uUmVzdWx0cyA9IG5ldyBMaXN0PFJlc3VsdD4oKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgZm9yZWFjaCAodmFyIHJlc3VsdCBpbiBuZXh0TG9nLlJlc3VsdHMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVzdWx0IG5ld1Jlc3VsdCA9IHJlc3VsdC5EZWVwQ2xvbmUoKTsNCg0KICAgICAgICAgICAgICAgIG5ld1Jlc3VsdC5CYXNlbGluZVN0YXRlID0gDQogICAgICAgICAgICAgICAgICAgIGJhc2VMaW5lLlJlc3VsdHMuQ29udGFpbnMocmVzdWx0LCBSZXN1bHRDb21wYXJhdG9yKSA/IEJhc2VsaW5lU3RhdGUuRXhpc3RpbmcgOiBCYXNlbGluZVN0YXRlLk5ldzsNCg0KICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VkUnVuLlJlc3VsdHMuQWRkKG5ld1Jlc3VsdCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZvcmVhY2ggKHZhciByZXN1bHQgaW4gYmFzZUxpbmUuUmVzdWx0cykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAoIW5leHRMb2cuUmVzdWx0cy5Db250YWlucyhyZXN1bHQsIFJlc3VsdENvbXBhcmF0b3IpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0IG5ld1Jlc3VsdCA9IHJlc3VsdC5EZWVwQ2xvbmUoKTsNCiAgICAgICAgICAgICAgICAgICAgbmV3UmVzdWx0LkJhc2VsaW5lU3RhdGUgPSBCYXNlbGluZVN0YXRlLkFic2VudDsNCiAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZWRSdW4uUmVzdWx0cy5BZGQobmV3UmVzdWx0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBkaWZmZXJlbmNlZFJ1bjsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1806",
+ "message": {
+ "text": "'SchemaTypeConverter.SchemaTypeFromString(string)' calls 'Enum.TryParse(string, out SchemaType)' but does not explicitly check whether the conversion succeeded. Either use the return value in a conditional statement or verify that the call site expects that the out argument will be set to the default value when the conversion fails.",
+ "id": "TryParse"
},
- "hashes": [
- {
- "value": "F81204B9AD05F04E8160F1265C3C197A",
- "algorithm": "md5"
- },
- {
- "value": "98F495FCDE0186622E8445E9886436E35C65570B",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "1BF1AFAD6F6D82B6F8C4C170C7A1D44BEB1DEEA62E5B7787A6B318767B3FEF11",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 82,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaTypeConverter.SchemaTypeFromString(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "System.Enum.TryParse(System.String,Microsoft.Json.Schema.SchemaType@)#TryParse"
+ },
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/SarifLogBaselinerFactory.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5CYXNlbGluZQ0Kew0KICAgIHB1YmxpYyBjbGFzcyBTYXJpZkxvZ0Jhc2VsaW5lckZhY3RvcnkNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSVNhcmlmTG9nQmFzZWxpbmVyIENyZWF0ZVNhcmlmTG9nQmFzZWxpbmVyKFNhcmlmQmFzZWxpbmVUeXBlIGxvZ0Jhc2VsaW5lclR5cGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN3aXRjaCAobG9nQmFzZWxpbmVyVHlwZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmQmFzZWxpbmVUeXBlLlN0cmljdDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXJpZkxvZ0Jhc2VsaW5lcihSZXN1bHQuVmFsdWVDb21wYXJlcik7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZkJhc2VsaW5lVHlwZS5TdGFuZGFyZDoNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTYXJpZkxvZ0Jhc2VsaW5lcihEZWZhdWx0QmFzZWxpbmUuUmVzdWx0QmFzZWxpbmVFcXVhbHMuRGVmYXVsdEluc3RhbmNlKTsNCiAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNhcmlmTG9nQmFzZWxpbmVyKFJlc3VsdC5WYWx1ZUNvbXBhcmVyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1308",
+ "level": "error",
+ "message": {
+ "text": "In method 'SchemaTypeConverter.WriteJson(JsonWriter, object, JsonSerializer)', replace the call to 'string.ToLowerInvariant()' with String.ToUpperInvariant().",
+ "id": "ToUpperInvariant"
},
- "hashes": [
- {
- "value": "404D29ECD31B159EB92A5AE27AD87823",
- "algorithm": "md5"
- },
- {
- "value": "1B46BD407925104229401E1A20A67C443C526FDC",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "4ACF42BBD72AF3ACF259B9894008B36F1AF54F55C32E07A402962459E1AAAE61",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 83,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaTypeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "ToUpperInvariant"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/CodeFlowBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQmFzZWxpbmUuRGVmYXVsdEJhc2VsaW5lDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgQ29kZUZsb3dCYXNlbGluZUVxdWFsaXR5Q29tcGFyYXRvciA6IElFcXVhbGl0eUNvbXBhcmVyPENvZGVGbG93Pg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgc3RhdGljIHJlYWRvbmx5IENvZGVGbG93QmFzZWxpbmVFcXVhbGl0eUNvbXBhcmF0b3IgSW5zdGFuY2UgPSBuZXcgQ29kZUZsb3dCYXNlbGluZUVxdWFsaXR5Q29tcGFyYXRvcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhDb2RlRmxvdyB4LCBDb2RlRmxvdyB5KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMoeCwgeSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCFMaXN0Q29tcGFyaXNvbkhlbHBlcnMuQ29tcGFyZUxpc3RzT3JkZXJlZCh4LlRocmVhZEZsb3dzLCB5LlRocmVhZEZsb3dzLCBUaHJlYWRGbG93QmFzZWxpbmVFcXVhbGl0eUNvbXBhcmF0b3IuSW5zdGFuY2UpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShDb2RlRmxvdyBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQgaHMgPSAwOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIExpc3RDb21wYXJpc29uSGVscGVycy5HZXRIYXNoT2ZMaXN0Q29udGVudHNPcmRlcmVkKG9iai5UaHJlYWRGbG93cyk7DQoNCiAgICAgICAgICAgICAgICByZXR1cm4gaHM7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'SchemaTypeConverter.WriteJson(JsonWriter, object, JsonSerializer)', validate parameter 'writer' before using it."
},
- "hashes": [
- {
- "value": "23B29AD3477DB48D0D2CD41D1554B413",
- "algorithm": "md5"
- },
- {
- "value": "C5D2D42ED4FD33A0456A7599D2DC50B9F51009EF",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "DCCFBC7987B750D2116418536D4E4025C309ABC2CB0ED68E25311275B3D4D5D9",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 83,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaTypeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/DefaultBaselineExtensions.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5CYXNlbGluZS5EZWZhdWx0QmFzZWxpbmUNCnsNCiAgICBwdWJsaWMgc3RhdGljIGNsYXNzIERlZmF1bHRCYXNlbGluZUV4dGVuc2lvbnMNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgaW50IEdldE51bGxDaGVja2VkSGFzaENvZGUodGhpcyBvYmplY3Qgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob2JqID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gb2JqLkdldEhhc2hDb2RlKCk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1308",
+ "level": "error",
+ "message": {
+ "text": "In method 'SchemaTypeConverter.WriteJson(JsonWriter, object, JsonSerializer)', replace the call to 'string.ToLowerInvariant()' with String.ToUpperInvariant().",
+ "id": "ToUpperInvariant"
},
- "hashes": [
- {
- "value": "CEFCC4278A87EADF3B0E854C0F9B2598",
- "algorithm": "md5"
- },
- {
- "value": "A1842AFBE28A84C3983E640EB6B16E916FBB95B7",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "D829F87AAFCE833192FEB004AB9C9B642B8C8D9D3963807658CE3AF885855840",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 85,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaTypeConverter+<>c.b__3_0(Microsoft.Json.Schema.SchemaType)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "ToUpperInvariant"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/LocationBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQmFzZWxpbmUuRGVmYXVsdEJhc2VsaW5lDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgTG9jYXRpb25CYXNlbGluZUVxdWFscyA6IElFcXVhbGl0eUNvbXBhcmVyPExvY2F0aW9uPg0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBMb2NhdGlvbkJhc2VsaW5lRXF1YWxzIEluc3RhbmNlID0gbmV3IExvY2F0aW9uQmFzZWxpbmVFcXVhbHMoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoTG9jYXRpb24geCwgTG9jYXRpb24geSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKHgsIHkpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFJlc3VsdCBmaWxlcyBzaG91bGQgbWF0Y2guDQogICAgICAgICAgICAgICAgaWYgKCFQaHlzaWNhbExvY2F0aW9uQmFzZWxpbmVFcXVhbHMuSW5zdGFuY2UuRXF1YWxzKHguUGh5c2ljYWxMb2NhdGlvbiwgeS5QaHlzaWNhbExvY2F0aW9uKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBDb2RlIGxvY2F0aW9ucyAoZnVsbHkgcXVhbGlmaWVkIGxvZ2ljYWwgbmFtZSkgc2hvdWxkIG1hdGNoLg0KICAgICAgICAgICAgICAgIGlmICh4LkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgIT0geS5GdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShMb2NhdGlvbiBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQgaHMgPSAwOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIFBoeXNpY2FsTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZS5HZXRIYXNoQ29kZShvYmouUGh5c2ljYWxMb2NhdGlvbik7DQoNCiAgICAgICAgICAgICAgICBocyA9IGhzIF4gb2JqLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUuR2V0TnVsbENoZWNrZWRIYXNoQ29kZSgpOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGhzOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA2237",
+ "level": "error",
+ "message": {
+ "text": "Add [Serializable] to 'SchemaValidationException' as this type implements ISerializable."
},
- "hashes": [
- {
- "value": "D4244549420D778F171173F74F848972",
- "algorithm": "md5"
- },
- {
- "value": "04B8BCD0961499C7E78CF995BA51B843B603761E",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "1BC6BA295F6836669DC38ADDDA6B2D54FA6117C70BEA90DBB51D5B973B41071F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 86,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaValidationException"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Usage",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/ResultBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5CYXNlbGluZS5EZWZhdWx0QmFzZWxpbmUNCnsNCiAgICBpbnRlcm5hbCBjbGFzcyBSZXN1bHRCYXNlbGluZUVxdWFscyA6IElFcXVhbGl0eUNvbXBhcmVyPFJlc3VsdD4NCiAgICB7DQogICAgICAgIGludGVybmFsIHN0YXRpYyByZWFkb25seSBSZXN1bHRCYXNlbGluZUVxdWFscyBEZWZhdWx0SW5zdGFuY2UgPSBuZXcgUmVzdWx0QmFzZWxpbmVFcXVhbHMoKTsNCiAgICAgICAgDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhSZXN1bHQgeCwgUmVzdWx0IHkpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyh4LCB5KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvLyBSdWxlIElEIHNob3VsZCBtYXRjaA0KICAgICAgICAgICAgICAgIGlmICh4LlJ1bGVJZCAhPSB5LlJ1bGVJZCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBUYXJnZXQgZmlsZSBzaG91bGQgbWF0Y2guDQogICAgICAgICAgICAgICAgaWYgKCFGaWxlTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZS5FcXVhbHMoeC5BbmFseXNpc1RhcmdldCwgeS5BbmFseXNpc1RhcmdldCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gTG9jYXRpb25zIHNob3VsZCBhbGwgYmUgdGhlIHNhbWUuDQogICAgICAgICAgICAgICAgaWYgKCFMaXN0Q29tcGFyaXNvbkhlbHBlcnMuQ29tcGFyZUxpc3RzQXNTZXRzKHguTG9jYXRpb25zLCB5LkxvY2F0aW9ucywgTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gUmVsYXRlZCBMb2NhdGlvbnMgc2hvdWxkIGFsbCBiZSB0aGUgc2FtZS4NCiAgICAgICAgICAgICAgICBpZiAoIUxpc3RDb21wYXJpc29uSGVscGVycy5Db21wYXJlTGlzdHNBc1NldHMoeC5SZWxhdGVkTG9jYXRpb25zLCB5LlJlbGF0ZWRMb2NhdGlvbnMsIExvY2F0aW9uQmFzZWxpbmVFcXVhbHMuSW5zdGFuY2UpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8vIEZpbmdlcnByaW50cyAodmFsdWVzIG9ubHksIGlnbm9yZSBrZXlzKSBzaG91bGQgYmUgdGhlIHNhbWUuDQogICAgICAgICAgICAgICAgaWYgKCFMaXN0Q29tcGFyaXNvbkhlbHBlcnMuQ29tcGFyZUxpc3RzQXNTZXRzKHguRmluZ2VycHJpbnRzPy5WYWx1ZXM/LlRvTGlzdCgpLCB5LkZpbmdlcnByaW50cz8uVmFsdWVzPy5Ub0xpc3QoKSwgU3RyaW5nQ29tcGFyZXIuT3JkaW5hbCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gUGFydGlhbCBmaW5nZXJwcmludHMgKHZhbHVlcyBvbmx5LCBpZ25vcmUga2V5cykgc2hvdWxkIGJlIHRoZSBzYW1lLg0KICAgICAgICAgICAgICAgIGlmICghTGlzdENvbXBhcmlzb25IZWxwZXJzLkNvbXBhcmVMaXN0c0FzU2V0cyh4LlBhcnRpYWxGaW5nZXJwcmludHM/LlZhbHVlcz8uVG9MaXN0KCksIHkuUGFydGlhbEZpbmdlcnByaW50cz8uVmFsdWVzPy5Ub0xpc3QoKSwgU3RyaW5nQ29tcGFyZXIuT3JkaW5hbCkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gSWYgc3RhY2tzIGFyZSBwcmVzZW50LCB3ZSdsbCBtYWtlIHN1cmUgdGhleSdyZSB0aGUgc2FtZQ0KICAgICAgICAgICAgICAgIGlmICghTGlzdENvbXBhcmlzb25IZWxwZXJzLkNvbXBhcmVMaXN0c0FzU2V0cyh4LlN0YWNrcywgeS5TdGFja3MsIFN0YWNrQmFzZWxpbmVFcXVhbHMuSW5zdGFuY2UpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8vIElmIGNvZGVmbG93cyBhcmUgcHJlc2VudCwgd2UnbGwgbWFrZSBzdXJlIHRoZXkncmUgdGhlIHNhbWUuDQogICAgICAgICAgICAgICAgaWYgKCFMaXN0Q29tcGFyaXNvbkhlbHBlcnMuQ29tcGFyZUxpc3RzQXNTZXRzKHguQ29kZUZsb3dzLCB5LkNvZGVGbG93cywgQ29kZUZsb3dCYXNlbGluZUVxdWFsaXR5Q29tcGFyYXRvci5JbnN0YW5jZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgaW50IEdldEhhc2hDb2RlKFJlc3VsdCBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQgaHMgPSAwOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIG9iai5SdWxlSWQuR2V0TnVsbENoZWNrZWRIYXNoQ29kZSgpIF4gb2JqLlBhcnRpYWxGaW5nZXJwcmludHMuR2V0TnVsbENoZWNrZWRIYXNoQ29kZSgpOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIExpc3RDb21wYXJpc29uSGVscGVycy5HZXRIYXNoT2ZMaXN0Q29udGVudHNBc1NldHMob2JqLkxvY2F0aW9ucywgTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZSk7DQoNCiAgICAgICAgICAgICAgICBocyA9IGhzIF4gTGlzdENvbXBhcmlzb25IZWxwZXJzLkdldEhhc2hPZkxpc3RDb250ZW50c0FzU2V0cyhvYmouUmVsYXRlZExvY2F0aW9ucywgTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZSk7DQoNCiAgICAgICAgICAgICAgICBocyA9IGhzIF4gTGlzdENvbXBhcmlzb25IZWxwZXJzLkdldEhhc2hPZkxpc3RDb250ZW50c0FzU2V0cyhvYmouU3RhY2tzLCBTdGFja0Jhc2VsaW5lRXF1YWxzLkluc3RhbmNlKTsNCg0KICAgICAgICAgICAgICAgIGhzID0gaHMgXiBMaXN0Q29tcGFyaXNvbkhlbHBlcnMuR2V0SGFzaE9mTGlzdENvbnRlbnRzQXNTZXRzKG9iai5Db2RlRmxvd3MsIENvZGVGbG93QmFzZWxpbmVFcXVhbGl0eUNvbXBhcmF0b3IuSW5zdGFuY2UpOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGhzOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'SchemaValidationException.SchemaValidationException(JToken, ErrorNumber, params object[])', correct the spelling of 'j' in parameter name 'jToken' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "04FDBFD582F70357A9D23F6EF747807B",
- "algorithm": "md5"
- },
- {
- "value": "212EE5A343F9FA71E7D8C1CF02069B246CBFFAA8",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "8AF4A5B45F09635C30C63741F52C410D36D44E943427CD03A449D951E8E94ECA",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 87,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaValidationException..ctor(Newtonsoft.Json.Linq.JToken,Microsoft.Json.Schema.ErrorNumber,System.Object[])"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/StackBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQmFzZWxpbmUuRGVmYXVsdEJhc2VsaW5lDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgU3RhY2tCYXNlbGluZUVxdWFscyA6IElFcXVhbGl0eUNvbXBhcmVyPFN0YWNrPg0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBTdGFja0Jhc2VsaW5lRXF1YWxzIEluc3RhbmNlID0gbmV3IFN0YWNrQmFzZWxpbmVFcXVhbHMoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoU3RhY2sgeCwgU3RhY2sgeSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKHgsIHkpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICghTGlzdENvbXBhcmlzb25IZWxwZXJzLkNvbXBhcmVMaXN0c09yZGVyZWQoeC5GcmFtZXMsIHkuRnJhbWVzKSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoU3RhY2sgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG9iaiwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW50IGhzID0gMDsNCg0KICAgICAgICAgICAgICAgIGhzID0gaHMgXiBMaXN0Q29tcGFyaXNvbkhlbHBlcnMuR2V0SGFzaE9mTGlzdENvbnRlbnRzT3JkZXJlZChvYmouRnJhbWVzLCBTdGFja0ZyYW1lQmFzZWxpbmVFcXVhbHMuSW5zdGFuY2UpOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGhzOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
},
- "hashes": [
- {
- "value": "6B05A181D6DCEB9979FD703FD4AB55DA",
- "algorithm": "md5"
- },
- {
- "value": "9D43CA44CA2EBADE007C1335AD9E4AB3DEEB7E62",
- "algorithm": "sha-1"
- },
- {
- "value": "3AF4B4443BFD913FB9AD4526F5E785ED72E69070BCDC0A111D7640065F758638",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/StackFrameBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQmFzZWxpbmUuRGVmYXVsdEJhc2VsaW5lDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgU3RhY2tGcmFtZUJhc2VsaW5lRXF1YWxzIDogSUVxdWFsaXR5Q29tcGFyZXI8U3RhY2tGcmFtZT4NCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU3RhY2tGcmFtZUJhc2VsaW5lRXF1YWxzIEluc3RhbmNlID0gbmV3IFN0YWNrRnJhbWVCYXNlbGluZUVxdWFscygpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhTdGFja0ZyYW1lIHgsIFN0YWNrRnJhbWUgeSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKHgsIHkpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmICh4LkxvY2F0aW9uPy5QaHlzaWNhbExvY2F0aW9uPy5GaWxlTG9jYXRpb24/LlVyaSAhPSB5LkxvY2F0aW9uPy5QaHlzaWNhbExvY2F0aW9uPy5GaWxlTG9jYXRpb24/LlVyaSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoeC5Nb2R1bGUgIT0geS5Nb2R1bGUpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKCFMaXN0Q29tcGFyaXNvbkhlbHBlcnMuQ29tcGFyZUxpc3RzT3JkZXJlZCh4LlBhcmFtZXRlcnMsIHkuUGFyYW1ldGVycykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgaW50IEdldEhhc2hDb2RlKFN0YWNrRnJhbWUgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG9iaiwgbnVsbCkgfHwgb2JqLkxvY2F0aW9uPy5QaHlzaWNhbExvY2F0aW9uPy5GaWxlTG9jYXRpb24/LlVyaSA9PSBudWxsIHx8IG9iai5Nb2R1bGUgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQgaHMgPSAwOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIG9iai5Mb2NhdGlvbi5QaHlzaWNhbExvY2F0aW9uLkZpbGVMb2NhdGlvbi5VcmkuR2V0TnVsbENoZWNrZWRIYXNoQ29kZSgpOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIG9iai5Nb2R1bGUuR2V0TnVsbENoZWNrZWRIYXNoQ29kZSgpOw0KDQogICAgICAgICAgICAgICAgaHMgPSBocyBeIExpc3RDb21wYXJpc29uSGVscGVycy5HZXRIYXNoT2ZMaXN0Q29udGVudHNPcmRlcmVkKG9iai5QYXJhbWV0ZXJzKTsNCg0KICAgICAgICAgICAgICAgIHJldHVybiBoczsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1032",
+ "level": "error",
+ "message": {
+ "text": "Change the accessibility of 'SchemaValidationException.SchemaValidationException(SerializationInfo, StreamingContext)' to protected.",
+ "id": "Accessibility"
},
- "hashes": [
- {
- "value": "7A7DC8454E236D6B53DECFC378A39ADB",
- "algorithm": "md5"
- },
- {
- "value": "41149837423A1FB9FDBE2CE0AD7EB39FCDC1F84D",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "6846DDB987AE5331B6EC9D43C6295804B2F25C861EF7C5DBE5228083438421BD",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 88,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaValidationException..ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Accessibility"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/ThreadFlowBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQmFzZWxpbmUuRGVmYXVsdEJhc2VsaW5lDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgVGhyZWFkRmxvd0Jhc2VsaW5lRXF1YWxpdHlDb21wYXJhdG9yIDogSUVxdWFsaXR5Q29tcGFyZXI8VGhyZWFkRmxvdz4NCiAgICB7DQogICAgICAgIGludGVybmFsIHN0YXRpYyByZWFkb25seSBUaHJlYWRGbG93QmFzZWxpbmVFcXVhbGl0eUNvbXBhcmF0b3IgSW5zdGFuY2UgPSBuZXcgVGhyZWFkRmxvd0Jhc2VsaW5lRXF1YWxpdHlDb21wYXJhdG9yKCk7DQoNCiAgICAgICAgcHVibGljIGJvb2wgRXF1YWxzKFRocmVhZEZsb3cgeCwgVGhyZWFkRmxvdyB5KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMoeCwgeSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKCFMaXN0Q29tcGFyaXNvbkhlbHBlcnMuQ29tcGFyZUxpc3RzT3JkZXJlZCh4LkxvY2F0aW9ucywgeS5Mb2NhdGlvbnMsIFRocmVhZEZsb3dMb2NhdGlvbkJhc2VsaW5lRXF1YWxzLkRlZmF1bHRJbnN0YW5jZSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgaW50IEdldEhhc2hDb2RlKFRocmVhZEZsb3cgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG9iaiwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaW50IGhzID0gMDsNCg0KICAgICAgICAgICAgICAgIGhzID0gaHMgXiBMaXN0Q29tcGFyaXNvbkhlbHBlcnMuR2V0SGFzaE9mTGlzdENvbnRlbnRzT3JkZXJlZChvYmouTG9jYXRpb25zKTsNCg0KICAgICAgICAgICAgICAgIHJldHVybiBoczsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1819",
+ "message": {
+ "text": "Change 'SchemaValidationException.Args' to return a collection or make it a method."
},
- "hashes": [
- {
- "value": "74CEF9A2CE51AA0A7FA2D47665CC1A65",
- "algorithm": "md5"
- },
- {
- "value": "A082E49E17E17ABBC1776FA9D89907FBE09ECD51",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "A2568F50955A13B0DB9D01EF41EB5D67FD797281B117A29579B6A260B745AE5F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 89,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaValidationException.Args"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Baseline/DefaultBaseline/ThreadFlowLocationBaselineEquals.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuQmFzZWxpbmUuRGVmYXVsdEJhc2VsaW5lDQp7DQogICAgaW50ZXJuYWwgY2xhc3MgVGhyZWFkRmxvd0xvY2F0aW9uQmFzZWxpbmVFcXVhbHMgOiBJRXF1YWxpdHlDb21wYXJlcjxUaHJlYWRGbG93TG9jYXRpb24+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgVGhyZWFkRmxvd0xvY2F0aW9uQmFzZWxpbmVFcXVhbHMgRGVmYXVsdEluc3RhbmNlID0gbmV3IFRocmVhZEZsb3dMb2NhdGlvbkJhc2VsaW5lRXF1YWxzKCk7DQogICAgICAgIA0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoVGhyZWFkRmxvd0xvY2F0aW9uIHgsIFRocmVhZEZsb3dMb2NhdGlvbiB5KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMoeCwgeSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKHguSW1wb3J0YW5jZSAhPSB5LkltcG9ydGFuY2UpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKHguTW9kdWxlICE9IHkuTW9kdWxlKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmICghTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZS5FcXVhbHMoeC5Mb2NhdGlvbiwgeS5Mb2NhdGlvbikpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgaW50IEdldEhhc2hDb2RlKFRocmVhZEZsb3dMb2NhdGlvbiBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpbnQgaHMgPSAwOw0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIGhzID0gaHMgXiBvYmouTmVzdGluZ0xldmVsIF4gTG9jYXRpb25CYXNlbGluZUVxdWFscy5JbnN0YW5jZS5HZXRIYXNoQ29kZShvYmouTG9jYXRpb24pOw0KDQogICAgICAgICAgICAgICAgcmV0dXJuIGhzOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1026",
+ "level": "error",
+ "message": {
+ "text": "Replace method 'SchemaWriter.WriteSchema(JsonWriter, JsonSchema, Formatting)' with an overload that supplies all default arguments."
},
- "hashes": [
- {
- "value": "0C6BE9150520E145EEE2423CE2083C90",
- "algorithm": "md5"
- },
- {
- "value": "DA893B4FC0F24DC7E6F915DE59DA79E348C3B304",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "8F4C7AF22EBB4674393EBD05F6AF06B9F5C4EF085685AB4BBD2D931097D47AC6",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 91,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaWriter.WriteSchema(Newtonsoft.Json.JsonWriter,Microsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Formatting)"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Processors/Generic/GenericActionPipeline.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUHJvY2Vzc29ycw0Kew0KICAgIHB1YmxpYyBjbGFzcyBHZW5lcmljQWN0aW9uUGlwZWxpbmU8VD4gOiBJQWN0aW9uV3JhcHBlcjxUPg0KICAgIHsNCiAgICAgICAgSUVudW1lcmFibGU8SUFjdGlvbldyYXBwZXI8VD4+IF9zdGFnZXM7DQoNCiAgICAgICAgcHVibGljIEdlbmVyaWNBY3Rpb25QaXBlbGluZShJRW51bWVyYWJsZTxJQWN0aW9uV3JhcHBlcjxUPj4gc3RhZ2VzKQ0KICAgICAgICB7DQogICAgICAgICAgICBfc3RhZ2VzID0gc3RhZ2VzOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIElFbnVtZXJhYmxlPFQ+IEFjdChJRW51bWVyYWJsZTxUPiBjb2xsZWN0aW9uKQ0KICAgICAgICB7DQogICAgICAgICAgICBJRW51bWVyYWJsZTxUPiBpbnRlcm1lZGlhdGUgPSBjb2xsZWN0aW9uOw0KICAgICAgICAgICAgZm9yZWFjaCAodmFyIGFjdGlvbiBpbiBfc3RhZ2VzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZSA9IGFjdGlvbi5BY3QoaW50ZXJtZWRpYXRlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGU7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1026",
+ "level": "error",
+ "message": {
+ "text": "Replace method 'SchemaWriter.WriteSchema(TextWriter, JsonSchema, Formatting)' with an overload that supplies all default arguments."
},
- "hashes": [
- {
- "value": "8D51071F359BC57BF97656E95B843EA7",
- "algorithm": "md5"
- },
- {
- "value": "22FA1AC5A38F09BF894FC5C840E6615B3DE9C174",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "233C85D79A05A0223390D0B58C35AA8811EB4B75010187184D06620B41DA0D09",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 92,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaWriter.WriteSchema(System.IO.TextWriter,Microsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Formatting)"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Processors/Generic/GenericMappingAction.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUHJvY2Vzc29ycw0Kew0KICAgIHB1YmxpYyBjbGFzcyBHZW5lcmljTWFwcGluZ0FjdGlvbjxUPiA6IElNYXBBY3Rpb248VD4NCiAgICB7DQogICAgICAgIHB1YmxpYyBGdW5jPFQsIFQ+IEFjdGlvbjsNCg0KICAgICAgICBwdWJsaWMgR2VuZXJpY01hcHBpbmdBY3Rpb24oRnVuYzxULCBUPiBhY3Rpb24pDQogICAgICAgIHsNCiAgICAgICAgICAgIEFjdGlvbiA9IGFjdGlvbjsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBJRW51bWVyYWJsZTxUPiBNYXAoSUVudW1lcmFibGU8VD4gY29sbGVjdGlvbikNCiAgICAgICAgew0KICAgICAgICAgICAgTGlzdDxUPiBvdXRwdXQgPSBuZXcgTGlzdDxUPigpOw0KICAgICAgICAgICAgZm9yZWFjaCh2YXIgdmFsdWUgaW4gY29sbGVjdGlvbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBvdXRwdXQuQWRkKEFjdGlvbi5JbnZva2UodmFsdWUpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgSUVudW1lcmFibGU8VD4gQWN0KElFbnVtZXJhYmxlPFQ+IGxpc3QpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBNYXAobGlzdCk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA2000",
+ "message": {
+ "text": "In method 'SchemaWriter.WriteSchema(TextWriter, JsonSchema, Formatting)', call System.IDisposable.Dispose on object 'new StringWriter()' before all references to it are out of scope.",
+ "id": "NonExceptionEdge"
},
- "hashes": [
- {
- "value": "4F228959563BAEE6798F2B42BBE71E6D",
- "algorithm": "md5"
- },
- {
- "value": "290233DFC3315AF28EEE4929366F4D75909E5871",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "153AE0C9804E63C9CD10F47A1C2589595F7DD322C7203E634AEF1D42AF4A94C3",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 92,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaWriter.WriteSchema(System.IO.TextWriter,Microsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Formatting)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "NonExceptionEdge"
+ },
+ "properties": {
+ "Category": "Microsoft.Reliability",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Processors/Log/SarifLogExtensionMethods.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgICAgICAgIA0KLy8gbGljZW5zZS4gU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uIA0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Qcm9jZXNzb3JzDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBTYXJpZiBsb2cgZXh0ZW5zaW9uIG1ldGhvZHMgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIGVhc2Ugb2YgdXNlIGFzIGFuIEFQSS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2FyaWZMb2dFeHRlbnNpb25NZXRob2RzDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIFNhcmlmTG9nIE1lcmdlKHRoaXMgSUVudW1lcmFibGU8U2FyaWZMb2c+IHNhcmlmTG9nKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKChHZW5lcmljRm9sZEFjdGlvbjxTYXJpZkxvZz4pU2FyaWZMb2dQcm9jZXNzb3JGYWN0b3J5LkdldEFjdGlvblN0YWdlKFNhcmlmTG9nQWN0aW9uLk1lcmdlKSkuRm9sZChzYXJpZkxvZyk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIElFbnVtZXJhYmxlPFNhcmlmTG9nPiBSZWJhc2VVcmkodGhpcyBJRW51bWVyYWJsZTxTYXJpZkxvZz4gc2FyaWZMb2csIHN0cmluZyBiYXNlUGF0aFRva2VuLCBib29sIHJlYmFzZVJlbGF0aXZlVXJpcywgVXJpIHVyaSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIFNhcmlmTG9nUHJvY2Vzc29yRmFjdG9yeS5HZXRBY3Rpb25TdGFnZShTYXJpZkxvZ0FjdGlvbi5SZWJhc2VVcmksIGJhc2VQYXRoVG9rZW4sIHJlYmFzZVJlbGF0aXZlVXJpcy5Ub1N0cmluZygpLCB1cmkuQWJzb2x1dGVVcmkpLkFjdChzYXJpZkxvZyk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIFNhcmlmTG9nIFJlYmFzZVVyaSh0aGlzIFNhcmlmTG9nIHNhcmlmTG9nLCBzdHJpbmcgYmFzZVBhdGhUb2tlbiwgYm9vbCByZWJhc2VSZWxhdGl2ZVVyaXMsIFVyaSB1cmkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAobmV3IExpc3Q8U2FyaWZMb2c+KCkgeyBzYXJpZkxvZyB9KS5SZWJhc2VVcmkoYmFzZVBhdGhUb2tlbiwgcmViYXNlUmVsYXRpdmVVcmlzLCB1cmkpLlNpbmdsZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRW51bWVyYWJsZTxTYXJpZkxvZz4gTWFrZVVyaXNBYnNvbHV0ZSh0aGlzIElFbnVtZXJhYmxlPFNhcmlmTG9nPiBzYXJpZkxvZ3MpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBTYXJpZkxvZ1Byb2Nlc3NvckZhY3RvcnkuR2V0QWN0aW9uU3RhZ2UoU2FyaWZMb2dBY3Rpb24uTWFrZVVyaXNBYnNvbHV0ZSkuQWN0KHNhcmlmTG9ncyk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgc3RhdGljIFNhcmlmTG9nIE1ha2VVcmlzQWJzb2x1dGUodGhpcyBTYXJpZkxvZyBzYXJpZkxvZykNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChuZXcgTGlzdDxTYXJpZkxvZz4oKSB7IHNhcmlmTG9nIH0pLk1ha2VVcmlzQWJzb2x1dGUoKS5TaW5nbGUoKTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1305",
+ "level": "error",
+ "message": {
+ "text": "Because the behavior of 'StringWriter.StringWriter()' could vary based on the current user's locale settings, replace this call in 'SchemaWriter.WriteSchema(TextWriter, JsonSchema, Formatting)' with a call to 'StringWriter.StringWriter(IFormatProvider)'. If the result of 'StringWriter.StringWriter(IFormatProvider)' will be based on input from the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will based on input stored and accessed by software, such as when it is loaded from disk or from a database, specify 'CultureInfo.InvariantCulture'.",
+ "id": "IFormatProviderAlternate"
},
- "hashes": [
- {
- "value": "3565FB7A37A79A16CB7C4F2372973587",
- "algorithm": "md5"
- },
- {
- "value": "363E1D610FEE5E11917B5A9F039520BBDA02BE11",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "67F834C13D58FDC6BE981A69988E1A9A8AA25FC9631183ABAAACF45B64505428",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 92,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaWriter.WriteSchema(System.IO.TextWriter,Microsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Formatting)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "System.IO.StringWriter.#ctor#IFormatProviderAlternate"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Processors/Log/SarifLogPipeline.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgICAgICAgIA0KLy8gbGljZW5zZS4gU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uIA0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KdXNpbmcgTmV3dG9uc29mdC5Kc29uOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5Qcm9jZXNzb3JzDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBTZXJpYWxpemFibGUgbG9nIG1hbmlwdWxhdGlvbiBwaXBlbGluZS0tdGFrZXMgYSBzZXJpZXMgb2Ygc3RhZ2VzLCBhbmQgdGhlbiBleGVjdXRlcyB0aGVtIHNlcXVlbnRpYWxseSBvbiBhIGxvZyBmaWxlLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW1NlcmlhbGl6YWJsZV0NCiAgICBwdWJsaWMgY2xhc3MgU2FyaWZMb2dQaXBlbGluZQ0KICAgIHsNCiAgICAgICAgW0pzb25SZXF1aXJlZF0NCiAgICAgICAgcHVibGljIExpc3Q8U2FyaWZMb2dBY3Rpb25UdXBsZT4gQWN0aW9ucw0KICAgICAgICB7DQogICAgICAgICAgICBnZXQ7DQogICAgICAgICAgICBwcml2YXRlIHNldDsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgcHJpdmF0ZSBHZW5lcmljQWN0aW9uUGlwZWxpbmU8U2FyaWZMb2c+IF9waXBlbGluZTsNCg0KICAgICAgICBbSnNvbkNvbnN0cnVjdG9yXQ0KICAgICAgICBwdWJsaWMgU2FyaWZMb2dQaXBlbGluZShMaXN0PFNhcmlmTG9nQWN0aW9uVHVwbGU+IGFjdGlvbnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRoaXMuQWN0aW9ucyA9IGFjdGlvbnM7DQogICAgICAgICAgICANCiAgICAgICAgICAgIF9waXBlbGluZSA9IG5ldyBHZW5lcmljQWN0aW9uUGlwZWxpbmU8U2FyaWZMb2c+KEFjdGlvbnMuU2VsZWN0KGEgPT4gU2FyaWZMb2dQcm9jZXNzb3JGYWN0b3J5LkdldEFjdGlvblN0YWdlKGEuQWN0aW9uLCBhLlBhcmFtZXRlcnMpKSk7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgSUVudW1lcmFibGU8U2FyaWZMb2c+IEFwcGx5UGlwZWxpbmUoSUVudW1lcmFibGU8U2FyaWZMb2c+IGxvZ3MpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBfcGlwZWxpbmUuQWN0KGxvZ3MpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUd28gcGlwZWxpbmVzIGFyZSBlcXVhbCBpZiB0aGV5IGFwcGx5IHRoZSBzYW1lIHN0ZXBzIHRvIHRoZSBpbnB1dCBzYXJpZiBmaWxlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIG92ZXJyaWRlIGJvb2wgRXF1YWxzKG9iamVjdCBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIFNhcmlmTG9nUGlwZWxpbmUgb3RoZXIgPSBvYmogYXMgU2FyaWZMb2dQaXBlbGluZTsNCg0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGJhc2UuRXF1YWxzKG9iaik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChvdGhlci5BY3Rpb25zLkNvdW50ICE9IHRoaXMuQWN0aW9ucy5Db3VudCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGhpcy5BY3Rpb25zLkNvdW50OyBpKyspDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYoIXRoaXMuQWN0aW9uc1tpXS5FcXVhbHMob3RoZXIuQWN0aW9uc1tpXSkpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdlbmVyYXRlZCBieSBWaXN1YWwgU3R1ZGlvLiAgV2UncmUgb3ZlcnJpZGluZyBFcXVhbHMoKSBzbyB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoaXMgYXMgd2VsbC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIG92ZXJyaWRlIGludCBHZXRIYXNoQ29kZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAxNTIyNjg0MzI0ICsgRXF1YWxpdHlDb21wYXJlcjxMaXN0PFNhcmlmTG9nQWN0aW9uVHVwbGU+Pi5EZWZhdWx0LkdldEhhc2hDb2RlKEFjdGlvbnMpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'SchemaWriter.WriteSchema(TextWriter, JsonSchema, Formatting)', validate parameter 'writer' before using it."
},
- "hashes": [
- {
- "value": "7E608349B86D87BCDCECB2D66604BE15",
- "algorithm": "md5"
- },
- {
- "value": "F5F45557ED008C120569D3F51CC5E008F567C23F",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "BCE4694158326EE26375800CF99FFA11D7A4F0A99CAF81E929497FBB8C738798",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 92,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.SchemaWriter.WriteSchema(System.IO.TextWriter,Microsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Formatting)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Processors/Log/SarifLogStageFactory.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgICAgICAgIA0KLy8gbGljZW5zZS4gU2VlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcHJvamVjdCByb290IGZvciBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24uIA0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5EaWFnbm9zdGljczsNCg0KdXNpbmcgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5WaXNpdG9yczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUHJvY2Vzc29ycw0Kew0KICAgIHB1YmxpYyBjbGFzcyBTYXJpZkxvZ1Byb2Nlc3NvckZhY3RvcnkNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUFjdGlvbldyYXBwZXI8U2FyaWZMb2c+IEdldEFjdGlvblN0YWdlKFNhcmlmTG9nQWN0aW9uIGFjdGlvbiwgcGFyYW1zIHN0cmluZ1tdIGFyZ3MpDQogICAgICAgIHsNCiAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZMb2dBY3Rpb24uTm9uZToNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY01hcHBpbmdBY3Rpb248U2FyaWZMb2c+KGEgPT4gYSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZMb2dBY3Rpb24uTWFrZVVyaXNBYnNvbHV0ZToNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY01hcHBpbmdBY3Rpb248U2FyaWZMb2c+KGxvZyA9Pg0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBBYnNvbHV0ZVVyaXNWaXNpdG9yIHZpc2l0b3IgPSBuZXcgQWJzb2x1dGVVcmlzVmlzaXRvcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IuVmlzaXRTYXJpZkxvZyhsb2cpOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZkxvZ0FjdGlvbi5SZWJhc2VVcmk6DQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdlbmVyaWNNYXBwaW5nQWN0aW9uPFNhcmlmTG9nPihsb2cgPT4NCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWJhc2VSZWxhdGl2ZVVyaXMgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FzdFJlbGF0aXZlVXJpc0FyZyA9IGJvb2wuVHJ5UGFyc2UoYXJnc1sxXSwgb3V0IHJlYmFzZVJlbGF0aXZlVXJpcyk7DQogICAgICAgICAgICAgICAgICAgICAgICBEZWJ1Zy5Bc3NlcnQoY2FzdFJlbGF0aXZlVXJpc0FyZyk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIFJlYmFzZVVyaVZpc2l0b3IgdmlzaXRvciA9IG5ldyBSZWJhc2VVcmlWaXNpdG9yKGFyZ3NbMF0sIHJlYmFzZVJlbGF0aXZlVXJpcywgbmV3IFVyaShhcmdzWzJdKSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci5WaXNpdFNhcmlmTG9nKGxvZyk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTG9nQWN0aW9uLk1lcmdlOg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljRm9sZEFjdGlvbjxTYXJpZkxvZz4obWVyZ2VGdW5jdGlvbik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZMb2dBY3Rpb24uU29ydDoNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTG9nQWN0aW9uLk1ha2VEZXRlcm1pbmlzdGljOg0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigkIlVua25vd24vTm90IFN1cHBvcnRlZCBBY3Rpb24ge2FjdGlvbn0uIiwgbmFtZW9mKGFjdGlvbikpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBwcml2YXRlIHN0YXRpYyBGdW5jPFNhcmlmTG9nLCBTYXJpZkxvZywgU2FyaWZMb2c+IG1lcmdlRnVuY3Rpb24gPQ0KICAgICAgICAgICAgKGFjY3VtdWxhdG9yLCBuZXh0TG9nKSA9Pg0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChuZXh0TG9nLlJ1bnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoYWNjdW11bGF0b3IuUnVucyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IuUnVucyA9IG5ldyBMaXN0PFJ1bj4oKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgcnVuIGluIG5leHRMb2cuUnVucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChydW4gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0b3IuUnVucy5BZGQocnVuKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7DQogICAgICAgICAgICB9Ow0KICAgIH0NCn0NCg=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'UriOrFragment.UriOrFragment(UriOrFragment)', validate parameter 'other' before using it."
},
- "hashes": [
- {
- "value": "8297925B8D45182F9671789364705BAE",
- "algorithm": "md5"
- },
- {
- "value": "C674FBF4C8B600B7A808F2410902747CA13D1E1F",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "918BD6142A3C10DFE1951D63CC6ECB33C4CF2767725712E6AB9E27281CB93684",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 94,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragment..ctor(Microsoft.Json.Schema.UriOrFragment)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Readers/EnumConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBOZXd0b25zb2Z0Lkpzb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnMNCnsNCiAgICBwdWJsaWMgY2xhc3MgRW51bUNvbnZlcnRlciA6IEpzb25Db252ZXJ0ZXINCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRW51bUNvbnZlcnRlciBJbnN0YW5jZSA9IG5ldyBFbnVtQ29udmVydGVyKCk7DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIGJvb2wgQ2FuQ29udmVydChUeXBlIG9iamVjdFR5cGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIG9iamVjdCBSZWFkSnNvbihKc29uUmVhZGVyIHJlYWRlciwgVHlwZSBvYmplY3RUeXBlLCBvYmplY3QgZXhpc3RpbmdWYWx1ZSwgSnNvblNlcmlhbGl6ZXIgc2VyaWFsaXplcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHJlYWRlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHJlYWRlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBzdHJpbmcgdmFsdWUgPSAoc3RyaW5nKXJlYWRlci5WYWx1ZTsNCiAgICAgICAgICAgIHJldHVybiBFbnVtLlBhcnNlKG9iamVjdFR5cGUsIENvbnZlcnRUb1Bhc2NhbENhc2UodmFsdWUpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIFdyaXRlSnNvbihKc29uV3JpdGVyIHdyaXRlciwgb2JqZWN0IHZhbHVlLCBKc29uU2VyaWFsaXplciBzZXJpYWxpemVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAod3JpdGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yod3JpdGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHZhbHVlKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN0cmluZyByZXN1bHRMZXZlbFN0cmluZyA9IHZhbHVlLlRvU3RyaW5nKCk7DQoNCiAgICAgICAgICAgIHJlc3VsdExldmVsU3RyaW5nID0gQ29udmVydFRvQ2FtZWxDYXNlKHJlc3VsdExldmVsU3RyaW5nKTsNCg0KICAgICAgICAgICAgd3JpdGVyLldyaXRlUmF3VmFsdWUoIlwiIiArIHJlc3VsdExldmVsU3RyaW5nICsgIlwiIik7DQogICAgICAgIH0NCg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgc3RyaW5nIENvbnZlcnRUb0NhbWVsQ2FzZShzdHJpbmcgdXBwZXJDYXNlTmFtZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHVwcGVyQ2FzZU5hbWUuTGVuZ3RoID09IDEpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHVwcGVyQ2FzZU5hbWUuVG9Mb3dlckludmFyaWFudCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcHJlZml4Q291bnQgPSBJc1ByZWZpeGVkV2l0aFR3b0xldHRlcldvcmQodXBwZXJDYXNlTmFtZSkgPyAyIDogMTsNCg0KICAgICAgICAgICAgcmV0dXJuIHVwcGVyQ2FzZU5hbWUuU3Vic3RyaW5nKDAsIHByZWZpeENvdW50KS5Ub0xvd2VySW52YXJpYW50KCkgKyB1cHBlckNhc2VOYW1lLlN1YnN0cmluZyhwcmVmaXhDb3VudCk7DQogICAgICAgIH0NCg0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgc3RyaW5nIENvbnZlcnRUb1Bhc2NhbENhc2Uoc3RyaW5nIGNhbWVsQ2FzZU5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChjYW1lbENhc2VOYW1lLkxlbmd0aCA9PSAxKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBjYW1lbENhc2VOYW1lLlRvVXBwZXJJbnZhcmlhbnQoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaW50IHByZWZpeENvdW50ID0gSXNQcmVmaXhlZFdpdGhUd29MZXR0ZXJXb3JkKGNhbWVsQ2FzZU5hbWUpID8gMiA6IDE7DQoNCiAgICAgICAgICAgIHJldHVybiBjYW1lbENhc2VOYW1lLlN1YnN0cmluZygwLCBwcmVmaXhDb3VudCkuVG9VcHBlckludmFyaWFudCgpICsgY2FtZWxDYXNlTmFtZS5TdWJzdHJpbmcocHJlZml4Q291bnQpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbCBJc1ByZWZpeGVkV2l0aFR3b0xldHRlcldvcmQoc3RyaW5nIG5hbWUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChuYW1lLkxlbmd0aCA8IDIpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBib29sIGlzUHJlZml4ZWRXaXRoVHdvTGV0dGVyV29yZCA9IENoYXIuSXNVcHBlcihuYW1lWzBdKSA9PSBDaGFyLklzVXBwZXIobmFtZVsxXSk7DQoNCiAgICAgICAgICAgIGlmIChuYW1lLkxlbmd0aCA9PSAyKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBpc1ByZWZpeGVkV2l0aFR3b0xldHRlcldvcmQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiAoQ2hhci5Jc0RpZ2l0KG5hbWVbMl0pIHx8IENoYXIuSXNVcHBlcihuYW1lWzJdKSk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1720",
+ "level": "error",
+ "message": {
+ "text": "In member 'UriOrFragment.UriOrFragment(string)', consider replacing the data type identifier 'String' in parameter name 'uriString' with a more generic term, such as 'value'.",
+ "id": "LanguageIndependentMemberParameter"
},
- "hashes": [
- {
- "value": "0F3FFA9117E8946AEC29CC45B7FFD62D",
- "algorithm": "md5"
- },
- {
- "value": "BD5497824ADC8624723E9CC3AB5D6A33BCC66E0C",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "AD29F45CCCBE9CB442B4EA294982B17310F4BF497E37836945954BCA9980711C",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 95,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragment..ctor(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "string#LanguageIndependentMemberParameter"
+ },
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Readers/FlagsEnumConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQoNCnVzaW5nIE5ld3RvbnNvZnQuSnNvbjsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVycw0Kew0KICAgIFtTeXN0ZW0uRGlhZ25vc3RpY3MuQ29kZUFuYWx5c2lzLlN1cHByZXNzTWVzc2FnZSgiTWljcm9zb2Z0Lk5hbWluZyIsICJDQTE3MjY6VXNlUHJlZmVycmVkVGVybXMiLCBNZXNzYWdlSWQgPSAiRmxhZ3MiKV0NCiAgICBwdWJsaWMgY2xhc3MgRmxhZ3NFbnVtQ29udmVydGVyIDogSnNvbkNvbnZlcnRlcg0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGbGFnc0VudW1Db252ZXJ0ZXIgSW5zdGFuY2UgPSBuZXcgRmxhZ3NFbnVtQ29udmVydGVyKCk7DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIGJvb2wgQ2FuQ29udmVydChUeXBlIG9iamVjdFR5cGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIG9iamVjdCBSZWFkSnNvbihKc29uUmVhZGVyIHJlYWRlciwgVHlwZSBvYmplY3RUeXBlLCBvYmplY3QgZXhpc3RpbmdWYWx1ZSwgSnNvblNlcmlhbGl6ZXIgc2VyaWFsaXplcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHJlYWRlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKHJlYWRlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsNCg0KICAgICAgICAgICAgLy8gV2hhdCdzIGhhcHBlbmluZyBpbiB0aGlzIGNvZGU/IFdlIGV4cHJlc3MgW0ZsYWdzXSBlbnVtcyBpbiBKU09OIGFzIGFycmF5cyBvZg0KICAgICAgICAgICAgLy8gc3RyaW5ncy4gT24gZGVzZXJpYWxpemF0aW9uLCB3ZSB3YWxrIHRoZSBhcnJheSwgbG9jYXRlIGVhY2ggc3RyaW5nLCANCiAgICAgICAgICAgIC8vIGFuZCBjb252ZXJ0IGl0IHRvIGl0cyBlcXVpdmFsZW50IGVudW0gdmFsdWUuIEJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhIHN0cm9uZw0KICAgICAgICAgICAgLy8gc2Vuc2Ugb2YgdGhlIGRlc3RpbmF0aW9uIHR5cGUsIHdlIHNpbXBseSB0cmVhdCB0aGUgZW51bSB2YWx1ZXMgYXMgbnVtYmVycw0KICAgICAgICAgICAgLy8gYW5kIE9SIHRoZW0gdG9nZXRoZXIuIFRoaXMgbnVtYmVyIHdpbGwgZXZlbnR1YWxseSBiZSB1bmJveGVkIGFuZCBhc3NpZ25lZA0KICAgICAgICAgICAgLy8gdG8gdGhlIHRhcmdldCBlbnVtIHByb3BlcnR5Lg0KDQogICAgICAgICAgICAvLyBSZWFkIHN0YXJ0IG9mIGFycmF5DQogICAgICAgICAgICByZWFkZXIuUmVhZCgpOw0KDQogICAgICAgICAgICB3aGlsZSAocmVhZGVyLlRva2VuVHlwZSA9PSBKc29uVG9rZW4uU3RyaW5nKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHN0cmluZyBlbnVtTmFtZSA9IEVudW1Db252ZXJ0ZXIuQ29udmVydFRvUGFzY2FsQ2FzZSgoc3RyaW5nKXJlYWRlci5WYWx1ZSk7DQogICAgICAgICAgICAgICAgcmVzdWx0IHw9IChpbnQpRW51bS5QYXJzZShvYmplY3RUeXBlLCBlbnVtTmFtZSk7DQogICAgICAgICAgICAgICAgcmVhZGVyLlJlYWQoKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIFdyaXRlSnNvbihKc29uV3JpdGVyIHdyaXRlciwgb2JqZWN0IHZhbHVlLCBKc29uU2VyaWFsaXplciBzZXJpYWxpemVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAod3JpdGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yod3JpdGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghKHZhbHVlIGlzIFN1cHByZXNzaW9uU3RhdGVzIHx8IHZhbHVlIGlzIEZpbGVSb2xlcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgd3JpdGVyLldyaXRlVmFsdWUodmFsdWUpOw0KICAgICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgc3RyaW5nIGZsYWdzRW51bVZhbHVlID0gdmFsdWUuVG9TdHJpbmcoKTsNCg0KICAgICAgICAgICAgc3RyaW5nW10gdG9rZW5zID0gZmxhZ3NFbnVtVmFsdWUuU3BsaXQoJywnKTsNCg0KDQogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRva2Vucy5MZW5ndGg7IGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0b2tlbnNbaV0gPSBFbnVtQ29udmVydGVyLkNvbnZlcnRUb0NhbWVsQ2FzZSh0b2tlbnNbaV0uVHJpbSgpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgd3JpdGVyLldyaXRlUmF3VmFsdWUoIltcIiIgKyBTdHJpbmcuSm9pbigiXCIsXCIiLCB0b2tlbnMpICsgIlwiXSIpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1307",
+ "level": "error",
+ "message": {
+ "text": "Because the behavior of 'string.StartsWith(string)' could vary based on the current user's locale settings, replace this call in 'UriOrFragment.UriOrFragment(string)' with a call to 'string.StartsWith(string, StringComparison)'. If the result of 'string.StartsWith(string, StringComparison)' will be displayed to the user, such as when sorting a list of items for display in a list box, specify 'StringComparison.CurrentCulture' or 'StringComparison.CurrentCultureIgnoreCase' as the 'StringComparison' parameter. If comparing case-insensitive identifiers, such as file paths, environment variables, or registry keys and values, specify 'StringComparison.OrdinalIgnoreCase'. Otherwise, if comparing case-sensitive identifiers, specify 'StringComparison.Ordinal'."
},
- "hashes": [
- {
- "value": "CB03A965E1ABDBA563764423F7C0917A",
- "algorithm": "md5"
- },
- {
- "value": "448C406610A6103CCDB507B139C78E42FA55A9B2",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "3CD311C9E67272B85294FEE554CCE103EFDCAF1CD9FAFAB9F7460DF79C011FF9",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 95,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragment..ctor(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "System.String.StartsWith(System.String)"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Readers/PropertyBagConverter.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE5ld3RvbnNvZnQuSnNvbjsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVycw0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gQ29udmVydHMgYSBwcm9wZXJ0eSBiYWcgKGEgSlNPTiBvYmplY3Qgd2hvc2Uga2V5cyBoYXZlIGFyYml0cmFyeSBuYW1lcyBhbmQgd2hvc2UgdmFsdWVzDQogICAgLy8vIG1heSBiZSBhbnkgSlNPTiB2YWx1ZXMpIGludG8gYSBkaWN0aW9uYXJ5IHdob3NlIGtleXMgbWF0Y2ggdGhlIEpTT04gb2JqZWN0J3MNCiAgICAvLy8gcHJvcGVydHkgbmFtZXMsIGFuZCB3aG9zZSB2YWx1ZXMgYXJlIG9mIHR5cGUgPHNlZSBjcmVmPSJTZXJpYWxpemVkUHJvcGVydHlJbmZvIi8+DQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBpbnRlcm5hbCBjbGFzcyBQcm9wZXJ0eUJhZ0NvbnZlcnRlciA6IEpzb25Db252ZXJ0ZXINCiAgICB7DQogICAgICAgIGludGVybmFsIHN0YXRpYyByZWFkb25seSBKc29uQ29udmVydGVyIEluc3RhbmNlID0gbmV3IFByb3BlcnR5QmFnQ29udmVydGVyKCk7DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIGJvb2wgQ2FuQ29udmVydChUeXBlIG9iamVjdFR5cGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiB0eXBlb2YoSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPikuSXNBc3NpZ25hYmxlRnJvbShvYmplY3RUeXBlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSBvYmplY3QgUmVhZEpzb24oSnNvblJlYWRlciByZWFkZXIsIFR5cGUgb2JqZWN0VHlwZSwgb2JqZWN0IGV4aXN0aW5nVmFsdWUsIEpzb25TZXJpYWxpemVyIHNlcmlhbGl6ZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChzZXJpYWxpemVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yoc2VyaWFsaXplcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB2YXIgb2JqZWN0RGljdGlvbmFyeSA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOw0KICAgICAgICAgICAgc2VyaWFsaXplci5Qb3B1bGF0ZShyZWFkZXIsIG9iamVjdERpY3Rpb25hcnkpOw0KDQogICAgICAgICAgICB2YXIgcHJvcGVydHlEaWN0aW9uYXJ5ID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPigpOw0KICAgICAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGtleSBpbiBvYmplY3REaWN0aW9uYXJ5LktleXMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVHlwZSBwcm9wZXJ0eVR5cGUgPSBvYmplY3REaWN0aW9uYXJ5W2tleV0uR2V0VHlwZSgpOw0KDQogICAgICAgICAgICAgICAgc3RyaW5nIHNlcmlhbGl6ZWRWYWx1ZSA9IG9iamVjdERpY3Rpb25hcnlba2V5XS5Ub1N0cmluZygpOw0KICAgICAgICAgICAgICAgIGJvb2wgaXNTdHJpbmcgPSBmYWxzZTsNCg0KICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVR5cGUgPT0gdHlwZW9mKGJvb2wpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFZhbHVlID0gc2VyaWFsaXplZFZhbHVlLlRvTG93ZXJJbnZhcmlhbnQoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHlUeXBlID09IHR5cGVvZihzdHJpbmcpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZFZhbHVlID0gJyInICsgU3lzdGVtLldlYi5IdHRwVXRpbGl0eS5KYXZhU2NyaXB0U3RyaW5nRW5jb2RlKHNlcmlhbGl6ZWRWYWx1ZSkgKyAnIic7DQogICAgICAgICAgICAgICAgICAgIGlzU3RyaW5nID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBwcm9wZXJ0eURpY3Rpb25hcnkuQWRkKA0KICAgICAgICAgICAgICAgICAgICBrZXksDQogICAgICAgICAgICAgICAgICAgIG5ldyBTZXJpYWxpemVkUHJvcGVydHlJbmZvKHNlcmlhbGl6ZWRWYWx1ZSwgaXNTdHJpbmcpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5RGljdGlvbmFyeTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIFdyaXRlSnNvbihKc29uV3JpdGVyIHdyaXRlciwgb2JqZWN0IHZhbHVlLCBKc29uU2VyaWFsaXplciBzZXJpYWxpemVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAod3JpdGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yod3JpdGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHdyaXRlci5Xcml0ZVN0YXJ0T2JqZWN0KCk7DQogICAgICAgICAgICB2YXIgcHJvcGVydHlEaWN0aW9uYXJ5ID0gKERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPil2YWx1ZTsNCiAgICAgICAgICAgIGZvcmVhY2ggKHN0cmluZyBrZXkgaW4gcHJvcGVydHlEaWN0aW9uYXJ5LktleXMpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgd3JpdGVyLldyaXRlUHJvcGVydHlOYW1lKGtleSk7DQogICAgICAgICAgICAgICAgd3JpdGVyLldyaXRlUmF3VmFsdWUocHJvcGVydHlEaWN0aW9uYXJ5W2tleV0uU2VyaWFsaXplZFZhbHVlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgd3JpdGVyLldyaXRlRW5kT2JqZWN0KCk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1054",
+ "level": "error",
+ "message": {
+ "text": "Change the type of parameter 'uriString' of method 'UriOrFragment.UriOrFragment(string)' from string to System.Uri, or provide an overload of 'UriOrFragment.UriOrFragment(string)', that allows 'uriString' to be passed as a System.Uri object."
},
- "hashes": [
+ "locations": [
{
- "value": "89029E741A4E276389E08CF4D00035E8",
- "algorithm": "md5"
- },
- {
- "value": "A67445B68B9457DABBABE5EBF60521C8D5AAFCAB",
- "algorithm": "sha-1"
- },
- {
- "value": "7FFF6218E021C7313839B90B6A1C1E4FE0709869E27D1BA1B06D2AA2854BF51F",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 95,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragment..ctor(System.String)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/Readers/ResultDiffingVisitor.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVycw0Kew0KICAgIHB1YmxpYyBjbGFzcyBSZXN1bHREaWZmaW5nVmlzaXRvciA6IFNhcmlmUmV3cml0aW5nVmlzaXRvcg0KICAgIHsNCiAgICAgICAgcHVibGljIFJlc3VsdERpZmZpbmdWaXNpdG9yKFNhcmlmTG9nIHNhcmlmTG9nKQ0KICAgICAgICB7DQogICAgICAgICAgICB0aGlzLkFic2VudFJlc3VsdHMgPSBuZXcgSGFzaFNldDxSZXN1bHQ+KFJlc3VsdC5WYWx1ZUNvbXBhcmVyKTsNCiAgICAgICAgICAgIHRoaXMuU2hhcmVkUmVzdWx0cyA9IG5ldyBIYXNoU2V0PFJlc3VsdD4oUmVzdWx0LlZhbHVlQ29tcGFyZXIpOw0KICAgICAgICAgICAgdGhpcy5OZXdSZXN1bHRzID0gbmV3IEhhc2hTZXQ8UmVzdWx0PihSZXN1bHQuVmFsdWVDb21wYXJlcik7DQoNCiAgICAgICAgICAgIFZpc2l0U2FyaWZMb2coc2FyaWZMb2cpOw0KICAgICAgICB9DQoNCiAgICAgICAgW1N5c3RlbS5EaWFnbm9zdGljcy5Db2RlQW5hbHlzaXMuU3VwcHJlc3NNZXNzYWdlKCJNaWNyb3NvZnQuVXNhZ2UiLCAiQ0EyMjI3OkNvbGxlY3Rpb25Qcm9wZXJ0aWVzU2hvdWxkQmVSZWFkT25seSIpXQ0KICAgICAgICBwdWJsaWMgSGFzaFNldDxSZXN1bHQ+IE5ld1Jlc3VsdHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIFtTeXN0ZW0uRGlhZ25vc3RpY3MuQ29kZUFuYWx5c2lzLlN1cHByZXNzTWVzc2FnZSgiTWljcm9zb2Z0LlVzYWdlIiwgIkNBMjIyNzpDb2xsZWN0aW9uUHJvcGVydGllc1Nob3VsZEJlUmVhZE9ubHkiKV0NCiAgICAgICAgcHVibGljIEhhc2hTZXQ8UmVzdWx0PiBBYnNlbnRSZXN1bHRzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICBbU3lzdGVtLkRpYWdub3N0aWNzLkNvZGVBbmFseXNpcy5TdXBwcmVzc01lc3NhZ2UoIk1pY3Jvc29mdC5Vc2FnZSIsICJDQTIyMjc6Q29sbGVjdGlvblByb3BlcnRpZXNTaG91bGRCZVJlYWRPbmx5IildDQogICAgICAgIHB1YmxpYyBIYXNoU2V0PFJlc3VsdD4gU2hhcmVkUmVzdWx0cyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIFJlc3VsdCBWaXNpdFJlc3VsdChSZXN1bHQgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgdGhpcy5OZXdSZXN1bHRzLkFkZChub2RlKTsNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGJvb2wgRGlmZihJRW51bWVyYWJsZTxSZXN1bHQ+IGFjdHVhbCkNCiAgICAgICAgew0KDQogICAgICAgICAgICB0aGlzLkFic2VudFJlc3VsdHMgPSB0aGlzLlNoYXJlZFJlc3VsdHM7DQoNCiAgICAgICAgICAgIHRoaXMuU2hhcmVkUmVzdWx0cyA9IG5ldyBIYXNoU2V0PFJlc3VsdD4oUmVzdWx0LlZhbHVlQ29tcGFyZXIpOw0KDQogICAgICAgICAgICBmb3JlYWNoIChSZXN1bHQgcmVzdWx0IGluIHRoaXMuTmV3UmVzdWx0cykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aGlzLkFic2VudFJlc3VsdHMuQWRkKHJlc3VsdCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHRoaXMuTmV3UmVzdWx0cy5DbGVhcigpOw0KDQogICAgICAgICAgICBpZiAoYWN0dWFsICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoUmVzdWx0IHJlc3VsdCBpbiBhY3R1YWwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5BYnNlbnRSZXN1bHRzLkNvbnRhaW5zKHJlc3VsdCkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuU2hhcmVkUmVzdWx0cy5BZGQocmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQWJzZW50UmVzdWx0cy5SZW1vdmUocmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuTmV3UmVzdWx0cy5BZGQocmVzdWx0KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuDQogICAgICAgICAgICAgICAgdGhpcy5BYnNlbnRSZXN1bHRzLkNvdW50ID09IDAgJiYNCiAgICAgICAgICAgICAgICB0aGlzLk5ld1Jlc3VsdHMuQ291bnQgPT0gMDsNCg0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0#"
},
- "hashes": [
- {
- "value": "C571765BE74097DEE401160603F67D5B",
- "algorithm": "md5"
- },
- {
- "value": "E572A36A604EE4916286B45CF17056FED5144BE5",
- "algorithm": "sha-1"
- },
- {
- "value": "B8338FAC3779201C800C04D7A75974BE51970A6771CDE8B0CBB8E925E3421C43",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/AnnotatedCodeLocationVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQp1c2luZyBOZXd0b25zb2Z0Lkpzb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEFuIGFubm90YXRpb24gdXNlZCB0byBleHByZXNzIGNvZGUgZmxvd3MgdGhyb3VnaCBhIG1ldGhvZCBvciBvdGhlciBsb2NhdGlvbnMgdGhhdCBhcmUgcmVsYXRlZCB0byBhIHJlc3VsdC4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUgOiBQcm9wZXJ0eUJhZ0hvbGRlciwgSVNhcmlmTm9kZVZlcnNpb25PbmUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8QW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZT4gVmFsdWVDb21wYXJlciA9PiBBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGVWZXJzaW9uT25lIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5Bbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gT0JTT0xFVEUgKHVzZSAic3RlcCIgaW5zdGVhZCk6IEFuIGlkZW50aWZpZXIgZm9yIHRoZSBsb2NhdGlvbiwgdW5pcXVlIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGNvZGUgZmxvdyB3aXRoaW4gd2hpY2ggaXQgb2NjdXJzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBbSnNvbkNvbnZlcnRlcih0eXBlb2YoTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5WZXJzaW9uT25lLlJlYWRlcnMuQW5ub3RhdGVkQ29kZUxvY2F0aW9uSWRDb252ZXJ0ZXJWZXJzaW9uT25lKSldDQogICAgICAgIFtKc29uUHJvcGVydHkoImlkIiwgRGVmYXVsdFZhbHVlSGFuZGxpbmcgPSBEZWZhdWx0VmFsdWVIYW5kbGluZy5JZ25vcmVBbmRQb3B1bGF0ZSldDQogICAgICAgIHB1YmxpYyBpbnQgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSAwLWJhc2VkIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgbG9jYXRpb24gaW4gdGhlIGNvZGUgZmxvdyB3aXRoaW4gd2hpY2ggaXQgb2NjdXJzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN0ZXAiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgU3RlcCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBmaWxlIGxvY2F0aW9uIHRvIHdoaWNoIHRoaXMgYW5ub3RhdGlvbiByZWZlcnMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicGh5c2ljYWxMb2NhdGlvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIFBoeXNpY2FsTG9jYXRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbWV0aG9kIG9yIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBrZXkgdXNlZCB0byByZXRyaWV2ZSB0aGUgYW5ub3RhdGlvbidzIGxvZ2ljYWxMb2NhdGlvbiBmcm9tIHRoZSBsb2dpY2FsTG9jYXRpb25zIGRpY3Rpb25hcnkuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibG9naWNhbExvY2F0aW9uS2V5IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIExvZ2ljYWxMb2NhdGlvbktleSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1vZHVsZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNb2R1bGUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB0aHJlYWQgaWRlbnRpZmllciBvZiB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ0aHJlYWRJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBUaHJlYWRJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHJlbGV2YW50IHRvIHRoaXMgYW5ub3RhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1lc3NhZ2UgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENhdGVnb3JpemVzIHRoZSBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJraW5kIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgQW5ub3RhdGVkQ29kZUxvY2F0aW9uS2luZFZlcnNpb25PbmUgS2luZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ2xhc3NpZmllcyBzdGF0ZSB0cmFuc2l0aW9ucyBpbiBjb2RlIGxvY2F0aW9ucyByZWxldmFudCB0byBhIHRhaW50IGFuYWx5c2lzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInRhaW50S2luZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFRhaW50S2luZFZlcnNpb25PbmUgVGFpbnRLaW5kIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIHRhcmdldCBvbiB3aGljaCB0aGlzIGxvY2F0aW9uIG9wZXJhdGVzLiBGb3IgYW4gYW5ub3RhdGlvbiBvZiBraW5kICdjYWxsJywgZm9yIGV4YW1wbGUsIHRoZSB0YXJnZXQgcmVmZXJzIHRvIHRoZSBmdWxseSBxdWFsaWZpZWQgbG9naWNhbCBuYW1lIG9mIHRoZSBmdW5jdGlvbiBjYWxsZWQgZnJvbSB0aGlzIGxvY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInRhcmdldCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBUYXJnZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIG9yZGVyZWQgc2V0IG9mIHN0cmluZ3MgdGhhdCBjb21wcmlzZSBpbnB1dCBvciByZXR1cm4gdmFsdWVzIGZvciB0aGUgY3VycmVudCBvcGVyYXRpb24uIEZvciBhbiBhbm5vdGF0aW9uIG9mIGtpbmQgJ2NhbGwnLCBmb3IgZXhhbXBsZSwgdGhpcyBwcm9wZXJ0eSBtYXkgaG9sZCB0aGUgb3JkZXJlZCBsaXN0IG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxlZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ2YWx1ZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxzdHJpbmc+IFZhbHVlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBkaWN0aW9uYXJ5LCBlYWNoIG9mIHdob3NlIGtleXMgc3BlY2lmaWVzIGEgdmFyaWFibGUgb3IgZXhwcmVzc2lvbiwgdGhlIGFzc29jaWF0ZWQgdmFsdWUgb2Ygd2hpY2ggcmVwcmVzZW50cyB0aGUgdmFyaWFibGUgb3IgZXhwcmVzc2lvbiB2YWx1ZS4gRm9yIGFuIGFubm90YXRpb24gb2Yga2luZCAnY29udGludWF0aW9uJywgZm9yIGV4YW1wbGUsIHRoaXMgZGljdGlvbmFyeSBtaWdodCBob2xkIHRoZSBjdXJyZW50IGFzc3VtZWQgdmFsdWVzIG9mIGEgc2V0IG9mIGdsb2JhbCB2YXJpYWJsZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAic3RhdGUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gU3RhdGUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEga2V5IHVzZWQgdG8gcmV0cmlldmUgdGhlIHRhcmdldCdzIGxvZ2ljYWxMb2NhdGlvbiBmcm9tIHRoZSBsb2dpY2FsTG9jYXRpb25zIGRpY3Rpb25hcnkuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGFyZ2V0S2V5IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFRhcmdldEtleSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gT0JTT0xFVEUgKHVzZSAiaW1wb3J0YW5jZSIgaW5zdGVhZCk6IFRydWUgaWYgdGhpcyBsb2NhdGlvbiBpcyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29kZSBmbG93IGluIHdoaWNoIGl0IG9jY3Vycy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJlc3NlbnRpYWwiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIFtKc29uUHJvcGVydHkoImVzc2VudGlhbCIsIERlZmF1bHRWYWx1ZUhhbmRsaW5nID0gRGVmYXVsdFZhbHVlSGFuZGxpbmcuSWdub3JlKV0NCiAgICAgICAgcHVibGljIGJvb2wgRXNzZW50aWFsIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBTcGVjaWZpZXMgdGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBsb2NhdGlvbiBpbiB1bmRlcnN0YW5kaW5nIHRoZSBjb2RlIGZsb3cgaW4gd2hpY2ggaXQgb2NjdXJzLiBUaGUgb3JkZXIgZnJvbSBtb3N0IHRvIGxlYXN0IGltcG9ydGFudCBpcyAiZXNzZW50aWFsIiwgImltcG9ydGFudCIsICJ1bmltcG9ydGFudCIuIERlZmF1bHQ6ICJpbXBvcnRhbnQiLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImltcG9ydGFuY2UiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBBbm5vdGF0ZWRDb2RlTG9jYXRpb25JbXBvcnRhbmNlVmVyc2lvbk9uZSBJbXBvcnRhbmNlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgc291cmNlIGNvZGUgYXQgdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzbmlwcGV0IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFNuaXBwZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc2V0IG9mIG1lc3NhZ2VzIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IGFubm90YXRlZCBjb2RlIGxvY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImFubm90YXRpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8QW5ub3RhdGlvblZlcnNpb25PbmU+IEFubm90YXRpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBLZXkvdmFsdWUgcGFpcnMgdGhhdCBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUgbG9jYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IElkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RlcCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RlcCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBoeXNpY2FsTG9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFBoeXNpY2FsTG9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibG9naWNhbExvY2F0aW9uS2V5Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMb2dpY2FsTG9jYXRpb25LZXkiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtb2R1bGUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1vZHVsZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRocmVhZElkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUaHJlYWRJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJraW5kIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBLaW5kIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGFpbnRLaW5kIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUYWludEtpbmQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0YXJnZXQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRhcmdldCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InZhbHVlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVmFsdWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhdGUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0YXRlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGFyZ2V0S2V5Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUYXJnZXRLZXkiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJlc3NlbnRpYWwiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEVzc2VudGlhbCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImltcG9ydGFuY2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEltcG9ydGFuY2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzbmlwcGV0Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTbmlwcGV0IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYW5ub3RhdGlvbnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEFubm90YXRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZShpbnQgaWQsIGludCBzdGVwLCBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBwaHlzaWNhbExvY2F0aW9uLCBzdHJpbmcgZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSwgc3RyaW5nIGxvZ2ljYWxMb2NhdGlvbktleSwgc3RyaW5nIG1vZHVsZSwgaW50IHRocmVhZElkLCBzdHJpbmcgbWVzc2FnZSwgQW5ub3RhdGVkQ29kZUxvY2F0aW9uS2luZFZlcnNpb25PbmUga2luZCwgVGFpbnRLaW5kVmVyc2lvbk9uZSB0YWludEtpbmQsIHN0cmluZyB0YXJnZXQsIElFbnVtZXJhYmxlPHN0cmluZz4gdmFsdWVzLCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gc3RhdGUsIHN0cmluZyB0YXJnZXRLZXksIGJvb2wgZXNzZW50aWFsLCBBbm5vdGF0ZWRDb2RlTG9jYXRpb25JbXBvcnRhbmNlVmVyc2lvbk9uZSBpbXBvcnRhbmNlLCBzdHJpbmcgc25pcHBldCwgSUVudW1lcmFibGU8QW5ub3RhdGlvblZlcnNpb25PbmU+IGFubm90YXRpb25zLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoaWQsIHN0ZXAsIHBoeXNpY2FsTG9jYXRpb24sIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIGxvZ2ljYWxMb2NhdGlvbktleSwgbW9kdWxlLCB0aHJlYWRJZCwgbWVzc2FnZSwga2luZCwgdGFpbnRLaW5kLCB0YXJnZXQsIHZhbHVlcywgc3RhdGUsIHRhcmdldEtleSwgZXNzZW50aWFsLCBpbXBvcnRhbmNlLCBzbmlwcGV0LCBhbm5vdGF0aW9ucywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lKEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuSWQsIG90aGVyLlN0ZXAsIG90aGVyLlBoeXNpY2FsTG9jYXRpb24sIG90aGVyLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIG90aGVyLkxvZ2ljYWxMb2NhdGlvbktleSwgb3RoZXIuTW9kdWxlLCBvdGhlci5UaHJlYWRJZCwgb3RoZXIuTWVzc2FnZSwgb3RoZXIuS2luZCwgb3RoZXIuVGFpbnRLaW5kLCBvdGhlci5UYXJnZXQsIG90aGVyLlZhbHVlcywgb3RoZXIuU3RhdGUsIG90aGVyLlRhcmdldEtleSwgb3RoZXIuRXNzZW50aWFsLCBvdGhlci5JbXBvcnRhbmNlLCBvdGhlci5TbmlwcGV0LCBvdGhlci5Bbm5vdGF0aW9ucywgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlVmVyc2lvbk9uZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoaW50IGlkLCBpbnQgc3RlcCwgUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUgcGh5c2ljYWxMb2NhdGlvbiwgc3RyaW5nIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIHN0cmluZyBsb2dpY2FsTG9jYXRpb25LZXksIHN0cmluZyBtb2R1bGUsIGludCB0aHJlYWRJZCwgc3RyaW5nIG1lc3NhZ2UsIEFubm90YXRlZENvZGVMb2NhdGlvbktpbmRWZXJzaW9uT25lIGtpbmQsIFRhaW50S2luZFZlcnNpb25PbmUgdGFpbnRLaW5kLCBzdHJpbmcgdGFyZ2V0LCBJRW51bWVyYWJsZTxzdHJpbmc+IHZhbHVlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IHN0YXRlLCBzdHJpbmcgdGFyZ2V0S2V5LCBib29sIGVzc2VudGlhbCwgQW5ub3RhdGVkQ29kZUxvY2F0aW9uSW1wb3J0YW5jZVZlcnNpb25PbmUgaW1wb3J0YW5jZSwgc3RyaW5nIHNuaXBwZXQsIElFbnVtZXJhYmxlPEFubm90YXRpb25WZXJzaW9uT25lPiBhbm5vdGF0aW9ucywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJZCA9IGlkOw0KICAgICAgICAgICAgU3RlcCA9IHN0ZXA7DQogICAgICAgICAgICBpZiAocGh5c2ljYWxMb2NhdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFBoeXNpY2FsTG9jYXRpb24gPSBuZXcgUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUocGh5c2ljYWxMb2NhdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgPSBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lOw0KICAgICAgICAgICAgTG9naWNhbExvY2F0aW9uS2V5ID0gbG9naWNhbExvY2F0aW9uS2V5Ow0KICAgICAgICAgICAgTW9kdWxlID0gbW9kdWxlOw0KICAgICAgICAgICAgVGhyZWFkSWQgPSB0aHJlYWRJZDsNCiAgICAgICAgICAgIE1lc3NhZ2UgPSBtZXNzYWdlOw0KICAgICAgICAgICAgS2luZCA9IGtpbmQ7DQogICAgICAgICAgICBUYWludEtpbmQgPSB0YWludEtpbmQ7DQogICAgICAgICAgICBUYXJnZXQgPSB0YXJnZXQ7DQogICAgICAgICAgICBpZiAodmFsdWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxzdHJpbmc+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gdmFsdWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQodmFsdWVfMCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgVmFsdWVzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHN0YXRlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RhdGUgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4oc3RhdGUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgVGFyZ2V0S2V5ID0gdGFyZ2V0S2V5Ow0KICAgICAgICAgICAgRXNzZW50aWFsID0gZXNzZW50aWFsOw0KICAgICAgICAgICAgSW1wb3J0YW5jZSA9IGltcG9ydGFuY2U7DQogICAgICAgICAgICBTbmlwcGV0ID0gc25pcHBldDsNCiAgICAgICAgICAgIGlmIChhbm5vdGF0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8xID0gbmV3IExpc3Q8QW5ub3RhdGlvblZlcnNpb25PbmU+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzEgaW4gYW5ub3RhdGlvbnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMSA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzEuQWRkKG5ldyBBbm5vdGF0aW9uVmVyc2lvbk9uZSh2YWx1ZV8xKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBBbm5vdGF0aW9ucyA9IGRlc3RpbmF0aW9uXzE7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'UriOrFragment.UriOrFragment(string)', validate parameter 'uriString' before using it."
},
- "hashes": [
- {
- "value": "91BAA6B1CA828DDD6E1BE08A123BD507",
- "algorithm": "md5"
- },
- {
- "value": "40999CFC0A59BB70006E32768FECBBEC2A4CCD23",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F64983DCF9C0BE14F60C1C49F78441218EC8DCEE189262CBEB23E4EB5DEEE6C5",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 95,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragment..ctor(System.String)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/AnnotatedCodeLocationVersionOneEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmVyc2lvbk9uZQ0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gRGVmaW5lcyBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0eXBlIEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUgZm9yIGVxdWFsaXR5Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlciA6IElFcXVhbGl0eUNvbXBhcmVyPEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIgSW5zdGFuY2UgPSBuZXcgQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZSBsZWZ0LCBBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lIHJpZ2h0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIHJpZ2h0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCBudWxsKSB8fCBSZWZlcmVuY2VFcXVhbHMocmlnaHQsIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuSWQgIT0gcmlnaHQuSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5TdGVwICE9IHJpZ2h0LlN0ZXApDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIVBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuUGh5c2ljYWxMb2NhdGlvbiwgcmlnaHQuUGh5c2ljYWxMb2NhdGlvbikpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5GdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lICE9IHJpZ2h0LkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5Mb2dpY2FsTG9jYXRpb25LZXkgIT0gcmlnaHQuTG9naWNhbExvY2F0aW9uS2V5KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTW9kdWxlICE9IHJpZ2h0Lk1vZHVsZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlRocmVhZElkICE9IHJpZ2h0LlRocmVhZElkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTWVzc2FnZSAhPSByaWdodC5NZXNzYWdlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuS2luZCAhPSByaWdodC5LaW5kKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuVGFpbnRLaW5kICE9IHJpZ2h0LlRhaW50S2luZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlRhcmdldCAhPSByaWdodC5UYXJnZXQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5WYWx1ZXMsIHJpZ2h0LlZhbHVlcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuVmFsdWVzID09IG51bGwgfHwgcmlnaHQuVmFsdWVzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuVmFsdWVzLkNvdW50ICE9IHJpZ2h0LlZhbHVlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IGxlZnQuVmFsdWVzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAobGVmdC5WYWx1ZXNbaW5kZXhfMF0gIT0gcmlnaHQuVmFsdWVzW2luZGV4XzBdKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlN0YXRlLCByaWdodC5TdGF0ZSkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuU3RhdGUgPT0gbnVsbCB8fCByaWdodC5TdGF0ZSA9PSBudWxsIHx8IGxlZnQuU3RhdGUuQ291bnQgIT0gcmlnaHQuU3RhdGUuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5TdGF0ZSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlN0YXRlLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wLlZhbHVlICE9IHZhbHVlXzEpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuVGFyZ2V0S2V5ICE9IHJpZ2h0LlRhcmdldEtleSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkVzc2VudGlhbCAhPSByaWdodC5Fc3NlbnRpYWwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5JbXBvcnRhbmNlICE9IHJpZ2h0LkltcG9ydGFuY2UpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5TbmlwcGV0ICE9IHJpZ2h0LlNuaXBwZXQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Bbm5vdGF0aW9ucywgcmlnaHQuQW5ub3RhdGlvbnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkFubm90YXRpb25zID09IG51bGwgfHwgcmlnaHQuQW5ub3RhdGlvbnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Bbm5vdGF0aW9ucy5Db3VudCAhPSByaWdodC5Bbm5vdGF0aW9ucy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8xID0gMDsgaW5kZXhfMSA8IGxlZnQuQW5ub3RhdGlvbnMuQ291bnQ7ICsraW5kZXhfMSkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghQW5ub3RhdGlvblZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5Bbm5vdGF0aW9uc1tpbmRleF8xXSwgcmlnaHQuQW5ub3RhdGlvbnNbaW5kZXhfMV0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlByb3BlcnRpZXMsIHJpZ2h0LlByb3BlcnRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCByaWdodC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgbGVmdC5Qcm9wZXJ0aWVzLkNvdW50ICE9IHJpZ2h0LlByb3BlcnRpZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFByb3BlcnR5SW5mbyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlByb3BlcnRpZXMuVHJ5R2V0VmFsdWUodmFsdWVfMC5LZXksIG91dCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QuRXF1YWxzKHZhbHVlXzAuVmFsdWUsIHZhbHVlXzEpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lIG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLklkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5TdGVwLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgaWYgKG9iai5QaHlzaWNhbExvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlBoeXNpY2FsTG9jYXRpb24uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5GdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Mb2dpY2FsTG9jYXRpb25LZXkgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTG9naWNhbExvY2F0aW9uS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Nb2R1bGUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTW9kdWxlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5UaHJlYWRJZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouTWVzc2FnZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5NZXNzYWdlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5LaW5kLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5UYWludEtpbmQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlRhcmdldCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5UYXJnZXQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlZhbHVlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzIgaW4gb2JqLlZhbHVlcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV8yLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlN0YXRlICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV80IGluIG9iai5TdGF0ZSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV80LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8wOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouVGFyZ2V0S2V5ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlRhcmdldEtleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRXNzZW50aWFsLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5JbXBvcnRhbmNlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgaWYgKG9iai5TbmlwcGV0ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlNuaXBwZXQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkFubm90YXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMyBpbiBvYmouQW5ub3RhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMy5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzQuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNC5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8wIF49IHZhbHVlXzQuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "AE5B60EE365D0308BC8B85BE7F43B7D0",
- "algorithm": "md5"
- },
- {
- "value": "82D29A0CFE2163E3991F01E58077E9F7916B04D8",
- "algorithm": "sha-1"
- },
- {
- "value": "C0632D351F1EE06BF779D607777C5ADD5FDB2DDE565F7D0C424ABC5EA7E82E2B",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/AnnotationVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBBbm5vdGF0aW9uVmVyc2lvbk9uZSA6IElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEFubm90YXRpb25WZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IEFubm90YXRpb25WZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhBbm5vdGF0aW9uVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuQW5ub3RhdGlvblZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIG1lc3NhZ2UgcmVsZXZhbnQgdG8gYSBjb2RlIGxvY2F0aW9uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibWVzc2FnZSIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiAncGh5c2ljYWxMb2NhdGlvbicgb2JqZWN0cyBhc3NvY2lhdGVkIHdpdGggdGhlIGFubm90YXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibG9jYXRpb25zIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8UGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmU+IExvY2F0aW9ucyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQW5ub3RhdGlvblZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQW5ub3RhdGlvblZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJBbm5vdGF0aW9uVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2NhdGlvbnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExvY2F0aW9ucyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgQW5ub3RhdGlvblZlcnNpb25PbmUoc3RyaW5nIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lPiBsb2NhdGlvbnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQobWVzc2FnZSwgbG9jYXRpb25zKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkFubm90YXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBBbm5vdGF0aW9uVmVyc2lvbk9uZShBbm5vdGF0aW9uVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5NZXNzYWdlLCBvdGhlci5Mb2NhdGlvbnMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEFubm90YXRpb25WZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoQW5ub3RhdGlvblZlcnNpb25PbmUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlVmVyc2lvbk9uZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBBbm5vdGF0aW9uVmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBtZXNzYWdlLCBJRW51bWVyYWJsZTxQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZT4gbG9jYXRpb25zKQ0KICAgICAgICB7DQogICAgICAgICAgICBNZXNzYWdlID0gbWVzc2FnZTsNCiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGxvY2F0aW9ucykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIExvY2F0aW9ucyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1725",
+ "level": "error",
+ "message": {
+ "text": "In member 'UriOrFragment.Equals(object)', change parameter name 'comparand' to 'obj' in order to match the identifier as it has been declared in 'object.Equals(object)'."
},
- "hashes": [
- {
- "value": "3B921EA5460C905BBD6CC70608483C45",
- "algorithm": "md5"
- },
- {
- "value": "B70A6314DFFA832AA92640AA1DFA74B2B8FF4230",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "93CA0DE38B67417715EFE654105704884A57A71D911B6CDE2FFFBD83411E2141",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 96,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragment.Equals(System.Object)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/CodeFlowVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBDb2RlRmxvd1ZlcnNpb25PbmUgOiBQcm9wZXJ0eUJhZ0hvbGRlciwgSVNhcmlmTm9kZVZlcnNpb25PbmUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8Q29kZUZsb3dWZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IENvZGVGbG93VmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoQ29kZUZsb3dWZXJzaW9uT25lIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGVWZXJzaW9uT25lIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5Db2RlRmxvd1ZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIG1lc3NhZ2UgcmVsZXZhbnQgdG8gdGhlIGNvZGUgZmxvdw0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2UiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgJ2Fubm90YXRlZENvZGVMb2NhdGlvbicgb2JqZWN0cywgZWFjaCBvZiB3aGljaCBkZXNjcmliZXMgYSBzaW5nbGUgbG9jYXRpb24gdmlzaXRlZCBieSB0aGUgdG9vbCBpbiB0aGUgY291cnNlIG9mIHByb2R1Y2luZyB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvY2F0aW9ucyIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIElMaXN0PEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU+IExvY2F0aW9ucyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2RlIGZsb3cuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJDb2RlRmxvd1ZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQ29kZUZsb3dWZXJzaW9uT25lKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQ29kZUZsb3dWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibWVzc2FnZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWVzc2FnZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImxvY2F0aW9ucyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTG9jYXRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgQ29kZUZsb3dWZXJzaW9uT25lKHN0cmluZyBtZXNzYWdlLCBJRW51bWVyYWJsZTxBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lPiBsb2NhdGlvbnMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChtZXNzYWdlLCBsb2NhdGlvbnMsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iQ29kZUZsb3dWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBDb2RlRmxvd1ZlcnNpb25PbmUoQ29kZUZsb3dWZXJzaW9uT25lIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLk1lc3NhZ2UsIG90aGVyLkxvY2F0aW9ucywgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgQ29kZUZsb3dWZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoQ29kZUZsb3dWZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgQ29kZUZsb3dWZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIG1lc3NhZ2UsIElFbnVtZXJhYmxlPEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU+IGxvY2F0aW9ucywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBNZXNzYWdlID0gbWVzc2FnZTsNCiAgICAgICAgICAgIGlmIChsb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBMb2NhdGlvbnMgPSBkZXN0aW5hdGlvbl8wOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0#"
},
- "hashes": [
- {
- "value": "487CB5BB0C4794C65D80817C2F859A27",
- "algorithm": "md5"
- },
- {
- "value": "2E866A8B2A9943D8A200963594349F333BA80C45",
- "algorithm": "sha-1"
- },
- {
- "value": "3690F9603B9AA0881C73D5E4DD0A110DAC112936F0710E637C4D3652D6FC0FE0",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/ExceptionDataVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSA6IElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuRXhjZXB0aW9uRGF0YVZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGtpbmQgb2YgZXhjZXB0aW9uLCBmb3IgZXhhbXBsZSwgdGhlIGZ1bGx5IHF1YWxpZmllZCB0eXBlIG5hbWUgb2YgYW4gb2JqZWN0IHRoYXQgd2FzIHRocm93biwgb3IgdGhlIHN5bWJvbGljIG5hbWUgb2YgYSBzaWduYWwuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAia2luZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBLaW5kIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgZXhjZXB0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2UiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHNlcXVlbmNlIG9mIGZ1bmN0aW9uIGNhbGxzIGxlYWRpbmcgdG8gdGhlIGV4Y2VwdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGFjayIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFN0YWNrVmVyc2lvbk9uZSBTdGFjayB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgZXhjZXB0aW9uIG9iamVjdHMgZWFjaCBvZiB3aGljaCBpcyBjb25zaWRlcmVkIGEgY2F1c2Ugb2YgdGhpcyBleGNlcHRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaW5uZXJFeGNlcHRpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8RXhjZXB0aW9uRGF0YVZlcnNpb25PbmU+IElubmVyRXhjZXB0aW9ucyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImtpbmQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEtpbmQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3RhY2siPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN0YWNrIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iaW5uZXJFeGNlcHRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBJbm5lckV4Y2VwdGlvbnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lKHN0cmluZyBraW5kLCBzdHJpbmcgbWVzc2FnZSwgU3RhY2tWZXJzaW9uT25lIHN0YWNrLCBJRW51bWVyYWJsZTxFeGNlcHRpb25EYXRhVmVyc2lvbk9uZT4gaW5uZXJFeGNlcHRpb25zKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGtpbmQsIG1lc3NhZ2UsIHN0YWNrLCBpbm5lckV4Y2VwdGlvbnMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lKEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLktpbmQsIG90aGVyLk1lc3NhZ2UsIG90aGVyLlN0YWNrLCBvdGhlci5Jbm5lckV4Y2VwdGlvbnMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlVmVyc2lvbk9uZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBraW5kLCBzdHJpbmcgbWVzc2FnZSwgU3RhY2tWZXJzaW9uT25lIHN0YWNrLCBJRW51bWVyYWJsZTxFeGNlcHRpb25EYXRhVmVyc2lvbk9uZT4gaW5uZXJFeGNlcHRpb25zKQ0KICAgICAgICB7DQogICAgICAgICAgICBLaW5kID0ga2luZDsNCiAgICAgICAgICAgIE1lc3NhZ2UgPSBtZXNzYWdlOw0KICAgICAgICAgICAgaWYgKHN0YWNrICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgU3RhY2sgPSBuZXcgU3RhY2tWZXJzaW9uT25lKHN0YWNrKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGlubmVyRXhjZXB0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8wID0gbmV3IExpc3Q8RXhjZXB0aW9uRGF0YVZlcnNpb25PbmU+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gaW5uZXJFeGNlcHRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUodmFsdWVfMCkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgSW5uZXJFeGNlcHRpb25zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'UriOrFragmentConverter.ReadJson(JsonReader, Type, object, JsonSerializer)', validate parameter 'reader' before using it."
},
- "hashes": [
- {
- "value": "F620EC5E2D59B2328DA32E7C9CC39C16",
- "algorithm": "md5"
- },
- {
- "value": "0C6498818C89169CFA83AFFA8255B1DDA86204E0",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "DF586EDDC501DC39CB4702361BC560FC991B77586F8F6B59E688366861EB60BC",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 98,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragmentConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/FileChangeVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgY2hhbmdlIHRvIGEgc2luZ2xlIGZpbGUuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBGaWxlQ2hhbmdlVmVyc2lvbk9uZSA6IElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEZpbGVDaGFuZ2VWZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IEZpbGVDaGFuZ2VWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGaWxlQ2hhbmdlVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuRmlsZUNoYW5nZVZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlIHRvIGNoYW5nZSBhcyBhIHZhbGlkIFVSSS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ1cmkiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBVcmkgVXJpIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbmNlcHR1YWwgYmFzZSBmb3IgdGhlICd1cmknIHByb3BlcnR5IChpZiBpdCBpcyByZWxhdGl2ZSksIGUuZy4sJyQoU29sdXRpb25EaXIpJyBvciAnJVNSQ1JPT1QlJy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ1cmlCYXNlSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgVXJpQmFzZUlkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiByZXBsYWNlbWVudCBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIHJlcHJlc2VudHMgdGhlIHJlcGxhY2VtZW50IG9mIGEgc2luZ2xlIHJhbmdlIG9mIGJ5dGVzIGluIGEgc2luZ2xlIGZpbGUgc3BlY2lmaWVkIGJ5ICd1cmknLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJlcGxhY2VtZW50cyIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIElMaXN0PFJlcGxhY2VtZW50VmVyc2lvbk9uZT4gUmVwbGFjZW1lbnRzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaWxlQ2hhbmdlVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlVmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpbGVDaGFuZ2VWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXJpIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBVcmkiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1cmlCYXNlSWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFVyaUJhc2VJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJlcGxhY2VtZW50cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmVwbGFjZW1lbnRzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlVmVyc2lvbk9uZShVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBJRW51bWVyYWJsZTxSZXBsYWNlbWVudFZlcnNpb25PbmU+IHJlcGxhY2VtZW50cykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdCh1cmksIHVyaUJhc2VJZCwgcmVwbGFjZW1lbnRzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpbGVDaGFuZ2VWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlVmVyc2lvbk9uZShGaWxlQ2hhbmdlVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5VcmksIG90aGVyLlVyaUJhc2VJZCwgb3RoZXIuUmVwbGFjZW1lbnRzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGVWZXJzaW9uT25lIElTYXJpZk5vZGVWZXJzaW9uT25lLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlQ2hhbmdlVmVyc2lvbk9uZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEZpbGVDaGFuZ2VWZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZUNoYW5nZVZlcnNpb25PbmUodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBJRW51bWVyYWJsZTxSZXBsYWNlbWVudFZlcnNpb25PbmU+IHJlcGxhY2VtZW50cykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHVyaSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkodXJpLk9yaWdpbmFsU3RyaW5nLCB1cmkuSXNBYnNvbHV0ZVVyaSA/IFVyaUtpbmQuQWJzb2x1dGUgOiBVcmlLaW5kLlJlbGF0aXZlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgVXJpQmFzZUlkID0gdXJpQmFzZUlkOw0KICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50cyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8wID0gbmV3IExpc3Q8UmVwbGFjZW1lbnRWZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIHJlcGxhY2VtZW50cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IFJlcGxhY2VtZW50VmVyc2lvbk9uZSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBSZXBsYWNlbWVudHMgPSBkZXN0aW5hdGlvbl8wOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "E8EA51DD4006C6FA44B2497007ACB8B4",
- "algorithm": "md5"
- },
- {
- "value": "2157E3EB1C1DB63E333AE13D8B5F886940AC0C39",
- "algorithm": "sha-1"
- },
- {
- "value": "B31BA6099F94E2D81643BBB5026EC16499445EAC6EFF1BF1F2BDD044936C43C9",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/FileDataVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgc2luZ2xlIGZpbGUuIEluIHNvbWUgY2FzZXMsIHRoaXMgZmlsZSBtaWdodCBiZSBuZXN0ZWQgd2l0aGluIGFub3RoZXIgZmlsZS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIEZpbGVEYXRhVmVyc2lvbk9uZSA6IFByb3BlcnR5QmFnSG9sZGVyLCBJU2FyaWZOb2RlVmVyc2lvbk9uZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxGaWxlRGF0YVZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gRmlsZURhdGFWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGaWxlRGF0YVZlcnNpb25PbmUgb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZVZlcnNpb25PbmUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLkZpbGVEYXRhVmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHdpdGhpbiBpdHMgY29udGFpbmluZyBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInVyaSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFVyaSBVcmkgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY29uY2VwdHVhbCBiYXNlIGZvciB0aGUgJ3VyaScgcHJvcGVydHkgKGlmIGl0IGlzIHJlbGF0aXZlKSwgZS5nLiwnJChTb2x1dGlvbkRpciknIG9yICclU1JDUk9PVCUnLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInVyaUJhc2VJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBVcmlCYXNlSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIElkZW50aWZpZXMgdGhlIGtleSBvZiB0aGUgaW1tZWRpYXRlIHBhcmVudCBvZiB0aGUgZmlsZSwgaWYgdGhpcyBmaWxlIGlzIG5lc3RlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwYXJlbnRLZXkiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgUGFyZW50S2V5IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgb2Zmc2V0IGluIGJ5dGVzIG9mIHRoZSBmaWxlIHdpdGhpbiBpdHMgY29udGFpbmluZyBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm9mZnNldCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBPZmZzZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBsZW5ndGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibGVuZ3RoIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IExlbmd0aCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIE1JTUUgdHlwZSAoUkZDIDIwNDUpIG9mIHRoZSBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1pbWVUeXBlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1pbWVUeXBlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUsIGV4cHJlc3NlZCBhcyBhIE1JTUUgQmFzZTY0LWVuY29kZWQgYnl0ZSBzZXF1ZW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJjb250ZW50cyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBDb250ZW50cyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgaGFzaCBvYmplY3RzLCBlYWNoIG9mIHdoaWNoIHNwZWNpZmllcyBhIGhhc2hlZCB2YWx1ZSBmb3IgdGhlIGZpbGUsIGFsb25nIHdpdGggdGhlIG5hbWUgb2YgdGhlIGFsZ29yaXRobSB1c2VkIHRvIGNvbXB1dGUgdGhlIGhhc2guDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaGFzaGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8SGFzaFZlcnNpb25PbmU+IEhhc2hlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRmlsZURhdGFWZXJzaW9uT25lIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEZpbGVEYXRhVmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpbGVEYXRhVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVyaSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVXJpIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXJpQmFzZUlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBVcmlCYXNlSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwYXJlbnRLZXkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFBhcmVudEtleSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im9mZnNldCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogT2Zmc2V0IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibGVuZ3RoIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMZW5ndGgiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtaW1lVHlwZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWltZVR5cGUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb250ZW50cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQ29udGVudHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJoYXNoZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEhhc2hlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb3BlcnRpZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFByb3BlcnRpZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIEZpbGVEYXRhVmVyc2lvbk9uZShVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBzdHJpbmcgcGFyZW50S2V5LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBzdHJpbmcgbWltZVR5cGUsIHN0cmluZyBjb250ZW50cywgSUVudW1lcmFibGU8SGFzaFZlcnNpb25PbmU+IGhhc2hlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KHVyaSwgdXJpQmFzZUlkLCBwYXJlbnRLZXksIG9mZnNldCwgbGVuZ3RoLCBtaW1lVHlwZSwgY29udGVudHMsIGhhc2hlcywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGaWxlRGF0YVZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEZpbGVEYXRhVmVyc2lvbk9uZShGaWxlRGF0YVZlcnNpb25PbmUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuVXJpLCBvdGhlci5VcmlCYXNlSWQsIG90aGVyLlBhcmVudEtleSwgb3RoZXIuT2Zmc2V0LCBvdGhlci5MZW5ndGgsIG90aGVyLk1pbWVUeXBlLCBvdGhlci5Db250ZW50cywgb3RoZXIuSGFzaGVzLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGVWZXJzaW9uT25lIElTYXJpZk5vZGVWZXJzaW9uT25lLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBGaWxlRGF0YVZlcnNpb25PbmUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChGaWxlRGF0YVZlcnNpb25PbmUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlVmVyc2lvbk9uZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlRGF0YVZlcnNpb25PbmUodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBzdHJpbmcgcGFyZW50S2V5LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBzdHJpbmcgbWltZVR5cGUsIHN0cmluZyBjb250ZW50cywgSUVudW1lcmFibGU8SGFzaFZlcnNpb25PbmU+IGhhc2hlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAodXJpICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVXJpID0gbmV3IFVyaSh1cmkuT3JpZ2luYWxTdHJpbmcsIHVyaS5Jc0Fic29sdXRlVXJpID8gVXJpS2luZC5BYnNvbHV0ZSA6IFVyaUtpbmQuUmVsYXRpdmUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBVcmlCYXNlSWQgPSB1cmlCYXNlSWQ7DQogICAgICAgICAgICBQYXJlbnRLZXkgPSBwYXJlbnRLZXk7DQogICAgICAgICAgICBPZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgICAgICBMZW5ndGggPSBsZW5ndGg7DQogICAgICAgICAgICBNaW1lVHlwZSA9IG1pbWVUeXBlOw0KICAgICAgICAgICAgQ29udGVudHMgPSBjb250ZW50czsNCiAgICAgICAgICAgIGlmIChoYXNoZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMCA9IG5ldyBMaXN0PEhhc2hWZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGhhc2hlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IEhhc2hWZXJzaW9uT25lKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEhhc2hlcyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'UriOrFragmentConverter.WriteJson(JsonWriter, object, JsonSerializer)', validate parameter 'writer' before using it."
},
- "hashes": [
- {
- "value": "AEA21FD0EA57F7F04314C8AAB9A9745C",
- "algorithm": "md5"
- },
- {
- "value": "7619EF76FE40D23F2E01B12AB3267787A135210A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "7EF8D52EAFD831C8ED2660DDFD830A480519CADE97EC58B1F3047B9FACE52122",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 99,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragmentConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/FixVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgcHJvcG9zZWQgZml4IGZvciB0aGUgcHJvYmxlbSByZXByZXNlbnRlZCBieSBhIHJlc3VsdCBvYmplY3QuIEEgZml4IHNwZWNpZmllcyBhIHNldCBvZiBmaWxlIHRvIG1vZGlmeS4gRm9yIGVhY2ggZmlsZSwgaXQgc3BlY2lmaWVzIGEgc2V0IG9mIGJ5dGVzIHRvIHJlbW92ZSwgYW5kIHByb3ZpZGVzIGEgc2V0IG9mIG5ldyBieXRlcyB0byByZXBsYWNlIHRoZW0uDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBGaXhWZXJzaW9uT25lIDogSVNhcmlmTm9kZVZlcnNpb25PbmUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8Rml4VmVyc2lvbk9uZT4gVmFsdWVDb21wYXJlciA9PiBGaXhWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGaXhWZXJzaW9uT25lIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGVWZXJzaW9uT25lIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5GaXhWZXJzaW9uT25lOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhlIHByb3Bvc2VkIGZpeCwgZW5hYmxpbmcgdmlld2VycyB0byBwcmVzZW50IGEgcHJvcG9zZWQgY2hhbmdlIHRvIGFuIGVuZCB1c2VyLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImRlc2NyaXB0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIERlc2NyaXB0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBPbmUgb3IgbW9yZSBmaWxlIGNoYW5nZXMgdGhhdCBjb21wcmlzZSBhIGZpeCBmb3IgYSByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZmlsZUNoYW5nZXMiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxGaWxlQ2hhbmdlVmVyc2lvbk9uZT4gRmlsZUNoYW5nZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpeFZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgRml4VmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpeFZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJkZXNjcmlwdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRGVzY3JpcHRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmaWxlQ2hhbmdlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmlsZUNoYW5nZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIEZpeFZlcnNpb25PbmUoc3RyaW5nIGRlc2NyaXB0aW9uLCBJRW51bWVyYWJsZTxGaWxlQ2hhbmdlVmVyc2lvbk9uZT4gZmlsZUNoYW5nZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoZGVzY3JpcHRpb24sIGZpbGVDaGFuZ2VzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkZpeFZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIEZpeFZlcnNpb25PbmUoRml4VmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5EZXNjcmlwdGlvbiwgb3RoZXIuRmlsZUNoYW5nZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEZpeFZlcnNpb25PbmUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChGaXhWZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgRml4VmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBkZXNjcmlwdGlvbiwgSUVudW1lcmFibGU8RmlsZUNoYW5nZVZlcnNpb25PbmU+IGZpbGVDaGFuZ2VzKQ0KICAgICAgICB7DQogICAgICAgICAgICBEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uOw0KICAgICAgICAgICAgaWYgKGZpbGVDaGFuZ2VzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxGaWxlQ2hhbmdlVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBmaWxlQ2hhbmdlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobmV3IEZpbGVDaGFuZ2VWZXJzaW9uT25lKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIEZpbGVDaGFuZ2VzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'UriOrFragmentExtensions.GetDefinitionName(this UriOrFragment)', validate parameter 'reference' before using it."
},
- "hashes": [
- {
- "value": "AD312233BF6E51E2B6249E3BAEE75D05",
- "algorithm": "md5"
- },
- {
- "value": "9999687665A38D2317CF72D273835F823CE45790",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "116CE29705F17E6EEE67209D9B12CCBD19E842B01D24A9DAA330372794AC1E43",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 101,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.UriOrFragmentExtensions.GetDefinitionName(Microsoft.Json.Schema.UriOrFragment)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/FormattedRuleMessageVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIENvbnRhaW5zIGluZm9ybWF0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgZm9ybWF0dGVkIG1lc3NhZ2UgdGhhdCBkZXNjcmliZXMgYSByZXN1bHQuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUgOiBJU2FyaWZOb2RlVmVyc2lvbk9uZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gRm9ybWF0dGVkUnVsZU1lc3NhZ2VWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUgb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZVZlcnNpb25PbmUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLkZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgbWVzc2FnZSBmb3JtYXQgdXNlZCB0byBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhhdCBkZXNjcmliZXMgdGhpcyByZXN1bHQuIFRoZSB2YWx1ZSBvZiBmb3JtYXRJZCBtdXN0IGNvcnJlc3BvbmQgdG8gb25lIG9mIHRoZSBuYW1lcyBpbiB0aGUgc2V0IG9mIG5hbWUvdmFsdWUgcGFpcnMgY29udGFpbmVkIGluIHRoZSAnbWVzc2FnZUZvcm1hdHMnIHByb3BlcnR5IG9mIHRoZSBydWxlIG9iamVjdCB3aG9zZSAnaWQnIHByb3BlcnR5IG1hdGNoZXMgdGhlICdydWxlSWQnIHByb3BlcnR5IG9mIHRoaXMgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZvcm1hdElkIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZvcm1hdElkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgd2lsbCBiZSB1c2VkLCBpbiBjb21iaW5hdGlvbiB3aXRoIGEgbWVzc2FnZSBmb3JtYXQsIHRvIGNvbnN0cnVjdCBhIHJlc3VsdCBtZXNzYWdlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImFyZ3VtZW50cyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PHN0cmluZz4gQXJndW1lbnRzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgRm9ybWF0dGVkUnVsZU1lc3NhZ2VWZXJzaW9uT25lKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRm9ybWF0dGVkUnVsZU1lc3NhZ2VWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZm9ybWF0SWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEZvcm1hdElkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYXJndW1lbnRzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBcmd1bWVudHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZShzdHJpbmcgZm9ybWF0SWQsIElFbnVtZXJhYmxlPHN0cmluZz4gYXJndW1lbnRzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGZvcm1hdElkLCBhcmd1bWVudHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iRm9ybWF0dGVkUnVsZU1lc3NhZ2VWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUoRm9ybWF0dGVkUnVsZU1lc3NhZ2VWZXJzaW9uT25lIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLkZvcm1hdElkLCBvdGhlci5Bcmd1bWVudHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGVWZXJzaW9uT25lIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBmb3JtYXRJZCwgSUVudW1lcmFibGU8c3RyaW5nPiBhcmd1bWVudHMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEZvcm1hdElkID0gZm9ybWF0SWQ7DQogICAgICAgICAgICBpZiAoYXJndW1lbnRzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxzdHJpbmc+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gYXJndW1lbnRzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQodmFsdWVfMCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgQXJndW1lbnRzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1702",
+ "level": "error",
+ "message": {
+ "text": "The compound word 'PreRelease' in member name 'VersionConstants.PreRelease' exists as a discrete term. If your usage is intended to be single word, case it as 'Prerelease' or strip the first token entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberShouldBeDiscreteTerm"
},
- "hashes": [
- {
- "value": "599DE927343376F731438551B02A6A20",
- "algorithm": "md5"
- },
- {
- "value": "AED2B7A2B64184A50ADD032FF66A45CDBA7AACD8",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "DE887CE020831B55D8190C800BE4CFC8251C45194E6AF6AF26CF8B36FDA33A73",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 1
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 103,
+ "fullyQualifiedName": "microsoft.json.schema.dll!Microsoft.Json.Schema.VersionConstants.PreRelease"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "PreRelease#MemberShouldBeDiscreteTerm"
+ },
+ "properties": {
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/InvocationVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIFRoZSBydW50aW1lIGVudmlyb25tZW50IG9mIHRoZSBhbmFseXNpcyB0b29sIHJ1bi4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIEludm9jYXRpb25WZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPEludm9jYXRpb25WZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IEludm9jYXRpb25WZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhJbnZvY2F0aW9uVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuSW52b2NhdGlvblZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgY29tbWFuZCBsaW5lIHVzZWQgdG8gaW52b2tlIHRoZSB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvbW1hbmRMaW5lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIENvbW1hbmRMaW5lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgY29udGVudHMgb2YgYW55IHJlc3BvbnNlIGZpbGVzIHNwZWNpZmllZCBvbiB0aGUgdG9vbCdzIGNvbW1hbmQgbGluZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJyZXNwb25zZUZpbGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+IFJlc3BvbnNlRmlsZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBkYXRlIGFuZCB0aW1lIGF0IHdoaWNoIHRoZSBydW4gc3RhcnRlZC4gU2VlICJEYXRlL3RpbWUgcHJvcGVydGllcyIgaW4gdGhlIFNBUklGIHNwZWMgZm9yIHRoZSByZXF1aXJlZCBmb3JtYXQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAic3RhcnRUaW1lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgRGF0ZVRpbWUgU3RhcnRUaW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgZGF0ZSBhbmQgdGltZSBhdCB3aGljaCB0aGUgcnVuIGVuZGVkLiBTZWUgIkRhdGUvdGltZSBwcm9wZXJ0aWVzIiBpbiB0aGUgIFNBUklGIHNwZWMgZm9yIHRoZSByZXF1aXJlZCBmb3JtYXQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZW5kVGltZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIERhdGVUaW1lIEVuZFRpbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBtYWNoaW5lIHRoYXQgaG9zdGVkIHRoZSBhbmFseXNpcyB0b29sIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtYWNoaW5lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1hY2hpbmUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBhY2NvdW50IHRoYXQgcmFuIHRoZSBhbmFseXNpcyB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImFjY291bnQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgQWNjb3VudCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHByb2Nlc3MgaWQgZm9yIHRoZSBhbmFseXNpcyB0b29sIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9jZXNzSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgUHJvY2Vzc0lkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgZnVsbHkgcXVhbGlmaWVkIHBhdGggdG8gdGhlIGFuYWx5c2lzIHRvb2wuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZmlsZU5hbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRmlsZU5hbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBmb3IgdGhlIGFuYWx5c2lzIHJvb2wgcnVuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIndvcmtpbmdEaXJlY3RvcnkiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgV29ya2luZ0RpcmVjdG9yeSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGFuYWx5c2lzIHRvb2wgcHJvY2VzcywgZXhwcmVzc2VkIGFzIGtleS92YWx1ZSBwYWlycy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJlbnZpcm9ubWVudFZhcmlhYmxlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBFbnZpcm9ubWVudFZhcmlhYmxlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBydW4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJJbnZvY2F0aW9uVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBJbnZvY2F0aW9uVmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ikludm9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29tbWFuZExpbmUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IENvbW1hbmRMaW5lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVzcG9uc2VGaWxlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmVzcG9uc2VGaWxlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YXJ0VGltZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RhcnRUaW1lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZW5kVGltZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRW5kVGltZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1hY2hpbmUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1hY2hpbmUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhY2NvdW50Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBBY2NvdW50IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvY2Vzc0lkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9jZXNzSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmaWxlTmFtZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmlsZU5hbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ3b3JraW5nRGlyZWN0b3J5Ij4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBXb3JraW5nRGlyZWN0b3J5IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZW52aXJvbm1lbnRWYXJpYWJsZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEVudmlyb25tZW50VmFyaWFibGVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgSW52b2NhdGlvblZlcnNpb25PbmUoc3RyaW5nIGNvbW1hbmRMaW5lLCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gcmVzcG9uc2VGaWxlcywgRGF0ZVRpbWUgc3RhcnRUaW1lLCBEYXRlVGltZSBlbmRUaW1lLCBzdHJpbmcgbWFjaGluZSwgc3RyaW5nIGFjY291bnQsIGludCBwcm9jZXNzSWQsIHN0cmluZyBmaWxlTmFtZSwgc3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBlbnZpcm9ubWVudFZhcmlhYmxlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGNvbW1hbmRMaW5lLCByZXNwb25zZUZpbGVzLCBzdGFydFRpbWUsIGVuZFRpbWUsIG1hY2hpbmUsIGFjY291bnQsIHByb2Nlc3NJZCwgZmlsZU5hbWUsIHdvcmtpbmdEaXJlY3RvcnksIGVudmlyb25tZW50VmFyaWFibGVzLCBwcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ikludm9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBJbnZvY2F0aW9uVmVyc2lvbk9uZShJbnZvY2F0aW9uVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5Db21tYW5kTGluZSwgb3RoZXIuUmVzcG9uc2VGaWxlcywgb3RoZXIuU3RhcnRUaW1lLCBvdGhlci5FbmRUaW1lLCBvdGhlci5NYWNoaW5lLCBvdGhlci5BY2NvdW50LCBvdGhlci5Qcm9jZXNzSWQsIG90aGVyLkZpbGVOYW1lLCBvdGhlci5Xb3JraW5nRGlyZWN0b3J5LCBvdGhlci5FbnZpcm9ubWVudFZhcmlhYmxlcywgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgSW52b2NhdGlvblZlcnNpb25PbmUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChJbnZvY2F0aW9uVmVyc2lvbk9uZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGVWZXJzaW9uT25lIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IEludm9jYXRpb25WZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIGNvbW1hbmRMaW5lLCBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gcmVzcG9uc2VGaWxlcywgRGF0ZVRpbWUgc3RhcnRUaW1lLCBEYXRlVGltZSBlbmRUaW1lLCBzdHJpbmcgbWFjaGluZSwgc3RyaW5nIGFjY291bnQsIGludCBwcm9jZXNzSWQsIHN0cmluZyBmaWxlTmFtZSwgc3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBlbnZpcm9ubWVudFZhcmlhYmxlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBDb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lOw0KICAgICAgICAgICAgaWYgKHJlc3BvbnNlRmlsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBSZXNwb25zZUZpbGVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+KHJlc3BvbnNlRmlsZXMpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBTdGFydFRpbWUgPSBzdGFydFRpbWU7DQogICAgICAgICAgICBFbmRUaW1lID0gZW5kVGltZTsNCiAgICAgICAgICAgIE1hY2hpbmUgPSBtYWNoaW5lOw0KICAgICAgICAgICAgQWNjb3VudCA9IGFjY291bnQ7DQogICAgICAgICAgICBQcm9jZXNzSWQgPSBwcm9jZXNzSWQ7DQogICAgICAgICAgICBGaWxlTmFtZSA9IGZpbGVOYW1lOw0KICAgICAgICAgICAgV29ya2luZ0RpcmVjdG9yeSA9IHdvcmtpbmdEaXJlY3Rvcnk7DQogICAgICAgICAgICBpZiAoZW52aXJvbm1lbnRWYXJpYWJsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudFZhcmlhYmxlcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPihlbnZpcm9ubWVudFZhcmlhYmxlcyk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1014",
+ "level": "error",
+ "message": {
+ "text": "Mark 'Microsoft.Json.Schema.Validation.dll' with CLSCompliant(true) because it exposes externally visible types."
},
- "hashes": [
- {
- "value": "C850A96F15A778EAB995FE9C2872DA2A",
- "algorithm": "md5"
- },
- {
- "value": "3EE17601364FD68E0787D9851978F2E162A1E458",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "3D2B17262BB83C20489EDA6647B58C446F309A27112AD0543A9FA6531150B515",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 104,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/InvocationVersionOneEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmVyc2lvbk9uZQ0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gRGVmaW5lcyBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0eXBlIEludm9jYXRpb25WZXJzaW9uT25lIGZvciBlcXVhbGl0eS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgSW52b2NhdGlvblZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyIDogSUVxdWFsaXR5Q29tcGFyZXI8SW52b2NhdGlvblZlcnNpb25PbmU+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgSW52b2NhdGlvblZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyIEluc3RhbmNlID0gbmV3IEludm9jYXRpb25WZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhJbnZvY2F0aW9uVmVyc2lvbk9uZSBsZWZ0LCBJbnZvY2F0aW9uVmVyc2lvbk9uZSByaWdodCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCByaWdodCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgbnVsbCkgfHwgUmVmZXJlbmNlRXF1YWxzKHJpZ2h0LCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkNvbW1hbmRMaW5lICE9IHJpZ2h0LkNvbW1hbmRMaW5lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUmVzcG9uc2VGaWxlcywgcmlnaHQuUmVzcG9uc2VGaWxlcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUmVzcG9uc2VGaWxlcyA9PSBudWxsIHx8IHJpZ2h0LlJlc3BvbnNlRmlsZXMgPT0gbnVsbCB8fCBsZWZ0LlJlc3BvbnNlRmlsZXMuQ291bnQgIT0gcmlnaHQuUmVzcG9uc2VGaWxlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBsZWZ0LlJlc3BvbnNlRmlsZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBzdHJpbmcgdmFsdWVfMTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5SZXNwb25zZUZpbGVzLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wLlZhbHVlICE9IHZhbHVlXzEpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuU3RhcnRUaW1lICE9IHJpZ2h0LlN0YXJ0VGltZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkVuZFRpbWUgIT0gcmlnaHQuRW5kVGltZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lk1hY2hpbmUgIT0gcmlnaHQuTWFjaGluZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkFjY291bnQgIT0gcmlnaHQuQWNjb3VudCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlByb2Nlc3NJZCAhPSByaWdodC5Qcm9jZXNzSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5GaWxlTmFtZSAhPSByaWdodC5GaWxlTmFtZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LldvcmtpbmdEaXJlY3RvcnkgIT0gcmlnaHQuV29ya2luZ0RpcmVjdG9yeSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LkVudmlyb25tZW50VmFyaWFibGVzLCByaWdodC5FbnZpcm9ubWVudFZhcmlhYmxlcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuRW52aXJvbm1lbnRWYXJpYWJsZXMgPT0gbnVsbCB8fCByaWdodC5FbnZpcm9ubWVudFZhcmlhYmxlcyA9PSBudWxsIHx8IGxlZnQuRW52aXJvbm1lbnRWYXJpYWJsZXMuQ291bnQgIT0gcmlnaHQuRW52aXJvbm1lbnRWYXJpYWJsZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzIgaW4gbGVmdC5FbnZpcm9ubWVudFZhcmlhYmxlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8zOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LkVudmlyb25tZW50VmFyaWFibGVzLlRyeUdldFZhbHVlKHZhbHVlXzIuS2V5LCBvdXQgdmFsdWVfMykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8yLlZhbHVlICE9IHZhbHVlXzMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUHJvcGVydGllcywgcmlnaHQuUHJvcGVydGllcykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUHJvcGVydGllcyA9PSBudWxsIHx8IHJpZ2h0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCBsZWZ0LlByb3BlcnRpZXMuQ291bnQgIT0gcmlnaHQuUHJvcGVydGllcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNCBpbiBsZWZ0LlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVkUHJvcGVydHlJbmZvIHZhbHVlXzU7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuUHJvcGVydGllcy5UcnlHZXRWYWx1ZSh2YWx1ZV80LktleSwgb3V0IHZhbHVlXzUpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoIW9iamVjdC5FcXVhbHModmFsdWVfNC5WYWx1ZSwgdmFsdWVfNSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgaW50IEdldEhhc2hDb2RlKEludm9jYXRpb25WZXJzaW9uT25lIG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAob2JqLkNvbW1hbmRMaW5lICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkNvbW1hbmRMaW5lLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5SZXNwb25zZUZpbGVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV82IGluIG9iai5SZXNwb25zZUZpbGVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV82LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzYuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV82LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzA7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5TdGFydFRpbWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkVuZFRpbWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLk1hY2hpbmUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTWFjaGluZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouQWNjb3VudCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5BY2NvdW50LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Qcm9jZXNzSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLkZpbGVOYW1lICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkZpbGVOYW1lLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Xb3JraW5nRGlyZWN0b3J5ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLldvcmtpbmdEaXJlY3RvcnkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkVudmlyb25tZW50VmFyaWFibGVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMSA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV83IGluIG9iai5FbnZpcm9ubWVudFZhcmlhYmxlcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzEgXj0gdmFsdWVfNy5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV83LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzEgXj0gdmFsdWVfNy5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8xOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVXNlIHhvciBmb3IgZGljdGlvbmFyaWVzIHRvIGJlIG9yZGVyLWluZGVwZW5kZW50Lg0KICAgICAgICAgICAgICAgICAgICBpbnQgeG9yXzIgPSAwOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfOCBpbiBvYmouUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzIgXj0gdmFsdWVfOC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV84LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzIgXj0gdmFsdWVfOC5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8yOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1824",
+ "message": {
+ "text": "Because assembly 'Microsoft.Json.Schema.Validation.dll' contains a ResX-based resource file, mark it with the NeutralResourcesLanguage attribute, specifying the language of the resources within the assembly. This could improve lookup performance the first time a resource is retrieved."
},
- "hashes": [
- {
- "value": "5F2CA2B357CB0CD545A33192D7B34F49",
- "algorithm": "md5"
- },
- {
- "value": "2E9E5508A353E2909C44AA875BBCE4C5FC59A9A6",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "C11F0972425273E41A1292A1666392DE9D459B82B897024702125BE6722C8763",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 104,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/LocationVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIFRoZSBsb2NhdGlvbiB3aGVyZSBhbiBhbmFseXNpcyB0b29sIHByb2R1Y2VkIGEgcmVzdWx0Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTIuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgTG9jYXRpb25WZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPExvY2F0aW9uVmVyc2lvbk9uZT4gVmFsdWVDb21wYXJlciA9PiBMb2NhdGlvblZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKExvY2F0aW9uVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuTG9jYXRpb25WZXJzaW9uT25lOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSWRlbnRpZmllcyB0aGUgZmlsZSB0aGF0IHRoZSBhbmFseXNpcyB0b29sIHdhcyBpbnN0cnVjdGVkIHRvIHNjYW4uIFRoaXMgbmVlZCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGZpbGUgd2hlcmUgdGhlIHJlc3VsdCBhY3R1YWxseSBvY2N1cnJlZC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhbmFseXNpc1RhcmdldCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIEFuYWx5c2lzVGFyZ2V0IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJZGVudGlmaWVzIHRoZSBmaWxlIHdoZXJlIHRoZSBhbmFseXNpcyB0b29sIHByb2R1Y2VkIHRoZSByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicmVzdWx0RmlsZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIFJlc3VsdEZpbGUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBodW1hbi1yZWFkYWJsZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbG9naWNhbCBsb2NhdGlvbiB3aGVyZSB0aGUgYW5hbHlzaXMgdG9vbCBwcm9kdWNlZCB0aGUgcmVzdWx0LiBJZiAnbG9naWNhbExvY2F0aW9uS2V5JyBpcyBub3Qgc3BlY2lmaWVkLCB0aGlzIG1lbWJlciBpcyBjYW4gdXNlZCB0byByZXRyaWV2ZSB0aGUgbG9jYXRpb24gbG9naWNhbExvY2F0aW9uIGZyb20gdGhlIGxvZ2ljYWxMb2NhdGlvbnMgZGljdGlvbmFyeSwgaWYgb25lIGV4aXN0cy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEga2V5IHVzZWQgdG8gcmV0cmlldmUgdGhlIGxvY2F0aW9uIGxvZ2ljYWxMb2NhdGlvbiBmcm9tIHRoZSBsb2dpY2FsTG9jYXRpb25zIGRpY3Rpb25hcnksIHdoZW4gdGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgJ2Z1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUnIGlzIG5vdCB1bmlxdWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibG9naWNhbExvY2F0aW9uS2V5IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIExvZ2ljYWxMb2NhdGlvbktleSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIG1hY2hpbmUtcmVhZGFibGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIHRoZSBsb2dpY2FsIGxvY2F0aW9uIHdoZXJlIHRoZSBhbmFseXNpcyB0b29sIHByb2R1Y2VkIHRoZSByZXN1bHQsIHN1Y2ggYXMgdGhlIG1hbmdsZWQgZnVuY3Rpb24gbmFtZSBwcm92aWRlZCBieSBhIEMrKyBjb21waWxlciB0aGF0IGVuY29kZXMgY2FsbGluZyBjb252ZW50aW9uLCByZXR1cm4gdHlwZSBhbmQgb3RoZXIgZGV0YWlscyBhbG9uZyB3aXRoIHRoZSBmdW5jdGlvbiBuYW1lLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImRlY29yYXRlZE5hbWUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRGVjb3JhdGVkTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IkxvY2F0aW9uVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBMb2NhdGlvblZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJMb2NhdGlvblZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJhbmFseXNpc1RhcmdldCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQW5hbHlzaXNUYXJnZXQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyZXN1bHRGaWxlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSZXN1bHRGaWxlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImxvZ2ljYWxMb2NhdGlvbktleSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTG9naWNhbExvY2F0aW9uS2V5IiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGVjb3JhdGVkTmFtZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRGVjb3JhdGVkTmFtZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb3BlcnRpZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFByb3BlcnRpZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIExvY2F0aW9uVmVyc2lvbk9uZShQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBhbmFseXNpc1RhcmdldCwgUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUgcmVzdWx0RmlsZSwgc3RyaW5nIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIHN0cmluZyBsb2dpY2FsTG9jYXRpb25LZXksIHN0cmluZyBkZWNvcmF0ZWROYW1lLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoYW5hbHlzaXNUYXJnZXQsIHJlc3VsdEZpbGUsIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIGxvZ2ljYWxMb2NhdGlvbktleSwgZGVjb3JhdGVkTmFtZSwgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJMb2NhdGlvblZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIExvY2F0aW9uVmVyc2lvbk9uZShMb2NhdGlvblZlcnNpb25PbmUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuQW5hbHlzaXNUYXJnZXQsIG90aGVyLlJlc3VsdEZpbGUsIG90aGVyLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIG90aGVyLkxvZ2ljYWxMb2NhdGlvbktleSwgb3RoZXIuRGVjb3JhdGVkTmFtZSwgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgTG9jYXRpb25WZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoTG9jYXRpb25WZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgTG9jYXRpb25WZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUgYW5hbHlzaXNUYXJnZXQsIFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIHJlc3VsdEZpbGUsIHN0cmluZyBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lLCBzdHJpbmcgbG9naWNhbExvY2F0aW9uS2V5LCBzdHJpbmcgZGVjb3JhdGVkTmFtZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoYW5hbHlzaXNUYXJnZXQgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBBbmFseXNpc1RhcmdldCA9IG5ldyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZShhbmFseXNpc1RhcmdldCk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChyZXN1bHRGaWxlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUmVzdWx0RmlsZSA9IG5ldyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZShyZXN1bHRGaWxlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSA9IGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWU7DQogICAgICAgICAgICBMb2dpY2FsTG9jYXRpb25LZXkgPSBsb2dpY2FsTG9jYXRpb25LZXk7DQogICAgICAgICAgICBEZWNvcmF0ZWROYW1lID0gZGVjb3JhdGVkTmFtZTsNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "Correct the spelling of 'Sarif' in member name 'JsonSyntaxErrorExceptionExtensions.ToSarifResult(this JsonSyntaxException)' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "Member"
},
- "hashes": [
- {
- "value": "6E59F863B61EA1597032E71CC52DF10E",
- "algorithm": "md5"
- },
- {
- "value": "DF52DCE3444603AF167C20A5F0B21ABD577B4615",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F73A04FB01207D87284EB5B4360D35FA0CCAC7449B0625741D0A2574468F449D",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 107,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.JsonSyntaxErrorExceptionExtensions.ToSarifResult(Microsoft.Json.Schema.JsonSyntaxException)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Sarif#Member"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/NotificationVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlc2NyaWJlcyBhIGNvbmRpdGlvbiByZWxldmFudCB0byB0aGUgdG9vbCBpdHNlbGYsIGFzIG9wcG9zZWQgdG8gYmVpbmcgcmVsZXZhbnQgdG8gYSB0YXJnZXQgYmVpbmcgYW5hbHl6ZWQgYnkgdGhlIHRvb2wuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBOb3RpZmljYXRpb25WZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPE5vdGlmaWNhdGlvblZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gTm90aWZpY2F0aW9uVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoTm90aWZpY2F0aW9uVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuTm90aWZpY2F0aW9uVmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBjb25kaXRpb24gdGhhdCB3YXMgZW5jb3VudGVyZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzdGFibGUsIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydWxlIChpZiBhbnkpIHRvIHdoaWNoIHRoaXMgbm90aWZpY2F0aW9uIGlzIHJlbGV2YW50LiBJZiAncnVsZUtleScgaXMgbm90IHNwZWNpZmllZCwgdGhpcyBtZW1iZXIgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgcnVsZSBtZXRhZGF0YSBmcm9tIHRoZSBydWxlcyBkaWN0aW9uYXJ5LCBpZiBpdCBleGlzdHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBrZXkgdXNlZCB0byByZXRyaWV2ZSB0aGUgcnVsZSBtZXRhZGF0YSBmcm9tIHRoZSBydWxlcyBkaWN0aW9uYXJ5IHRoYXQgaXMgcmVsZXZhbnQgdG8gdGhlIG5vdGlmaWNhdGlvbm4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZUtleSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBSdWxlS2V5IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgZmlsZSBhbmQgcmVnaW9uIHJlbGV2YW50IHRvIHRoaXMgbm90aWZpY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInBoeXNpY2FsTG9jYXRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBQaHlzaWNhbExvY2F0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgY29uZGl0aW9uIHRoYXQgd2FzIGVuY291bnRlcmVkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1lc3NhZ2UiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBzZXZlcml0eSBsZXZlbCBvZiB0aGUgbm90aWZpY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxldmVsIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgTm90aWZpY2F0aW9uTGV2ZWxWZXJzaW9uT25lIExldmVsIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgdGhyZWFkIGlkZW50aWZpZXIgb2YgdGhlIGNvZGUgdGhhdCBnZW5lcmF0ZWQgdGhlIG5vdGlmaWNhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ0aHJlYWRJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBUaHJlYWRJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGRhdGUgYW5kIHRpbWUgYXQgd2hpY2ggdGhlIGFuYWx5c2lzIHRvb2wgZ2VuZXJhdGVkIHRoZSBub3RpZmljYXRpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGltZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIERhdGVUaW1lIFRpbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBydW50aW1lIGV4Y2VwdGlvbiwgaWYgYW55LCByZWxldmFudCB0byB0aGlzIG5vdGlmaWNhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJleGNlcHRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSBFeGNlcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm90aWZpY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm90aWZpY2F0aW9uVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBOb3RpZmljYXRpb25WZXJzaW9uT25lKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iTm90aWZpY2F0aW9uVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1bGVJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUnVsZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icnVsZUtleSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUnVsZUtleSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBoeXNpY2FsTG9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFBoeXNpY2FsTG9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibGV2ZWwiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExldmVsIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGhyZWFkSWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRocmVhZElkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idGltZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVGltZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRXhjZXB0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgTm90aWZpY2F0aW9uVmVyc2lvbk9uZShzdHJpbmcgaWQsIHN0cmluZyBydWxlSWQsIHN0cmluZyBydWxlS2V5LCBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBwaHlzaWNhbExvY2F0aW9uLCBzdHJpbmcgbWVzc2FnZSwgTm90aWZpY2F0aW9uTGV2ZWxWZXJzaW9uT25lIGxldmVsLCBpbnQgdGhyZWFkSWQsIERhdGVUaW1lIHRpbWUsIEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lIGV4Y2VwdGlvbiwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KGlkLCBydWxlSWQsIHJ1bGVLZXksIHBoeXNpY2FsTG9jYXRpb24sIG1lc3NhZ2UsIGxldmVsLCB0aHJlYWRJZCwgdGltZSwgZXhjZXB0aW9uLCBwcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9Ik5vdGlmaWNhdGlvblZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHNwZWNpZmllZCBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvdGhlciI+DQogICAgICAgIC8vLyBUaGUgaW5zdGFuY2UgZnJvbSB3aGljaCB0aGUgbmV3IGluc3RhbmNlIGlzIHRvIGJlIGluaXRpYWxpemVkLg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxleGNlcHRpb24gY3JlZj0iQXJndW1lbnROdWxsRXhjZXB0aW9uIj4NCiAgICAgICAgLy8vIFRocm93biBpZiA8cGFyYW1yZWYgbmFtZT0ib3RoZXIiIC8+IGlzIG51bGwuDQogICAgICAgIC8vLyA8L2V4Y2VwdGlvbj4NCiAgICAgICAgcHVibGljIE5vdGlmaWNhdGlvblZlcnNpb25PbmUoTm90aWZpY2F0aW9uVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5JZCwgb3RoZXIuUnVsZUlkLCBvdGhlci5SdWxlS2V5LCBvdGhlci5QaHlzaWNhbExvY2F0aW9uLCBvdGhlci5NZXNzYWdlLCBvdGhlci5MZXZlbCwgb3RoZXIuVGhyZWFkSWQsIG90aGVyLlRpbWUsIG90aGVyLkV4Y2VwdGlvbiwgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgTm90aWZpY2F0aW9uVmVyc2lvbk9uZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKE5vdGlmaWNhdGlvblZlcnNpb25PbmUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlVmVyc2lvbk9uZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBOb3RpZmljYXRpb25WZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIGlkLCBzdHJpbmcgcnVsZUlkLCBzdHJpbmcgcnVsZUtleSwgUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUgcGh5c2ljYWxMb2NhdGlvbiwgc3RyaW5nIG1lc3NhZ2UsIE5vdGlmaWNhdGlvbkxldmVsVmVyc2lvbk9uZSBsZXZlbCwgaW50IHRocmVhZElkLCBEYXRlVGltZSB0aW1lLCBFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSBleGNlcHRpb24sIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSWQgPSBpZDsNCiAgICAgICAgICAgIFJ1bGVJZCA9IHJ1bGVJZDsNCiAgICAgICAgICAgIFJ1bGVLZXkgPSBydWxlS2V5Ow0KICAgICAgICAgICAgaWYgKHBoeXNpY2FsTG9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQaHlzaWNhbExvY2F0aW9uID0gbmV3IFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lKHBoeXNpY2FsTG9jYXRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBNZXNzYWdlID0gbWVzc2FnZTsNCiAgICAgICAgICAgIExldmVsID0gbGV2ZWw7DQogICAgICAgICAgICBUaHJlYWRJZCA9IHRocmVhZElkOw0KICAgICAgICAgICAgVGltZSA9IHRpbWU7DQogICAgICAgICAgICBpZiAoZXhjZXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgRXhjZXB0aW9uID0gbmV3IEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lKGV4Y2VwdGlvbik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'JsonSyntaxErrorExceptionExtensions.ToSarifResult(this JsonSyntaxException)', validate parameter 'ex' before using it."
},
- "hashes": [
+ "locations": [
{
- "value": "FA364C85F17A5760E36537332C70FA11",
- "algorithm": "md5"
- },
- {
- "value": "E66D580EE863AD0F4DB4A3069ED7DF04D6DCB52E",
- "algorithm": "sha-1"
- },
- {
- "value": "CBDE9389FEF9910B26BC4B991D1FC7EC63C2AAFFF88A2268CE8D0B426E9E52E8",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 107,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.JsonSyntaxErrorExceptionExtensions.ToSarifResult(Microsoft.Json.Schema.JsonSyntaxException)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/PhysicalLocationVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgcGh5c2ljYWwgbG9jYXRpb24gcmVsZXZhbnQgdG8gYSByZXN1bHQuIFNwZWNpZmllcyBhIHJlZmVyZW5jZSB0byBhIHByb2dyYW1taW5nIGFydGlmYWN0IHRvZ2V0aGVyIHdpdGggYSByYW5nZSBvZiBieXRlcyBvciBjaGFyYWN0ZXJzIHdpdGhpbiB0aGF0IGFydGlmYWN0Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTIuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUgOiBJU2FyaWZOb2RlVmVyc2lvbk9uZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZT4gVmFsdWVDb21wYXJlciA9PiBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUgb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZVZlcnNpb25PbmUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLlBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlIGFzIGEgdmFsaWQgVVJJLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInVyaSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFVyaSBVcmkgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgY29uY2VwdHVhbCBiYXNlIGZvciB0aGUgJ3VyaScgcHJvcGVydHkgKGlmIGl0IGlzIHJlbGF0aXZlKSwgZS5nLiwnJChTb2x1dGlvbkRpciknIG9yICclU1JDUk9PVCUnLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInVyaUJhc2VJZCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBVcmlCYXNlSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSByZWdpb24gd2l0aGluIHRoZSBmaWxlIHdoZXJlIHRoZSByZXN1bHQgd2FzIGRldGVjdGVkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJlZ2lvbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFJlZ2lvblZlcnNpb25PbmUgUmVnaW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXJpIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBVcmkiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ1cmlCYXNlSWQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFVyaUJhc2VJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJlZ2lvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmVnaW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZShVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBSZWdpb25WZXJzaW9uT25lIHJlZ2lvbikNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdCh1cmksIHVyaUJhc2VJZCwgcmVnaW9uKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZShQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5VcmksIG90aGVyLlVyaUJhc2VJZCwgb3RoZXIuUmVnaW9uKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGVWZXJzaW9uT25lIElTYXJpZk5vZGVWZXJzaW9uT25lLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBSZWdpb25WZXJzaW9uT25lIHJlZ2lvbikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHVyaSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFVyaSA9IG5ldyBVcmkodXJpLk9yaWdpbmFsU3RyaW5nLCB1cmkuSXNBYnNvbHV0ZVVyaSA/IFVyaUtpbmQuQWJzb2x1dGUgOiBVcmlLaW5kLlJlbGF0aXZlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgVXJpQmFzZUlkID0gdXJpQmFzZUlkOw0KICAgICAgICAgICAgaWYgKHJlZ2lvbiAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJlZ2lvbiA9IG5ldyBSZWdpb25WZXJzaW9uT25lKHJlZ2lvbik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
},
- "hashes": [
- {
- "value": "C974B277312E024975C107341CCE8FFD",
- "algorithm": "md5"
- },
- {
- "value": "DEB2E1AA329A334BA9D69739615F3433CB8C0D5E",
- "algorithm": "sha-1"
- },
- {
- "value": "E464599832FE3B747DF4DA5766F951E6FF23614FD2AFCBC85251F655E01ECA57",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/ResultVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgcmVzdWx0IHByb2R1Y2VkIGJ5IGFuIGFuYWx5c2lzIHRvb2wuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBSZXN1bHRWZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFJlc3VsdFZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gUmVzdWx0VmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUmVzdWx0VmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuUmVzdWx0VmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzdGFibGUsIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBydWxlIChpZiBhbnkpIHRvIHdoaWNoIHRoaXMgbm90aWZpY2F0aW9uIGlzIHJlbGV2YW50LiBJZiAncnVsZUtleScgaXMgbm90IHNwZWNpZmllZCwgdGhpcyBtZW1iZXIgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgcnVsZSBtZXRhZGF0YSBmcm9tIHRoZSBydWxlcyBkaWN0aW9uYXJ5LCBpZiBpdCBleGlzdHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFJ1bGVJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBrZXkgdXNlZCB0byByZXRyaWV2ZSB0aGUgcnVsZSBtZXRhZGF0YSBmcm9tIHRoZSBydWxlcyBkaWN0aW9uYXJ5IHRoYXQgaXMgcmVsZXZhbnQgdG8gdGhlIG5vdGlmaWNhdGlvbm4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicnVsZUtleSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBSdWxlS2V5IHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHZhbHVlIHNwZWNpZnlpbmcgdGhlIHNldmVyaXR5IGxldmVsIG9mIHRoZSByZXN1bHQuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQsIGl0cyBpbXBsaWVkIHZhbHVlIGlzICd3YXJuaW5nJy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJsZXZlbCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFJlc3VsdExldmVsVmVyc2lvbk9uZSBMZXZlbCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhlIHJlc3VsdC4gVGhlIGZpcnN0IHNlbnRlbmNlIG9mIHRoZSBtZXNzYWdlIG9ubHkgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiB2aXNpYmxlIHNwYWNlIGlzIGxpbWl0ZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibWVzc2FnZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNZXNzYWdlIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBICdmb3JtYXR0ZWRSdWxlTWVzc2FnZScgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgZm9ybWF0dGVkIG1lc3NhZ2UgdGhhdCBkZXNjcmliZXMgdGhlIHJlc3VsdC4gSWYgdGhlICdmb3JtYXR0ZWRNZXNzYWdlJyBwcm9wZXJ0eSBpcyBwcmVzZW50IG9uIGEgcmVzdWx0LCB0aGUgJ2Z1bGxNZXNzYWdlJyBwcm9wZXJ0eSBzaGFsbCBub3QgYmUgcHJlc2VudC4gSWYgdGhlICdmdWxsTWVzc2FnZScgcHJvcGVydHkgaXMgcHJlc2VudCBvbiBhbiByZXN1bHQsIHRoZSAnZm9ybWF0dGVkTWVzc2FnZScgcHJvcGVydHkgc2hhbGwgbm90IGJlIHByZXNlbnQNCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmb3JtYXR0ZWRSdWxlTWVzc2FnZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSBGb3JtYXR0ZWRSdWxlTWVzc2FnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gT25lIG9yIG1vcmUgbG9jYXRpb25zIHdoZXJlIHRoZSByZXN1bHQgb2NjdXJyZWQuIFNwZWNpZnkgb25seSBvbmUgbG9jYXRpb24gdW5sZXNzIHRoZSBwcm9ibGVtIGluZGljYXRlZCBieSB0aGUgcmVzdWx0IGNhbiBvbmx5IGJlIGNvcnJlY3RlZCBieSBtYWtpbmcgYSBjaGFuZ2UgYXQgZXZlcnkgc3BlY2lmaWVkIGxvY2F0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvY2F0aW9ucyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PExvY2F0aW9uVmVyc2lvbk9uZT4gTG9jYXRpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHNvdXJjZSBjb2RlIG9yIG90aGVyIGZpbGUgZnJhZ21lbnQgdGhhdCBpbGx1c3RyYXRlcyB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInNuaXBwZXQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgU25pcHBldCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB1bmlxdWUgaWRlbnRpZmVyIGZvciB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIElkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIHN0cmluZyB0aGF0IGNvbnRyaWJ1dGVzIHRvIHRoZSB1bmlxdWUgaWRlbnRpdHkgb2YgdGhlIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJ0b29sRmluZ2VycHJpbnRDb250cmlidXRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgVG9vbEZpbmdlcnByaW50Q29udHJpYnV0aW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBbiBhcnJheSBvZiAnc3RhY2snIG9iamVjdHMgcmVsZXZhbnQgdG8gdGhlIHJlc3VsdC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzdGFja3MiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxTdGFja1ZlcnNpb25PbmU+IFN0YWNrcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgJ2NvZGVGbG93JyBvYmplY3RzIHJlbGV2YW50IHRvIHRoZSByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiY29kZUZsb3dzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8Q29kZUZsb3dWZXJzaW9uT25lPiBDb2RlRmxvd3MgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgZ3JvdXBlZCBzZXQgb2YgbG9jYXRpb25zIGFuZCBtZXNzYWdlcywgaWYgYXZhaWxhYmxlLCB0aGF0IHJlcHJlc2VudCBjb2RlIGFyZWFzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gdGhpcyByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicmVsYXRlZExvY2F0aW9ucyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU+IFJlbGF0ZWRMb2NhdGlvbnMgeyBnZXQ7IHNldDsgfQ0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN1cHByZXNzaW9uU3RhdGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgU3VwcHJlc3Npb25TdGF0ZXNWZXJzaW9uT25lIFN1cHByZXNzaW9uU3RhdGVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgc3RhdGUgb2YgYSByZXN1bHQgcmVsYXRpdmUgdG8gYSBiYXNlbGluZSBvZiBhIHByZXZpb3VzIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJiYXNlbGluZVN0YXRlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgQmFzZWxpbmVTdGF0ZVZlcnNpb25PbmUgQmFzZWxpbmVTdGF0ZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQW4gYXJyYXkgb2YgJ2ZpeCcgb2JqZWN0cywgZWFjaCBvZiB3aGljaCByZXByZXNlbnRzIGEgcHJvcG9zZWQgZml4IHRvIHRoZSBwcm9ibGVtIGluZGljYXRlZCBieSB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZpeGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8Rml4VmVyc2lvbk9uZT4gRml4ZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVzdWx0Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVzdWx0VmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBSZXN1bHRWZXJzaW9uT25lKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVzdWx0VmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1bGVJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUnVsZUlkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icnVsZUtleSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUnVsZUtleSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImxldmVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMZXZlbCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im1lc3NhZ2UiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmb3JtYXR0ZWRSdWxlTWVzc2FnZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRm9ybWF0dGVkUnVsZU1lc3NhZ2UiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2NhdGlvbnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExvY2F0aW9ucyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InNuaXBwZXQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFNuaXBwZXQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJpZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ0b29sRmluZ2VycHJpbnRDb250cmlidXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFRvb2xGaW5nZXJwcmludENvbnRyaWJ1dGlvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YWNrcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU3RhY2tzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29kZUZsb3dzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBDb2RlRmxvd3MiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJyZWxhdGVkTG9jYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSZWxhdGVkTG9jYXRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic3VwcHJlc3Npb25TdGF0ZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFN1cHByZXNzaW9uU3RhdGVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYmFzZWxpbmVTdGF0ZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQmFzZWxpbmVTdGF0ZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZpeGVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGaXhlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb3BlcnRpZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFByb3BlcnRpZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIFJlc3VsdFZlcnNpb25PbmUoc3RyaW5nIHJ1bGVJZCwgc3RyaW5nIHJ1bGVLZXksIFJlc3VsdExldmVsVmVyc2lvbk9uZSBsZXZlbCwgc3RyaW5nIG1lc3NhZ2UsIEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSBmb3JtYXR0ZWRSdWxlTWVzc2FnZSwgSUVudW1lcmFibGU8TG9jYXRpb25WZXJzaW9uT25lPiBsb2NhdGlvbnMsIHN0cmluZyBzbmlwcGV0LCBzdHJpbmcgaWQsIHN0cmluZyB0b29sRmluZ2VycHJpbnRDb250cmlidXRpb24sIElFbnVtZXJhYmxlPFN0YWNrVmVyc2lvbk9uZT4gc3RhY2tzLCBJRW51bWVyYWJsZTxDb2RlRmxvd1ZlcnNpb25PbmU+IGNvZGVGbG93cywgSUVudW1lcmFibGU8QW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZT4gcmVsYXRlZExvY2F0aW9ucywgU3VwcHJlc3Npb25TdGF0ZXNWZXJzaW9uT25lIHN1cHByZXNzaW9uU3RhdGVzLCBCYXNlbGluZVN0YXRlVmVyc2lvbk9uZSBiYXNlbGluZVN0YXRlLCBJRW51bWVyYWJsZTxGaXhWZXJzaW9uT25lPiBmaXhlcywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KHJ1bGVJZCwgcnVsZUtleSwgbGV2ZWwsIG1lc3NhZ2UsIGZvcm1hdHRlZFJ1bGVNZXNzYWdlLCBsb2NhdGlvbnMsIHNuaXBwZXQsIGlkLCB0b29sRmluZ2VycHJpbnRDb250cmlidXRpb24sIHN0YWNrcywgY29kZUZsb3dzLCByZWxhdGVkTG9jYXRpb25zLCBzdXBwcmVzc2lvblN0YXRlcywgYmFzZWxpbmVTdGF0ZSwgZml4ZXMsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUmVzdWx0VmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgUmVzdWx0VmVyc2lvbk9uZShSZXN1bHRWZXJzaW9uT25lIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLlJ1bGVJZCwgb3RoZXIuUnVsZUtleSwgb3RoZXIuTGV2ZWwsIG90aGVyLk1lc3NhZ2UsIG90aGVyLkZvcm1hdHRlZFJ1bGVNZXNzYWdlLCBvdGhlci5Mb2NhdGlvbnMsIG90aGVyLlNuaXBwZXQsIG90aGVyLklkLCBvdGhlci5Ub29sRmluZ2VycHJpbnRDb250cmlidXRpb24sIG90aGVyLlN0YWNrcywgb3RoZXIuQ29kZUZsb3dzLCBvdGhlci5SZWxhdGVkTG9jYXRpb25zLCBvdGhlci5TdXBwcmVzc2lvblN0YXRlcywgb3RoZXIuQmFzZWxpbmVTdGF0ZSwgb3RoZXIuRml4ZXMsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJlc3VsdFZlcnNpb25PbmUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChSZXN1bHRWZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgUmVzdWx0VmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBydWxlSWQsIHN0cmluZyBydWxlS2V5LCBSZXN1bHRMZXZlbFZlcnNpb25PbmUgbGV2ZWwsIHN0cmluZyBtZXNzYWdlLCBGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUgZm9ybWF0dGVkUnVsZU1lc3NhZ2UsIElFbnVtZXJhYmxlPExvY2F0aW9uVmVyc2lvbk9uZT4gbG9jYXRpb25zLCBzdHJpbmcgc25pcHBldCwgc3RyaW5nIGlkLCBzdHJpbmcgdG9vbEZpbmdlcnByaW50Q29udHJpYnV0aW9uLCBJRW51bWVyYWJsZTxTdGFja1ZlcnNpb25PbmU+IHN0YWNrcywgSUVudW1lcmFibGU8Q29kZUZsb3dWZXJzaW9uT25lPiBjb2RlRmxvd3MsIElFbnVtZXJhYmxlPEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU+IHJlbGF0ZWRMb2NhdGlvbnMsIFN1cHByZXNzaW9uU3RhdGVzVmVyc2lvbk9uZSBzdXBwcmVzc2lvblN0YXRlcywgQmFzZWxpbmVTdGF0ZVZlcnNpb25PbmUgYmFzZWxpbmVTdGF0ZSwgSUVudW1lcmFibGU8Rml4VmVyc2lvbk9uZT4gZml4ZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgUnVsZUlkID0gcnVsZUlkOw0KICAgICAgICAgICAgUnVsZUtleSA9IHJ1bGVLZXk7DQogICAgICAgICAgICBMZXZlbCA9IGxldmVsOw0KICAgICAgICAgICAgTWVzc2FnZSA9IG1lc3NhZ2U7DQogICAgICAgICAgICBpZiAoZm9ybWF0dGVkUnVsZU1lc3NhZ2UgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGb3JtYXR0ZWRSdWxlTWVzc2FnZSA9IG5ldyBGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUoZm9ybWF0dGVkUnVsZU1lc3NhZ2UpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxMb2NhdGlvblZlcnNpb25PbmU+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgTG9jYXRpb25WZXJzaW9uT25lKHZhbHVlXzApKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIExvY2F0aW9ucyA9IGRlc3RpbmF0aW9uXzA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFNuaXBwZXQgPSBzbmlwcGV0Ow0KICAgICAgICAgICAgSWQgPSBpZDsNCiAgICAgICAgICAgIFRvb2xGaW5nZXJwcmludENvbnRyaWJ1dGlvbiA9IHRvb2xGaW5nZXJwcmludENvbnRyaWJ1dGlvbjsNCiAgICAgICAgICAgIGlmIChzdGFja3MgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMSA9IG5ldyBMaXN0PFN0YWNrVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiBzdGFja3MpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMSA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzEuQWRkKG5ldyBTdGFja1ZlcnNpb25PbmUodmFsdWVfMSkpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgU3RhY2tzID0gZGVzdGluYXRpb25fMTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNvZGVGbG93cyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8yID0gbmV3IExpc3Q8Q29kZUZsb3dWZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIGNvZGVGbG93cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8yID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzIuQWRkKG51bGwpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMi5BZGQobmV3IENvZGVGbG93VmVyc2lvbk9uZSh2YWx1ZV8yKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBDb2RlRmxvd3MgPSBkZXN0aW5hdGlvbl8yOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocmVsYXRlZExvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8zID0gbmV3IExpc3Q8QW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMyBpbiByZWxhdGVkTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMy5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8zLkFkZChuZXcgQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZSh2YWx1ZV8zKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBSZWxhdGVkTG9jYXRpb25zID0gZGVzdGluYXRpb25fMzsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgU3VwcHJlc3Npb25TdGF0ZXMgPSBzdXBwcmVzc2lvblN0YXRlczsNCiAgICAgICAgICAgIEJhc2VsaW5lU3RhdGUgPSBiYXNlbGluZVN0YXRlOw0KICAgICAgICAgICAgaWYgKGZpeGVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzQgPSBuZXcgTGlzdDxGaXhWZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV80IGluIGZpeGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzQgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fNC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl80LkFkZChuZXcgRml4VmVyc2lvbk9uZSh2YWx1ZV80KSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBGaXhlcyA9IGRlc3RpbmF0aW9uXzQ7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgUHJvcGVydGllcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4ocHJvcGVydGllcyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1800",
+ "message": {
+ "text": "'obj', a parameter, is cast to type 'JToken' multiple times in method 'JTokenEqualityComparer.NullEquals(object)'. Cache the result of the 'as' operator or direct cast in order to eliminate the redundant isint instruction.",
+ "id": "Parameter"
},
- "hashes": [
- {
- "value": "D18A2F38B3A64107CFE31B13E5481854",
- "algorithm": "md5"
- },
- {
- "value": "69ED9DE46C2B1168E84A70B5B82077E4C12ABB25",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "41AD86076F08A4CF1CE7B56A78F089E4ECB66A9B18EAC4400D9263343D5D1235",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 109,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.JTokenEqualityComparer.NullEquals(System.Object)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Parameter"
+ },
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/ResultVersionOneEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmVyc2lvbk9uZQ0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gRGVmaW5lcyBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0eXBlIFJlc3VsdFZlcnNpb25PbmUgZm9yIGVxdWFsaXR5Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBSZXN1bHRWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlciA6IElFcXVhbGl0eUNvbXBhcmVyPFJlc3VsdFZlcnNpb25PbmU+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgUmVzdWx0VmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIgSW5zdGFuY2UgPSBuZXcgUmVzdWx0VmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoUmVzdWx0VmVyc2lvbk9uZSBsZWZ0LCBSZXN1bHRWZXJzaW9uT25lIHJpZ2h0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIHJpZ2h0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCBudWxsKSB8fCBSZWZlcmVuY2VFcXVhbHMocmlnaHQsIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuUnVsZUlkICE9IHJpZ2h0LlJ1bGVJZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlJ1bGVLZXkgIT0gcmlnaHQuUnVsZUtleSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkxldmVsICE9IHJpZ2h0LkxldmVsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTWVzc2FnZSAhPSByaWdodC5NZXNzYWdlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5Gb3JtYXR0ZWRSdWxlTWVzc2FnZSwgcmlnaHQuRm9ybWF0dGVkUnVsZU1lc3NhZ2UpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuTG9jYXRpb25zLCByaWdodC5Mb2NhdGlvbnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkxvY2F0aW9ucyA9PSBudWxsIHx8IHJpZ2h0LkxvY2F0aW9ucyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkxvY2F0aW9ucy5Db3VudCAhPSByaWdodC5Mb2NhdGlvbnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBsZWZ0LkxvY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFMb2NhdGlvblZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5Mb2NhdGlvbnNbaW5kZXhfMF0sIHJpZ2h0LkxvY2F0aW9uc1tpbmRleF8wXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuU25pcHBldCAhPSByaWdodC5TbmlwcGV0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuSWQgIT0gcmlnaHQuSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5Ub29sRmluZ2VycHJpbnRDb250cmlidXRpb24gIT0gcmlnaHQuVG9vbEZpbmdlcnByaW50Q29udHJpYnV0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuU3RhY2tzLCByaWdodC5TdGFja3MpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlN0YWNrcyA9PSBudWxsIHx8IHJpZ2h0LlN0YWNrcyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlN0YWNrcy5Db3VudCAhPSByaWdodC5TdGFja3MuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMSA9IDA7IGluZGV4XzEgPCBsZWZ0LlN0YWNrcy5Db3VudDsgKytpbmRleF8xKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFTdGFja1ZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5TdGFja3NbaW5kZXhfMV0sIHJpZ2h0LlN0YWNrc1tpbmRleF8xXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuQ29kZUZsb3dzLCByaWdodC5Db2RlRmxvd3MpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkNvZGVGbG93cyA9PSBudWxsIHx8IHJpZ2h0LkNvZGVGbG93cyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkNvZGVGbG93cy5Db3VudCAhPSByaWdodC5Db2RlRmxvd3MuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMiA9IDA7IGluZGV4XzIgPCBsZWZ0LkNvZGVGbG93cy5Db3VudDsgKytpbmRleF8yKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFDb2RlRmxvd1ZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5Db2RlRmxvd3NbaW5kZXhfMl0sIHJpZ2h0LkNvZGVGbG93c1tpbmRleF8yXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUmVsYXRlZExvY2F0aW9ucywgcmlnaHQuUmVsYXRlZExvY2F0aW9ucykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUmVsYXRlZExvY2F0aW9ucyA9PSBudWxsIHx8IHJpZ2h0LlJlbGF0ZWRMb2NhdGlvbnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5SZWxhdGVkTG9jYXRpb25zLkNvdW50ICE9IHJpZ2h0LlJlbGF0ZWRMb2NhdGlvbnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMyA9IDA7IGluZGV4XzMgPCBsZWZ0LlJlbGF0ZWRMb2NhdGlvbnMuQ291bnQ7ICsraW5kZXhfMykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghQW5ub3RhdGVkQ29kZUxvY2F0aW9uVmVyc2lvbk9uZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlJlbGF0ZWRMb2NhdGlvbnNbaW5kZXhfM10sIHJpZ2h0LlJlbGF0ZWRMb2NhdGlvbnNbaW5kZXhfM10pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlN1cHByZXNzaW9uU3RhdGVzICE9IHJpZ2h0LlN1cHByZXNzaW9uU3RhdGVzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQmFzZWxpbmVTdGF0ZSAhPSByaWdodC5CYXNlbGluZVN0YXRlKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuRml4ZXMsIHJpZ2h0LkZpeGVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5GaXhlcyA9PSBudWxsIHx8IHJpZ2h0LkZpeGVzID09IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKGxlZnQuRml4ZXMuQ291bnQgIT0gcmlnaHQuRml4ZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfNCA9IDA7IGluZGV4XzQgPCBsZWZ0LkZpeGVzLkNvdW50OyArK2luZGV4XzQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIUZpeFZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHMobGVmdC5GaXhlc1tpbmRleF80XSwgcmlnaHQuRml4ZXNbaW5kZXhfNF0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlByb3BlcnRpZXMsIHJpZ2h0LlByb3BlcnRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCByaWdodC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgbGVmdC5Qcm9wZXJ0aWVzLkNvdW50ICE9IHJpZ2h0LlByb3BlcnRpZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFByb3BlcnR5SW5mbyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlByb3BlcnRpZXMuVHJ5R2V0VmFsdWUodmFsdWVfMC5LZXksIG91dCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QuRXF1YWxzKHZhbHVlXzAuVmFsdWUsIHZhbHVlXzEpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShSZXN1bHRWZXJzaW9uT25lIG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJ1bGVJZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5SdWxlSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlJ1bGVLZXkgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouUnVsZUtleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTGV2ZWwuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLk1lc3NhZ2UgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouTWVzc2FnZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRm9ybWF0dGVkUnVsZU1lc3NhZ2UgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRm9ybWF0dGVkUnVsZU1lc3NhZ2UuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMiBpbiBvYmouTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8yICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzIuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5TbmlwcGV0ICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlNuaXBwZXQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLklkICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLklkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Ub29sRmluZ2VycHJpbnRDb250cmlidXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouVG9vbEZpbmdlcnByaW50Q29udHJpYnV0aW9uLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5TdGFja3MgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8zIGluIG9iai5TdGFja3MpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMy5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkNvZGVGbG93cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzQgaW4gb2JqLkNvZGVGbG93cykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzE7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB2YWx1ZV80LlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUmVsYXRlZExvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzUgaW4gb2JqLlJlbGF0ZWRMb2NhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfNS5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlN1cHByZXNzaW9uU3RhdGVzLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5CYXNlbGluZVN0YXRlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgaWYgKG9iai5GaXhlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzYgaW4gb2JqLkZpeGVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAzMTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV82ICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzYuVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Qcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV83IGluIG9iai5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV83LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzcuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV83LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1053",
+ "level": "error",
+ "message": {
+ "text": "Because type 'ResultFactory' contains only 'static' ('Shared' in Visual Basic) members, add a default private constructor to prevent the compiler from adding a default public constructor."
},
- "hashes": [
- {
- "value": "ECFE3607D5DEA21D4245F621BBEC765E",
- "algorithm": "md5"
- },
- {
- "value": "4361429C9B74A624F517D3C65FF1D36868F2676D",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "2AACF8DC73F658B489D1DF16F8DE91F5865A06A00943792ED595840339F6686C",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 110,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.ResultFactory"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/RuleVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlc2NyaWJlcyBhbiBhbmFseXNpcyBydWxlLg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTIuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgUnVsZVZlcnNpb25PbmUgOiBQcm9wZXJ0eUJhZ0hvbGRlclZlcnNpb25PbmUsIElSdWxlVmVyc2lvbk9uZSwgSVNhcmlmTm9kZVZlcnNpb25PbmUNCiAgICB7DQogICAgICAgIHB1YmxpYyBzdGF0aWMgSUVxdWFsaXR5Q29tcGFyZXI8UnVsZVZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gUnVsZVZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKFJ1bGVWZXJzaW9uT25lIG90aGVyKSA9PiBWYWx1ZUNvbXBhcmVyLkVxdWFscyh0aGlzLCBvdGhlcik7DQogICAgICAgIHB1YmxpYyBpbnQgVmFsdWVHZXRIYXNoQ29kZSgpID0+IFZhbHVlQ29tcGFyZXIuR2V0SGFzaENvZGUodGhpcyk7DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHR5cGUgb2Ygb2JqZWN0IGltcGxlbWVudGluZyA8c2VlIGNyZWY9IklTYXJpZk5vZGVWZXJzaW9uT25lIiAvPi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lDQogICAgICAgIHsNCiAgICAgICAgICAgIGdldA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5SdWxlVmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RhYmxlLCBvcGFxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJ1bGUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaWQiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgcnVsZSBpZGVudGlmaWVyIHRoYXQgaXMgdW5kZXJzdGFuZGFibGUgdG8gYW4gZW5kIHVzZXIuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibmFtZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGNvbmNpc2UgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bGUuIFNob3VsZCBiZSBhIHNpbmdsZSBzZW50ZW5jZSB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIHdoZW4gdmlzaWJsZSBzcGFjZSBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIGxpbmUgb2YgdGV4dC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzaG9ydERlc2NyaXB0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFNob3J0RGVzY3JpcHRpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RyaW5nIHRoYXQgZGVzY3JpYmVzIHRoZSBydWxlLiBTaG91bGQsIGFzIGZhciBhcyBwb3NzaWJsZSwgcHJvdmlkZSBkZXRhaWxzIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHJlc29sdXRpb24gb2YgYW55IHByb2JsZW0gaW5kaWNhdGVkIGJ5IHRoZSByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZnVsbERlc2NyaXB0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEZ1bGxEZXNjcmlwdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzZXQgb2YgbmFtZS92YWx1ZSBwYWlycyB3aXRoIGFyYml0cmFyeSBuYW1lcy4gVGhlIHZhbHVlIHdpdGhpbiBlYWNoIG5hbWUvdmFsdWUgcGFpciBzaGFsbCBjb25zaXN0IG9mIHBsYWluIHRleHQgaW50ZXJzcGVyc2VkIHdpdGggcGxhY2Vob2xkZXJzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBmb3JtYXQgYSBtZXNzYWdlIGluIGNvbWJpbmF0aW9uIHdpdGggYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBhZGRpdGlvbmFsIHN0cmluZyBhcmd1bWVudHMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibWVzc2FnZUZvcm1hdHMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gTWVzc2FnZUZvcm1hdHMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgdmFsdWUgc3BlY2lmeWluZyB3aGV0aGVyIGEgcnVsZSBpcyBlbmFibGVkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvbmZpZ3VyYXRpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBSdWxlQ29uZmlndXJhdGlvblZlcnNpb25PbmUgQ29uZmlndXJhdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IHNldmVyaXR5IGxldmVsIG9mIHRoZSByZXN1bHQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZGVmYXVsdExldmVsIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgUmVzdWx0TGV2ZWxWZXJzaW9uT25lIERlZmF1bHRMZXZlbCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBVUkkgd2hlcmUgdGhlIHByaW1hcnkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHJ1bGUgY2FuIGJlIGZvdW5kLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImhlbHBVcmkiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBVcmkgSGVscFVyaSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBydWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUnVsZVZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgUnVsZVZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdWxlVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im5hbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE5hbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzaG9ydERlc2NyaXB0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTaG9ydERlc2NyaXB0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZnVsbERlc2NyaXB0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGdWxsRGVzY3JpcHRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlRm9ybWF0cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWVzc2FnZUZvcm1hdHMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJjb25maWd1cmF0aW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBDb25maWd1cmF0aW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZGVmYXVsdExldmVsIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBEZWZhdWx0TGV2ZWwiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJoZWxwVXJpIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBIZWxwVXJpIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgUnVsZVZlcnNpb25PbmUoc3RyaW5nIGlkLCBzdHJpbmcgbmFtZSwgc3RyaW5nIHNob3J0RGVzY3JpcHRpb24sIHN0cmluZyBmdWxsRGVzY3JpcHRpb24sIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBtZXNzYWdlRm9ybWF0cywgUnVsZUNvbmZpZ3VyYXRpb25WZXJzaW9uT25lIGNvbmZpZ3VyYXRpb24sIFJlc3VsdExldmVsVmVyc2lvbk9uZSBkZWZhdWx0TGV2ZWwsIFVyaSBoZWxwVXJpLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoaWQsIG5hbWUsIHNob3J0RGVzY3JpcHRpb24sIGZ1bGxEZXNjcmlwdGlvbiwgbWVzc2FnZUZvcm1hdHMsIGNvbmZpZ3VyYXRpb24sIGRlZmF1bHRMZXZlbCwgaGVscFVyaSwgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdWxlVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgUnVsZVZlcnNpb25PbmUoUnVsZVZlcnNpb25PbmUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuSWQsIG90aGVyLk5hbWUsIG90aGVyLlNob3J0RGVzY3JpcHRpb24sIG90aGVyLkZ1bGxEZXNjcmlwdGlvbiwgb3RoZXIuTWVzc2FnZUZvcm1hdHMsIG90aGVyLkNvbmZpZ3VyYXRpb24sIG90aGVyLkRlZmF1bHRMZXZlbCwgb3RoZXIuSGVscFVyaSwgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgUnVsZVZlcnNpb25PbmUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChSdWxlVmVyc2lvbk9uZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGVWZXJzaW9uT25lIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFJ1bGVWZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIGlkLCBzdHJpbmcgbmFtZSwgc3RyaW5nIHNob3J0RGVzY3JpcHRpb24sIHN0cmluZyBmdWxsRGVzY3JpcHRpb24sIElEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPiBtZXNzYWdlRm9ybWF0cywgUnVsZUNvbmZpZ3VyYXRpb25WZXJzaW9uT25lIGNvbmZpZ3VyYXRpb24sIFJlc3VsdExldmVsVmVyc2lvbk9uZSBkZWZhdWx0TGV2ZWwsIFVyaSBoZWxwVXJpLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIElkID0gaWQ7DQogICAgICAgICAgICBOYW1lID0gbmFtZTsNCiAgICAgICAgICAgIFNob3J0RGVzY3JpcHRpb24gPSBzaG9ydERlc2NyaXB0aW9uOw0KICAgICAgICAgICAgRnVsbERlc2NyaXB0aW9uID0gZnVsbERlc2NyaXB0aW9uOw0KICAgICAgICAgICAgaWYgKG1lc3NhZ2VGb3JtYXRzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTWVzc2FnZUZvcm1hdHMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4obWVzc2FnZUZvcm1hdHMpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBDb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjsNCiAgICAgICAgICAgIERlZmF1bHRMZXZlbCA9IGRlZmF1bHRMZXZlbDsNCiAgICAgICAgICAgIGlmIChoZWxwVXJpICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgSGVscFVyaSA9IG5ldyBVcmkoaGVscFVyaS5PcmlnaW5hbFN0cmluZywgaGVscFVyaS5Jc0Fic29sdXRlVXJpID8gVXJpS2luZC5BYnNvbHV0ZSA6IFVyaUtpbmQuUmVsYXRpdmUpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1704",
+ "message": {
+ "text": "In method 'ResultFactory.CreateResult(JToken, ErrorNumber, object[])', correct the spelling of 'j' in parameter name 'jToken' or remove it entirely if it represents any sort of Hungarian notation.",
+ "id": "MemberParameter"
},
- "hashes": [
- {
- "value": "AF94BA1B2417B01BD8FF5A538BAEDF8B",
- "algorithm": "md5"
- },
- {
- "value": "DF8390693EEFF2C45DFA144E9BFFECA6819EEE9A",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "C37FA4281D090A49BAF1CD95490A8338B4489DB2FA97D6FC8EB24989CB1DB813",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 111,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.ResultFactory.CreateResult(Newtonsoft.Json.Linq.JToken,Microsoft.Json.Schema.ErrorNumber,System.Object[])"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "j#MemberParameter"
+ },
+ "properties": {
+ "Level": "CriticalWarning",
+ "Category": "Microsoft.Naming",
+ "FixCategory": "Breaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/RuleVersionOneEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmVyc2lvbk9uZQ0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gRGVmaW5lcyBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0eXBlIFJ1bGVWZXJzaW9uT25lIGZvciBlcXVhbGl0eS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgUnVsZVZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyIDogSUVxdWFsaXR5Q29tcGFyZXI8UnVsZVZlcnNpb25PbmU+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgUnVsZVZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyIEluc3RhbmNlID0gbmV3IFJ1bGVWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhSdWxlVmVyc2lvbk9uZSBsZWZ0LCBSdWxlVmVyc2lvbk9uZSByaWdodCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCByaWdodCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgbnVsbCkgfHwgUmVmZXJlbmNlRXF1YWxzKHJpZ2h0LCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LklkICE9IHJpZ2h0LklkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTmFtZSAhPSByaWdodC5OYW1lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuU2hvcnREZXNjcmlwdGlvbiAhPSByaWdodC5TaG9ydERlc2NyaXB0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuRnVsbERlc2NyaXB0aW9uICE9IHJpZ2h0LkZ1bGxEZXNjcmlwdGlvbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0Lk1lc3NhZ2VGb3JtYXRzLCByaWdodC5NZXNzYWdlRm9ybWF0cykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuTWVzc2FnZUZvcm1hdHMgPT0gbnVsbCB8fCByaWdodC5NZXNzYWdlRm9ybWF0cyA9PSBudWxsIHx8IGxlZnQuTWVzc2FnZUZvcm1hdHMuQ291bnQgIT0gcmlnaHQuTWVzc2FnZUZvcm1hdHMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzAgaW4gbGVmdC5NZXNzYWdlRm9ybWF0cykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHN0cmluZyB2YWx1ZV8xOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0Lk1lc3NhZ2VGb3JtYXRzLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8wLlZhbHVlICE9IHZhbHVlXzEpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQ29uZmlndXJhdGlvbiAhPSByaWdodC5Db25maWd1cmF0aW9uKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuRGVmYXVsdExldmVsICE9IHJpZ2h0LkRlZmF1bHRMZXZlbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkhlbHBVcmkgIT0gcmlnaHQuSGVscFVyaSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlByb3BlcnRpZXMsIHJpZ2h0LlByb3BlcnRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCByaWdodC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgbGVmdC5Qcm9wZXJ0aWVzLkNvdW50ICE9IHJpZ2h0LlByb3BlcnRpZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzIgaW4gbGVmdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFByb3BlcnR5SW5mbyB2YWx1ZV8zOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlByb3BlcnRpZXMuVHJ5R2V0VmFsdWUodmFsdWVfMi5LZXksIG91dCB2YWx1ZV8zKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QuRXF1YWxzKHZhbHVlXzIuVmFsdWUsIHZhbHVlXzMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShSdWxlVmVyc2lvbk9uZSBvYmopDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMob2JqLCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaW50IHJlc3VsdCA9IDE3Ow0KICAgICAgICAgICAgdW5jaGVja2VkDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG9iai5JZCAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5JZC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouTmFtZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5OYW1lLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5TaG9ydERlc2NyaXB0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlNob3J0RGVzY3JpcHRpb24uR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkZ1bGxEZXNjcmlwdGlvbiAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5GdWxsRGVzY3JpcHRpb24uR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLk1lc3NhZ2VGb3JtYXRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV80IGluIG9iai5NZXNzYWdlRm9ybWF0cykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV80LlZhbHVlICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzAgXj0gdmFsdWVfNC5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8wOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouQ29uZmlndXJhdGlvbi5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouRGVmYXVsdExldmVsLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgaWYgKG9iai5IZWxwVXJpICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkhlbHBVcmkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8xID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzUgaW4gb2JqLlByb3BlcnRpZXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8xIF49IHZhbHVlXzUuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfNS5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8xIF49IHZhbHVlXzUuVmFsdWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyB4b3JfMTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7DQogICAgICAgIH0NCiAgICB9DQp9"
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'ResultFactory.CreateResult(JToken, ErrorNumber, object[])', validate parameter 'jToken' before using it."
},
- "hashes": [
- {
- "value": "6B1097B1687AF2B42E046F3257820004",
- "algorithm": "md5"
- },
- {
- "value": "DCDABAEE55720B8D2117F0878CF0F00CD0A1DDE0",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "F90A07181F121ED36CDDEFD9E41780F14B191B7FDD1A5A7AF652CF4399DE2EAF",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 111,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.ResultFactory.CreateResult(Newtonsoft.Json.Linq.JToken,Microsoft.Json.Schema.ErrorNumber,System.Object[])"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/RunVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIERlc2NyaWJlcyBhIHNpbmdsZSBydW4gb2YgYW4gYW5hbHlzaXMgdG9vbCwgYW5kIGNvbnRhaW5zIHRoZSBvdXRwdXQgb2YgdGhhdCBydW4uDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBSdW5WZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFJ1blZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gUnVuVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIuSW5zdGFuY2U7DQoNCiAgICAgICAgcHVibGljIGJvb2wgVmFsdWVFcXVhbHMoUnVuVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuUnVuVmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluZm9ybWF0aW9uIGFib3V0IHRoZSB0b29sIG9yIHRvb2wgcGlwZWxpbmUgdGhhdCBnZW5lcmF0ZWQgdGhlIHJlc3VsdHMgaW4gdGhpcyBydW4uIEEgcnVuIGNhbiBvbmx5IGNvbnRhaW4gcmVzdWx0cyBwcm9kdWNlZCBieSBhIHNpbmdsZSB0b29sIG9yIHRvb2wgcGlwZWxpbmUuIEEgcnVuIGNhbiBhZ2dyZWdhdGUgcmVzdWx0cyBmcm9tIG11bHRpcGxlIGxvZyBmaWxlcywgYXMgbG9uZyBhcyBjb250ZXh0IGFyb3VuZCB0aGUgdG9vbCBydW4gKHRvb2wgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBhbmQgdGhlIGxpa2UpIGlzIGlkZW50aWNhbCBmb3IgYWxsIGFnZ3JlZ2F0ZWQgZmlsZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidG9vbCIsIElzUmVxdWlyZWQgPSB0cnVlKV0NCiAgICAgICAgcHVibGljIFRvb2xWZXJzaW9uT25lIFRvb2wgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIERlc2NyaWJlcyB0aGUgcnVudGltZSBlbnZpcm9ubWVudCwgaW5jbHVkaW5nIHBhcmFtZXRlcml6YXRpb24sIG9mIHRoZSBhbmFseXNpcyB0b29sIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJpbnZvY2F0aW9uIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSW52b2NhdGlvblZlcnNpb25PbmUgSW52b2NhdGlvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBkaWN0aW9uYXJ5LCBlYWNoIG9mIHdob3NlIGtleXMgaXMgYSBVUkkgYW5kIGVhY2ggb2Ygd2hvc2UgdmFsdWVzIGlzIGFuIGFycmF5IG9mIGZpbGUgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIGxvY2F0aW9uIG9mIGEgc2luZ2xlIGZpbGUgc2Nhbm5lZCBkdXJpbmcgdGhlIHJ1bi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmaWxlcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGFWZXJzaW9uT25lPiBGaWxlcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBkaWN0aW9uYXJ5LCBlYWNoIG9mIHdob3NlIGtleXMgc3BlY2lmaWVzIGEgbG9naWNhbCBsb2NhdGlvbiBzdWNoIGFzIGEgbmFtZXNwYWNlLCB0eXBlIG9yIGZ1bmN0aW9uLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxvZ2ljYWxMb2NhdGlvbnMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJRGljdGlvbmFyeTxzdHJpbmcsIExvZ2ljYWxMb2NhdGlvblZlcnNpb25PbmU+IExvZ2ljYWxMb2NhdGlvbnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzZXQgb2YgcmVzdWx0cyBjb250YWluZWQgaW4gYW4gU0FSSUYgbG9nLiBUaGUgcmVzdWx0cyBhcnJheSBjYW4gYmUgb21pdHRlZCB3aGVuIGEgcnVuIGlzIHNvbGVseSBleHBvcnRpbmcgcnVsZXMgbWV0YWRhdGEuIEl0IG11c3QgYmUgcHJlc2VudCAoYnV0IG1heSBiZSBlbXB0eSkgaW4gdGhlIGV2ZW50IHRoYXQgYSBsb2cgZmlsZSByZXByZXNlbnRzIGFuIGFjdHVhbCBzY2FuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJlc3VsdHMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxSZXN1bHRWZXJzaW9uT25lPiBSZXN1bHRzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGxpc3Qgb2YgcnVudGltZSBjb25kaXRpb25zIGRldGVjdGVkIGJ5IHRoZSB0b29sIGluIHRoZSBjb3Vyc2Ugb2YgdGhlIGFuYWx5c2lzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInRvb2xOb3RpZmljYXRpb25zIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8Tm90aWZpY2F0aW9uVmVyc2lvbk9uZT4gVG9vbE5vdGlmaWNhdGlvbnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgbGlzdCBvZiBjb25kaXRpb25zIGRldGVjdGVkIGJ5IHRoZSB0b29sIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoZSB0b29sJ3MgY29uZmlndXJhdGlvbi4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJjb25maWd1cmF0aW9uTm90aWZpY2F0aW9ucyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIElMaXN0PE5vdGlmaWNhdGlvblZlcnNpb25PbmU+IENvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGRpY3Rpb25hcnksIGVhY2ggb2Ygd2hvc2Uga2V5cyBpcyBhIHN0cmluZyBhbmQgZWFjaCBvZiB3aG9zZSB2YWx1ZXMgaXMgYSAncnVsZScgb2JqZWN0LCB0aGF0IGRlc2NyaWJlIGFsbCBydWxlcyBhc3NvY2lhdGVkIHdpdGggYW4gYW5hbHlzaXMgdG9vbCBvciBhIHNwZWNpZmljIHJ1biBvZiBhbiBhbmFseXNpcyB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInJ1bGVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgSURpY3Rpb25hcnk8c3RyaW5nLCBSdWxlVmVyc2lvbk9uZT4gUnVsZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBydW4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiaWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgc3RhYmxlIGlkZW50aWZpZXIgZm9yIGEgcnVuLCBmb3IgZXhhbXBsZSwgJ25pZ2h0bHkgQ2xhbmcgYW5hbHl6ZXIgcnVuJy4gTXVsdGlwbGUgcnVucyBvZiB0aGUgc2FtZSB0eXBlIGNhbiBoYXZlIHRoZSBzYW1lIHN0YWJsZUlkLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInN0YWJsZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFN0YWJsZUlkIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIGdsb2JhbCBpZGVudGlmaWVyIHRoYXQgYWxsb3dzIHRoZSBydW4gdG8gYmUgY29ycmVsYXRlZCB3aXRoIG90aGVyIGFydGlmYWN0cyBwcm9kdWNlZCBieSBhIGxhcmdlciBhdXRvbWF0aW9uIHByb2Nlc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiYXV0b21hdGlvbklkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEF1dG9tYXRpb25JZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlICdpZCcgcHJvcGVydHkgb2YgYSBzZXBhcmF0ZSAocG90ZW50aWFsbHkgZXh0ZXJuYWwpIFNBUklGICdydW4nIGluc3RhbmNlIHRoYXQgY29tcHJpc2VzIHRoZSBiYXNlbGluZSB0aGF0IHdhcyB1c2VkIHRvIGNvbXB1dGUgcmVzdWx0ICdiYXNlbGluZVN0YXRlJyBwcm9wZXJ0aWVzIGZvciB0aGUgcnVuLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImJhc2VsaW5lSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgQmFzZWxpbmVJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSBmb3Igd2hpY2ggdGhlIHJ1biB3YXMgdGFyZ2V0ZWQuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiYXJjaGl0ZWN0dXJlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIEFyY2hpdGVjdHVyZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBydW4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdW5WZXJzaW9uT25lIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFJ1blZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJSdW5WZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idG9vbCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVG9vbCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Imludm9jYXRpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEludm9jYXRpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmaWxlcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmlsZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2dpY2FsTG9jYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMb2dpY2FsTG9jYXRpb25zIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icmVzdWx0cyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUmVzdWx0cyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRvb2xOb3RpZmljYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUb29sTm90aWZpY2F0aW9ucyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBDb25maWd1cmF0aW9uTm90aWZpY2F0aW9ucyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1bGVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBSdWxlcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InN0YWJsZUlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTdGFibGVJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImF1dG9tYXRpb25JZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQXV0b21hdGlvbklkIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iYmFzZWxpbmVJZCI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQmFzZWxpbmVJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFyY2hpdGVjdHVyZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogQXJjaGl0ZWN0dXJlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0icHJvcGVydGllcyI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogUHJvcGVydGllcyIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICBwdWJsaWMgUnVuVmVyc2lvbk9uZShUb29sVmVyc2lvbk9uZSB0b29sLCBJbnZvY2F0aW9uVmVyc2lvbk9uZSBpbnZvY2F0aW9uLCBJRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhVmVyc2lvbk9uZT4gZmlsZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZT4gbG9naWNhbExvY2F0aW9ucywgSUVudW1lcmFibGU8UmVzdWx0VmVyc2lvbk9uZT4gcmVzdWx0cywgSUVudW1lcmFibGU8Tm90aWZpY2F0aW9uVmVyc2lvbk9uZT4gdG9vbE5vdGlmaWNhdGlvbnMsIElFbnVtZXJhYmxlPE5vdGlmaWNhdGlvblZlcnNpb25PbmU+IGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zLCBJRGljdGlvbmFyeTxzdHJpbmcsIFJ1bGVWZXJzaW9uT25lPiBydWxlcywgc3RyaW5nIGlkLCBzdHJpbmcgc3RhYmxlSWQsIHN0cmluZyBhdXRvbWF0aW9uSWQsIHN0cmluZyBiYXNlbGluZUlkLCBzdHJpbmcgYXJjaGl0ZWN0dXJlLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQodG9vbCwgaW52b2NhdGlvbiwgZmlsZXMsIGxvZ2ljYWxMb2NhdGlvbnMsIHJlc3VsdHMsIHRvb2xOb3RpZmljYXRpb25zLCBjb25maWd1cmF0aW9uTm90aWZpY2F0aW9ucywgcnVsZXMsIGlkLCBzdGFibGVJZCwgYXV0b21hdGlvbklkLCBiYXNlbGluZUlkLCBhcmNoaXRlY3R1cmUsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iUnVuVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgUnVuVmVyc2lvbk9uZShSdW5WZXJzaW9uT25lIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLlRvb2wsIG90aGVyLkludm9jYXRpb24sIG90aGVyLkZpbGVzLCBvdGhlci5Mb2dpY2FsTG9jYXRpb25zLCBvdGhlci5SZXN1bHRzLCBvdGhlci5Ub29sTm90aWZpY2F0aW9ucywgb3RoZXIuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMsIG90aGVyLlJ1bGVzLCBvdGhlci5JZCwgb3RoZXIuU3RhYmxlSWQsIG90aGVyLkF1dG9tYXRpb25JZCwgb3RoZXIuQmFzZWxpbmVJZCwgb3RoZXIuQXJjaGl0ZWN0dXJlLCBvdGhlci5Qcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIElTYXJpZk5vZGVWZXJzaW9uT25lIElTYXJpZk5vZGVWZXJzaW9uT25lLkRlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIHRoaXMgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBSdW5WZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoUnVuVmVyc2lvbk9uZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGVWZXJzaW9uT25lIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFJ1blZlcnNpb25PbmUodGhpcyk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHZvaWQgSW5pdChUb29sVmVyc2lvbk9uZSB0b29sLCBJbnZvY2F0aW9uVmVyc2lvbk9uZSBpbnZvY2F0aW9uLCBJRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhVmVyc2lvbk9uZT4gZmlsZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZT4gbG9naWNhbExvY2F0aW9ucywgSUVudW1lcmFibGU8UmVzdWx0VmVyc2lvbk9uZT4gcmVzdWx0cywgSUVudW1lcmFibGU8Tm90aWZpY2F0aW9uVmVyc2lvbk9uZT4gdG9vbE5vdGlmaWNhdGlvbnMsIElFbnVtZXJhYmxlPE5vdGlmaWNhdGlvblZlcnNpb25PbmU+IGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zLCBJRGljdGlvbmFyeTxzdHJpbmcsIFJ1bGVWZXJzaW9uT25lPiBydWxlcywgc3RyaW5nIGlkLCBzdHJpbmcgc3RhYmxlSWQsIHN0cmluZyBhdXRvbWF0aW9uSWQsIHN0cmluZyBiYXNlbGluZUlkLCBzdHJpbmcgYXJjaGl0ZWN0dXJlLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmICh0b29sICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgVG9vbCA9IG5ldyBUb29sVmVyc2lvbk9uZSh0b29sKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGludm9jYXRpb24gIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBJbnZvY2F0aW9uID0gbmV3IEludm9jYXRpb25WZXJzaW9uT25lKGludm9jYXRpb24pOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoZmlsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBGaWxlcyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGFWZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGZpbGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgRmlsZXMuQWRkKHZhbHVlXzAuS2V5LCBuZXcgRmlsZURhdGFWZXJzaW9uT25lKHZhbHVlXzAuVmFsdWUpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsb2dpY2FsTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgTG9naWNhbExvY2F0aW9ucyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMSBpbiBsb2dpY2FsTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgTG9naWNhbExvY2F0aW9ucy5BZGQodmFsdWVfMS5LZXksIG5ldyBMb2dpY2FsTG9jYXRpb25WZXJzaW9uT25lKHZhbHVlXzEuVmFsdWUpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChyZXN1bHRzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxSZXN1bHRWZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8yIGluIHJlc3VsdHMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMiA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBSZXN1bHRWZXJzaW9uT25lKHZhbHVlXzIpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFJlc3VsdHMgPSBkZXN0aW5hdGlvbl8wOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAodG9vbE5vdGlmaWNhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVzdGluYXRpb25fMSA9IG5ldyBMaXN0PE5vdGlmaWNhdGlvblZlcnNpb25PbmU+KCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzMgaW4gdG9vbE5vdGlmaWNhdGlvbnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8xLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzEuQWRkKG5ldyBOb3RpZmljYXRpb25WZXJzaW9uT25lKHZhbHVlXzMpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIFRvb2xOb3RpZmljYXRpb25zID0gZGVzdGluYXRpb25fMTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzIgPSBuZXcgTGlzdDxOb3RpZmljYXRpb25WZXJzaW9uT25lPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV80IGluIGNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzQgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMi5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8yLkFkZChuZXcgTm90aWZpY2F0aW9uVmVyc2lvbk9uZSh2YWx1ZV80KSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uTm90aWZpY2F0aW9ucyA9IGRlc3RpbmF0aW9uXzI7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChydWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFJ1bGVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBSdWxlVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNSBpbiBydWxlcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFJ1bGVzLkFkZCh2YWx1ZV81LktleSwgbmV3IFJ1bGVWZXJzaW9uT25lKHZhbHVlXzUuVmFsdWUpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIElkID0gaWQ7DQogICAgICAgICAgICBTdGFibGVJZCA9IHN0YWJsZUlkOw0KICAgICAgICAgICAgQXV0b21hdGlvbklkID0gYXV0b21hdGlvbklkOw0KICAgICAgICAgICAgQmFzZWxpbmVJZCA9IGJhc2VsaW5lSWQ7DQogICAgICAgICAgICBBcmNoaXRlY3R1cmUgPSBhcmNoaXRlY3R1cmU7DQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'RuleExtensions.SetResultFile(this Result, string)', validate parameter 'result' before using it."
},
- "hashes": [
- {
- "value": "98644D166E8B2E263713EED0F1E02DBA",
- "algorithm": "md5"
- },
- {
- "value": "4E53A96014FBA59E0448ADBC2A2EA8AA487DB217",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "242EB12FE363DFE596A6CE00A5EA86442D0D8931F8F560FF05601FE3E8569655",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 113,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.RuleExtensions.SetResultFile(Microsoft.CodeAnalysis.Sarif.Result,System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/RunVersionOneEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmVyc2lvbk9uZQ0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gRGVmaW5lcyBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0eXBlIFJ1blZlcnNpb25PbmUgZm9yIGVxdWFsaXR5Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIGludGVybmFsIHNlYWxlZCBjbGFzcyBSdW5WZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlciA6IElFcXVhbGl0eUNvbXBhcmVyPFJ1blZlcnNpb25PbmU+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgUnVuVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIgSW5zdGFuY2UgPSBuZXcgUnVuVmVyc2lvbk9uZUVxdWFsaXR5Q29tcGFyZXIoKTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBFcXVhbHMoUnVuVmVyc2lvbk9uZSBsZWZ0LCBSdW5WZXJzaW9uT25lIHJpZ2h0KQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKGxlZnQsIHJpZ2h0KSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCBudWxsKSB8fCBSZWZlcmVuY2VFcXVhbHMocmlnaHQsIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFUb29sVmVyc2lvbk9uZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlRvb2wsIHJpZ2h0LlRvb2wpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFJbnZvY2F0aW9uVmVyc2lvbk9uZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0Lkludm9jYXRpb24sIHJpZ2h0Lkludm9jYXRpb24pKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuRmlsZXMsIHJpZ2h0LkZpbGVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5GaWxlcyA9PSBudWxsIHx8IHJpZ2h0LkZpbGVzID09IG51bGwgfHwgbGVmdC5GaWxlcy5Db3VudCAhPSByaWdodC5GaWxlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBsZWZ0LkZpbGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgRmlsZURhdGFWZXJzaW9uT25lIHZhbHVlXzE7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuRmlsZXMuVHJ5R2V0VmFsdWUodmFsdWVfMC5LZXksIG91dCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFGaWxlRGF0YVZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHModmFsdWVfMC5WYWx1ZSwgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuTG9naWNhbExvY2F0aW9ucywgcmlnaHQuTG9naWNhbExvY2F0aW9ucykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuTG9naWNhbExvY2F0aW9ucyA9PSBudWxsIHx8IHJpZ2h0LkxvZ2ljYWxMb2NhdGlvbnMgPT0gbnVsbCB8fCBsZWZ0LkxvZ2ljYWxMb2NhdGlvbnMuQ291bnQgIT0gcmlnaHQuTG9naWNhbExvY2F0aW9ucy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMiBpbiBsZWZ0LkxvZ2ljYWxMb2NhdGlvbnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBMb2dpY2FsTG9jYXRpb25WZXJzaW9uT25lIHZhbHVlXzM7DQogICAgICAgICAgICAgICAgICAgIGlmICghcmlnaHQuTG9naWNhbExvY2F0aW9ucy5UcnlHZXRWYWx1ZSh2YWx1ZV8yLktleSwgb3V0IHZhbHVlXzMpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoIUxvZ2ljYWxMb2NhdGlvblZlcnNpb25PbmUuVmFsdWVDb21wYXJlci5FcXVhbHModmFsdWVfMi5WYWx1ZSwgdmFsdWVfMykpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUmVzdWx0cywgcmlnaHQuUmVzdWx0cykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUmVzdWx0cyA9PSBudWxsIHx8IHJpZ2h0LlJlc3VsdHMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5SZXN1bHRzLkNvdW50ICE9IHJpZ2h0LlJlc3VsdHMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBsZWZ0LlJlc3VsdHMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghUmVzdWx0VmVyc2lvbk9uZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LlJlc3VsdHNbaW5kZXhfMF0sIHJpZ2h0LlJlc3VsdHNbaW5kZXhfMF0pKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlRvb2xOb3RpZmljYXRpb25zLCByaWdodC5Ub29sTm90aWZpY2F0aW9ucykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuVG9vbE5vdGlmaWNhdGlvbnMgPT0gbnVsbCB8fCByaWdodC5Ub29sTm90aWZpY2F0aW9ucyA9PSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlRvb2xOb3RpZmljYXRpb25zLkNvdW50ICE9IHJpZ2h0LlRvb2xOb3RpZmljYXRpb25zLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzEgPSAwOyBpbmRleF8xIDwgbGVmdC5Ub29sTm90aWZpY2F0aW9ucy5Db3VudDsgKytpbmRleF8xKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFOb3RpZmljYXRpb25WZXJzaW9uT25lLlZhbHVlQ29tcGFyZXIuRXF1YWxzKGxlZnQuVG9vbE5vdGlmaWNhdGlvbnNbaW5kZXhfMV0sIHJpZ2h0LlRvb2xOb3RpZmljYXRpb25zW2luZGV4XzFdKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9ucywgcmlnaHQuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zID09IG51bGwgfHwgcmlnaHQuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9ucy5Db3VudCAhPSByaWdodC5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9ucy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8yID0gMDsgaW5kZXhfMiA8IGxlZnQuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMuQ291bnQ7ICsraW5kZXhfMikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmICghTm90aWZpY2F0aW9uVmVyc2lvbk9uZS5WYWx1ZUNvbXBhcmVyLkVxdWFscyhsZWZ0LkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zW2luZGV4XzJdLCByaWdodC5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9uc1tpbmRleF8yXSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUnVsZXMsIHJpZ2h0LlJ1bGVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5SdWxlcyA9PSBudWxsIHx8IHJpZ2h0LlJ1bGVzID09IG51bGwgfHwgbGVmdC5SdWxlcy5Db3VudCAhPSByaWdodC5SdWxlcy5Db3VudCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfNCBpbiBsZWZ0LlJ1bGVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgUnVsZVZlcnNpb25PbmUgdmFsdWVfNTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5SdWxlcy5UcnlHZXRWYWx1ZSh2YWx1ZV80LktleSwgb3V0IHZhbHVlXzUpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoIVJ1bGVWZXJzaW9uT25lLlZhbHVlQ29tcGFyZXIuRXF1YWxzKHZhbHVlXzQuVmFsdWUsIHZhbHVlXzUpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LklkICE9IHJpZ2h0LklkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuU3RhYmxlSWQgIT0gcmlnaHQuU3RhYmxlSWQpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5BdXRvbWF0aW9uSWQgIT0gcmlnaHQuQXV0b21hdGlvbklkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQmFzZWxpbmVJZCAhPSByaWdodC5CYXNlbGluZUlkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQXJjaGl0ZWN0dXJlICE9IHJpZ2h0LkFyY2hpdGVjdHVyZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmICghb2JqZWN0LlJlZmVyZW5jZUVxdWFscyhsZWZ0LlByb3BlcnRpZXMsIHJpZ2h0LlByb3BlcnRpZXMpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChsZWZ0LlByb3BlcnRpZXMgPT0gbnVsbCB8fCByaWdodC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgbGVmdC5Qcm9wZXJ0aWVzLkNvdW50ICE9IHJpZ2h0LlByb3BlcnRpZXMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzYgaW4gbGVmdC5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFByb3BlcnR5SW5mbyB2YWx1ZV83Ow0KICAgICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LlByb3BlcnRpZXMuVHJ5R2V0VmFsdWUodmFsdWVfNi5LZXksIG91dCB2YWx1ZV83KSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmplY3QuRXF1YWxzKHZhbHVlXzYuVmFsdWUsIHZhbHVlXzcpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIGludCBHZXRIYXNoQ29kZShSdW5WZXJzaW9uT25lIG9iaikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhvYmosIG51bGwpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiAwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpbnQgcmVzdWx0ID0gMTc7DQogICAgICAgICAgICB1bmNoZWNrZWQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAob2JqLlRvb2wgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouVG9vbC5WYWx1ZUdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5JbnZvY2F0aW9uICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkludm9jYXRpb24uVmFsdWVHZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouRmlsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8wID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzggaW4gb2JqLkZpbGVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV84LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzguVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV84LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzA7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Mb2dpY2FsTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMSA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV85IGluIG9iai5Mb2dpY2FsTG9jYXRpb25zKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMSBePSB2YWx1ZV85LktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzkuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMSBePSB2YWx1ZV85LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzE7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5SZXN1bHRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMTAgaW4gb2JqLlJlc3VsdHMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEwICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzEwLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouVG9vbE5vdGlmaWNhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xMSBpbiBvYmouVG9vbE5vdGlmaWNhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzExICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzExLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8xMiBpbiBvYmouQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzEyICE9IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHZhbHVlXzEyLlZhbHVlR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouUnVsZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8yID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzEzIGluIG9iai5SdWxlcykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgeG9yXzIgXj0gdmFsdWVfMTMuS2V5LkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMTMuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMiBePSB2YWx1ZV8xMy5WYWx1ZS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIHhvcl8yOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChvYmouSWQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlN0YWJsZUlkICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlN0YWJsZUlkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5BdXRvbWF0aW9uSWQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouQXV0b21hdGlvbklkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5CYXNlbGluZUlkICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkJhc2VsaW5lSWQuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkFyY2hpdGVjdHVyZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5BcmNoaXRlY3R1cmUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLlByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIC8vIFVzZSB4b3IgZm9yIGRpY3Rpb25hcmllcyB0byBiZSBvcmRlci1pbmRlcGVuZGVudC4NCiAgICAgICAgICAgICAgICAgICAgaW50IHhvcl8zID0gMDsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzE0IGluIG9iai5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMyBePSB2YWx1ZV8xNC5LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZV8xNC5WYWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvcl8zIF49IHZhbHVlXzE0LlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzM7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1802",
+ "message": {
+ "text": "Field 'RuleFactory.ErrorCodeFormat' is declared as 'static readonly' but is initialized with a constant value 'JSON{0:D4}'. Mark this field as 'const' instead."
},
- "hashes": [
- {
- "value": "182D9BA283567E8325A72AAA0575F572",
- "algorithm": "md5"
- },
- {
- "value": "90CB23F32D258ABFE4E8F54AFD85745C5F868E23",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "77BB589BAD9020D4FC46E716E3A94203FA2F8D3B2496A00904C54F386C343F46",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 115,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.RuleFactory.ErrorCodeFormat"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/SarifLogVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIFN0YXRpYyBBbmFseXNpcyBSZXN1bHRzIEZvcm1hdCAoU0FSSUYpIFZlcnNpb24gMS4wLjAgSlNPTiBTY2hlbWE6IGEgc3RhbmRhcmQgZm9ybWF0IGZvciB0aGUgb3V0cHV0IG9mIHN0YXRpYyBhbmFseXNpcyBhbmQgb3RoZXIgdG9vbHMuDQogICAgLy8vIDwvc3VtbWFyeT4NCiAgICBbRGF0YUNvbnRyYWN0XQ0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgcGFydGlhbCBjbGFzcyBTYXJpZkxvZ1ZlcnNpb25PbmUgOiBJU2FyaWZOb2RlVmVyc2lvbk9uZQ0KICAgIHsNCiAgICAgICAgcHVibGljIHN0YXRpYyBJRXF1YWxpdHlDb21wYXJlcjxTYXJpZkxvZ1ZlcnNpb25PbmU+IFZhbHVlQ29tcGFyZXIgPT4gU2FyaWZMb2dWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhTYXJpZkxvZ1ZlcnNpb25PbmUgb3RoZXIpID0+IFZhbHVlQ29tcGFyZXIuRXF1YWxzKHRoaXMsIG90aGVyKTsNCiAgICAgICAgcHVibGljIGludCBWYWx1ZUdldEhhc2hDb2RlKCkgPT4gVmFsdWVDb21wYXJlci5HZXRIYXNoQ29kZSh0aGlzKTsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBHZXRzIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiBvYmplY3QgaW1wbGVtZW50aW5nIDxzZWUgY3JlZj0iSVNhcmlmTm9kZVZlcnNpb25PbmUiIC8+Lg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUNCiAgICAgICAgew0KICAgICAgICAgICAgZ2V0DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLlNhcmlmTG9nVmVyc2lvbk9uZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBVUkkgb2YgdGhlIEpTT04gc2NoZW1hIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZlcnNpb24uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiJHNjaGVtYSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIFVyaSBTY2hlbWFVcmkgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBTQVJJRiBmb3JtYXQgdmVyc2lvbiBvZiB0aGlzIGxvZyBmaWxlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInZlcnNpb24iLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBTYXJpZlZlcnNpb25WZXJzaW9uT25lIFZlcnNpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBzZXQgb2YgcnVucyBjb250YWluZWQgaW4gdGhpcyBsb2cgZmlsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJydW5zIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8UnVuVmVyc2lvbk9uZT4gUnVucyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU2FyaWZMb2dWZXJzaW9uT25lIiAvPiBjbGFzcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTG9nVmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlNhcmlmTG9nVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InNjaGVtYVVyaSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogU2NoZW1hVXJpIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idmVyc2lvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVmVyc2lvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1bnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFJ1bnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIFNhcmlmTG9nVmVyc2lvbk9uZShVcmkgc2NoZW1hVXJpLCBTYXJpZlZlcnNpb25WZXJzaW9uT25lIHZlcnNpb24sIElFbnVtZXJhYmxlPFJ1blZlcnNpb25PbmU+IHJ1bnMpDQogICAgICAgIHsNCiAgICAgICAgICAgIEluaXQoc2NoZW1hVXJpLCB2ZXJzaW9uLCBydW5zKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlNhcmlmTG9nVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgU2FyaWZMb2dWZXJzaW9uT25lKFNhcmlmTG9nVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5TY2hlbWFVcmksIG90aGVyLlZlcnNpb24sIG90aGVyLlJ1bnMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFNhcmlmTG9nVmVyc2lvbk9uZSBEZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gKFNhcmlmTG9nVmVyc2lvbk9uZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGVWZXJzaW9uT25lIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFNhcmlmTG9nVmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KFVyaSBzY2hlbWFVcmksIFNhcmlmVmVyc2lvblZlcnNpb25PbmUgdmVyc2lvbiwgSUVudW1lcmFibGU8UnVuVmVyc2lvbk9uZT4gcnVucykNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHNjaGVtYVVyaSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFNjaGVtYVVyaSA9IG5ldyBVcmkoc2NoZW1hVXJpLk9yaWdpbmFsU3RyaW5nLCBzY2hlbWFVcmkuSXNBYnNvbHV0ZVVyaSA/IFVyaUtpbmQuQWJzb2x1dGUgOiBVcmlLaW5kLlJlbGF0aXZlKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgVmVyc2lvbiA9IHZlcnNpb247DQogICAgICAgICAgICBpZiAocnVucyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8wID0gbmV3IExpc3Q8UnVuVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBydW5zKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzAgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25fMC5BZGQobnVsbCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChuZXcgUnVuVmVyc2lvbk9uZSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBSdW5zID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1305",
+ "level": "error",
+ "message": {
+ "text": "Because the behavior of 'int.Parse(string)' could vary based on the current user's locale settings, replace this call in 'RuleFactory.GetRuleFromRuleId(string)' with a call to 'int.Parse(string, IFormatProvider)'. If the result of 'int.Parse(string, IFormatProvider)' will be based on input from the user, specify 'CultureInfo.CurrentCulture' as the 'IFormatProvider' parameter. Otherwise, if the result will based on input stored and accessed by software, such as when it is loaded from disk or from a database, specify 'CultureInfo.InvariantCulture'.",
+ "id": "IFormatProviderAlternate"
},
- "hashes": [
- {
- "value": "32787796AD8EB311B122F93B86EE4A0D",
- "algorithm": "md5"
- },
- {
- "value": "6F04CC8BA1B9C8F3ED4F568435A0F43EDE545377",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "D8508319280D2BEB3FD416DCC9CD7D886BBFBFA5CABDA8FEFCA2B5B5A016F4E3",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 116,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.RuleFactory.GetRuleFromRuleId(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "System.Int32.Parse(System.String)#IFormatProviderAlternate"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/SarifRewritingVisitorVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5MaW5xOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5WZXJzaW9uT25lDQp7DQogICAgLy8vIDxzdW1tYXJ5Pg0KICAgIC8vLyBSZXdyaXRpbmcgdmlzaXRvciBmb3IgdGhlIFNhcmlmIG9iamVjdCBtb2RlbC4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2FyaWZSZXdyaXRpbmdWaXNpdG9yVmVyc2lvbk9uZQ0KICAgIHsNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gU3RhcnRzIGEgcmV3cml0aW5nIHZpc2l0IG9mIGEgbm9kZSBpbiB0aGUgU2FyaWYgb2JqZWN0IG1vZGVsLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im5vZGUiPg0KICAgICAgICAvLy8gVGhlIG5vZGUgdG8gcmV3cml0ZS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz4NCiAgICAgICAgLy8vIEEgcmV3cml0dGVuIGluc3RhbmNlIG9mIHRoZSBub2RlLg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBvYmplY3QgVmlzaXQoSVNhcmlmTm9kZVZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuVmlzaXRBY3R1YWwobm9kZSk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBWaXNpdHMgYW5kIHJld3JpdGVzIGEgbm9kZSBpbiB0aGUgU2FyaWYgb2JqZWN0IG1vZGVsLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im5vZGUiPg0KICAgICAgICAvLy8gVGhlIG5vZGUgdG8gcmV3cml0ZS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cmV0dXJucz4NCiAgICAgICAgLy8vIEEgcmV3cml0dGVuIGluc3RhbmNlIG9mIHRoZSBub2RlLg0KICAgICAgICAvLy8gPC9yZXR1cm5zPg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBvYmplY3QgVmlzaXRBY3R1YWwoSVNhcmlmTm9kZVZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKCJub2RlIik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN3aXRjaCAobm9kZS5TYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLkFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUoKEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5Bbm5vdGF0aW9uVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0QW5ub3RhdGlvblZlcnNpb25PbmUoKEFubm90YXRpb25WZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuQ29kZUZsb3dWZXJzaW9uT25lOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRDb2RlRmxvd1ZlcnNpb25PbmUoKENvZGVGbG93VmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLkV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRFeGNlcHRpb25EYXRhVmVyc2lvbk9uZSgoRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5GaWxlQ2hhbmdlVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0RmlsZUNoYW5nZVZlcnNpb25PbmUoKEZpbGVDaGFuZ2VWZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuRmlsZURhdGFWZXJzaW9uT25lOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRGaWxlRGF0YVZlcnNpb25PbmUoKEZpbGVEYXRhVmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLkZpeFZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEZpeFZlcnNpb25PbmUoKEZpeFZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5Gb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSgoRm9ybWF0dGVkUnVsZU1lc3NhZ2VWZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuSGFzaFZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdEhhc2hWZXJzaW9uT25lKChIYXNoVmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLkludm9jYXRpb25WZXJzaW9uT25lOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRJbnZvY2F0aW9uVmVyc2lvbk9uZSgoSW52b2NhdGlvblZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5Mb2NhdGlvblZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdExvY2F0aW9uVmVyc2lvbk9uZSgoTG9jYXRpb25WZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0TG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZSgoTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLk5vdGlmaWNhdGlvblZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdE5vdGlmaWNhdGlvblZlcnNpb25PbmUoKE5vdGlmaWNhdGlvblZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5QaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0UGh5c2ljYWxMb2NhdGlvblZlcnNpb25PbmUoKFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuUmVnaW9uVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0UmVnaW9uVmVyc2lvbk9uZSgoUmVnaW9uVmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLlJlcGxhY2VtZW50VmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0UmVwbGFjZW1lbnRWZXJzaW9uT25lKChSZXBsYWNlbWVudFZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5SZXN1bHRWZXJzaW9uT25lOg0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gVmlzaXRSZXN1bHRWZXJzaW9uT25lKChSZXN1bHRWZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuUnVsZVZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFJ1bGVWZXJzaW9uT25lKChSdWxlVmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLlJ1blZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFJ1blZlcnNpb25PbmUoKFJ1blZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5TYXJpZkxvZ1ZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFNhcmlmTG9nVmVyc2lvbk9uZSgoU2FyaWZMb2dWZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGNhc2UgU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuU3RhY2tGcmFtZVZlcnNpb25PbmU6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBWaXNpdFN0YWNrRnJhbWVWZXJzaW9uT25lKChTdGFja0ZyYW1lVmVyc2lvbk9uZSlub2RlKTsNCiAgICAgICAgICAgICAgICBjYXNlIFNhcmlmTm9kZUtpbmRWZXJzaW9uT25lLlN0YWNrVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0U3RhY2tWZXJzaW9uT25lKChTdGFja1ZlcnNpb25PbmUpbm9kZSk7DQogICAgICAgICAgICAgICAgY2FzZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZS5Ub29sVmVyc2lvbk9uZToNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZpc2l0VG9vbFZlcnNpb25PbmUoKFRvb2xWZXJzaW9uT25lKW5vZGUpOw0KICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBUIFZpc2l0TnVsbENoZWNrZWQ8VD4oVCBub2RlKSB3aGVyZSBUIDogY2xhc3MsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiAoVClWaXNpdChub2RlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUgVmlzaXRBbm5vdGF0ZWRDb2RlTG9jYXRpb25WZXJzaW9uT25lKEFubm90YXRlZENvZGVMb2NhdGlvblZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLlBoeXNpY2FsTG9jYXRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUGh5c2ljYWxMb2NhdGlvbik7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuQW5ub3RhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Bbm5vdGF0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkFubm90YXRpb25zW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkFubm90YXRpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBBbm5vdGF0aW9uVmVyc2lvbk9uZSBWaXNpdEFubm90YXRpb25WZXJzaW9uT25lKEFubm90YXRpb25WZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuTG9jYXRpb25zLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuTG9jYXRpb25zW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkxvY2F0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgQ29kZUZsb3dWZXJzaW9uT25lIFZpc2l0Q29kZUZsb3dWZXJzaW9uT25lKENvZGVGbG93VmVyc2lvbk9uZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChub2RlLkxvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkxvY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkxvY2F0aW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Mb2NhdGlvbnNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEV4Y2VwdGlvbkRhdGFWZXJzaW9uT25lIFZpc2l0RXhjZXB0aW9uRGF0YVZlcnNpb25PbmUoRXhjZXB0aW9uRGF0YVZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLlN0YWNrID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlN0YWNrKTsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5Jbm5lckV4Y2VwdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Jbm5lckV4Y2VwdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Jbm5lckV4Y2VwdGlvbnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuSW5uZXJFeGNlcHRpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBGaWxlQ2hhbmdlVmVyc2lvbk9uZSBWaXNpdEZpbGVDaGFuZ2VWZXJzaW9uT25lKEZpbGVDaGFuZ2VWZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKG5vZGUuUmVwbGFjZW1lbnRzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUmVwbGFjZW1lbnRzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuUmVwbGFjZW1lbnRzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlJlcGxhY2VtZW50c1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgRmlsZURhdGFWZXJzaW9uT25lIFZpc2l0RmlsZURhdGFWZXJzaW9uT25lKEZpbGVEYXRhVmVyc2lvbk9uZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChub2RlLkhhc2hlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkhhc2hlcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLkhhc2hlc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5IYXNoZXNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEZpeFZlcnNpb25PbmUgVmlzaXRGaXhWZXJzaW9uT25lKEZpeFZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5GaWxlQ2hhbmdlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkZpbGVDaGFuZ2VzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuRmlsZUNoYW5nZXNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRmlsZUNoYW5nZXNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZSBWaXNpdEZvcm1hdHRlZFJ1bGVNZXNzYWdlVmVyc2lvbk9uZShGb3JtYXR0ZWRSdWxlTWVzc2FnZVZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBIYXNoVmVyc2lvbk9uZSBWaXNpdEhhc2hWZXJzaW9uT25lKEhhc2hWZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgSW52b2NhdGlvblZlcnNpb25PbmUgVmlzaXRJbnZvY2F0aW9uVmVyc2lvbk9uZShJbnZvY2F0aW9uVmVyc2lvbk9uZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIExvY2F0aW9uVmVyc2lvbk9uZSBWaXNpdExvY2F0aW9uVmVyc2lvbk9uZShMb2NhdGlvblZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLkFuYWx5c2lzVGFyZ2V0ID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkFuYWx5c2lzVGFyZ2V0KTsNCiAgICAgICAgICAgICAgICBub2RlLlJlc3VsdEZpbGUgPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUmVzdWx0RmlsZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZSBWaXNpdExvZ2ljYWxMb2NhdGlvblZlcnNpb25PbmUoTG9naWNhbExvY2F0aW9uVmVyc2lvbk9uZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIE5vdGlmaWNhdGlvblZlcnNpb25PbmUgVmlzaXROb3RpZmljYXRpb25WZXJzaW9uT25lKE5vdGlmaWNhdGlvblZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLlBoeXNpY2FsTG9jYXRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUGh5c2ljYWxMb2NhdGlvbik7DQogICAgICAgICAgICAgICAgbm9kZS5FeGNlcHRpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRXhjZXB0aW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBQaHlzaWNhbExvY2F0aW9uVmVyc2lvbk9uZSBWaXNpdFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lKFBoeXNpY2FsTG9jYXRpb25WZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5SZWdpb24gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUmVnaW9uKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBSZWdpb25WZXJzaW9uT25lIFZpc2l0UmVnaW9uVmVyc2lvbk9uZShSZWdpb25WZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgUmVwbGFjZW1lbnRWZXJzaW9uT25lIFZpc2l0UmVwbGFjZW1lbnRWZXJzaW9uT25lKFJlcGxhY2VtZW50VmVyc2lvbk9uZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFJlc3VsdFZlcnNpb25PbmUgVmlzaXRSZXN1bHRWZXJzaW9uT25lKFJlc3VsdFZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBub2RlLkZvcm1hdHRlZFJ1bGVNZXNzYWdlID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkZvcm1hdHRlZFJ1bGVNZXNzYWdlKTsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5Mb2NhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Mb2NhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Mb2NhdGlvbnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuTG9jYXRpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLlN0YWNrcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLlN0YWNrcy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlN0YWNrc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5TdGFja3NbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuQ29kZUZsb3dzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuQ29kZUZsb3dzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuQ29kZUZsb3dzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLkNvZGVGbG93c1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5SZWxhdGVkTG9jYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUmVsYXRlZExvY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlJlbGF0ZWRMb2NhdGlvbnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUmVsYXRlZExvY2F0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5GaXhlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLkZpeGVzLkNvdW50OyArK2luZGV4XzApDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuRml4ZXNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRml4ZXNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFJ1bGVWZXJzaW9uT25lIFZpc2l0UnVsZVZlcnNpb25PbmUoUnVsZVZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBSdW5WZXJzaW9uT25lIFZpc2l0UnVuVmVyc2lvbk9uZShSdW5WZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgbm9kZS5Ub29sID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlRvb2wpOw0KICAgICAgICAgICAgICAgIG5vZGUuSW52b2NhdGlvbiA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5JbnZvY2F0aW9uKTsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5GaWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBub2RlLkZpbGVzLktleXMuVG9BcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIga2V5IGluIGtleXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IG5vZGUuRmlsZXNba2V5XTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuRmlsZXNba2V5XSA9IFZpc2l0TnVsbENoZWNrZWQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuTG9naWNhbExvY2F0aW9ucyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBub2RlLkxvZ2ljYWxMb2NhdGlvbnMuS2V5cy5Ub0FycmF5KCk7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBrZXkgaW4ga2V5cykNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gbm9kZS5Mb2dpY2FsTG9jYXRpb25zW2tleV07DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLkxvZ2ljYWxMb2NhdGlvbnNba2V5XSA9IFZpc2l0TnVsbENoZWNrZWQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuUmVzdWx0cyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBub2RlLlJlc3VsdHMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5SZXN1bHRzW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlJlc3VsdHNbaW5kZXhfMF0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG5vZGUuVG9vbE5vdGlmaWNhdGlvbnMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5Ub29sTm90aWZpY2F0aW9ucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlRvb2xOb3RpZmljYXRpb25zW2luZGV4XzBdID0gVmlzaXROdWxsQ2hlY2tlZChub2RlLlRvb2xOb3RpZmljYXRpb25zW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGlmIChub2RlLkNvbmZpZ3VyYXRpb25Ob3RpZmljYXRpb25zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuQ29uZmlndXJhdGlvbk5vdGlmaWNhdGlvbnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9uc1tpbmRleF8wXSA9IFZpc2l0TnVsbENoZWNrZWQobm9kZS5Db25maWd1cmF0aW9uTm90aWZpY2F0aW9uc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5SdWxlcyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBub2RlLlJ1bGVzLktleXMuVG9BcnJheSgpOw0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIga2V5IGluIGtleXMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IG5vZGUuUnVsZXNba2V5XTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuUnVsZXNba2V5XSA9IFZpc2l0TnVsbENoZWNrZWQodmFsdWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFNhcmlmTG9nVmVyc2lvbk9uZSBWaXNpdFNhcmlmTG9nVmVyc2lvbk9uZShTYXJpZkxvZ1ZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5SdW5zICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpbmRleF8wID0gMDsgaW5kZXhfMCA8IG5vZGUuUnVucy5Db3VudDsgKytpbmRleF8wKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBub2RlLlJ1bnNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuUnVuc1tpbmRleF8wXSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIHZpcnR1YWwgU3RhY2tGcmFtZVZlcnNpb25PbmUgVmlzaXRTdGFja0ZyYW1lVmVyc2lvbk9uZShTdGFja0ZyYW1lVmVyc2lvbk9uZSBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAobm9kZSAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gbm9kZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyB2aXJ0dWFsIFN0YWNrVmVyc2lvbk9uZSBWaXNpdFN0YWNrVmVyc2lvbk9uZShTdGFja1ZlcnNpb25PbmUgbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG5vZGUgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobm9kZS5GcmFtZXMgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4XzAgPSAwOyBpbmRleF8wIDwgbm9kZS5GcmFtZXMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5GcmFtZXNbaW5kZXhfMF0gPSBWaXNpdE51bGxDaGVja2VkKG5vZGUuRnJhbWVzW2luZGV4XzBdKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7DQogICAgICAgIH0NCg0KICAgICAgICBwdWJsaWMgdmlydHVhbCBUb29sVmVyc2lvbk9uZSBWaXNpdFRvb2xWZXJzaW9uT25lKFRvb2xWZXJzaW9uT25lIG5vZGUpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChub2RlICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBub2RlOw0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1062",
+ "message": {
+ "text": "In externally visible method 'RuleFactory.GetRuleFromRuleId(string)', validate parameter 'ruleId' before using it."
},
- "hashes": [
- {
- "value": "09CE01DCB6B63343783044639A82A48B",
- "algorithm": "md5"
- },
- {
- "value": "BF6266E0E759F0F64512E5FFABD0068700124954",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "DAE424C711D3A7E1659D60BBFFCAFC8B5EF524B8B692C676AEACF003CE3D7F5B",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 116,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.RuleFactory.GetRuleFromRuleId(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "0"
+ },
+ "properties": {
+ "Category": "Microsoft.Design",
+ "FixCategory": "DependsOnFix"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/StackFrameVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgZnVuY3Rpb24gY2FsbCB3aXRoaW4gYSBzdGFjayB0cmFjZS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFN0YWNrRnJhbWVWZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFN0YWNrRnJhbWVWZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IFN0YWNrRnJhbWVWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhTdGFja0ZyYW1lVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuU3RhY2tGcmFtZVZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBBIG1lc3NhZ2UgcmVsZXZhbnQgdG8gdGhpcyBzdGFjayBmcmFtZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1lc3NhZ2UgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB1cmkgb2YgdGhlIHNvdXJjZSBjb2RlIGZpbGUgdG8gd2hpY2ggdGhpcyBzdGFjayBmcmFtZSByZWZlcnMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidXJpIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgVXJpIFVyaSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBjb25jZXB0dWFsIGJhc2UgZm9yIHRoZSAndXJpJyBwcm9wZXJ0eSAoaWYgaXQgaXMgcmVsYXRpdmUpLCBlLmcuLCckKFNvbHV0aW9uRGlyKScgb3IgJyVTUkNST09UJScuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidXJpQmFzZUlkIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIFVyaUJhc2VJZCB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGxpbmUgb2YgdGhlIGxvY2F0aW9uIHRvIHdoaWNoIHRoaXMgc3RhY2sgZnJhbWUgcmVmZXJzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImxpbmUiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgTGluZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGxpbmUgb2YgdGhlIGxvY2F0aW9uIHRvIHdoaWNoIHRoaXMgc3RhY2sgZnJhbWUgcmVmZXJzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImNvbHVtbiIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBDb2x1bW4geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhhdCBjb250YWlucyB0aGUgY29kZSBvZiB0aGlzIHN0YWNrIGZyYW1lLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm1vZHVsZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBNb2R1bGUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSB0aHJlYWQgaWRlbnRpZmllciBvZiB0aGUgc3RhY2sgZnJhbWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAidGhyZWFkSWQiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBpbnQgVGhyZWFkSWQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbWV0aG9kIG9yIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gImZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiLCBJc1JlcXVpcmVkID0gdHJ1ZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBrZXkgdXNlZCB0byByZXRyaWV2ZSB0aGUgc3RhY2sgZnJhbWUgbG9naWNhbExvY2F0aW9uIGZyb20gdGhlIGxvZ2ljYWxMb2NhdGlvbnMgZGljdGlvbmFyeSwgd2hlbiB0aGUgJ2Z1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUnIGlzIG5vdCB1bmlxdWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAibG9naWNhbExvY2F0aW9uS2V5IiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIExvZ2ljYWxMb2NhdGlvbktleSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIGFkZHJlc3Mgb2YgdGhlIG1ldGhvZCBvciBmdW5jdGlvbiB0aGF0IGlzIGV4ZWN1dGluZy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJhZGRyZXNzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgaW50IEFkZHJlc3MgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBvZmZzZXQgZnJvbSB0aGUgbWV0aG9kIG9yIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gIm9mZnNldCIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIGludCBPZmZzZXQgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBjYWxsIHRoYXQgaXMgZXhlY3V0aW5nLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInBhcmFtZXRlcnMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBJTGlzdDxzdHJpbmc+IFBhcmFtZXRlcnMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEtleS92YWx1ZSBwYWlycyB0aGF0IHByb3ZpZGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhY2sgZnJhbWUuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAicHJvcGVydGllcyIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgaW50ZXJuYWwgb3ZlcnJpZGUgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBQcm9wZXJ0aWVzIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFja0ZyYW1lVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTdGFja0ZyYW1lVmVyc2lvbk9uZSgpDQogICAgICAgIHsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlN0YWNrRnJhbWVWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzdXBwbGllZCB2YWx1ZXMuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ibWVzc2FnZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogTWVzc2FnZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InVyaSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogVXJpIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0idXJpQmFzZUlkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBVcmlCYXNlSWQiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsaW5lIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMaW5lIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iY29sdW1uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBDb2x1bW4iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtb2R1bGUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE1vZHVsZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InRocmVhZElkIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBUaHJlYWRJZCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJsb2dpY2FsTG9jYXRpb25LZXkiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IExvZ2ljYWxMb2NhdGlvbktleSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9ImFkZHJlc3MiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IEFkZHJlc3MiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJvZmZzZXQiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE9mZnNldCIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InBhcmFtZXRlcnMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFBhcmFtZXRlcnMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBTdGFja0ZyYW1lVmVyc2lvbk9uZShzdHJpbmcgbWVzc2FnZSwgVXJpIHVyaSwgc3RyaW5nIHVyaUJhc2VJZCwgaW50IGxpbmUsIGludCBjb2x1bW4sIHN0cmluZyBtb2R1bGUsIGludCB0aHJlYWRJZCwgc3RyaW5nIGZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUsIHN0cmluZyBsb2dpY2FsTG9jYXRpb25LZXksIGludCBhZGRyZXNzLCBpbnQgb2Zmc2V0LCBJRW51bWVyYWJsZTxzdHJpbmc+IHBhcmFtZXRlcnMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChtZXNzYWdlLCB1cmksIHVyaUJhc2VJZCwgbGluZSwgY29sdW1uLCBtb2R1bGUsIHRocmVhZElkLCBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lLCBsb2dpY2FsTG9jYXRpb25LZXksIGFkZHJlc3MsIG9mZnNldCwgcGFyYW1ldGVycywgcHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFja0ZyYW1lVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3BlY2lmaWVkIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im90aGVyIj4NCiAgICAgICAgLy8vIFRoZSBpbnN0YW5jZSBmcm9tIHdoaWNoIHRoZSBuZXcgaW5zdGFuY2UgaXMgdG8gYmUgaW5pdGlhbGl6ZWQuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPGV4Y2VwdGlvbiBjcmVmPSJBcmd1bWVudE51bGxFeGNlcHRpb24iPg0KICAgICAgICAvLy8gVGhyb3duIGlmIDxwYXJhbXJlZiBuYW1lPSJvdGhlciIgLz4gaXMgbnVsbC4NCiAgICAgICAgLy8vIDwvZXhjZXB0aW9uPg0KICAgICAgICBwdWJsaWMgU3RhY2tGcmFtZVZlcnNpb25PbmUoU3RhY2tGcmFtZVZlcnNpb25PbmUgb3RoZXIpDQogICAgICAgIHsNCiAgICAgICAgICAgIGlmIChvdGhlciA9PSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmd1bWVudE51bGxFeGNlcHRpb24obmFtZW9mKG90aGVyKSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIEluaXQob3RoZXIuTWVzc2FnZSwgb3RoZXIuVXJpLCBvdGhlci5VcmlCYXNlSWQsIG90aGVyLkxpbmUsIG90aGVyLkNvbHVtbiwgb3RoZXIuTW9kdWxlLCBvdGhlci5UaHJlYWRJZCwgb3RoZXIuRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSwgb3RoZXIuTG9naWNhbExvY2F0aW9uS2V5LCBvdGhlci5BZGRyZXNzLCBvdGhlci5PZmZzZXQsIG90aGVyLlBhcmFtZXRlcnMsIG90aGVyLlByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgSVNhcmlmTm9kZVZlcnNpb25PbmUgSVNhcmlmTm9kZVZlcnNpb25PbmUuRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIERlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgdGhpcyBpbnN0YW5jZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgcHVibGljIFN0YWNrRnJhbWVWZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoU3RhY2tGcmFtZVZlcnNpb25PbmUpRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSBJU2FyaWZOb2RlVmVyc2lvbk9uZSBEZWVwQ2xvbmVDb3JlKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGFja0ZyYW1lVmVyc2lvbk9uZSh0aGlzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgdm9pZCBJbml0KHN0cmluZyBtZXNzYWdlLCBVcmkgdXJpLCBzdHJpbmcgdXJpQmFzZUlkLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgc3RyaW5nIG1vZHVsZSwgaW50IHRocmVhZElkLCBzdHJpbmcgZnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSwgc3RyaW5nIGxvZ2ljYWxMb2NhdGlvbktleSwgaW50IGFkZHJlc3MsIGludCBvZmZzZXQsIElFbnVtZXJhYmxlPHN0cmluZz4gcGFyYW1ldGVycywgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBNZXNzYWdlID0gbWVzc2FnZTsNCiAgICAgICAgICAgIGlmICh1cmkgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBVcmkgPSBuZXcgVXJpKHVyaS5PcmlnaW5hbFN0cmluZywgdXJpLklzQWJzb2x1dGVVcmkgPyBVcmlLaW5kLkFic29sdXRlIDogVXJpS2luZC5SZWxhdGl2ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIFVyaUJhc2VJZCA9IHVyaUJhc2VJZDsNCiAgICAgICAgICAgIExpbmUgPSBsaW5lOw0KICAgICAgICAgICAgQ29sdW1uID0gY29sdW1uOw0KICAgICAgICAgICAgTW9kdWxlID0gbW9kdWxlOw0KICAgICAgICAgICAgVGhyZWFkSWQgPSB0aHJlYWRJZDsNCiAgICAgICAgICAgIEZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgPSBmdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lOw0KICAgICAgICAgICAgTG9naWNhbExvY2F0aW9uS2V5ID0gbG9naWNhbExvY2F0aW9uS2V5Ow0KICAgICAgICAgICAgQWRkcmVzcyA9IGFkZHJlc3M7DQogICAgICAgICAgICBPZmZzZXQgPSBvZmZzZXQ7DQogICAgICAgICAgICBpZiAocGFyYW1ldGVycyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHZhciBkZXN0aW5hdGlvbl8wID0gbmV3IExpc3Q8c3RyaW5nPigpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIHBhcmFtZXRlcnMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZCh2YWx1ZV8wKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzID0gZGVzdGluYXRpb25fMDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPihwcm9wZXJ0aWVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0="
+ {
+ "ruleId": "CA1812",
+ "message": {
+ "text": "'RuleResources' is an internal class that is apparently never instantiated. If so, remove the code from the assembly. If this class is intended to contain only static methods, consider adding a private constructor to prevent the compiler from generating a default constructor."
},
- "hashes": [
- {
- "value": "38ED407197D03A3836D2A32ACE474322",
- "algorithm": "md5"
- },
- {
- "value": "C3B84AE5BB40F128F80A44A53E577C219F934F50",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "2C89EEE95125A1E22F3D932C92851FED39A8B40C84C1C7F085A30C689BCBFE78",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 117,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.RuleResources"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/StackFrameVersionOneEqualityComparer.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuUmVhZGVyczsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmVyc2lvbk9uZQ0Kew0KICAgIC8vLyA8c3VtbWFyeT4NCiAgICAvLy8gRGVmaW5lcyBtZXRob2RzIHRvIHN1cHBvcnQgdGhlIGNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0eXBlIFN0YWNrRnJhbWVWZXJzaW9uT25lIGZvciBlcXVhbGl0eS4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtHZW5lcmF0ZWRDb2RlKCJNaWNyb3NvZnQuSnNvbi5TY2hlbWEuVG9Eb3ROZXQiLCAiMC41Mi4wLjAiKV0NCiAgICBpbnRlcm5hbCBzZWFsZWQgY2xhc3MgU3RhY2tGcmFtZVZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyIDogSUVxdWFsaXR5Q29tcGFyZXI8U3RhY2tGcmFtZVZlcnNpb25PbmU+DQogICAgew0KICAgICAgICBpbnRlcm5hbCBzdGF0aWMgcmVhZG9ubHkgU3RhY2tGcmFtZVZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyIEluc3RhbmNlID0gbmV3IFN0YWNrRnJhbWVWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlcigpOw0KDQogICAgICAgIHB1YmxpYyBib29sIEVxdWFscyhTdGFja0ZyYW1lVmVyc2lvbk9uZSBsZWZ0LCBTdGFja0ZyYW1lVmVyc2lvbk9uZSByaWdodCkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKFJlZmVyZW5jZUVxdWFscyhsZWZ0LCByaWdodCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChSZWZlcmVuY2VFcXVhbHMobGVmdCwgbnVsbCkgfHwgUmVmZXJlbmNlRXF1YWxzKHJpZ2h0LCBudWxsKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lk1lc3NhZ2UgIT0gcmlnaHQuTWVzc2FnZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LlVyaSAhPSByaWdodC5VcmkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5VcmlCYXNlSWQgIT0gcmlnaHQuVXJpQmFzZUlkKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuTGluZSAhPSByaWdodC5MaW5lKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGxlZnQuQ29sdW1uICE9IHJpZ2h0LkNvbHVtbikNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0Lk1vZHVsZSAhPSByaWdodC5Nb2R1bGUpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5UaHJlYWRJZCAhPSByaWdodC5UaHJlYWRJZCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUgIT0gcmlnaHQuRnVsbHlRdWFsaWZpZWRMb2dpY2FsTmFtZSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChsZWZ0LkxvZ2ljYWxMb2NhdGlvbktleSAhPSByaWdodC5Mb2dpY2FsTG9jYXRpb25LZXkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5BZGRyZXNzICE9IHJpZ2h0LkFkZHJlc3MpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAobGVmdC5PZmZzZXQgIT0gcmlnaHQuT2Zmc2V0KQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKCFvYmplY3QuUmVmZXJlbmNlRXF1YWxzKGxlZnQuUGFyYW1ldGVycywgcmlnaHQuUGFyYW1ldGVycykpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgaWYgKGxlZnQuUGFyYW1ldGVycyA9PSBudWxsIHx8IHJpZ2h0LlBhcmFtZXRlcnMgPT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5QYXJhbWV0ZXJzLkNvdW50ICE9IHJpZ2h0LlBhcmFtZXRlcnMuQ291bnQpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgZm9yIChpbnQgaW5kZXhfMCA9IDA7IGluZGV4XzAgPCBsZWZ0LlBhcmFtZXRlcnMuQ291bnQ7ICsraW5kZXhfMCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0LlBhcmFtZXRlcnNbaW5kZXhfMF0gIT0gcmlnaHQuUGFyYW1ldGVyc1tpbmRleF8wXSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoIW9iamVjdC5SZWZlcmVuY2VFcXVhbHMobGVmdC5Qcm9wZXJ0aWVzLCByaWdodC5Qcm9wZXJ0aWVzKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiAobGVmdC5Qcm9wZXJ0aWVzID09IG51bGwgfHwgcmlnaHQuUHJvcGVydGllcyA9PSBudWxsIHx8IGxlZnQuUHJvcGVydGllcy5Db3VudCAhPSByaWdodC5Qcm9wZXJ0aWVzLkNvdW50KQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8wIGluIGxlZnQuUHJvcGVydGllcykNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8gdmFsdWVfMTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC5Qcm9wZXJ0aWVzLlRyeUdldFZhbHVlKHZhbHVlXzAuS2V5LCBvdXQgdmFsdWVfMSkpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmICghb2JqZWN0LkVxdWFscyh2YWx1ZV8wLlZhbHVlLCB2YWx1ZV8xKSkNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHB1YmxpYyBpbnQgR2V0SGFzaENvZGUoU3RhY2tGcmFtZVZlcnNpb25PbmUgb2JqKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAoUmVmZXJlbmNlRXF1YWxzKG9iaiwgbnVsbCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGludCByZXN1bHQgPSAxNzsNCiAgICAgICAgICAgIHVuY2hlY2tlZA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIGlmIChvYmouTWVzc2FnZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5NZXNzYWdlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5VcmkgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouVXJpLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5VcmlCYXNlSWQgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgKiAzMSkgKyBvYmouVXJpQmFzZUlkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5MaW5lLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Db2x1bW4uR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLk1vZHVsZSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Nb2R1bGUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLlRocmVhZElkLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgaWYgKG9iai5GdWxseVF1YWxpZmllZExvZ2ljYWxOYW1lICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkZ1bGx5UXVhbGlmaWVkTG9naWNhbE5hbWUuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAob2JqLkxvZ2ljYWxMb2NhdGlvbktleSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDMxKSArIG9iai5Mb2dpY2FsTG9jYXRpb25LZXkuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLkFkZHJlc3MuR2V0SGFzaENvZGUoKTsNCiAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgb2JqLk9mZnNldC5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgIGlmIChvYmouUGFyYW1ldGVycyAhPSBudWxsKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIHZhbHVlXzIgaW4gb2JqLlBhcmFtZXRlcnMpDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDMxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzIgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgdmFsdWVfMi5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKG9iai5Qcm9wZXJ0aWVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAvLyBVc2UgeG9yIGZvciBkaWN0aW9uYXJpZXMgdG8gYmUgb3JkZXItaW5kZXBlbmRlbnQuDQogICAgICAgICAgICAgICAgICAgIGludCB4b3JfMCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB2YWx1ZV8zIGluIG9iai5Qcm9wZXJ0aWVzKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV8zLktleS5HZXRIYXNoQ29kZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlXzMuVmFsdWUgIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b3JfMCBePSB2YWx1ZV8zLlZhbHVlLkdldEhhc2hDb2RlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0ICogMzEpICsgeG9yXzA7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1308",
+ "level": "error",
+ "message": {
+ "text": "In method 'Validator.FormatBoolean(string)', replace the call to 'string.ToLowerInvariant()' with String.ToUpperInvariant().",
+ "id": "ToUpperInvariant"
},
- "hashes": [
- {
- "value": "C94FDE18D44043961540D1E788435A25",
- "algorithm": "md5"
- },
- {
- "value": "1B2DC2A605CA682504EF4C00C89ED3F0B80A5C1E",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "3DAD641802C3FB543597674A07936376E1A36F2545FBFF224C4CDE3C86E7C78E",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 119,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.Validator.FormatBoolean(System.String)"
+ }
+ ]
}
- ]
+ ],
+ "partialFingerprints": {
+ "UniqueId": "ToUpperInvariant"
+ },
+ "properties": {
+ "Category": "Microsoft.Globalization",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/StackVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIEEgY2FsbCBzdGFjayB0aGF0IGlzIHJlbGV2YW50IHRvIGEgcmVzdWx0Lg0KICAgIC8vLyA8L3N1bW1hcnk+DQogICAgW0RhdGFDb250cmFjdF0NCiAgICBbR2VuZXJhdGVkQ29kZSgiTWljcm9zb2Z0Lkpzb24uU2NoZW1hLlRvRG90TmV0IiwgIjAuNTIuMC4wIildDQogICAgcHVibGljIHBhcnRpYWwgY2xhc3MgU3RhY2tWZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFN0YWNrVmVyc2lvbk9uZT4gVmFsdWVDb21wYXJlciA9PiBTdGFja1ZlcnNpb25PbmVFcXVhbGl0eUNvbXBhcmVyLkluc3RhbmNlOw0KDQogICAgICAgIHB1YmxpYyBib29sIFZhbHVlRXF1YWxzKFN0YWNrVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuU3RhY2tWZXJzaW9uT25lOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQSBtZXNzYWdlIHJlbGV2YW50IHRvIHRoaXMgY2FsbCBzdGFjay4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJtZXNzYWdlIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE1lc3NhZ2UgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEFuIGFycmF5IG9mIHN0YWNrIGZyYW1lcyB0aGF0IHJlcHJlc2VudCBhIHNlcXVlbmNlIG9mIGNhbGxzLCByZW5kZXJlZCBpbiByZXZlcnNlIGNocm9ub2xvZ2ljYWwgb3JkZXIsIHRoYXQgY29tcHJpc2UgdGhlIGNhbGwgc3RhY2suDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZnJhbWVzIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgSUxpc3Q8U3RhY2tGcmFtZVZlcnNpb25PbmU+IEZyYW1lcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGFjay4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJwcm9wZXJ0aWVzIiwgSXNSZXF1aXJlZCA9IGZhbHNlLCBFbWl0RGVmYXVsdFZhbHVlID0gZmFsc2UpXQ0KICAgICAgICBpbnRlcm5hbCBvdmVycmlkZSBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IFByb3BlcnRpZXMgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlN0YWNrVmVyc2lvbk9uZSIgLz4gY2xhc3MuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTdGFja1ZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJTdGFja1ZlcnNpb25PbmUiIC8+IGNsYXNzIGZyb20gdGhlIHN1cHBsaWVkIHZhbHVlcy4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJtZXNzYWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBNZXNzYWdlIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0iZnJhbWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBGcmFtZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJwcm9wZXJ0aWVzIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBQcm9wZXJ0aWVzIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIHB1YmxpYyBTdGFja1ZlcnNpb25PbmUoc3RyaW5nIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFN0YWNrRnJhbWVWZXJzaW9uT25lPiBmcmFtZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgSW5pdChtZXNzYWdlLCBmcmFtZXMsIHByb3BlcnRpZXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iU3RhY2tWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBTdGFja1ZlcnNpb25PbmUoU3RhY2tWZXJzaW9uT25lIG90aGVyKQ0KICAgICAgICB7DQogICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhjZXB0aW9uKG5hbWVvZihvdGhlcikpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBJbml0KG90aGVyLk1lc3NhZ2UsIG90aGVyLkZyYW1lcywgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgU3RhY2tWZXJzaW9uT25lIERlZXBDbG9uZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiAoU3RhY2tWZXJzaW9uT25lKURlZXBDbG9uZUNvcmUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHByaXZhdGUgSVNhcmlmTm9kZVZlcnNpb25PbmUgRGVlcENsb25lQ29yZSgpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBuZXcgU3RhY2tWZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIG1lc3NhZ2UsIElFbnVtZXJhYmxlPFN0YWNrRnJhbWVWZXJzaW9uT25lPiBmcmFtZXMsIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gcHJvcGVydGllcykNCiAgICAgICAgew0KICAgICAgICAgICAgTWVzc2FnZSA9IG1lc3NhZ2U7DQogICAgICAgICAgICBpZiAoZnJhbWVzICE9IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdmFyIGRlc3RpbmF0aW9uXzAgPSBuZXcgTGlzdDxTdGFja0ZyYW1lVmVyc2lvbk9uZT4oKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgdmFsdWVfMCBpbiBmcmFtZXMpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVfMCA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbl8wLkFkZChudWxsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uXzAuQWRkKG5ldyBTdGFja0ZyYW1lVmVyc2lvbk9uZSh2YWx1ZV8wKSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBGcmFtZXMgPSBkZXN0aW5hdGlvbl8wOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ {
+ "ruleId": "CA1800",
+ "message": {
+ "text": "'obj', a parameter, is cast to type 'JToken' multiple times in method 'Validator.FormatObject(object)'. Cache the result of the 'as' operator or direct cast in order to eliminate the redundant isint instruction.",
+ "id": "Parameter"
},
- "hashes": [
- {
- "value": "1B6A19ACC90CCE953862BCB97709905F",
- "algorithm": "md5"
- },
+ "locations": [
{
- "value": "392A37BA8124EABBF69D9BF4B1174F1C16F3ACE0",
- "algorithm": "sha-1"
- },
- {
- "value": "651CAE5DA3B78B665A70CBE5480066F5EAA33FEFF4350B337BB06AAF879030FE",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 120,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.Validator.FormatObject(System.Object)"
+ }
+ ]
}
- ]
- },
- "file:///E:/src/sarif-sdk-test/src/Sarif/VersionOne/Autogenerated/ToolVersionOne.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KLy8gTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi4NCg0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247DQp1c2luZyBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlJlYWRlcnM7DQoNCm5hbWVzcGFjZSBNaWNyb3NvZnQuQ29kZUFuYWx5c2lzLlNhcmlmLlZlcnNpb25PbmUNCnsNCiAgICAvLy8gPHN1bW1hcnk+DQogICAgLy8vIFRoZSBhbmFseXNpcyB0b29sIHRoYXQgd2FzIHJ1bi4NCiAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgIFtEYXRhQ29udHJhY3RdDQogICAgW0dlbmVyYXRlZENvZGUoIk1pY3Jvc29mdC5Kc29uLlNjaGVtYS5Ub0RvdE5ldCIsICIwLjUyLjAuMCIpXQ0KICAgIHB1YmxpYyBwYXJ0aWFsIGNsYXNzIFRvb2xWZXJzaW9uT25lIDogUHJvcGVydHlCYWdIb2xkZXIsIElTYXJpZk5vZGVWZXJzaW9uT25lDQogICAgew0KICAgICAgICBwdWJsaWMgc3RhdGljIElFcXVhbGl0eUNvbXBhcmVyPFRvb2xWZXJzaW9uT25lPiBWYWx1ZUNvbXBhcmVyID0+IFRvb2xWZXJzaW9uT25lRXF1YWxpdHlDb21wYXJlci5JbnN0YW5jZTsNCg0KICAgICAgICBwdWJsaWMgYm9vbCBWYWx1ZUVxdWFscyhUb29sVmVyc2lvbk9uZSBvdGhlcikgPT4gVmFsdWVDb21wYXJlci5FcXVhbHModGhpcywgb3RoZXIpOw0KICAgICAgICBwdWJsaWMgaW50IFZhbHVlR2V0SGFzaENvZGUoKSA9PiBWYWx1ZUNvbXBhcmVyLkdldEhhc2hDb2RlKHRoaXMpOw0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIG9iamVjdCBpbXBsZW1lbnRpbmcgPHNlZSBjcmVmPSJJU2FyaWZOb2RlVmVyc2lvbk9uZSIgLz4uDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZSBTYXJpZk5vZGVLaW5kVmVyc2lvbk9uZQ0KICAgICAgICB7DQogICAgICAgICAgICBnZXQNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gU2FyaWZOb2RlS2luZFZlcnNpb25PbmUuVG9vbFZlcnNpb25PbmU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgbmFtZSBvZiB0aGUgdG9vbC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJuYW1lIiwgSXNSZXF1aXJlZCA9IHRydWUpXQ0KICAgICAgICBwdWJsaWMgc3RyaW5nIE5hbWUgeyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIFRoZSBuYW1lIG9mIHRoZSB0b29sIGFsb25nIHdpdGggaXRzIHZlcnNpb24gYW5kIGFueSBvdGhlciB1c2VmdWwgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24sIHN1Y2ggYXMgaXRzIGxvY2FsZS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJmdWxsTmFtZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBGdWxsTmFtZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRvb2wgdmVyc2lvbiwgaW4gd2hhdGV2ZXIgZm9ybWF0IHRoZSB0b29sIG5hdGl2ZWx5IHByb3ZpZGVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgVmVyc2lvbiB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gVGhlIHRvb2wgdmVyc2lvbiBpbiB0aGUgZm9ybWF0IHNwZWNpZmllZCBieSBTZW1hbnRpYyBWZXJzaW9uaW5nIDIuMC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzZW1hbnRpY1ZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgU2VtYW50aWNWZXJzaW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgYmluYXJ5IHZlcnNpb24gb2YgdGhlIHRvb2wncyBwcmltYXJ5IGV4ZWN1dGFibGUgZmlsZSAoZm9yIG9wZXJhdGluZyBzeXN0ZW1zIHN1Y2ggYXMgV2luZG93cyB0aGF0IHByb3ZpZGUgdGhhdCBpbmZvcm1hdGlvbikuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIFtEYXRhTWVtYmVyKE5hbWUgPSAiZmlsZVZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgRmlsZVZlcnNpb24geyBnZXQ7IHNldDsgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEEgdmVyc2lvbiB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIFNBUklGIGxvZ2dpbmcgY29tcG9uZW50IHRoYXQgZ2VuZXJhdGVkIHRoaXMgZmlsZSwgaWYgaXQgaXMgdmVyc2lvbmVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgdG9vbC4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJzYXJpZkxvZ2dlclZlcnNpb24iLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIHB1YmxpYyBzdHJpbmcgU2FyaWZMb2dnZXJWZXJzaW9uIHsgZ2V0OyBzZXQ7IH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBUaGUgdG9vbCBsYW5ndWFnZSAoZXhwcmVzc2VkIGFzIGFuIElTTyA2NDkgdHdvLWxldHRlciBsb3dlcmNhc2UgY3VsdHVyZSBjb2RlKSBhbmQgcmVnaW9uIChleHByZXNzZWQgYXMgYW4gSVNPIDMxNjYgdHdvLWxldHRlciB1cHBlcmNhc2Ugc3ViY3VsdHVyZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBhIGNvdW50cnkgb3IgcmVnaW9uKS4NCiAgICAgICAgLy8vIDwvc3VtbWFyeT4NCiAgICAgICAgW0RhdGFNZW1iZXIoTmFtZSA9ICJsYW5ndWFnZSIsIElzUmVxdWlyZWQgPSBmYWxzZSwgRW1pdERlZmF1bHRWYWx1ZSA9IGZhbHNlKV0NCiAgICAgICAgcHVibGljIHN0cmluZyBMYW5ndWFnZSB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gS2V5L3ZhbHVlIHBhaXJzIHRoYXQgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0b29sLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBbRGF0YU1lbWJlcihOYW1lID0gInByb3BlcnRpZXMiLCBJc1JlcXVpcmVkID0gZmFsc2UsIEVtaXREZWZhdWx0VmFsdWUgPSBmYWxzZSldDQogICAgICAgIGludGVybmFsIG92ZXJyaWRlIElEaWN0aW9uYXJ5PHN0cmluZywgU2VyaWFsaXplZFByb3BlcnR5SW5mbz4gUHJvcGVydGllcyB7IGdldDsgc2V0OyB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDxzZWUgY3JlZj0iVG9vbFZlcnNpb25PbmUiIC8+IGNsYXNzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgVG9vbFZlcnNpb25PbmUoKQ0KICAgICAgICB7DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJbml0aWFsaXplcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgPHNlZSBjcmVmPSJUb29sVmVyc2lvbk9uZSIgLz4gY2xhc3MgZnJvbSB0aGUgc3VwcGxpZWQgdmFsdWVzLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Im5hbWUiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IE5hbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmdWxsTmFtZSI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRnVsbE5hbWUiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJ2ZXJzaW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBWZXJzaW9uIiAvPiBwcm9wZXJ0eS4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ic2VtYW50aWNWZXJzaW9uIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBTZW1hbnRpY1ZlcnNpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJmaWxlVmVyc2lvbiI+DQogICAgICAgIC8vLyBBbiBpbml0aWFsaXphdGlvbiB2YWx1ZSBmb3IgdGhlIDxzZWUgY3JlZj0iUDogRmlsZVZlcnNpb24iIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgLy8vIDxwYXJhbSBuYW1lPSJzYXJpZkxvZ2dlclZlcnNpb24iPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFNhcmlmTG9nZ2VyVmVyc2lvbiIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9Imxhbmd1YWdlIj4NCiAgICAgICAgLy8vIEFuIGluaXRpYWxpemF0aW9uIHZhbHVlIGZvciB0aGUgPHNlZSBjcmVmPSJQOiBMYW5ndWFnZSIgLz4gcHJvcGVydHkuDQogICAgICAgIC8vLyA8L3BhcmFtPg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InByb3BlcnRpZXMiPg0KICAgICAgICAvLy8gQW4gaW5pdGlhbGl6YXRpb24gdmFsdWUgZm9yIHRoZSA8c2VlIGNyZWY9IlA6IFByb3BlcnRpZXMiIC8+IHByb3BlcnR5Lg0KICAgICAgICAvLy8gPC9wYXJhbT4NCiAgICAgICAgcHVibGljIFRvb2xWZXJzaW9uT25lKHN0cmluZyBuYW1lLCBzdHJpbmcgZnVsbE5hbWUsIHN0cmluZyB2ZXJzaW9uLCBzdHJpbmcgc2VtYW50aWNWZXJzaW9uLCBzdHJpbmcgZmlsZVZlcnNpb24sIHN0cmluZyBzYXJpZkxvZ2dlclZlcnNpb24sIHN0cmluZyBsYW5ndWFnZSwgSURpY3Rpb25hcnk8c3RyaW5nLCBTZXJpYWxpemVkUHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzKQ0KICAgICAgICB7DQogICAgICAgICAgICBJbml0KG5hbWUsIGZ1bGxOYW1lLCB2ZXJzaW9uLCBzZW1hbnRpY1ZlcnNpb24sIGZpbGVWZXJzaW9uLCBzYXJpZkxvZ2dlclZlcnNpb24sIGxhbmd1YWdlLCBwcm9wZXJ0aWVzKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vLyA8c3VtbWFyeT4NCiAgICAgICAgLy8vIEluaXRpYWxpemVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA8c2VlIGNyZWY9IlRvb2xWZXJzaW9uT25lIiAvPiBjbGFzcyBmcm9tIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2UuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIC8vLyA8cGFyYW0gbmFtZT0ib3RoZXIiPg0KICAgICAgICAvLy8gVGhlIGluc3RhbmNlIGZyb20gd2hpY2ggdGhlIG5ldyBpbnN0YW5jZSBpcyB0byBiZSBpbml0aWFsaXplZC4NCiAgICAgICAgLy8vIDwvcGFyYW0+DQogICAgICAgIC8vLyA8ZXhjZXB0aW9uIGNyZWY9IkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiI+DQogICAgICAgIC8vLyBUaHJvd24gaWYgPHBhcmFtcmVmIG5hbWU9Im90aGVyIiAvPiBpcyBudWxsLg0KICAgICAgICAvLy8gPC9leGNlcHRpb24+DQogICAgICAgIHB1YmxpYyBUb29sVmVyc2lvbk9uZShUb29sVmVyc2lvbk9uZSBvdGhlcikNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKG90aGVyID09IG51bGwpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbihuYW1lb2Yob3RoZXIpKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgSW5pdChvdGhlci5OYW1lLCBvdGhlci5GdWxsTmFtZSwgb3RoZXIuVmVyc2lvbiwgb3RoZXIuU2VtYW50aWNWZXJzaW9uLCBvdGhlci5GaWxlVmVyc2lvbiwgb3RoZXIuU2FyaWZMb2dnZXJWZXJzaW9uLCBvdGhlci5MYW5ndWFnZSwgb3RoZXIuUHJvcGVydGllcyk7DQogICAgICAgIH0NCg0KICAgICAgICBJU2FyaWZOb2RlVmVyc2lvbk9uZSBJU2FyaWZOb2RlVmVyc2lvbk9uZS5EZWVwQ2xvbmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gRGVlcENsb25lQ29yZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8vIDxzdW1tYXJ5Pg0KICAgICAgICAvLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiB0aGlzIGluc3RhbmNlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICBwdWJsaWMgVG9vbFZlcnNpb25PbmUgRGVlcENsb25lKCkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuIChUb29sVmVyc2lvbk9uZSlEZWVwQ2xvbmVDb3JlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIElTYXJpZk5vZGVWZXJzaW9uT25lIERlZXBDbG9uZUNvcmUoKQ0KICAgICAgICB7DQogICAgICAgICAgICByZXR1cm4gbmV3IFRvb2xWZXJzaW9uT25lKHRoaXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgcHJpdmF0ZSB2b2lkIEluaXQoc3RyaW5nIG5hbWUsIHN0cmluZyBmdWxsTmFtZSwgc3RyaW5nIHZlcnNpb24sIHN0cmluZyBzZW1hbnRpY1ZlcnNpb24sIHN0cmluZyBmaWxlVmVyc2lvbiwgc3RyaW5nIHNhcmlmTG9nZ2VyVmVyc2lvbiwgc3RyaW5nIGxhbmd1YWdlLCBJRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+IHByb3BlcnRpZXMpDQogICAgICAgIHsNCiAgICAgICAgICAgIE5hbWUgPSBuYW1lOw0KICAgICAgICAgICAgRnVsbE5hbWUgPSBmdWxsTmFtZTsNCiAgICAgICAgICAgIFZlcnNpb24gPSB2ZXJzaW9uOw0KICAgICAgICAgICAgU2VtYW50aWNWZXJzaW9uID0gc2VtYW50aWNWZXJzaW9uOw0KICAgICAgICAgICAgRmlsZVZlcnNpb24gPSBmaWxlVmVyc2lvbjsNCiAgICAgICAgICAgIFNhcmlmTG9nZ2VyVmVyc2lvbiA9IHNhcmlmTG9nZ2VyVmVyc2lvbjsNCiAgICAgICAgICAgIExhbmd1YWdlID0gbGFuZ3VhZ2U7DQogICAgICAgICAgICBpZiAocHJvcGVydGllcyAhPSBudWxsKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFNlcmlhbGl6ZWRQcm9wZXJ0eUluZm8+KHByb3BlcnRpZXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ=="
+ ],
+ "partialFingerprints": {
+ "UniqueId": "Parameter"
},
- "hashes": [
- {
- "value": "E33376C7425F27E26F78E1DF7CAA7B3B",
- "algorithm": "md5"
- },
- {
- "value": "9F3A4949737A7B4096C34736B119F3056724E32D",
- "algorithm": "sha-1"
- },
- {
- "value": "67363E7A073D9C456DDB266CD6656A58B6D841A9991A248898D9D27CB65782FB",
- "algorithm": "sha-256"
- }
- ]
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Visitors/AbsoluteUrisVisitor.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLg0KDQp1c2luZyBTeXN0ZW07DQp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsNCg0KbmFtZXNwYWNlIE1pY3Jvc29mdC5Db2RlQW5hbHlzaXMuU2FyaWYuVmlzaXRvcnMNCnsNCiAgICBwdWJsaWMgY2xhc3MgQWJzb2x1dGVVcmlzVmlzaXRvciA6IFNhcmlmUmV3cml0aW5nVmlzaXRvcg0KICAgIHsNCiAgICAgICAgaW50ZXJuYWwgRGljdGlvbmFyeTxzdHJpbmcsIFVyaT4gX2N1cnJlbnRVcmlNYXBwaW5nczsNCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBDcmVhdGUgYSBSZWJhc2VVcmlWaXNpdG9yLCB3aXRoIGEgZ2l2ZW4gbmFtZSBmb3IgdGhlIEJhc2UgVVJJIGFuZCBhIHZhbHVlIGZvciB0aGUgYmFzZSBVUkkuDQogICAgICAgIC8vLyA8L3N1bW1hcnk+DQogICAgICAgIHB1YmxpYyBBYnNvbHV0ZVVyaXNWaXNpdG9yKCkNCiAgICAgICAgew0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIFBoeXNpY2FsTG9jYXRpb24gVmlzaXRQaHlzaWNhbExvY2F0aW9uKFBoeXNpY2FsTG9jYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgUGh5c2ljYWxMb2NhdGlvbiBuZXdOb2RlID0gYmFzZS5WaXNpdFBoeXNpY2FsTG9jYXRpb24obm9kZSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmIChfY3VycmVudFVyaU1hcHBpbmdzICE9IG51bGwgJiYgIXN0cmluZy5Jc051bGxPckVtcHR5KG5ld05vZGUuRmlsZUxvY2F0aW9uPy5VcmlCYXNlSWQpICYmIF9jdXJyZW50VXJpTWFwcGluZ3MuQ29udGFpbnNLZXkobmV3Tm9kZS5GaWxlTG9jYXRpb24uVXJpQmFzZUlkKSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBVcmkgYmFzZVVyaSA9IF9jdXJyZW50VXJpTWFwcGluZ3NbbmV3Tm9kZS5GaWxlTG9jYXRpb24uVXJpQmFzZUlkXTsNCiAgICAgICAgICAgICAgICBuZXdOb2RlLkZpbGVMb2NhdGlvbi5VcmkgPSBDb21iaW5lVXJpcyhiYXNlVXJpLCBuZXdOb2RlLkZpbGVMb2NhdGlvbi5VcmkpOw0KICAgICAgICAgICAgICAgIG5ld05vZGUuRmlsZUxvY2F0aW9uLlVyaUJhc2VJZCA9IG51bGw7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBuZXdOb2RlOw0KICAgICAgICB9DQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIFJ1biBWaXNpdFJ1bihSdW4gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgUnVuIG5ld1J1bjsNCg0KICAgICAgICAgICAgLy8gUmVzZXQgVVJJIG1hcHBpbmdzIGZvciB0aGlzIHJ1bi4NCiAgICAgICAgICAgIF9jdXJyZW50VXJpTWFwcGluZ3MgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIFVyaT4oKTsNCg0KICAgICAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgdXJpIG1hcHBpbmdzIGRpY3Rpb25hcnkgb3V0IG9mIHRoZSANCiAgICAgICAgICAgIGlmIChub2RlLlByb3BlcnRpZXMgIT0gbnVsbCAmJiBub2RlLlByb3BlcnRpZXMuQ29udGFpbnNLZXkoUmViYXNlVXJpVmlzaXRvci5CYXNlVXJpRGljdGlvbmFyeU5hbWUpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIEZvciBhIGdpdmVuIHJ1biwgd2UnbGwgcmVzZXQgdGhlIFVyaSBNYXBwaW5ncyB3aGlsZSB0cmF2ZXJzaW5nIGl0Lg0KICAgICAgICAgICAgICAgIGlmICghUmViYXNlVXJpVmlzaXRvci5UcnlEZXNlcmlhbGl6ZVByb3BlcnR5RGljdGlvbmFyeShub2RlLlByb3BlcnRpZXNbUmViYXNlVXJpVmlzaXRvci5CYXNlVXJpRGljdGlvbmFyeU5hbWVdLCBvdXQgX2N1cnJlbnRVcmlNYXBwaW5ncykpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigkIkJhc2UgVVJJIERpY3Rpb25hcnkgaW5jb3JyZWN0bHkgZm9ybWF0dGVkLCB3ZSBleHBlY3QgYSBzdHJpbmctPnVyaSBkaWN0aW9uYXJ5IGluIHRoZSBSdW4gUHJvcGVydGllcyB3aXRoIG5hbWUge1JlYmFzZVVyaVZpc2l0b3IuQmFzZVVyaURpY3Rpb25hcnlOYW1lfSIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGRpY3Rpb25hcnkgd2Ugd29uJ3QgbmVlZCB0byBmaXggdGhlIGZpbGVzIHVwLg0KICAgICAgICAgICAgICAgIGlmIChub2RlLkZpbGVzICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBGaXhGaWxlcyhub2RlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIG5ld1J1biA9IGJhc2UuVmlzaXRSdW4obm9kZSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiBuZXdSdW47DQogICAgICAgIH0NCg0KICAgICAgICAvLy8gPHN1bW1hcnk+DQogICAgICAgIC8vLyBJZiB3ZSBhcmUgY2hhbmdpbmcgdGhlIFVSSXMgaW4gUmVzdWx0cyB0byBiZSByZWxhdGl2ZSwgd2UgbmVlZCB0byBhbHNvIGNoYW5nZSB0aGUgVVJJIGtleXMgaW4gdGhlIGZpbGVzIGRpY3Rpb25hcnkNCiAgICAgICAgLy8vIHRvIGJlIHJlbGF0aXZlLg0KICAgICAgICAvLy8gPC9zdW1tYXJ5Pg0KICAgICAgICAvLy8gPHBhcmFtIG5hbWU9InJ1biI+QSBydW4gdG8gZml4IHRoZSBGaWxlcyBkaWN0aW9uYXJ5IG9mLjwvcGFyYW0+DQogICAgICAgIHByaXZhdGUgdm9pZCBGaXhGaWxlcyhSdW4gcnVuKQ0KICAgICAgICB7DQogICAgICAgICAgICBEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+IG5ld0RpY3Rpb25hcnkgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIEZpbGVEYXRhPigpOw0KDQogICAgICAgICAgICBmb3JlYWNoICh2YXIga2V5IGluIHJ1bi5GaWxlcy5LZXlzKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIEZpbGVEYXRhIG5ld05vZGUgPSBydW4uRmlsZXNba2V5XTsNCg0KICAgICAgICAgICAgICAgIFVyaSBiYXNlVXJpOw0KICAgICAgICAgICAgICAgIC8vIE5vZGUgaGFzIGEgVXJpQmFzZUlkICYmIHdlJ3JlIGdvaW5nIHRvIHJld3JpdGUgaXQuDQogICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShuZXdOb2RlLkZpbGVMb2NhdGlvbj8uVXJpQmFzZUlkKSAmJiBfY3VycmVudFVyaU1hcHBpbmdzLkNvbnRhaW5zS2V5KG5ld05vZGUuRmlsZUxvY2F0aW9uPy5VcmlCYXNlSWQpKQ0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gUmV3cml0ZSB0aGUgZmlsZWRhdGEncyBVUkkNCiAgICAgICAgICAgICAgICAgICAgYmFzZVVyaSA9IF9jdXJyZW50VXJpTWFwcGluZ3NbbmV3Tm9kZS5GaWxlTG9jYXRpb24uVXJpQmFzZUlkXTsNCiAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZS5GaWxlTG9jYXRpb24uVXJpID0gQ29tYmluZVVyaXMoYmFzZVVyaSwgbmV3Tm9kZS5GaWxlTG9jYXRpb24uVXJpKTsNCg0KICAgICAgICAgICAgICAgICAgICBVcmkgcGFyZW50VXJpOw0KICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGFyZW50IHVyaSBpcyByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJld3JpdGUgaXQgYXMgd2VsbC4NCiAgICAgICAgICAgICAgICAgICAgaWYgKFVyaS5UcnlDcmVhdGUobmV3Tm9kZS5QYXJlbnRLZXksIFVyaUtpbmQuUmVsYXRpdmUsIG91dCBwYXJlbnRVcmkpKQ0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBuZXdOb2RlLlBhcmVudEtleSA9IENvbWJpbmVVcmlzKGJhc2VVcmksIHBhcmVudFVyaSkuVG9TdHJpbmcoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIG5ld05vZGUuRmlsZUxvY2F0aW9uLlVyaUJhc2VJZCA9IG51bGw7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gZml4IGRpY3Rpb25hcnkNCiAgICAgICAgICAgICAgICBuZXdEaWN0aW9uYXJ5W25ld05vZGUuRmlsZUxvY2F0aW9uLlVyaS5Ub1N0cmluZygpXSA9IG5ld05vZGU7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJ1bi5GaWxlcyA9IG5ld0RpY3Rpb25hcnk7DQogICAgICAgIH0NCg0KICAgICAgICBwcml2YXRlIHN0YXRpYyBVcmkgQ29tYmluZVVyaXMoVXJpIGJhc2VVcmksIFVyaSByZWxhdGl2ZVVyaSkNCiAgICAgICAgew0KICAgICAgICAgICAgVXJpIHJlbGF0aXZlUGFydCA9IHJlbGF0aXZlVXJpOw0KICAgICAgICAgICAgaWYocmVsYXRpdmVVcmkuT3JpZ2luYWxTdHJpbmcuU3RhcnRzV2l0aCgiLyIpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHJlbGF0aXZlUGFydCA9IG5ldyBVcmkocmVsYXRpdmVVcmkuVG9TdHJpbmcoKS5UcmltU3RhcnQoJy8nKSwgVXJpS2luZC5SZWxhdGl2ZSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHJldHVybiBuZXcgVXJpKGJhc2VVcmksIHJlbGF0aXZlUGFydCk7DQogICAgICAgIH0NCiAgICB9DQp9DQo="
+ {
+ "ruleId": "CA1822",
+ "message": {
+ "text": "The 'this' parameter (or 'Me' in Visual Basic) of 'Validator.GetPropertyNames(JObject)' is never used. Mark the member as static (or Shared in Visual Basic) or use 'this'/'Me' in the method body or at least one property accessor, if appropriate."
},
- "hashes": [
- {
- "value": "D6C8C3453CE54E932D053FF83579AD42",
- "algorithm": "md5"
- },
- {
- "value": "43266DE86ED7EB884EB196BF5CF62D3A4D2B01A1",
- "algorithm": "sha-1"
- },
+ "locations": [
{
- "value": "E8EBFB70ABAB356B08F2B8DF421738BEFA75E5E63B511945071C47F03D75DD27",
- "algorithm": "sha-256"
+ "physicalLocation": {
+ "artifactLocation": {
+ "uri": "../../../../../../sarif-sdk-test/bld/bin/AnyCPU_Debug/Sarif.Multitool/net461/Microsoft.Json.Schema.Validation.dll",
+ "uriBaseId": "$(ProjectDir)",
+ "index": 2
+ }
+ },
+ "logicalLocations": [
+ {
+ "index": 121,
+ "fullyQualifiedName": "microsoft.json.schema.validation.dll!Microsoft.Json.Schema.Validation.Validator.GetPropertyNames(Newtonsoft.Json.Linq.JObject)"
+ }
+ ]
}
- ]
+ ],
+ "properties": {
+ "Category": "Microsoft.Performance",
+ "FixCategory": "NonBreaking"
+ }
},
- "file:///E:/src/sarif-sdk-test/src/Sarif/Visitors/AddFileReferencesVisitor.cs": {
- "mimeType": "text/x-csharp",
- "contents": {
- "binary": "77u/Ly8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQovLyBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uLnVzaW5nIFN5c3RlbTsNCnVzaW5nIFN5c3RlbTsNCnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LkNvZGVBbmFseXNpcy5TYXJpZi5WaXNpdG9ycw0Kew0KICAgIHB1YmxpYyBjbGFzcyBBZGRGaWxlUmVmZXJlbmNlc1Zpc2l0b3IgOiBTYXJpZlJld3JpdGluZ1Zpc2l0b3INCiAgICB7DQogICAgICAgIElEaWN0aW9uYXJ5PHN0cmluZywgRmlsZURhdGE+IF9maWxlczsNCg0KICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgUnVuIFZpc2l0UnVuKFJ1biBub2RlKQ0KICAgICAgICB7DQogICAgICAgICAgICBfZmlsZXMgPSBub2RlLkZpbGVzOw0KDQogICAgICAgICAgICBSdW4gcmVzdWx0ID0gYmFzZS5WaXNpdFJ1bihub2RlKTsNCiAgICAgICAgICAgIHJlc3VsdC5GaWxlcyA9IF9maWxlczsNCg0KICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgcHVibGljIG92ZXJyaWRlIFBoeXNpY2FsTG9jYXRpb24gVmlzaXRQaHlzaWNhbExvY2F0aW9uKFBoeXNpY2FsTG9jYXRpb24gbm9kZSkNCiAgICAgICAgew0KICAgICAgICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcsIHNvbWUgZWxlbWVudHMgdGhhdCBtYXkgY29udHJpYnV0ZSB0byBhIGZpbGVzIHRhYmxlIA0KICAgICAgICAgICAgLy8ga2V5IGFyZSBjYXNlIHNlbnNpdGl2ZSwgZS5nLiwgZXZlcnl0aGluZyBidXQgdGhlIHNjaGVtYSBhbmQgcHJvdG9jb2wgb2YgYQ0KICAgICAgICAgICAgLy8gd2ViIFVSSS4gV2UgZG9uJ3QgaGF2ZSBhIHByb3BlciBjb21wYXJlciBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbiBoYW5kbGUgDQogICAgICAgICAgICAvLyBhbGwgY2FzZXMuIEZvciBub3csIHdlIGNvdmVyIHRoZSBXaW5kb3dzIGhhcHB5IHBhdGgsIHdoaWNoIGFzc3VtZXMgdGhhdA0KICAgICAgICAgICAgLy8gbW9zdCBVUklzIGluIGxvZyBmaWxlcyBhcmUgZmlsZSBwYXRocyAod2hpY2ggYXJlIGNhc2UtaW5zZW5zaXRpdmUpDQogICAgICAgICAgICAvLw0KICAgICAgICAgICAgLy8gVHJhY2tpbmcgaXRlbSBmb3IgYW4gaW1wcm92ZWQgY29tcGFyZXI6DQogICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L3NhcmlmLXNkay9pc3N1ZXMvOTczDQogICAgICAgICAgICBfZmlsZXMgPSBfZmlsZXMgPz8gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBGaWxlRGF0YT4oU3RyaW5nQ29tcGFyZXIuT3JkaW5hbElnbm9yZUNhc2UpOw0KDQogICAgICAgICAgICBGaWxlTG9jYXRpb24gZmlsZUxvY2F0aW9uID0gbm9kZS5GaWxlTG9jYXRpb247DQoNCiAgICAgICAgICAgIHN0cmluZyB1cmlUZXh0ID0gVXJpLkVzY2FwZVVyaVN0cmluZyhmaWxlTG9jYXRpb24uVXJpLlRvU3RyaW5nKCkpOw0KDQogICAgICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGZpbGVMb2NhdGlvbi5VcmlCYXNlSWQpKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFNlZSBFWEFNUExFIDMgb2YgMy4xMS4xMy4yICdQcm9wZXJ0eSBOYW1lcycgb2YNCiAgICAgICAgICAgICAgICAvLyBTQVJJRiB2MiAnZmlsZXMnIHByb3BlcnR5IHNwZWNpZmljYXRpb24gDQogICAgICAgICAgICAgICAgdXJpVGV4dCA9ICIjIiArIGZpbGVMb2NhdGlvbi5VcmlCYXNlSWQgKyAiIyIgKyB1cmlUZXh0Ow0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgd2Ugd2lsbCBub3QgaW5zZXJ0IG9uZSBhcyB3ZSB3YW50IHRvIA0KICAgICAgICAgICAgLy8gcHJlc2VydmUgbWltZS10eXBlLCBoYXNoIGRldGFpbHMsIGFuZCBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IA0KICAgICAgICAgICAgLy8gbWF5IGFscmVhZHkgYmUgcHJlc2VudA0KICAgICAgICAgICAgaWYgKCFfZmlsZXMuQ29udGFpbnNLZXkodXJpVGV4dCkpDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgc3RyaW5nIG1pbWVUeXBlID0gV3JpdGVycy5NaW1lVHlwZS5EZXRlcm1pbmVGcm9tRmlsZUV4dGVuc2lvbih1cmlUZXh0KTsNCg0KICAgICAgICAgICAgICAgIF9maWxlc1t1cmlUZXh0XSA9IG5ldyBGaWxlRGF0YSgpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICBNaW1lVHlwZSA9IG1pbWVUeXBlDQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuIGJhc2UuVmlzaXRQaHlzaWNhbExvY2F0aW9uKG5vZGUpOw0KICAgICAgICB9DQogICAgfQ0KfQ0K"
+ {
+ "ruleId": "CA1822",
+ "message": {
+ "text": "The 'this' parameter (or 'Me' in Visual Basic) of 'Validator.TokenMatchesEnum(JToken, IList