{"formatVersion":"1.0","generatedAt":"2022-01-11T06:21:57Z","generatedBy":{"name":"Joseph Duffy"},"name":"Joseph Duffy's Collection","overview":"A collection of Swift packages created or heavily contributed to by Joseph Duffy","packages":[{"keywords":["nsubiquitouskeyvaluestore","property-wrapper","swift","swiftpm","userdefaults"],"license":{"name":"MIT","url":"https://raw.githubusercontent.com/JosephDuffy/Persist/master/LICENSE"},"readmeURL":"https://raw.githubusercontent.com/JosephDuffy/Persist/master/README.md","summary":"Extensible typesafe storage utilising property wrappers. Supports transformers such as Codable. Built in support for UserDefaults, NSUbiquitousKeyValueStore, FileManager, and in memory storage.","url":"https://github.com/JosephDuffy/Persist.git","versions":[{"defaultToolsVersion":"5.5.0","manifests":{"5.5.0":{"minimumPlatformVersions":[{"name":"ios","version":"9.0"},{"name":"macos","version":"10.10"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Persist","products":[{"name":"Persist","targets":["Persist"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Persist","name":"Persist"}],"toolsVersion":"5.5.0"}},"summary":"Thread-safety has been improved, including:","version":"v1.2.0"},{"defaultToolsVersion":"5.3.0","manifests":{"5.3.0":{"minimumPlatformVersions":[{"name":"ios","version":"9.0"},{"name":"macos","version":"10.10"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Persist","products":[{"name":"Persist","targets":["Persist"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Persist","name":"Persist"}],"toolsVersion":"5.3.0"}},"summary":"Support for `Date`s in `UserDefaultsStorage`","version":"v1.1.0"},{"defaultToolsVersion":"5.3.0","manifests":{"5.3.0":{"minimumPlatformVersions":[{"name":"ios","version":"9.0"},{"name":"macos","version":"10.10"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Persist","products":[{"name":"Persist","targets":["Persist"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Persist","name":"Persist"}],"toolsVersion":"5.3.0"}},"summary":"- Add Persister/Persisted extensions on watchOS","version":"v1.0.1"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"8.0"},{"name":"macos","version":"10.10"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Persist","products":[{"name":"Persist","targets":["Persist"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Persist","name":"Persist"}],"toolsVersion":"5.2.0"}},"summary":"Use jazzy for documenation","version":"v0.2.2"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"8.0"},{"name":"macos","version":"10.10"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Persist","products":[{"name":"Persist","targets":["Persist"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Persist","name":"Persist"}],"toolsVersion":"5.2.0"}},"summary":"Improve release process","version":"v0.2.1"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"8.0"},{"name":"macos","version":"10.10"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Persist","products":[{"name":"Persist","targets":["Persist"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Persist","name":"Persist"}],"toolsVersion":"5.2.0"}},"summary":"Debug Release","version":"v0.2.1-rc6"}]},{"keywords":["carthage","cocoapods","property-wrapper","swift","swiftpm"],"license":{"name":"MIT","url":"https://raw.githubusercontent.com/JosephDuffy/Partial/master/LICENSE"},"readmeURL":"https://raw.githubusercontent.com/JosephDuffy/Partial/master/README.md","summary":"Type-safe wrapper mirroring the wrapped type's properties, making each property optional","url":"https://github.com/JosephDuffy/Partial.git","versions":[{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"macos","version":"10.10"},{"name":"ios","version":"8.0"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Partial","products":[{"name":"Partial","targets":["Partial"],"type":{"library":["automatic"]}},{"name":"DangerDeps","targets":["DangerDependencies"],"type":{"library":["dynamic"]}}],"targets":[{"moduleName":"Partial","name":"Partial"},{"moduleName":"DangerDependencies","name":"DangerDependencies"}],"toolsVersion":"5.2.0"}},"summary":"- Add support for `builder(for:)` function to aid with building complex type (thanks to @randomeizer) - Support for Xcode 12.1","version":"v1.1.0"},{"defaultToolsVersion":"5.0.0","manifests":{"5.0.0":{"minimumPlatformVersions":[{"name":"macos","version":"10.10"},{"name":"ios","version":"8.0"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Partial","products":[{"name":"Partial","targets":["Partial"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Partial","name":"Partial"}],"toolsVersion":"5.0.0"}},"version":"v1.0.4"},{"defaultToolsVersion":"5.0.0","manifests":{"5.0.0":{"minimumPlatformVersions":[{"name":"macos","version":"10.10"},{"name":"ios","version":"8.0"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Partial","products":[{"name":"Partial","targets":["Partial"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Partial","name":"Partial"}],"toolsVersion":"5.0.0"}},"version":"v1.0.2"},{"defaultToolsVersion":"5.0.0","manifests":{"5.0.0":{"minimumPlatformVersions":[{"name":"macos","version":"10.10"},{"name":"ios","version":"8.0"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Partial","products":[{"name":"Partial","targets":["Partial"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Partial","name":"Partial"}],"toolsVersion":"5.0.0"}},"version":"v0.2.0"},{"defaultToolsVersion":"5.0.0","manifests":{"5.0.0":{"minimumPlatformVersions":[{"name":"macos","version":"10.10"},{"name":"ios","version":"8.0"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Partial","products":[{"name":"Partial","targets":["Partial"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Partial","name":"Partial"}],"toolsVersion":"5.0.0"}},"summary":"A test release to check if documentation deployment via Travis is working","version":"v0.1.1"},{"defaultToolsVersion":"5.0.0","manifests":{"5.0.0":{"minimumPlatformVersions":[{"name":"macos","version":"10.10"},{"name":"ios","version":"8.0"},{"name":"tvos","version":"9.0"},{"name":"watchos","version":"2.0"}],"packageName":"Partial","products":[{"name":"Partial","targets":["Partial"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Partial","name":"Partial"}],"toolsVersion":"5.0.0"}},"summary":"Initial release with Partial, PartialBuilder, and Swift 5.1 beta support","version":"v0.1.0"}]},{"keywords":["swiftpm"],"license":{"name":"MIT","url":"https://raw.githubusercontent.com/JosephDuffy/HashableByKeyPath/master/LICENSE"},"readmeURL":"https://raw.githubusercontent.com/JosephDuffy/HashableByKeyPath/master/README.md","summary":"Add `Equatable` and/or `Hashable` conformance with a single function utilising `KeyPath`s.","url":"https://github.com/JosephDuffy/HashableByKeyPath.git","versions":[{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"packageName":"HashableByKeyPath","products":[{"name":"HashableByKeyPath","targets":["HashableByKeyPath"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"HashableByKeyPath","name":"HashableByKeyPath"}],"toolsVersion":"5.2.0"}},"summary":"- Mark `buildBlock` functions public","version":"v1.2.0-beta.2"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"packageName":"HashableByKeyPath","products":[{"name":"HashableByKeyPath","targets":["HashableByKeyPath"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"HashableByKeyPath","name":"HashableByKeyPath"}],"toolsVersion":"5.2.0"}},"summary":"Support for custom equators","version":"v1.2.0-beta.1"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"packageName":"HashableByKeyPath","products":[{"name":"HashableByKeyPath","targets":["HashableByKeyPath"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"HashableByKeyPath","name":"HashableByKeyPath"}],"toolsVersion":"5.2.0"}},"summary":"Add result builder API","version":"v1.1.0"}]},{"keywords":["composed","composition","composition-api","protocol-oriented-programming","spm","swift","swift-package-manager"],"license":{"name":"NOASSERTION","url":"https://raw.githubusercontent.com/composed-swift/Composed/master/License.md"},"readmeURL":"https://raw.githubusercontent.com/composed-swift/Composed/master/README.md","summary":"A Swift framework for composing data.","url":"https://github.com/composed-swift/Composed.git","versions":[{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"11.0"}],"packageName":"Composed","products":[{"name":"Composed","targets":["Composed"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Composed","name":"Composed"}],"toolsVersion":"5.2.0"}},"summary":"- Improve performance of large `ComposedSectionProvider`s","version":"1.1.1"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"11.0"}],"packageName":"Composed","products":[{"name":"Composed","targets":["Composed"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Composed","name":"Composed"}],"toolsVersion":"5.2.0"}},"summary":"- Add various convenience functions to `ComposedSectionProvider`   - `sectionOffset(for:)`   - `firstIndex(of:)`   - `contains(_:)`   - `insert(_:after:)`   - `insert(_:before:)` - Fix delegate calls from `ComposedSectionProvider` sometimes providing the wrong index","version":"1.1.0"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"11.0"}],"packageName":"Composed","products":[{"name":"Composed","targets":["Composed"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Composed","name":"Composed"}],"toolsVersion":"5.2.0"}},"version":"1.0.4"},{"defaultToolsVersion":"5.2.0","manifests":{"5.2.0":{"minimumPlatformVersions":[{"name":"ios","version":"11.0"}],"packageName":"Composed","products":[{"name":"Composed","targets":["Composed"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Composed","name":"Composed"}],"toolsVersion":"5.2.0"}},"version":"0.0.2"},{"defaultToolsVersion":"5.1.0","manifests":{"5.1.0":{"packageName":"Composed","products":[{"name":"Composed","targets":["Composed"],"type":{"library":["automatic"]}}],"targets":[{"moduleName":"Composed","name":"Composed"}],"toolsVersion":"5.1.0"}},"summary":"","version":"0.0.1"}]}],"signature":{"certificate":{"issuer":{"commonName":"Apple Worldwide Developer Relations Certification Authority","organization":"Apple Inc.","organizationalUnit":"G3"},"subject":{"commonName":"Swift Package Collection: Yetii Ltd.","organization":"Yetii Ltd.","organizationalUnit":"HGVGKE57E6","userID":"HGVGKE57E6"}},"signature":"ewogICJhbGciIDogIlJTMjU2IiwKICAieDVjIiA6IFsKICAgICJNSUlGZFRDQ0JGMmdBd0lCQWdJUVRKUDhsMW42cUpHZlFpVGQxeVprK0RBTkJna3Foa2lHOXcwQkFRc0ZBREIxTVVRd1FnWURWUVFERER0QmNIQnNaU0JYYjNKc1pIZHBaR1VnUkdWMlpXeHZjR1Z5SUZKbGJHRjBhVzl1Y3lCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEVMTUFrR0ExVUVDd3dDUnpNeEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERUSXlNREV4TVRBek5EVTFObG9YRFRJek1ERXhNVEF6TkRVMU5Wb3dnWUl4R2pBWUJnb0praWFKay9Jc1pBRUJEQXBJUjFaSFMwVTFOMFUyTVMwd0t3WURWUVFERENSVGQybG1kQ0JRWVdOcllXZGxJRU52Ykd4bFkzUnBiMjQ2SUZsbGRHbHBJRXgwWkM0eEV6QVJCZ05WQkFzTUNraEhWa2RMUlRVM1JUWXhFekFSQmdOVkJBb01DbGxsZEdscElFeDBaQzR4Q3pBSkJnTlZCQVlUQWtkQ01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdWk5YlNhQUJOc0VrNU12WE1YbVNYVzFyRlFwS3BYQ2kya2tQS2ZyZTBHOWdmSXlvTytNMTFKaGI5RktOeW9YZHZGUUtXeHVROHR1amd5YzMvNHZkYjBhT3FJUThhSUxiSCtaYzlENXQvbkhjMTZTbVNVOGJjbGV4aDgxeG9zSWUxNWNIZW1kbDUwNDlsOENBbEZYc2FvbGZBRTZacFVIZ1ZDRWJxeUpkYWhJSWkvdm50K3IzbmNJY2lTK2FpWmtzWUoyTkFSdG9hRTRTdmhSbitxdmxvYWpldzVpdWJ6V0NBd2dtK29ydmtzYzI4WlU0ci9SMDVpTHpwUVJFeEIwWC9RaTJTNFBhUWE4SHowd0VoQUN2YVRac2RFOVBONXkzWjczRnE2NG96YUg3UmUrdEFsbXowQWF4UjNNSnZNV3c5TWVMZnJsdTRUb1NXZ014RERRQ2p3SURBUUFCbzRJQjhUQ0NBZTB3REFZRFZSMFRBUUgvQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlFKL3NBVmtQbXZaQXFTRXJrbUtHTU1sK3luc2pCQkJnZ3JCZ0VGQlFjQkFRUTFNRE13TVFZSUt3WUJCUVVITUFHR0pXaDBkSEE2THk5dlkzTndMbUZ3Y0d4bExtTnZiUzl2WTNOd01ETXRkM2RrY21jek1Ua3dnZ0VlQmdOVkhTQUVnZ0VWTUlJQkVUQ0NBUTBHQ1NxR1NJYjNZMlFGQVRDQi96Q0J3d1lJS3dZQkJRVUhBZ0l3Z2JZTWdiTlNaV3hwWVc1alpTQnZiaUIwYUdseklHTmxjblJwWm1sallYUmxJR0o1SUdGdWVTQndZWEowZVNCaGMzTjFiV1Z6SUdGalkyVndkR0Z1WTJVZ2IyWWdkR2hsSUhSb1pXNGdZWEJ3YkdsallXSnNaU0J6ZEdGdVpHRnlaQ0IwWlhKdGN5QmhibVFnWTI5dVpHbDBhVzl1Y3lCdlppQjFjMlVzSUdObGNuUnBabWxqWVhSbElIQnZiR2xqZVNCaGJtUWdZMlZ5ZEdsbWFXTmhkR2x2YmlCd2NtRmpkR2xqWlNCemRHRjBaVzFsYm5SekxqQTNCZ2dyQmdFRkJRY0NBUllyYUhSMGNITTZMeTkzZDNjdVlYQndiR1V1WTI5dEwyTmxjblJwWm1sallYUmxZWFYwYUc5eWFYUjVMekFXQmdOVkhTVUJBZjhFRERBS0JnZ3JCZ0VGQlFjREF6QWRCZ05WSFE0RUZnUVU5dVlKSnJBMWl0ejFyL2lESkJsQXIrVHJ6d1l3RGdZRFZSMFBBUUgvQkFRREFnZUFNQkFHQ2lxR1NJYjNZMlFHQVNNRUFnVUFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNOWTluSmlia0t3ODZ1MUhtZlZidkE4aEV0ZWhOM2MyQjZraHc2OFFLRGNsRzhYTmRoYitGaDdQS0hCSFNSOVZ4MDBVQXRWZ2o4VGdKU0hzc3FibTlJTmgyNXhOZkZNZzNWS0lQUndaSHJqa1N4V0JKY0g4ZkpINUNmRHFwcFJtcnV4WnJPdGNNUkFtaSsxeTNlalpld0pNOUJGbEJFdXZDbGM5SWRWRUxvNmtjckxpWkRBN3ltUHQyQXNuZkVFUDJNS1dlRVBsMWV4OGhDcWUyOGJGRzNmdmZOeHZySlFXNmFBamZjT05mVk9MQ014VUp4UU9oYzB5bXpWLzhrTDc1TVljVzlzWXJnaGFIUVc1VldaVEd0WjdiNmVZSzV3bm1TUm9iblZ3RWxkcTE3alJYUzFOSjJaOVA5VzM0cDNTbDB0STd2eVJ5cmU4K055cEUxOVFXYSIKICBdCn0.ewogICJmb3JtYXRWZXJzaW9uIiA6ICIxLjAiLAogICJnZW5lcmF0ZWRBdCIgOiAiMjAyMi0wMS0xMVQwNjoyMTo1N1oiLAogICJnZW5lcmF0ZWRCeSIgOiB7CiAgICAibmFtZSIgOiAiSm9zZXBoIER1ZmZ5IgogIH0sCiAgIm5hbWUiIDogIkpvc2VwaCBEdWZmeSdzIENvbGxlY3Rpb24iLAogICJvdmVydmlldyIgOiAiQSBjb2xsZWN0aW9uIG9mIFN3aWZ0IHBhY2thZ2VzIGNyZWF0ZWQgb3IgaGVhdmlseSBjb250cmlidXRlZCB0byBieSBKb3NlcGggRHVmZnkiLAogICJwYWNrYWdlcyIgOiBbCiAgICB7CiAgICAgICJrZXl3b3JkcyIgOiBbCiAgICAgICAgIm5zdWJpcXVpdG91c2tleXZhbHVlc3RvcmUiLAogICAgICAgICJwcm9wZXJ0eS13cmFwcGVyIiwKICAgICAgICAic3dpZnQiLAogICAgICAgICJzd2lmdHBtIiwKICAgICAgICAidXNlcmRlZmF1bHRzIgogICAgICBdLAogICAgICAibGljZW5zZSIgOiB7CiAgICAgICAgIm5hbWUiIDogIk1JVCIsCiAgICAgICAgInVybCIgOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0pvc2VwaER1ZmZ5L1BlcnNpc3QvbWFzdGVyL0xJQ0VOU0UiCiAgICAgIH0sCiAgICAgICJyZWFkbWVVUkwiIDogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9Kb3NlcGhEdWZmeS9QZXJzaXN0L21hc3Rlci9SRUFETUUubWQiLAogICAgICAic3VtbWFyeSIgOiAiRXh0ZW5zaWJsZSB0eXBlc2FmZSBzdG9yYWdlIHV0aWxpc2luZyBwcm9wZXJ0eSB3cmFwcGVycy4gU3VwcG9ydHMgdHJhbnNmb3JtZXJzIHN1Y2ggYXMgQ29kYWJsZS4gQnVpbHQgaW4gc3VwcG9ydCBmb3IgVXNlckRlZmF1bHRzLCBOU1ViaXF1aXRvdXNLZXlWYWx1ZVN0b3JlLCBGaWxlTWFuYWdlciwgYW5kIGluIG1lbW9yeSBzdG9yYWdlLiIsCiAgICAgICJ1cmwiIDogImh0dHBzOi8vZ2l0aHViLmNvbS9Kb3NlcGhEdWZmeS9QZXJzaXN0LmdpdCIsCiAgICAgICJ2ZXJzaW9ucyIgOiBbCiAgICAgICAgewogICAgICAgICAgImRlZmF1bHRUb29sc1ZlcnNpb24iIDogIjUuNS4wIiwKICAgICAgICAgICJtYW5pZmVzdHMiIDogewogICAgICAgICAgICAiNS41LjAiIDogewogICAgICAgICAgICAgICJtaW5pbXVtUGxhdGZvcm1WZXJzaW9ucyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJpb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiOS4wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIm1hY29zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjEwLjEwIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInR2b3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiOS4wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIndhdGNob3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMi4wIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInBhY2thZ2VOYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAicHJvZHVjdHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGVyc2lzdCIsCiAgICAgICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgICAgICAiUGVyc2lzdCIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICJsaWJyYXJ5IiA6IFsKICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb2R1bGVOYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIlBlcnNpc3QiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidG9vbHNWZXJzaW9uIiA6ICI1LjUuMCIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJzdW1tYXJ5IiA6ICJUaHJlYWQtc2FmZXR5IGhhcyBiZWVuIGltcHJvdmVkLCBpbmNsdWRpbmc6IiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MS4yLjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4zLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjMuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQZXJzaXN0IgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGVyc2lzdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMy4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIlN1cHBvcnQgZm9yIGBEYXRlYHMgaW4gYFVzZXJEZWZhdWx0c1N0b3JhZ2VgIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MS4xLjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4zLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjMuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQZXJzaXN0IgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGVyc2lzdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMy4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIi0gQWRkIFBlcnNpc3Rlci9QZXJzaXN0ZWQgZXh0ZW5zaW9ucyBvbiB3YXRjaE9TIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MS4wLjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjIuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI4LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQZXJzaXN0IgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGVyc2lzdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMi4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIlVzZSBqYXp6eSBmb3IgZG9jdW1lbmF0aW9uIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MC4yLjIiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjIuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI4LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQZXJzaXN0IgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGVyc2lzdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMi4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIkltcHJvdmUgcmVsZWFzZSBwcm9jZXNzIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MC4yLjEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjIuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI4LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQZXJzaXN0IgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBlcnNpc3QiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGVyc2lzdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMi4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIkRlYnVnIFJlbGVhc2UiLAogICAgICAgICAgInZlcnNpb24iIDogInYwLjIuMS1yYzYiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgewogICAgICAia2V5d29yZHMiIDogWwogICAgICAgICJjYXJ0aGFnZSIsCiAgICAgICAgImNvY29hcG9kcyIsCiAgICAgICAgInByb3BlcnR5LXdyYXBwZXIiLAogICAgICAgICJzd2lmdCIsCiAgICAgICAgInN3aWZ0cG0iCiAgICAgIF0sCiAgICAgICJsaWNlbnNlIiA6IHsKICAgICAgICAibmFtZSIgOiAiTUlUIiwKICAgICAgICAidXJsIiA6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vSm9zZXBoRHVmZnkvUGFydGlhbC9tYXN0ZXIvTElDRU5TRSIKICAgICAgfSwKICAgICAgInJlYWRtZVVSTCIgOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0pvc2VwaER1ZmZ5L1BhcnRpYWwvbWFzdGVyL1JFQURNRS5tZCIsCiAgICAgICJzdW1tYXJ5IiA6ICJUeXBlLXNhZmUgd3JhcHBlciBtaXJyb3JpbmcgdGhlIHdyYXBwZWQgdHlwZSdzIHByb3BlcnRpZXMsIG1ha2luZyBlYWNoIHByb3BlcnR5IG9wdGlvbmFsIiwKICAgICAgInVybCIgOiAiaHR0cHM6Ly9naXRodWIuY29tL0pvc2VwaER1ZmZ5L1BhcnRpYWwuZ2l0IiwKICAgICAgInZlcnNpb25zIiA6IFsKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjIuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIm1hY29zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjEwLjEwIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI4LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQYXJ0aWFsIiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQYXJ0aWFsIgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJEYW5nZXJEZXBzIiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJEYW5nZXJEZXBlbmRlbmNpZXMiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiZHluYW1pYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGFydGlhbCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb2R1bGVOYW1lIiA6ICJEYW5nZXJEZXBlbmRlbmNpZXMiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiRGFuZ2VyRGVwZW5kZW5jaWVzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic3VtbWFyeSIgOiAiLSBBZGQgc3VwcG9ydCBmb3IgYGJ1aWxkZXIoZm9yOilgIGZ1bmN0aW9uIHRvIGFpZCB3aXRoIGJ1aWxkaW5nIGNvbXBsZXggdHlwZSAodGhhbmtzIHRvIEByYW5kb21laXplcikgLSBTdXBwb3J0IGZvciBYY29kZSAxMi4xIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MS4xLjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4wLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjAuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIm1hY29zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjEwLjEwIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI4LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQYXJ0aWFsIiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQYXJ0aWFsIgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGFydGlhbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMC4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInZlcnNpb24iIDogInYxLjAuNCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkZWZhdWx0VG9vbHNWZXJzaW9uIiA6ICI1LjAuMCIsCiAgICAgICAgICAibWFuaWZlc3RzIiA6IHsKICAgICAgICAgICAgIjUuMC4wIiA6IHsKICAgICAgICAgICAgICAibWluaW11bVBsYXRmb3JtVmVyc2lvbnMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiaW9zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjguMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ0dm9zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjkuMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ3YXRjaG9zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjIuMCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJwYWNrYWdlTmFtZSIgOiAiUGFydGlhbCIsCiAgICAgICAgICAgICAgInByb2R1Y3RzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICAgICAgIlBhcnRpYWwiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW9kdWxlTmFtZSIgOiAiUGFydGlhbCIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQYXJ0aWFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRvb2xzVmVyc2lvbiIgOiAiNS4wLjAiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidmVyc2lvbiIgOiAidjEuMC4yIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRlZmF1bHRUb29sc1ZlcnNpb24iIDogIjUuMC4wIiwKICAgICAgICAgICJtYW5pZmVzdHMiIDogewogICAgICAgICAgICAiNS4wLjAiIDogewogICAgICAgICAgICAgICJtaW5pbXVtUGxhdGZvcm1WZXJzaW9ucyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJtYWNvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIxMC4xMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJpb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiOC4wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogInR2b3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiOS4wIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIndhdGNob3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMi4wIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInBhY2thZ2VOYW1lIiA6ICJQYXJ0aWFsIiwKICAgICAgICAgICAgICAicHJvZHVjdHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGFydGlhbCIsCiAgICAgICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgICAgICAiUGFydGlhbCIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICJsaWJyYXJ5IiA6IFsKICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb2R1bGVOYW1lIiA6ICJQYXJ0aWFsIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIlBhcnRpYWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidG9vbHNWZXJzaW9uIiA6ICI1LjAuMCIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MC4yLjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4wLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjAuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIm1hY29zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjEwLjEwIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI4LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAidHZvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICI5LjAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAid2F0Y2hvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIyLjAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQYXJ0aWFsIiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJQYXJ0aWFsIgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiUGFydGlhbCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMC4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIkEgdGVzdCByZWxlYXNlIHRvIGNoZWNrIGlmIGRvY3VtZW50YXRpb24gZGVwbG95bWVudCB2aWEgVHJhdmlzIGlzIHdvcmtpbmciLAogICAgICAgICAgInZlcnNpb24iIDogInYwLjEuMSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkZWZhdWx0VG9vbHNWZXJzaW9uIiA6ICI1LjAuMCIsCiAgICAgICAgICAibWFuaWZlc3RzIiA6IHsKICAgICAgICAgICAgIjUuMC4wIiA6IHsKICAgICAgICAgICAgICAibWluaW11bVBsYXRmb3JtVmVyc2lvbnMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAibWFjb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTAuMTAiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiaW9zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjguMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ0dm9zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjkuMCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJ3YXRjaG9zIiwKICAgICAgICAgICAgICAgICAgInZlcnNpb24iIDogIjIuMCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJwYWNrYWdlTmFtZSIgOiAiUGFydGlhbCIsCiAgICAgICAgICAgICAgInByb2R1Y3RzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIlBhcnRpYWwiLAogICAgICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICAgICAgIlBhcnRpYWwiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW9kdWxlTmFtZSIgOiAiUGFydGlhbCIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJQYXJ0aWFsIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRvb2xzVmVyc2lvbiIgOiAiNS4wLjAiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic3VtbWFyeSIgOiAiSW5pdGlhbCByZWxlYXNlIHdpdGggUGFydGlhbCwgUGFydGlhbEJ1aWxkZXIsIGFuZCBTd2lmdCA1LjEgYmV0YSBzdXBwb3J0IiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MC4xLjAiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgewogICAgICAia2V5d29yZHMiIDogWwogICAgICAgICJzd2lmdHBtIgogICAgICBdLAogICAgICAibGljZW5zZSIgOiB7CiAgICAgICAgIm5hbWUiIDogIk1JVCIsCiAgICAgICAgInVybCIgOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0pvc2VwaER1ZmZ5L0hhc2hhYmxlQnlLZXlQYXRoL21hc3Rlci9MSUNFTlNFIgogICAgICB9LAogICAgICAicmVhZG1lVVJMIiA6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vSm9zZXBoRHVmZnkvSGFzaGFibGVCeUtleVBhdGgvbWFzdGVyL1JFQURNRS5tZCIsCiAgICAgICJzdW1tYXJ5IiA6ICJBZGQgYEVxdWF0YWJsZWAgYW5kL29yIGBIYXNoYWJsZWAgY29uZm9ybWFuY2Ugd2l0aCBhIHNpbmdsZSBmdW5jdGlvbiB1dGlsaXNpbmcgYEtleVBhdGhgcy4iLAogICAgICAidXJsIiA6ICJodHRwczovL2dpdGh1Yi5jb20vSm9zZXBoRHVmZnkvSGFzaGFibGVCeUtleVBhdGguZ2l0IiwKICAgICAgInZlcnNpb25zIiA6IFsKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjIuMCIgOiB7CiAgICAgICAgICAgICAgInBhY2thZ2VOYW1lIiA6ICJIYXNoYWJsZUJ5S2V5UGF0aCIsCiAgICAgICAgICAgICAgInByb2R1Y3RzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkhhc2hhYmxlQnlLZXlQYXRoIiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJIYXNoYWJsZUJ5S2V5UGF0aCIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICJsaWJyYXJ5IiA6IFsKICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb2R1bGVOYW1lIiA6ICJIYXNoYWJsZUJ5S2V5UGF0aCIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJIYXNoYWJsZUJ5S2V5UGF0aCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMi4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInN1bW1hcnkiIDogIi0gTWFyayBgYnVpbGRCbG9ja2AgZnVuY3Rpb25zIHB1YmxpYyIsCiAgICAgICAgICAidmVyc2lvbiIgOiAidjEuMi4wLWJldGEuMiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkZWZhdWx0VG9vbHNWZXJzaW9uIiA6ICI1LjIuMCIsCiAgICAgICAgICAibWFuaWZlc3RzIiA6IHsKICAgICAgICAgICAgIjUuMi4wIiA6IHsKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIkhhc2hhYmxlQnlLZXlQYXRoIiwKICAgICAgICAgICAgICAicHJvZHVjdHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiSGFzaGFibGVCeUtleVBhdGgiLAogICAgICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICAgICAgIkhhc2hhYmxlQnlLZXlQYXRoIgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIkhhc2hhYmxlQnlLZXlQYXRoIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkhhc2hhYmxlQnlLZXlQYXRoIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic3VtbWFyeSIgOiAiU3VwcG9ydCBmb3IgY3VzdG9tIGVxdWF0b3JzIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MS4yLjAtYmV0YS4xIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRlZmF1bHRUb29sc1ZlcnNpb24iIDogIjUuMi4wIiwKICAgICAgICAgICJtYW5pZmVzdHMiIDogewogICAgICAgICAgICAiNS4yLjAiIDogewogICAgICAgICAgICAgICJwYWNrYWdlTmFtZSIgOiAiSGFzaGFibGVCeUtleVBhdGgiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJIYXNoYWJsZUJ5S2V5UGF0aCIsCiAgICAgICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgICAgICAiSGFzaGFibGVCeUtleVBhdGgiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW9kdWxlTmFtZSIgOiAiSGFzaGFibGVCeUtleVBhdGgiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiSGFzaGFibGVCeUtleVBhdGgiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidG9vbHNWZXJzaW9uIiA6ICI1LjIuMCIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJzdW1tYXJ5IiA6ICJBZGQgcmVzdWx0IGJ1aWxkZXIgQVBJIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICJ2MS4xLjAiCiAgICAgICAgfQogICAgICBdCiAgICB9LAogICAgewogICAgICAia2V5d29yZHMiIDogWwogICAgICAgICJjb21wb3NlZCIsCiAgICAgICAgImNvbXBvc2l0aW9uIiwKICAgICAgICAiY29tcG9zaXRpb24tYXBpIiwKICAgICAgICAicHJvdG9jb2wtb3JpZW50ZWQtcHJvZ3JhbW1pbmciLAogICAgICAgICJzcG0iLAogICAgICAgICJzd2lmdCIsCiAgICAgICAgInN3aWZ0LXBhY2thZ2UtbWFuYWdlciIKICAgICAgXSwKICAgICAgImxpY2Vuc2UiIDogewogICAgICAgICJuYW1lIiA6ICJOT0FTU0VSVElPTiIsCiAgICAgICAgInVybCIgOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2NvbXBvc2VkLXN3aWZ0L0NvbXBvc2VkL21hc3Rlci9MaWNlbnNlLm1kIgogICAgICB9LAogICAgICAicmVhZG1lVVJMIiA6ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY29tcG9zZWQtc3dpZnQvQ29tcG9zZWQvbWFzdGVyL1JFQURNRS5tZCIsCiAgICAgICJzdW1tYXJ5IiA6ICJBIFN3aWZ0IGZyYW1ld29yayBmb3IgY29tcG9zaW5nIGRhdGEuIiwKICAgICAgInVybCIgOiAiaHR0cHM6Ly9naXRodWIuY29tL2NvbXBvc2VkLXN3aWZ0L0NvbXBvc2VkLmdpdCIsCiAgICAgICJ2ZXJzaW9ucyIgOiBbCiAgICAgICAgewogICAgICAgICAgImRlZmF1bHRUb29sc1ZlcnNpb24iIDogIjUuMi4wIiwKICAgICAgICAgICJtYW5pZmVzdHMiIDogewogICAgICAgICAgICAiNS4yLjAiIDogewogICAgICAgICAgICAgICJtaW5pbXVtUGxhdGZvcm1WZXJzaW9ucyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJpb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTEuMCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJwYWNrYWdlTmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDb21wb3NlZCIsCiAgICAgICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgICAgICAiQ29tcG9zZWQiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW9kdWxlTmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiQ29tcG9zZWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidG9vbHNWZXJzaW9uIiA6ICI1LjIuMCIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJzdW1tYXJ5IiA6ICItIEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgbGFyZ2UgYENvbXBvc2VkU2VjdGlvblByb3ZpZGVyYHMiLAogICAgICAgICAgInZlcnNpb24iIDogIjEuMS4xIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRlZmF1bHRUb29sc1ZlcnNpb24iIDogIjUuMi4wIiwKICAgICAgICAgICJtYW5pZmVzdHMiIDogewogICAgICAgICAgICAiNS4yLjAiIDogewogICAgICAgICAgICAgICJtaW5pbXVtUGxhdGZvcm1WZXJzaW9ucyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJpb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTEuMCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJwYWNrYWdlTmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDb21wb3NlZCIsCiAgICAgICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgICAgICAiQ29tcG9zZWQiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW9kdWxlTmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiQ29tcG9zZWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidG9vbHNWZXJzaW9uIiA6ICI1LjIuMCIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJzdW1tYXJ5IiA6ICItIEFkZCB2YXJpb3VzIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBgQ29tcG9zZWRTZWN0aW9uUHJvdmlkZXJgICAgLSBgc2VjdGlvbk9mZnNldChmb3I6KWAgICAtIGBmaXJzdEluZGV4KG9mOilgICAgLSBgY29udGFpbnMoXzopYCAgIC0gYGluc2VydChfOmFmdGVyOilgICAgLSBgaW5zZXJ0KF86YmVmb3JlOilgIC0gRml4IGRlbGVnYXRlIGNhbGxzIGZyb20gYENvbXBvc2VkU2VjdGlvblByb3ZpZGVyYCBzb21ldGltZXMgcHJvdmlkaW5nIHRoZSB3cm9uZyBpbmRleCIsCiAgICAgICAgICAidmVyc2lvbiIgOiAiMS4xLjAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAiZGVmYXVsdFRvb2xzVmVyc2lvbiIgOiAiNS4yLjAiLAogICAgICAgICAgIm1hbmlmZXN0cyIgOiB7CiAgICAgICAgICAgICI1LjIuMCIgOiB7CiAgICAgICAgICAgICAgIm1pbmltdW1QbGF0Zm9ybVZlcnNpb25zIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogImlvcyIsCiAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiA6ICIxMS4wIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInBhY2thZ2VOYW1lIiA6ICJDb21wb3NlZCIsCiAgICAgICAgICAgICAgInByb2R1Y3RzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkNvbXBvc2VkIiwKICAgICAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgICAgICJDb21wb3NlZCIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgInR5cGUiIDogewogICAgICAgICAgICAgICAgICAgICJsaWJyYXJ5IiA6IFsKICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMiCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJtb2R1bGVOYW1lIiA6ICJDb21wb3NlZCIsCiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDb21wb3NlZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0b29sc1ZlcnNpb24iIDogIjUuMi4wIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInZlcnNpb24iIDogIjEuMC40IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgImRlZmF1bHRUb29sc1ZlcnNpb24iIDogIjUuMi4wIiwKICAgICAgICAgICJtYW5pZmVzdHMiIDogewogICAgICAgICAgICAiNS4yLjAiIDogewogICAgICAgICAgICAgICJtaW5pbXVtUGxhdGZvcm1WZXJzaW9ucyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJpb3MiLAogICAgICAgICAgICAgICAgICAidmVyc2lvbiIgOiAiMTEuMCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJwYWNrYWdlTmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICJwcm9kdWN0cyIgOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICJuYW1lIiA6ICJDb21wb3NlZCIsCiAgICAgICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgICAgICAiQ29tcG9zZWQiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IHsKICAgICAgICAgICAgICAgICAgICAibGlicmFyeSIgOiBbCiAgICAgICAgICAgICAgICAgICAgICAiYXV0b21hdGljIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRhcmdldHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibW9kdWxlTmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiQ29tcG9zZWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAidG9vbHNWZXJzaW9uIiA6ICI1LjIuMCIKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICIwLjAuMiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICJkZWZhdWx0VG9vbHNWZXJzaW9uIiA6ICI1LjEuMCIsCiAgICAgICAgICAibWFuaWZlc3RzIiA6IHsKICAgICAgICAgICAgIjUuMS4wIiA6IHsKICAgICAgICAgICAgICAicGFja2FnZU5hbWUiIDogIkNvbXBvc2VkIiwKICAgICAgICAgICAgICAicHJvZHVjdHMiIDogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAibmFtZSIgOiAiQ29tcG9zZWQiLAogICAgICAgICAgICAgICAgICAidGFyZ2V0cyIgOiBbCiAgICAgICAgICAgICAgICAgICAgIkNvbXBvc2VkIgogICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAidHlwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgImxpYnJhcnkiIDogWwogICAgICAgICAgICAgICAgICAgICAgImF1dG9tYXRpYyIKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICJ0YXJnZXRzIiA6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIm1vZHVsZU5hbWUiIDogIkNvbXBvc2VkIiwKICAgICAgICAgICAgICAgICAgIm5hbWUiIDogIkNvbXBvc2VkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgInRvb2xzVmVyc2lvbiIgOiAiNS4xLjAiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAic3VtbWFyeSIgOiAiIiwKICAgICAgICAgICJ2ZXJzaW9uIiA6ICIwLjAuMSIKICAgICAgICB9CiAgICAgIF0KICAgIH0KICBdCn0.ARccWWBnOHEm0nbMFjjN7BWVTztJYi7s6pQ_iFUFMUnArb22cHyMCDLXjAxIPqusmf1_QeqiBnTFnl-tvuj7p6OOx5vRfiiIsbEJ-ZGfvrrB7EWUnLLDN7lvI9Q76pqrPKfyweNjcu0sdN0H1p7R14L82x9YOmLl_dYqZAgd6TBzVScT_x71CEiJ1uMQF3O3q5GqyG8n09cnQVcWL4s155dXkWhiCDbwVfyvggSQNyb-cw9KZt7h5ebkfpVW7PBbNRsTfDpKTr9bsccv1UD2UgU9EfS4M5efZFRM-psigCjksFpcr-evaUOvS4tuo8KTBmslRPzmtBKsrO4iU9Mnpw"}}