FHIR © HL7.org  |  FHIRsmith 4.0.1  |  Server Home  |  XIG Home  |  XIG Stats  | 

FHIR IG analytics

Packagehl7.fhir.uv.ips.test
Resource TypeBinary
IdBinary-ips-consumer-gherkin-script.json
FHIR VersionR6

Resources that use this resource

No resources found


Resources that this resource uses

No resources found


Narrative

No narrative content found in resource


Source1

{
  "resourceType": "Binary",
  "id": "ips-consumer-gherkin-script",
  "language": "en",
  "contentType": "text/x-gherkin",
  "data": "IyBHRU5FUkFURUQgYnkgYXBwL3NjcmlwdHMvaXBzLW9ibGlnYXRpb25zLm1qcyBmcm9tIGhsNy5maGlyLnV2LmlwcyAyLjAuMS4gRWRpdCB0aGUgZ2VuZXJhdG9yLCBub3QgdGhpcyBmaWxlLgojCiMgQSBDb25zdW1lcidzIG9ibGlnYXRpb25zIGFyZSBiZWhhdmlvdXJzLCBub3QgZG9jdW1lbnQgY29udGVudCwgc28gdGhlIHRlc3QKIyBiZWQgaGFuZHMgdGhlIENvbnN1bWVyIHRoZSBJRydzIG93biBhbGwtc2VjdGlvbnMgZXhhbXBsZSBhbmQgYSB0ZXN0ZXIgY29uZmlybXMKIyB3aGF0IHRoZSBzeXN0ZW0gZGlkIHdpdGggaXQ6CiMgICBTSEFMTDpoYW5kbGUgICAgIHRoZSBvcGVyYXRvciBhdHRhY2hlcyB0aGUgaW1wb3J0IHJlc3VsdCAobG9nIG9yIHNjcmVlbnNob3QpCiMgICAgICAgICAgICAgICAgICAgIGFuZCBjb25maXJtcywgZWxlbWVudCBieSBlbGVtZW50LCB0aGF0IGl0IHdhcyBhY2NlcHRlZAojICAgU0hPVUxEOmRpc3BsYXkgICB0aGUgb3BlcmF0b3IgZGlzcGxheXMgdGhlIGVsZW1lbnRzLCBhdHRhY2hlcyBhIHNjcmVlbnNob3QsCiMgICAgICAgICAgICAgICAgICAgIGFuZCBjb25maXJtcyBlYWNoIG9uZSBmcm9tIGEgbGlzdCDigJQgb25lIHZlcmRpY3QgcGVyIGVsZW1lbnQKIyBFdmlkZW5jZSBmaWxlcyBhcmUga2VwdCBieSB0aGUgdGVzdCBiZWQgaW4gdGhlIHNlc3Npb24gcmVwb3J0LCBiZXNpZGUgdGhlIHN0ZXAuCiMgQSBDb25zdW1lciB0aGF0IGlzIGEgRkhJUiBzZXJ2ZXIgYWNjZXB0aW5nIGRvY3VtZW50cyBjYW4gYmUgZHJpdmVuIHdpdGhvdXQgYQojIHRlc3Rlcjogc2VlIHRoZSBsYXN0IFJ1bGUuCkBsYW5nOml0Yi1jb3JlLWVuQF4yIEBkaWFsZWN0OmZoaXItdmFsaWRhdG9yQF4yIEBhY3RvcjpDb25zdW1lciBAc3BlYzpobDcuZmhpci51di5pcHNAMi4wLjEKRmVhdHVyZTogSVBTIENvbnN1bWVyIOKAlCBvYmxpZ2F0aW9ucyBvZiBobDcuZmhpci51di5pcHMgMi4wLjEKICBBbiBJUFMgQ29uc3VtZXIgYWN0b3IgaXMgYSBzeXN0ZW0gdGhhdCByZWNlaXZlcyBhbiBJUFMgZG9jdW1lbnQgYW5kIHVzZXMgdGhlIGNvbnRlbnQgb2YgdGhpcyBkb2N1bWVudC4KCiAgQmFja2dyb3VuZDoKICAgIEdpdmVuIENvbnN1bWVyIGlzIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdAogICAgQW5kIFRlc3RlciBpcyBpbmZyYXN0cnVjdHVyZQogICAgQW5kIEZISVJWYWxpZGF0b3IgaXMgYSBmaGlyLXZhbGlkYXRvciBhdCAiaHR0cDovL2ZoaXItdmFsaWRhdG9yOjgwODAiCiAgICBBbmQgRkhJUlZhbGlkYXRvciBpcyBsb2FkZWQgd2l0aCBwYWNrYWdlICJobDcuZmhpci51di5pcHMjMi4wLjEiCiAgICBXaGVuIFRlc3RlciBnZXRzICJodHRwczovL2hsNy5vcmcvZmhpci91di9pcHMvQnVuZGxlLWJ1bmRsZS1pcHMtYWxsLXNlY3Rpb25zLmpzb24iIGFzICRpcHMKICAgIFRoZW4gJGlwcyBzaG91bGQgY29uZm9ybSB0byAiaHR0cDovL2hsNy5vcmcvZmhpci91di9pcHMvU3RydWN0dXJlRGVmaW5pdGlvbi9CdW5kbGUtdXYtaXBzIiBpZ25vcmluZyBzbGljaW5nIGVycm9ycwogICAgQW5kIENvbnN1bWVyIGlzIGluZm9ybWVkICJJbXBvcnQgdGhpcyBJbnRlcm5hdGlvbmFsIFBhdGllbnQgU3VtbWFyeSBmb3IgUGF0cmljaWEgSk9SREFOQSBpbnRvIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCwgdGhlbiBhbnN3ZXIgdGhlIHF1ZXN0aW9ucyB0aGF0IGZvbGxvdy4iIHdpdGggJGlwcwoKICBSdWxlOiBUaGUgZG9jdW1lbnQ6IEJ1bmRsZSBhbmQgQ29tcG9zaXRpb24KCiAgICBAcHJvZmlsZTpCdW5kbGUtdXYtaXBzCiAgICBAY292ZXJzOkJ1bmRsZS5pZGVudGlmaWVyIEBjb3ZlcnM6QnVuZGxlLnRpbWVzdGFtcCBAY292ZXJzOkJ1bmRsZS5lbnRyeTpjb21wb3NpdGlvbgogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMDEgQnVuZGxlIChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAzIGVsZW1lbnRzIGFuZCBkaXNwbGF5cyAxCiAgICAgIFdoZW4gQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIGltcG9ydCBvZiB0aGUgZG9jdW1lbnQgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZEJ1bmRsZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBkb2N1bWVudCI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBpZGVudGlmaWVyICAgICAgICB8ICB8CiAgICAgICAgfCB0aW1lc3RhbXAgICAgICAgICB8ICB8CiAgICAgICAgfCBlbnRyeTpjb21wb3NpdGlvbiB8ICB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBkb2N1bWVudC4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgZG9jdW1lbnQgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZEJ1bmRsZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgZG9jdW1lbnQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgZW50cnk6Y29tcG9zaXRpb24gfCAgfAoKICAgIEBwcm9maWxlOkNvbXBvc2l0aW9uLXV2LWlwcwogICAgQGNvdmVyczpDb21wb3NpdGlvbi50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uaWRlbnRpZmllciBAY292ZXJzOkNvbXBvc2l0aW9uLnN0YXR1cyBAY292ZXJzOkNvbXBvc2l0aW9uLnR5cGUKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc3ViamVjdCBAY292ZXJzOkNvbXBvc2l0aW9uLnN1YmplY3QucmVmZXJlbmNlIEBjb3ZlcnM6Q29tcG9zaXRpb24uZGF0ZSBAY292ZXJzOkNvbXBvc2l0aW9uLmF1dGhvcgogICAgQGNvdmVyczpDb21wb3NpdGlvbi50aXRsZSBAY292ZXJzOkNvbXBvc2l0aW9uLmF0dGVzdGVyIEBjb3ZlcnM6Q29tcG9zaXRpb24uYXR0ZXN0ZXIubW9kZSBAY292ZXJzOkNvbXBvc2l0aW9uLmF0dGVzdGVyLnRpbWUKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uYXR0ZXN0ZXIucGFydHkgQGNvdmVyczpDb21wb3NpdGlvbi5jdXN0b2RpYW4gQGNvdmVyczpDb21wb3NpdGlvbi5ldmVudDpjYXJlUHJvdmlzaW9uaW5nRXZlbnQgQGNvdmVyczpDb21wb3NpdGlvbi5ldmVudDpjYXJlUHJvdmlzaW9uaW5nRXZlbnQuY29kZQogICAgQGNvdmVyczpDb21wb3NpdGlvbi5ldmVudDpjYXJlUHJvdmlzaW9uaW5nRXZlbnQucGVyaW9kIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbiBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb24udGl0bGUgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uLmNvZGUKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbi50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25Qcm9ibGVtcy50aXRsZSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblByb2JsZW1zLnRleHQKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMuZW50cnk6cHJvYmxlbSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblByb2JsZW1zLmVtcHR5UmVhc29uIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLnRpdGxlCiAgICBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkFsbGVyZ2llcy50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLmVudHJ5OmFsbGVyZ3lPckludG9sZXJhbmNlIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLmVtcHR5UmVhc29uIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uTWVkaWNhdGlvbnMKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uTWVkaWNhdGlvbnMudGl0bGUgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25NZWRpY2F0aW9ucy50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uTWVkaWNhdGlvbnMuZW50cnk6bWVkaWNhdGlvblN0YXRlbWVudE9yUmVxdWVzdCBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbk1lZGljYXRpb25zLmVtcHR5UmVhc29uCiAgICBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkltbXVuaXphdGlvbnMgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25JbW11bml6YXRpb25zLnRpdGxlIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uSW1tdW5pemF0aW9ucy50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uSW1tdW5pemF0aW9ucy5lbnRyeTppbW11bml6YXRpb24KICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUmVzdWx0cyBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblJlc3VsdHMudGl0bGUgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25SZXN1bHRzLnRleHQgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25SZXN1bHRzLmVudHJ5OnJlc3VsdHMtb2JzZXJ2YXRpb24tbGFib3JhdG9yeS1wYXRob2xvZ3kKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUmVzdWx0cy5lbnRyeTpyZXN1bHRzLW9ic2VydmF0aW9uLXJhZGlvbG9neSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblJlc3VsdHMuZW50cnk6cmVzdWx0cy1kaWFnbm9zdGljUmVwb3J0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJvY2VkdXJlc0h4IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJvY2VkdXJlc0h4LnRpdGxlCiAgICBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblByb2NlZHVyZXNIeC50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJvY2VkdXJlc0h4LmVudHJ5OnByb2NlZHVyZSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbk1lZGljYWxEZXZpY2VzIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uTWVkaWNhbERldmljZXMudGl0bGUKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uTWVkaWNhbERldmljZXMudGV4dCBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbk1lZGljYWxEZXZpY2VzLmVudHJ5OmRldmljZVN0YXRlbWVudCBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkFkdmFuY2VEaXJlY3RpdmVzIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uQWR2YW5jZURpcmVjdGl2ZXMudGl0bGUKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uQWR2YW5jZURpcmVjdGl2ZXMudGV4dCBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkFsZXJ0cyBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkFsZXJ0cy50aXRsZSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkFsZXJ0cy50ZXh0CiAgICBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvbkZ1bmN0aW9uYWxTdGF0dXMgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25GdW5jdGlvbmFsU3RhdHVzLnRpdGxlIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uRnVuY3Rpb25hbFN0YXR1cy50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUGFzdFByb2JsZW1zCiAgICBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblBhc3RQcm9ibGVtcy50aXRsZSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblBhc3RQcm9ibGVtcy50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJlZ25hbmN5SHggQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25QcmVnbmFuY3lIeC50aXRsZQogICAgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25QcmVnbmFuY3lIeC50ZXh0IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUGF0aWVudFN0b3J5IEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUGF0aWVudFN0b3J5LnRpdGxlIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUGF0aWVudFN0b3J5LnRleHQKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUGxhbk9mQ2FyZSBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblBsYW5PZkNhcmUudGl0bGUgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25QbGFuT2ZDYXJlLnRleHQgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25Tb2NpYWxIaXN0b3J5CiAgICBAY292ZXJzOkNvbXBvc2l0aW9uLnNlY3Rpb246c2VjdGlvblNvY2lhbEhpc3RvcnkudGl0bGUgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25Tb2NpYWxIaXN0b3J5LnRleHQgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25WaXRhbFNpZ25zIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uVml0YWxTaWducy50aXRsZQogICAgQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25WaXRhbFNpZ25zLnRleHQKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDAyIENvbXBvc2l0aW9uIChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyA4MSBlbGVtZW50cyBhbmQgZGlzcGxheXMgNzcKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBDb21wb3NpdGlvbiByZXNvdXJjZXMgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZENvbXBvc2l0aW9uRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIENvbXBvc2l0aW9uIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgdGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IGlkZW50aWZpZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFjN2E3NDdjLWEyYzktNDkzYy1iYTM5LTRhYzY5OTdlZWQxZSB8CiAgICAgICAgfCBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaW5hbCB8CiAgICAgICAgfCB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50IHN1bW1hcnkgRG9jdW1lbnQgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDktMTMgfAogICAgICAgIHwgYXV0aG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3JnYW5pemF0aW9uLzdhMTcwMjdmLWFjYzAtNGQ3Ny1iZjg0LeKApiB8CiAgICAgICAgfCB0aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hdGlvbmFsIFBhdGllbnQgU3VtbWFyeSB8CiAgICAgICAgfCBhdHRlc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgYXR0ZXN0ZXIubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHJvZmVzc2lvbmFsIHwKICAgICAgICB8IGF0dGVzdGVyLnRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDktMTMgfAogICAgICAgIHwgYXR0ZXN0ZXIucGFydHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJhY3RpdGlvbmVyUm9sZS85NGQxMmM4ZC1hM2RmLTQ3YTctYeKApiB8CiAgICAgICAgfCBjdXN0b2RpYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcmdhbml6YXRpb24vN2ExNzAyN2YtYWNjMC00ZDc3LWJmODQt4oCmIHwKICAgICAgICB8IGV2ZW50OmNhcmVQcm92aXNpb25pbmdFdmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBldmVudDpjYXJlUHJvdmlzaW9uaW5nRXZlbnQuY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQQ1BSIHwKICAgICAgICB8IGV2ZW50OmNhcmVQcm92aXNpb25pbmdFdmVudC5wZXJpb2QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVudGlsIDIwMjQtMDktMTMgfAogICAgICAgIHwgc2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJvYmxlbSBMaXN0IHwKICAgICAgICB8IHNlY3Rpb24udGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByb2JsZW0gTGlzdCB8CiAgICAgICAgfCBzZWN0aW9uLmNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ibGVtIGxpc3QgLSBSZXBvcnRlZCB8CiAgICAgICAgfCBzZWN0aW9uLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJvYmxlbSBMaXN0IHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2JsZW1zLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByb2JsZW0gTGlzdCB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Qcm9ibGVtcy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMuZW50cnk6cHJvYmxlbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29uZGl0aW9uLzgwMzllNGE3LWQ0NTktNDU0Yy05MmE1LTZjMeKApiB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Qcm9ibGVtcy5lbXB0eVJlYXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxsZXJnaWVzIGFuZCBJbnRvbGVyYW5jZXMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxsZXJnaWVzIGFuZCBJbnRvbGVyYW5jZXMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsbGVyZ2llcy5lbnRyeTphbGxlcmd5T3JJbnRvbGVyYW5jZSAgICAgICAgICAgICAgICAgICB8IEFsbGVyZ3lJbnRvbGVyYW5jZS85ODM4Y2Y3My1jMzBkLTRhYTXigKYgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLmVtcHR5UmVhc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1lZGljYXRpb24gU3VtbWFyeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25NZWRpY2F0aW9ucy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNZWRpY2F0aW9uIFN1bW1hcnkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uTWVkaWNhdGlvbnMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYXRpb25zLmVudHJ5Om1lZGljYXRpb25TdGF0ZW1lbnRPclJlcXVlc3QgICAgICAgICB8IE1lZGljYXRpb25TdGF0ZW1lbnQvYzNkMzE5ODAtMmE4OC00NWLigKYgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uTWVkaWNhdGlvbnMuZW1wdHlSZWFzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkltbXVuaXphdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEltbXVuaXphdGlvbnMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uSW1tdW5pemF0aW9ucy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW1tdW5pemF0aW9ucyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25JbW11bml6YXRpb25zLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uSW1tdW5pemF0aW9ucy5lbnRyeTppbW11bml6YXRpb24gICAgICAgICAgICAgICAgICAgICAgIHwgSW1tdW5pemF0aW9uLzE3YjVhNmQ3LTMwN2ItNDcyNi04YzhjLeKApiB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25SZXN1bHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHRzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblJlc3VsdHMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdHMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUmVzdWx0cy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblJlc3VsdHMuZW50cnk6cmVzdWx0cy1vYnNlcnZhdGlvbi1sYWJvcmF0b3J5LXBhdGhvbG9neSB8IE9ic2VydmF0aW9uL2IwMTg3ZWZkLTVmOWItNDc0ZC04N2JjLWXigKYgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUmVzdWx0cy5lbnRyeTpyZXN1bHRzLW9ic2VydmF0aW9uLXJhZGlvbG9neSAgICAgICAgICAgIHwgT2JzZXJ2YXRpb24vYjAxODdlZmQtNWY5Yi00NzRkLTg3YmMtZeKApiB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25SZXN1bHRzLmVudHJ5OnJlc3VsdHMtZGlhZ25vc3RpY1JlcG9ydCAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvY2VkdXJlc0h4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSGlzdG9yeSBvZiBQcm9jZWR1cmVzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2NlZHVyZXNIeC50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhpc3Rvcnkgb2YgUHJvY2VkdXJlcyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Qcm9jZWR1cmVzSHgudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvY2VkdXJlc0h4LmVudHJ5OnByb2NlZHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJvY2VkdXJlLzM5MjUyIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYWxEZXZpY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERldmljZSBVc2UgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uTWVkaWNhbERldmljZXMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGV2aWNlIFVzZSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25NZWRpY2FsRGV2aWNlcy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uTWVkaWNhbERldmljZXMuZW50cnk6ZGV2aWNlU3RhdGVtZW50ICAgICAgICAgICAgICAgICAgIHwgRGV2aWNlVXNlU3RhdGVtZW50L2V1bWZoLTcwLTI3NS0xIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFkdmFuY2VEaXJlY3RpdmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkdmFuY2UgRGlyZWN0aXZlcyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25BZHZhbmNlRGlyZWN0aXZlcy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZHZhbmNlIERpcmVjdGl2ZXMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWR2YW5jZURpcmVjdGl2ZXMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsZXJ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFsZXJ0cyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25BbGVydHMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbGVydHMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxlcnRzLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkZ1bmN0aW9uYWxTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZ1bmN0aW9uYWwgU3RhdHVzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkZ1bmN0aW9uYWxTdGF0dXMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZ1bmN0aW9uYWwgU3RhdHVzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkZ1bmN0aW9uYWxTdGF0dXMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QYXN0UHJvYmxlbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIaXN0b3J5IG9mIFBhc3QgUHJvYmxlbXMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUGFzdFByb2JsZW1zLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSGlzdG9yeSBvZiBQYXN0IFByb2JsZW1zIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblBhc3RQcm9ibGVtcy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QcmVnbmFuY3lIeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIaXN0b3J5IG9mIFByZWduYW5jeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QcmVnbmFuY3lIeC50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIaXN0b3J5IG9mIFByZWduYW5jeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QcmVnbmFuY3lIeC50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUGF0aWVudFN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudCBTdG9yeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QYXRpZW50U3RvcnkudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50IFN0b3J5IHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblBhdGllbnRTdG9yeS50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QbGFuT2ZDYXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQbGFuIG9mIENhcmUgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUGxhbk9mQ2FyZS50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGxhbiBvZiBDYXJlIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblBsYW5PZkNhcmUudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Tb2NpYWxIaXN0b3J5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb2NpYWwgSGlzdG9yeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Tb2NpYWxIaXN0b3J5LnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb2NpYWwgSGlzdG9yeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Tb2NpYWxIaXN0b3J5LnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uVml0YWxTaWducyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVml0YWwgU2lnbnMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uVml0YWxTaWducy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVml0YWwgU2lnbnMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uVml0YWxTaWducy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIENvbXBvc2l0aW9uIHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgQ29tcG9zaXRpb24gcmVzb3VyY2VzIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRDb21wb3NpdGlvbkV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgQ29tcG9zaXRpb24gcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCB0ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmluYWwgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDI0LTA5LTEzIHwKICAgICAgICB8IGF1dGhvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9yZ2FuaXphdGlvbi83YTE3MDI3Zi1hY2MwLTRkNzctYmY4NC3igKYgfAogICAgICAgIHwgdGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYXRpb25hbCBQYXRpZW50IFN1bW1hcnkgfAogICAgICAgIHwgYXR0ZXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IGF0dGVzdGVyLm1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHByb2Zlc3Npb25hbCB8CiAgICAgICAgfCBhdHRlc3Rlci50aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMDI0LTA5LTEzIHwKICAgICAgICB8IGF0dGVzdGVyLnBhcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByYWN0aXRpb25lclJvbGUvOTRkMTJjOGQtYTNkZi00N2E3LWHigKYgfAogICAgICAgIHwgY3VzdG9kaWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3JnYW5pemF0aW9uLzdhMTcwMjdmLWFjYzAtNGQ3Ny1iZjg0LeKApiB8CiAgICAgICAgfCBldmVudDpjYXJlUHJvdmlzaW9uaW5nRXZlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgZXZlbnQ6Y2FyZVByb3Zpc2lvbmluZ0V2ZW50LmNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUENQUiB8CiAgICAgICAgfCBldmVudDpjYXJlUHJvdmlzaW9uaW5nRXZlbnQucGVyaW9kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bnRpbCAyMDI0LTA5LTEzIHwKICAgICAgICB8IHNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByb2JsZW0gTGlzdCB8CiAgICAgICAgfCBzZWN0aW9uLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ibGVtIExpc3QgfAogICAgICAgIHwgc2VjdGlvbi50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2JsZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByb2JsZW0gTGlzdCB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Qcm9ibGVtcy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ibGVtIExpc3QgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2JsZW1zLmVudHJ5OnByb2JsZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbi84MDM5ZTRhNy1kNDU5LTQ1NGMtOTJhNS02YzHigKYgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMuZW1wdHlSZWFzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsbGVyZ2llcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFsbGVyZ2llcyBhbmQgSW50b2xlcmFuY2VzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsbGVyZ2llcy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFsbGVyZ2llcyBhbmQgSW50b2xlcmFuY2VzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsbGVyZ2llcy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25BbGxlcmdpZXMuZW50cnk6YWxsZXJneU9ySW50b2xlcmFuY2UgICAgICAgICAgICAgICAgICAgfCBBbGxlcmd5SW50b2xlcmFuY2UvOTgzOGNmNzMtYzMwZC00YWE14oCmIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsbGVyZ2llcy5lbXB0eVJlYXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25NZWRpY2F0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNZWRpY2F0aW9uIFN1bW1hcnkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uTWVkaWNhdGlvbnMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTWVkaWNhdGlvbiBTdW1tYXJ5IHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYXRpb25zLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25NZWRpY2F0aW9ucy5lbnRyeTptZWRpY2F0aW9uU3RhdGVtZW50T3JSZXF1ZXN0ICAgICAgICAgfCBNZWRpY2F0aW9uU3RhdGVtZW50L2MzZDMxOTgwLTJhODgtNDVi4oCmIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYXRpb25zLmVtcHR5UmVhc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25JbW11bml6YXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbW11bml6YXRpb25zIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkltbXVuaXphdGlvbnMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEltbXVuaXphdGlvbnMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uSW1tdW5pemF0aW9ucy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkltbXVuaXphdGlvbnMuZW50cnk6aW1tdW5pemF0aW9uICAgICAgICAgICAgICAgICAgICAgICB8IEltbXVuaXphdGlvbi8xN2I1YTZkNy0zMDdiLTQ3MjYtOGM4Yy3igKYgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUmVzdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0cyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25SZXN1bHRzLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHRzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblJlc3VsdHMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25SZXN1bHRzLmVudHJ5OnJlc3VsdHMtb2JzZXJ2YXRpb24tbGFib3JhdG9yeS1wYXRob2xvZ3kgfCBPYnNlcnZhdGlvbi9iMDE4N2VmZC01ZjliLTQ3NGQtODdiYy1l4oCmIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblJlc3VsdHMuZW50cnk6cmVzdWx0cy1vYnNlcnZhdGlvbi1yYWRpb2xvZ3kgICAgICAgICAgICB8IE9ic2VydmF0aW9uL2IwMTg3ZWZkLTVmOWItNDc0ZC04N2JjLWXigKYgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUmVzdWx0cy5lbnRyeTpyZXN1bHRzLWRpYWdub3N0aWNSZXBvcnQgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2NlZHVyZXNIeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhpc3Rvcnkgb2YgUHJvY2VkdXJlcyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25Qcm9jZWR1cmVzSHgudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIaXN0b3J5IG9mIFByb2NlZHVyZXMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJvY2VkdXJlc0h4LnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2NlZHVyZXNIeC5lbnRyeTpwcm9jZWR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFByb2NlZHVyZS8zOTI1MiB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25NZWRpY2FsRGV2aWNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXZpY2UgVXNlIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYWxEZXZpY2VzLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERldmljZSBVc2UgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uTWVkaWNhbERldmljZXMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbk1lZGljYWxEZXZpY2VzLmVudHJ5OmRldmljZVN0YXRlbWVudCAgICAgICAgICAgICAgICAgICB8IERldmljZVVzZVN0YXRlbWVudC9ldW1maC03MC0yNzUtMSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25BZHZhbmNlRGlyZWN0aXZlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZHZhbmNlIERpcmVjdGl2ZXMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWR2YW5jZURpcmVjdGl2ZXMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWR2YW5jZSBEaXJlY3RpdmVzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFkdmFuY2VEaXJlY3RpdmVzLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25BbGVydHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBbGVydHMgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxlcnRzLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWxlcnRzIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvbkFsZXJ0cy50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25GdW5jdGlvbmFsU3RhdHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGdW5jdGlvbmFsIFN0YXR1cyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25GdW5jdGlvbmFsU3RhdHVzLnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGdW5jdGlvbmFsIFN0YXR1cyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25GdW5jdGlvbmFsU3RhdHVzLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUGFzdFByb2JsZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSGlzdG9yeSBvZiBQYXN0IFByb2JsZW1zIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblBhc3RQcm9ibGVtcy50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhpc3Rvcnkgb2YgUGFzdCBQcm9ibGVtcyB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QYXN0UHJvYmxlbXMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJlZ25hbmN5SHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSGlzdG9yeSBvZiBQcmVnbmFuY3kgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJlZ25hbmN5SHgudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSGlzdG9yeSBvZiBQcmVnbmFuY3kgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUHJlZ25hbmN5SHgudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblBhdGllbnRTdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdGllbnQgU3RvcnkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUGF0aWVudFN0b3J5LnRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudCBTdG9yeSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QYXRpZW50U3RvcnkudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uUGxhbk9mQ2FyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGxhbiBvZiBDYXJlIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblBsYW5PZkNhcmUudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBsYW4gb2YgQ2FyZSB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25QbGFuT2ZDYXJlLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAocHJlc2VudCkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uU29jaWFsSGlzdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29jaWFsIEhpc3RvcnkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uU29jaWFsSGlzdG9yeS50aXRsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29jaWFsIEhpc3RvcnkgfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uU29jaWFsSGlzdG9yeS50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblZpdGFsU2lnbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZpdGFsIFNpZ25zIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblZpdGFsU2lnbnMudGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZpdGFsIFNpZ25zIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblZpdGFsU2lnbnMudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CgogIFJ1bGU6IFRoZSBwZW9wbGUgYW5kIG9yZ2FuaXNhdGlvbnMKCiAgICBAcHJvZmlsZTpQYXRpZW50LXV2LWlwcwogICAgQGNvdmVyczpQYXRpZW50LmlkZW50aWZpZXIgQGNvdmVyczpQYXRpZW50Lm5hbWUgQGNvdmVyczpQYXRpZW50Lm5hbWUudXNlIEBjb3ZlcnM6UGF0aWVudC5uYW1lLnRleHQKICAgIEBjb3ZlcnM6UGF0aWVudC5uYW1lLmZhbWlseSBAY292ZXJzOlBhdGllbnQubmFtZS5naXZlbiBAY292ZXJzOlBhdGllbnQudGVsZWNvbSBAY292ZXJzOlBhdGllbnQuZ2VuZGVyCiAgICBAY292ZXJzOlBhdGllbnQuYmlydGhEYXRlIEBjb3ZlcnM6UGF0aWVudC5hZGRyZXNzIEBjb3ZlcnM6UGF0aWVudC5nZW5lcmFsUHJhY3RpdGlvbmVyCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAwMyBQYXRpZW50IChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAxMSBlbGVtZW50cyBhbmQgZGlzcGxheXMgMTEKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBQYXRpZW50IHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkUGF0aWVudEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBQYXRpZW50IHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGlkZW50aWZpZXIgICAgICAgICAgfCBBQkMxMjM0IHwKICAgICAgICB8IG5hbWUgICAgICAgICAgICAgICAgfCBQYXRyaWNpYSBKT1JEQU5BIHwKICAgICAgICB8IG5hbWUudXNlICAgICAgICAgICAgfCB1c3VhbCB8CiAgICAgICAgfCBuYW1lLnRleHQgICAgICAgICAgIHwgIHwKICAgICAgICB8IG5hbWUuZmFtaWx5ICAgICAgICAgfCBKT1JEQU5BIHwKICAgICAgICB8IG5hbWUuZ2l2ZW4gICAgICAgICAgfCBQYXRyaWNpYSB8CiAgICAgICAgfCB0ZWxlY29tICAgICAgICAgICAgIHwgKzEyMzQ1Njc4OTAgfAogICAgICAgIHwgZ2VuZGVyICAgICAgICAgICAgICB8IGZlbWFsZSB8CiAgICAgICAgfCBiaXJ0aERhdGUgICAgICAgICAgIHwgMTk1Ni0wOS0zMCB8CiAgICAgICAgfCBhZGRyZXNzICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IGdlbmVyYWxQcmFjdGl0aW9uZXIgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgUGF0aWVudCByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIFBhdGllbnQgcmVzb3VyY2VzIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRQYXRpZW50RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBQYXRpZW50IHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGlkZW50aWZpZXIgICAgICAgICAgfCBBQkMxMjM0IHwKICAgICAgICB8IG5hbWUgICAgICAgICAgICAgICAgfCBQYXRyaWNpYSBKT1JEQU5BIHwKICAgICAgICB8IG5hbWUudXNlICAgICAgICAgICAgfCB1c3VhbCB8CiAgICAgICAgfCBuYW1lLnRleHQgICAgICAgICAgIHwgIHwKICAgICAgICB8IG5hbWUuZmFtaWx5ICAgICAgICAgfCBKT1JEQU5BIHwKICAgICAgICB8IG5hbWUuZ2l2ZW4gICAgICAgICAgfCBQYXRyaWNpYSB8CiAgICAgICAgfCB0ZWxlY29tICAgICAgICAgICAgIHwgKzEyMzQ1Njc4OTAgfAogICAgICAgIHwgZ2VuZGVyICAgICAgICAgICAgICB8IGZlbWFsZSB8CiAgICAgICAgfCBiaXJ0aERhdGUgICAgICAgICAgIHwgMTk1Ni0wOS0zMCB8CiAgICAgICAgfCBhZGRyZXNzICAgICAgICAgICAgIHwgKHByZXNlbnQpIHwKICAgICAgICB8IGdlbmVyYWxQcmFjdGl0aW9uZXIgfCAgfAoKICAgIEBwcm9maWxlOlByYWN0aXRpb25lci11di1pcHMKICAgIEBjb3ZlcnM6UHJhY3RpdGlvbmVyLm5hbWUgQGNvdmVyczpQcmFjdGl0aW9uZXIubmFtZS5mYW1pbHkgQGNvdmVyczpQcmFjdGl0aW9uZXIubmFtZS5naXZlbiBAY292ZXJzOlByYWN0aXRpb25lci50ZWxlY29tCiAgICBAY292ZXJzOlByYWN0aXRpb25lci5hZGRyZXNzCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAwNCBQcmFjdGl0aW9uZXIgKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDUgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDUKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBQcmFjdGl0aW9uZXIgcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRQcmFjdGl0aW9uZXJFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgUHJhY3RpdGlvbmVyIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBuYW1lICAgICAgICB8IEhBU0hJUkEgQ09PUkFZIENPT1JBWSB8CiAgICAgICAgfCBuYW1lLmZhbWlseSB8IENPT1JBWSB8CiAgICAgICAgfCBuYW1lLmdpdmVuICB8IEhBU0hJUkEgfAogICAgICAgIHwgdGVsZWNvbSAgICAgfCAwNyA4NTAgOTkwMCB8CiAgICAgICAgfCBhZGRyZXNzICAgICB8ICB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBQcmFjdGl0aW9uZXIgcmVzb3VyY2VzLiIKICAgICAgQW5kIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBQcmFjdGl0aW9uZXIgcmVzb3VyY2VzIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRQcmFjdGl0aW9uZXJFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIFByYWN0aXRpb25lciByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgbmFtZSAgICAgICAgfCBIQVNISVJBIENPT1JBWSBDT09SQVkgfAogICAgICAgIHwgbmFtZS5mYW1pbHkgfCBDT09SQVkgfAogICAgICAgIHwgbmFtZS5naXZlbiAgfCBIQVNISVJBIHwKICAgICAgICB8IHRlbGVjb20gICAgIHwgMDcgODUwIDk5MDAgfAogICAgICAgIHwgYWRkcmVzcyAgICAgfCAgfAoKICAgIEBwcm9maWxlOlByYWN0aXRpb25lclJvbGUtdXYtaXBzCiAgICBAY292ZXJzOlByYWN0aXRpb25lclJvbGUub3JnYW5pemF0aW9uCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAwNSBQcmFjdGl0aW9uZXJSb2xlIChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAxIGVsZW1lbnQgYW5kIGRpc3BsYXlzIDEKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBQcmFjdGl0aW9uZXJSb2xlIHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkUHJhY3RpdGlvbmVyUm9sZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBQcmFjdGl0aW9uZXJSb2xlIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgb3JnYW5pemF0aW9uIHwgIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIFByYWN0aXRpb25lclJvbGUgcmVzb3VyY2VzLiIKICAgICAgQW5kIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBQcmFjdGl0aW9uZXJSb2xlIHJlc291cmNlcyBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkUHJhY3RpdGlvbmVyUm9sZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgUHJhY3RpdGlvbmVyUm9sZSByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IG9yZ2FuaXphdGlvbiB8ICB8CgogICAgQHByb2ZpbGU6T3JnYW5pemF0aW9uLXV2LWlwcwogICAgQGNvdmVyczpPcmdhbml6YXRpb24ubmFtZSBAY292ZXJzOk9yZ2FuaXphdGlvbi50ZWxlY29tIEBjb3ZlcnM6T3JnYW5pemF0aW9uLmFkZHJlc3MKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDA2IE9yZ2FuaXphdGlvbiAoSVBTKSDigJQgdGhlIENvbnN1bWVyIGhhbmRsZXMgMyBlbGVtZW50cyBhbmQgZGlzcGxheXMgMwogICAgICBXaGVuIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBpbXBvcnQgb2YgdGhlIE9yZ2FuaXphdGlvbiByZXNvdXJjZXMgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZE9yZ2FuaXphdGlvbkV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBPcmdhbml6YXRpb24gcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgfCBkZXRhaWwgfAogICAgICAgIHwgbmFtZSAgICB8IE5vcnRoQ2FyZSBQdWtldGUgUm9hZC1UaG9tYXMgUm9hZCB8CiAgICAgICAgfCB0ZWxlY29tIHwgIHwKICAgICAgICB8IGFkZHJlc3MgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgT3JnYW5pemF0aW9uIHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgT3JnYW5pemF0aW9uIHJlc291cmNlcyBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkT3JnYW5pemF0aW9uRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBPcmdhbml6YXRpb24gcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgfCBkZXRhaWwgfAogICAgICAgIHwgbmFtZSAgICB8IE5vcnRoQ2FyZSBQdWtldGUgUm9hZC1UaG9tYXMgUm9hZCB8CiAgICAgICAgfCB0ZWxlY29tIHwgIHwKICAgICAgICB8IGFkZHJlc3MgfCAgfAoKICBSdWxlOiBUaGUgcmVxdWlyZWQgc2VjdGlvbnM6IHByb2JsZW1zLCBhbGxlcmdpZXMsIG1lZGljYXRpb25zCgogICAgQHByb2ZpbGU6QWxsZXJneUludG9sZXJhbmNlLXV2LWlwcwogICAgQGNvdmVyczpBbGxlcmd5SW50b2xlcmFuY2UuY2xpbmljYWxTdGF0dXMgQGNvdmVyczpBbGxlcmd5SW50b2xlcmFuY2UudHlwZSBAY292ZXJzOkFsbGVyZ3lJbnRvbGVyYW5jZS5jb2RlIEBjb3ZlcnM6QWxsZXJneUludG9sZXJhbmNlLnBhdGllbnQKICAgIEBjb3ZlcnM6QWxsZXJneUludG9sZXJhbmNlLnBhdGllbnQucmVmZXJlbmNlIEBjb3ZlcnM6QWxsZXJneUludG9sZXJhbmNlLm9uc2V0W3hdIEBjb3ZlcnM6QWxsZXJneUludG9sZXJhbmNlLm9uc2V0W3hdOm9uc2V0RGF0ZVRpbWUgQGNvdmVyczpBbGxlcmd5SW50b2xlcmFuY2UucmVhY3Rpb24KICAgIEBjb3ZlcnM6QWxsZXJneUludG9sZXJhbmNlLnJlYWN0aW9uLm1hbmlmZXN0YXRpb24gQGNvdmVyczpBbGxlcmd5SW50b2xlcmFuY2UucmVhY3Rpb24uc2V2ZXJpdHkKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDA3IEFsbGVyZ3lJbnRvbGVyYW5jZSAoSVBTKSDigJQgdGhlIENvbnN1bWVyIGhhbmRsZXMgMTAgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDkKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBBbGxlcmd5SW50b2xlcmFuY2UgcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRBbGxlcmd5SW50b2xlcmFuY2VFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgQWxsZXJneUludG9sZXJhbmNlIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNsaW5pY2FsU3RhdHVzICAgICAgICAgfCBhY3RpdmUgfAogICAgICAgIHwgdHlwZSAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgIHwgUGVuaWNpbGxpbiB8CiAgICAgICAgfCBwYXRpZW50ICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBwYXRpZW50LnJlZmVyZW5jZSAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBvbnNldFt4XSAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IG9uc2V0W3hdOm9uc2V0RGF0ZVRpbWUgfCAgfAogICAgICAgIHwgcmVhY3Rpb24gICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCByZWFjdGlvbi5tYW5pZmVzdGF0aW9uIHwgIHwKICAgICAgICB8IHJlYWN0aW9uLnNldmVyaXR5ICAgICAgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgQWxsZXJneUludG9sZXJhbmNlIHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgQWxsZXJneUludG9sZXJhbmNlIHJlc291cmNlcyBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkQWxsZXJneUludG9sZXJhbmNlRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBBbGxlcmd5SW50b2xlcmFuY2UgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY2xpbmljYWxTdGF0dXMgICAgICAgICB8IGFjdGl2ZSB8CiAgICAgICAgfCB0eXBlICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgfCBQZW5pY2lsbGluIHwKICAgICAgICB8IHBhdGllbnQgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IG9uc2V0W3hdICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgb25zZXRbeF06b25zZXREYXRlVGltZSB8ICB8CiAgICAgICAgfCByZWFjdGlvbiAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHJlYWN0aW9uLm1hbmlmZXN0YXRpb24gfCAgfAogICAgICAgIHwgcmVhY3Rpb24uc2V2ZXJpdHkgICAgICB8ICB8CgogICAgQHByb2ZpbGU6Q29uZGl0aW9uLXV2LWlwcwogICAgQGNvdmVyczpDb25kaXRpb24uY2xpbmljYWxTdGF0dXMgQGNvdmVyczpDb25kaXRpb24uY2F0ZWdvcnkgQGNvdmVyczpDb25kaXRpb24uc2V2ZXJpdHkgQGNvdmVyczpDb25kaXRpb24uY29kZQogICAgQGNvdmVyczpDb25kaXRpb24uc3ViamVjdCBAY292ZXJzOkNvbmRpdGlvbi5zdWJqZWN0LnJlZmVyZW5jZSBAY292ZXJzOkNvbmRpdGlvbi5vbnNldFt4XSBAY292ZXJzOkNvbmRpdGlvbi5vbnNldFt4XTpvbnNldERhdGVUaW1lCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAwOCBDb25kaXRpb24gKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDggZWxlbWVudHMgYW5kIGRpc3BsYXlzIDcKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBDb25kaXRpb24gcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRDb25kaXRpb25FdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgQ29uZGl0aW9uIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNsaW5pY2FsU3RhdHVzICAgICAgICAgfCBhY3RpdmUgfAogICAgICAgIHwgY2F0ZWdvcnkgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZXZlcml0eSAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgfCBFc3NlbnRpYWwgaHlwZXJ0ZW5zaW9uIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IHN1YmplY3QucmVmZXJlbmNlICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IG9uc2V0W3hdICAgICAgICAgICAgICAgfCAyMDE2LTA1LTI1IHwKICAgICAgICB8IG9uc2V0W3hdOm9uc2V0RGF0ZVRpbWUgfCAyMDE2LTA1LTI1IHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIENvbmRpdGlvbiByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIENvbmRpdGlvbiByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZENvbmRpdGlvbkV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgQ29uZGl0aW9uIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNsaW5pY2FsU3RhdHVzICAgICAgICAgfCBhY3RpdmUgfAogICAgICAgIHwgY2F0ZWdvcnkgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZXZlcml0eSAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgfCBFc3NlbnRpYWwgaHlwZXJ0ZW5zaW9uIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IG9uc2V0W3hdICAgICAgICAgICAgICAgfCAyMDE2LTA1LTI1IHwKICAgICAgICB8IG9uc2V0W3hdOm9uc2V0RGF0ZVRpbWUgfCAyMDE2LTA1LTI1IHwKCiAgICBAcHJvZmlsZTpNZWRpY2F0aW9uLXV2LWlwcwogICAgQGNvdmVyczpNZWRpY2F0aW9uLmNvZGUgQGNvdmVyczpNZWRpY2F0aW9uLmZvcm0gQGNvdmVyczpNZWRpY2F0aW9uLmluZ3JlZGllbnQgQGNvdmVyczpNZWRpY2F0aW9uLmluZ3JlZGllbnQuaXRlbVt4XQogICAgQGNvdmVyczpNZWRpY2F0aW9uLmluZ3JlZGllbnQuc3RyZW5ndGgKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDA5IE1lZGljYXRpb24gKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDUgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDUKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBNZWRpY2F0aW9uIHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkTWVkaWNhdGlvbkV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBNZWRpY2F0aW9uIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgZm9ybSAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBpbmdyZWRpZW50ICAgICAgICAgIHwgIHwKICAgICAgICB8IGluZ3JlZGllbnQuaXRlbVt4XSAgfCAgfAogICAgICAgIHwgaW5ncmVkaWVudC5zdHJlbmd0aCB8ICB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBNZWRpY2F0aW9uIHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgTWVkaWNhdGlvbiByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZE1lZGljYXRpb25FdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIE1lZGljYXRpb24gcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBmb3JtICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGluZ3JlZGllbnQgICAgICAgICAgfCAgfAogICAgICAgIHwgaW5ncmVkaWVudC5pdGVtW3hdICB8ICB8CiAgICAgICAgfCBpbmdyZWRpZW50LnN0cmVuZ3RoIHwgIHwKCiAgICBAcHJvZmlsZTpNZWRpY2F0aW9uUmVxdWVzdC11di1pcHMKICAgIEBjb3ZlcnM6TWVkaWNhdGlvblJlcXVlc3QubWVkaWNhdGlvblt4XSBAY292ZXJzOk1lZGljYXRpb25SZXF1ZXN0LnN1YmplY3QgQGNvdmVyczpNZWRpY2F0aW9uUmVxdWVzdC5zdWJqZWN0LnJlZmVyZW5jZSBAY292ZXJzOk1lZGljYXRpb25SZXF1ZXN0LmRvc2FnZUluc3RydWN0aW9uCiAgICBAY292ZXJzOk1lZGljYXRpb25SZXF1ZXN0LmRvc2FnZUluc3RydWN0aW9uLnRleHQgQGNvdmVyczpNZWRpY2F0aW9uUmVxdWVzdC5kb3NhZ2VJbnN0cnVjdGlvbi50aW1pbmcKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDEwIE1lZGljYXRpb25SZXF1ZXN0IChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyA2IGVsZW1lbnRzIGFuZCBkaXNwbGF5cyA1CiAgICAgIFdoZW4gQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIGltcG9ydCBvZiB0aGUgTWVkaWNhdGlvblJlcXVlc3QgcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRNZWRpY2F0aW9uUmVxdWVzdEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBNZWRpY2F0aW9uUmVxdWVzdCByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IG1lZGljYXRpb25beF0gICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc3ViamVjdC5yZWZlcmVuY2UgICAgICAgIHwgIHwKICAgICAgICB8IGRvc2FnZUluc3RydWN0aW9uICAgICAgICB8ICB8CiAgICAgICAgfCBkb3NhZ2VJbnN0cnVjdGlvbi50ZXh0ICAgfCAgfAogICAgICAgIHwgZG9zYWdlSW5zdHJ1Y3Rpb24udGltaW5nIHwgIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIE1lZGljYXRpb25SZXF1ZXN0IHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgTWVkaWNhdGlvblJlcXVlc3QgcmVzb3VyY2VzIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRNZWRpY2F0aW9uUmVxdWVzdEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgTWVkaWNhdGlvblJlcXVlc3QgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBtZWRpY2F0aW9uW3hdICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGRvc2FnZUluc3RydWN0aW9uICAgICAgICB8ICB8CiAgICAgICAgfCBkb3NhZ2VJbnN0cnVjdGlvbi50ZXh0ICAgfCAgfAogICAgICAgIHwgZG9zYWdlSW5zdHJ1Y3Rpb24udGltaW5nIHwgIHwKCiAgICBAcHJvZmlsZTpNZWRpY2F0aW9uU3RhdGVtZW50LXV2LWlwcwogICAgQGNvdmVyczpNZWRpY2F0aW9uU3RhdGVtZW50Lm1lZGljYXRpb25beF0gQGNvdmVyczpNZWRpY2F0aW9uU3RhdGVtZW50LnN1YmplY3QgQGNvdmVyczpNZWRpY2F0aW9uU3RhdGVtZW50LnN1YmplY3QucmVmZXJlbmNlIEBjb3ZlcnM6TWVkaWNhdGlvblN0YXRlbWVudC5lZmZlY3RpdmVbeF0KICAgIEBjb3ZlcnM6TWVkaWNhdGlvblN0YXRlbWVudC5lZmZlY3RpdmVbeF06ZWZmZWN0aXZlRGF0ZVRpbWUgQGNvdmVyczpNZWRpY2F0aW9uU3RhdGVtZW50LmRvc2FnZSBAY292ZXJzOk1lZGljYXRpb25TdGF0ZW1lbnQuZG9zYWdlLnRleHQgQGNvdmVyczpNZWRpY2F0aW9uU3RhdGVtZW50LmRvc2FnZS50aW1pbmcKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDExIE1lZGljYXRpb25TdGF0ZW1lbnQgKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDggZWxlbWVudHMgYW5kIGRpc3BsYXlzIDcKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBNZWRpY2F0aW9uU3RhdGVtZW50IHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkTWVkaWNhdGlvblN0YXRlbWVudEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBNZWRpY2F0aW9uU3RhdGVtZW50IHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgbWVkaWNhdGlvblt4XSAgICAgICAgICAgICAgICAgIHwgY2lsYXphcHJpbCA1MDAgbWljcm9ncmFtIHRhYmxldCwgOTAgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTItMDEgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdOmVmZmVjdGl2ZURhdGVUaW1lIHwgMjAyMy0xMi0wMSB8CiAgICAgICAgfCBkb3NhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYWtlIDEgZGFpbHkgfAogICAgICAgIHwgZG9zYWdlLnRleHQgICAgICAgICAgICAgICAgICAgIHwgVGFrZSAxIGRhaWx5IHwKICAgICAgICB8IGRvc2FnZS50aW1pbmcgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBNZWRpY2F0aW9uU3RhdGVtZW50IHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgTWVkaWNhdGlvblN0YXRlbWVudCByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZE1lZGljYXRpb25TdGF0ZW1lbnRFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIE1lZGljYXRpb25TdGF0ZW1lbnQgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBtZWRpY2F0aW9uW3hdICAgICAgICAgICAgICAgICAgfCBjaWxhemFwcmlsIDUwMCBtaWNyb2dyYW0gdGFibGV0LCA5MCB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSAgICAgICAgICAgICAgICAgICB8IDIwMjMtMTItMDEgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdOmVmZmVjdGl2ZURhdGVUaW1lIHwgMjAyMy0xMi0wMSB8CiAgICAgICAgfCBkb3NhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYWtlIDEgZGFpbHkgfAogICAgICAgIHwgZG9zYWdlLnRleHQgICAgICAgICAgICAgICAgICAgIHwgVGFrZSAxIGRhaWx5IHwKICAgICAgICB8IGRvc2FnZS50aW1pbmcgICAgICAgICAgICAgICAgICB8IChwcmVzZW50KSB8CgogIFJ1bGU6IFRoZSByZWNvbW1lbmRlZCBzZWN0aW9uczogaW1tdW5pemF0aW9ucywgcmVzdWx0cywgcHJvY2VkdXJlcywgZGV2aWNlcwoKICAgIEBwcm9maWxlOkltbXVuaXphdGlvbi11di1pcHMKICAgIEBjb3ZlcnM6SW1tdW5pemF0aW9uLnN0YXR1cyBAY292ZXJzOkltbXVuaXphdGlvbi52YWNjaW5lQ29kZSBAY292ZXJzOkltbXVuaXphdGlvbi5wYXRpZW50IEBjb3ZlcnM6SW1tdW5pemF0aW9uLnBhdGllbnQucmVmZXJlbmNlCiAgICBAY292ZXJzOkltbXVuaXphdGlvbi5vY2N1cnJlbmNlW3hdIEBjb3ZlcnM6SW1tdW5pemF0aW9uLm9jY3VycmVuY2VbeF06b2NjdXJyZW5jZURhdGVUaW1lCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAxMiBJbW11bml6YXRpb24gKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDYgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDUKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBJbW11bml6YXRpb24gcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRJbW11bml6YXRpb25FdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgSW1tdW5pemF0aW9uIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbXBsZXRlZCB8CiAgICAgICAgfCB2YWNjaW5lQ29kZSAgICAgICAgICAgICAgICAgICAgICB8IEluZmx1ZW56YSwgc3BsaXQgdmlydXMsIHRyaXZhbGVudCwgcHLigKYgfAogICAgICAgIHwgcGF0aWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IHBhdGllbnQucmVmZXJlbmNlICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBvY2N1cnJlbmNlW3hdICAgICAgICAgICAgICAgICAgICB8IDIwMjQtMDQtMTAgfAogICAgICAgIHwgb2NjdXJyZW5jZVt4XTpvY2N1cnJlbmNlRGF0ZVRpbWUgfCAyMDI0LTA0LTEwIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIEltbXVuaXphdGlvbiByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIEltbXVuaXphdGlvbiByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZEltbXVuaXphdGlvbkV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgSW1tdW5pemF0aW9uIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbXBsZXRlZCB8CiAgICAgICAgfCB2YWNjaW5lQ29kZSAgICAgICAgICAgICAgICAgICAgICB8IEluZmx1ZW56YSwgc3BsaXQgdmlydXMsIHRyaXZhbGVudCwgcHLigKYgfAogICAgICAgIHwgcGF0aWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IG9jY3VycmVuY2VbeF0gICAgICAgICAgICAgICAgICAgIHwgMjAyNC0wNC0xMCB8CiAgICAgICAgfCBvY2N1cnJlbmNlW3hdOm9jY3VycmVuY2VEYXRlVGltZSB8IDIwMjQtMDQtMTAgfAoKICAgIEBwcm9maWxlOk9ic2VydmF0aW9uLXJlc3VsdHMtbGFib3JhdG9yeS1wYXRob2xvZ3ktdXYtaXBzCiAgICBAY292ZXJzOk9ic2VydmF0aW9uLmNhdGVnb3J5OmxhYm9yYXRvcnkgQGNvdmVyczpPYnNlcnZhdGlvbi5jb2RlIEBjb3ZlcnM6T2JzZXJ2YXRpb24uc3ViamVjdCBAY292ZXJzOk9ic2VydmF0aW9uLnN1YmplY3QucmVmZXJlbmNlCiAgICBAY292ZXJzOk9ic2VydmF0aW9uLmVmZmVjdGl2ZVt4XSBAY292ZXJzOk9ic2VydmF0aW9uLmVmZmVjdGl2ZVt4XTplZmZlY3RpdmVEYXRlVGltZSBAY292ZXJzOk9ic2VydmF0aW9uLnBlcmZvcm1lciBAY292ZXJzOk9ic2VydmF0aW9uLnZhbHVlW3hdOnZhbHVlU3RyaW5nCiAgICBAY292ZXJzOk9ic2VydmF0aW9uLnZhbHVlW3hdOnZhbHVlUXVhbnRpdHkgQGNvdmVyczpPYnNlcnZhdGlvbi52YWx1ZVt4XTp2YWx1ZUNvZGVhYmxlQ29uY2VwdCBAY292ZXJzOk9ic2VydmF0aW9uLmNvbXBvbmVudAogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMTMgT2JzZXJ2YXRpb24gUmVzdWx0cyAtIExhYm9yYXRvcnkvUGF0aG9sb2d5IChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAxMSBlbGVtZW50cyBhbmQgZGlzcGxheXMgMTAKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRPYnNlcnZhdGlvbnJlc3VsdHNsYWJvcmF0b3J5cGF0aG9sb2d5RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNhdGVnb3J5OmxhYm9yYXRvcnkgICAgICAgICAgICB8IGxhYm9yYXRvcnkgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ2hvbGVzdGVyb2wudG90YWwvQ2hvbGVzdGVyb2wgaW4gSERMIOKApiB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IHN1YmplY3QucmVmZXJlbmNlICAgICAgICAgICAgICB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgICAgICAgICAgICAgIHwgMjAyMy0xMC0zMVQxNTowNjowMCswMDowMCB8CiAgICAgICAgfCBlZmZlY3RpdmVbeF06ZWZmZWN0aXZlRGF0ZVRpbWUgfCAyMDIzLTEwLTMxVDE1OjA2OjAwKzAwOjAwIHwKICAgICAgICB8IHBlcmZvcm1lciAgICAgICAgICAgICAgICAgICAgICB8IFByYWN0aXRpb25lclJvbGUvNzVlZDZmMjQtOWE3ZS00NTY4LTnigKYgfAogICAgICAgIHwgdmFsdWVbeF06dmFsdWVTdHJpbmcgICAgICAgICAgIHwgQSBjb21iaW5lZCBDVkQgcmlzayBvZiB3aGljaCBsaXBpZHMgaeKApiB8CiAgICAgICAgfCB2YWx1ZVt4XTp2YWx1ZVF1YW50aXR5ICAgICAgICAgfCBtbW9sL0wgfAogICAgICAgIHwgdmFsdWVbeF06dmFsdWVDb2RlYWJsZUNvbmNlcHQgIHwgIHwKICAgICAgICB8IGNvbXBvbmVudCAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kLiIKICAgICAgQW5kIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRPYnNlcnZhdGlvbnJlc3VsdHNsYWJvcmF0b3J5cGF0aG9sb2d5RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjYXRlZ29yeTpsYWJvcmF0b3J5ICAgICAgICAgICAgfCBsYWJvcmF0b3J5IHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENob2xlc3Rlcm9sLnRvdGFsL0Nob2xlc3Rlcm9sIGluIEhETCDigKYgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBlZmZlY3RpdmVbeF0gICAgICAgICAgICAgICAgICAgfCAyMDIzLTEwLTMxVDE1OjA2OjAwKzAwOjAwIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XTplZmZlY3RpdmVEYXRlVGltZSB8IDIwMjMtMTAtMzFUMTU6MDY6MDArMDA6MDAgfAogICAgICAgIHwgcGVyZm9ybWVyICAgICAgICAgICAgICAgICAgICAgIHwgUHJhY3RpdGlvbmVyUm9sZS83NWVkNmYyNC05YTdlLTQ1NjgtOeKApiB8CiAgICAgICAgfCB2YWx1ZVt4XTp2YWx1ZVN0cmluZyAgICAgICAgICAgfCBBIGNvbWJpbmVkIENWRCByaXNrIG9mIHdoaWNoIGxpcGlkcyBp4oCmIHwKICAgICAgICB8IHZhbHVlW3hdOnZhbHVlUXVhbnRpdHkgICAgICAgICB8IG1tb2wvTCB8CiAgICAgICAgfCB2YWx1ZVt4XTp2YWx1ZUNvZGVhYmxlQ29uY2VwdCAgfCAgfAogICAgICAgIHwgY29tcG9uZW50ICAgICAgICAgICAgICAgICAgICAgIHwgIHwKCiAgICBAcHJvZmlsZTpPYnNlcnZhdGlvbi1yZXN1bHRzLXJhZGlvbG9neS11di1pcHMKICAgIEBjb3ZlcnM6T2JzZXJ2YXRpb24uY2F0ZWdvcnk6cmFkaW9sb2d5IEBjb3ZlcnM6T2JzZXJ2YXRpb24uY29kZSBAY292ZXJzOk9ic2VydmF0aW9uLnN1YmplY3QgQGNvdmVyczpPYnNlcnZhdGlvbi5zdWJqZWN0LnJlZmVyZW5jZQogICAgQGNvdmVyczpPYnNlcnZhdGlvbi5lZmZlY3RpdmVbeF0gQGNvdmVyczpPYnNlcnZhdGlvbi5lZmZlY3RpdmVbeF06ZWZmZWN0aXZlRGF0ZVRpbWUgQGNvdmVyczpPYnNlcnZhdGlvbi5wZXJmb3JtZXIgQGNvdmVyczpPYnNlcnZhdGlvbi52YWx1ZVt4XTp2YWx1ZVN0cmluZwogICAgQGNvdmVyczpPYnNlcnZhdGlvbi5jb21wb25lbnQKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDE0IE9ic2VydmF0aW9uIFJlc3VsdHMgLSBSYWRpb2xvZ3kgKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDkgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDgKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRPYnNlcnZhdGlvbnJlc3VsdHNyYWRpb2xvZ3lFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY2F0ZWdvcnk6cmFkaW9sb2d5ICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc3ViamVjdC5yZWZlcmVuY2UgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBlZmZlY3RpdmVbeF06ZWZmZWN0aXZlRGF0ZVRpbWUgfCAgfAogICAgICAgIHwgcGVyZm9ybWVyICAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHZhbHVlW3hdOnZhbHVlU3RyaW5nICAgICAgICAgICB8ICB8CiAgICAgICAgfCBjb21wb25lbnQgICAgICAgICAgICAgICAgICAgICAgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZC4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkT2JzZXJ2YXRpb25yZXN1bHRzcmFkaW9sb2d5RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjYXRlZ29yeTpyYWRpb2xvZ3kgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBlZmZlY3RpdmVbeF0gICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdOmVmZmVjdGl2ZURhdGVUaW1lIHwgIHwKICAgICAgICB8IHBlcmZvcm1lciAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCB2YWx1ZVt4XTp2YWx1ZVN0cmluZyAgICAgICAgICAgfCAgfAogICAgICAgIHwgY29tcG9uZW50ICAgICAgICAgICAgICAgICAgICAgIHwgIHwKCiAgICBAcHJvZmlsZTpEaWFnbm9zdGljUmVwb3J0LXV2LWlwcwogICAgQGNvdmVyczpEaWFnbm9zdGljUmVwb3J0LmNvZGUgQGNvdmVyczpEaWFnbm9zdGljUmVwb3J0LnN1YmplY3QgQGNvdmVyczpEaWFnbm9zdGljUmVwb3J0LnN1YmplY3QucmVmZXJlbmNlIEBjb3ZlcnM6RGlhZ25vc3RpY1JlcG9ydC5lZmZlY3RpdmVbeF0KICAgIEBjb3ZlcnM6RGlhZ25vc3RpY1JlcG9ydC5lZmZlY3RpdmVbeF06ZWZmZWN0aXZlRGF0ZVRpbWUgQGNvdmVyczpEaWFnbm9zdGljUmVwb3J0LnBlcmZvcm1lciBAY292ZXJzOkRpYWdub3N0aWNSZXBvcnQucmVzdWx0Om9ic2VydmF0aW9uLXJlc3VsdHMKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDE1IERpYWdub3N0aWNSZXBvcnQgKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDcgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDYKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBEaWFnbm9zdGljUmVwb3J0IHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkRGlhZ25vc3RpY1JlcG9ydEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBEaWFnbm9zdGljUmVwb3J0IHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XTplZmZlY3RpdmVEYXRlVGltZSB8ICB8CiAgICAgICAgfCBwZXJmb3JtZXIgICAgICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgcmVzdWx0Om9ic2VydmF0aW9uLXJlc3VsdHMgICAgIHwgIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIERpYWdub3N0aWNSZXBvcnQgcmVzb3VyY2VzLiIKICAgICAgQW5kIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBEaWFnbm9zdGljUmVwb3J0IHJlc291cmNlcyBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkRGlhZ25vc3RpY1JlcG9ydEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgRGlhZ25vc3RpY1JlcG9ydCByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XTplZmZlY3RpdmVEYXRlVGltZSB8ICB8CiAgICAgICAgfCBwZXJmb3JtZXIgICAgICAgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgcmVzdWx0Om9ic2VydmF0aW9uLXJlc3VsdHMgICAgIHwgIHwKCiAgICBAcHJvZmlsZTpTcGVjaW1lbi11di1pcHMKICAgIEBjb3ZlcnM6U3BlY2ltZW4udHlwZSBAY292ZXJzOlNwZWNpbWVuLnN1YmplY3QgQGNvdmVyczpTcGVjaW1lbi5zdWJqZWN0LnJlZmVyZW5jZQogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMTYgU3BlY2ltZW4gKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDMgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDIKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBTcGVjaW1lbiByZXNvdXJjZXMgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZFNwZWNpbWVuRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIFNwZWNpbWVuIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCB0eXBlICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSB8ICB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBTcGVjaW1lbiByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIFNwZWNpbWVuIHJlc291cmNlcyBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkU3BlY2ltZW5FdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIFNwZWNpbWVuIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgIHwgZGV0YWlsIHwKICAgICAgICB8IHR5cGUgICAgfCAgfAogICAgICAgIHwgc3ViamVjdCB8ICB8CgogICAgQHByb2ZpbGU6SW1hZ2luZ1N0dWR5LXV2LWlwcwogICAgQGNvdmVyczpJbWFnaW5nU3R1ZHkuaWRlbnRpZmllciBAY292ZXJzOkltYWdpbmdTdHVkeS5zdWJqZWN0IEBjb3ZlcnM6SW1hZ2luZ1N0dWR5LnN1YmplY3QucmVmZXJlbmNlIEBjb3ZlcnM6SW1hZ2luZ1N0dWR5LnN0YXJ0ZWQKICAgIEBjb3ZlcnM6SW1hZ2luZ1N0dWR5LnByb2NlZHVyZUNvZGUgQGNvdmVyczpJbWFnaW5nU3R1ZHkucmVhc29uQ29kZSBAY292ZXJzOkltYWdpbmdTdHVkeS5zZXJpZXMgQGNvdmVyczpJbWFnaW5nU3R1ZHkuc2VyaWVzLnVpZAogICAgQGNvdmVyczpJbWFnaW5nU3R1ZHkuc2VyaWVzLm1vZGFsaXR5IEBjb3ZlcnM6SW1hZ2luZ1N0dWR5LnNlcmllcy5pbnN0YW5jZSBAY292ZXJzOkltYWdpbmdTdHVkeS5zZXJpZXMuaW5zdGFuY2UudWlkIEBjb3ZlcnM6SW1hZ2luZ1N0dWR5LnNlcmllcy5pbnN0YW5jZS5zb3BDbGFzcwogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMTcgSW1hZ2luZ1N0dWR5IChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAxMiBlbGVtZW50cyBhbmQgZGlzcGxheXMgMTEKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBJbWFnaW5nU3R1ZHkgcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRJbWFnaW5nU3R1ZHlFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgSW1hZ2luZ1N0dWR5IHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgaWRlbnRpZmllciAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSAgICAgICAgfCAgfAogICAgICAgIHwgc3RhcnRlZCAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHByb2NlZHVyZUNvZGUgICAgICAgICAgICB8ICB8CiAgICAgICAgfCByZWFzb25Db2RlICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc2VyaWVzICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlcmllcy51aWQgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZXJpZXMubW9kYWxpdHkgICAgICAgICAgfCAgfAogICAgICAgIHwgc2VyaWVzLmluc3RhbmNlICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlcmllcy5pbnN0YW5jZS51aWQgICAgICB8ICB8CiAgICAgICAgfCBzZXJpZXMuaW5zdGFuY2Uuc29wQ2xhc3MgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgSW1hZ2luZ1N0dWR5IHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgSW1hZ2luZ1N0dWR5IHJlc291cmNlcyBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkSW1hZ2luZ1N0dWR5RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBJbWFnaW5nU3R1ZHkgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBpZGVudGlmaWVyICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN0YXJ0ZWQgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBwcm9jZWR1cmVDb2RlICAgICAgICAgICAgfCAgfAogICAgICAgIHwgcmVhc29uQ29kZSAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlcmllcyAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZXJpZXMudWlkICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc2VyaWVzLm1vZGFsaXR5ICAgICAgICAgIHwgIHwKICAgICAgICB8IHNlcmllcy5pbnN0YW5jZSAgICAgICAgICB8ICB8CiAgICAgICAgfCBzZXJpZXMuaW5zdGFuY2UudWlkICAgICAgfCAgfAogICAgICAgIHwgc2VyaWVzLmluc3RhbmNlLnNvcENsYXNzIHwgIHwKCiAgICBAcHJvZmlsZTpQcm9jZWR1cmUtdXYtaXBzCiAgICBAY292ZXJzOlByb2NlZHVyZS5jb2RlIEBjb3ZlcnM6UHJvY2VkdXJlLnN1YmplY3QgQGNvdmVyczpQcm9jZWR1cmUuc3ViamVjdC5yZWZlcmVuY2UgQGNvdmVyczpQcm9jZWR1cmUucGVyZm9ybWVkW3hdCiAgICBAY292ZXJzOlByb2NlZHVyZS5wZXJmb3JtZWRbeF06cGVyZm9ybWVkRGF0ZVRpbWUKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDE4IFByb2NlZHVyZSAoSVBTKSDigJQgdGhlIENvbnN1bWVyIGhhbmRsZXMgNSBlbGVtZW50cyBhbmQgZGlzcGxheXMgNAogICAgICBXaGVuIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBpbXBvcnQgb2YgdGhlIFByb2NlZHVyZSByZXNvdXJjZXMgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZFByb2NlZHVyZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBQcm9jZWR1cmUgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUb3RhbCBoaXAgcmVwbGFjZW1lbnQgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IHBlcmZvcm1lZFt4XSAgICAgICAgICAgICAgICAgICB8IDIwMDAtMDQtMjggfAogICAgICAgIHwgcGVyZm9ybWVkW3hdOnBlcmZvcm1lZERhdGVUaW1lIHwgMjAwMC0wNC0yOCB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBQcm9jZWR1cmUgcmVzb3VyY2VzLiIKICAgICAgQW5kIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBQcm9jZWR1cmUgcmVzb3VyY2VzIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRQcm9jZWR1cmVFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIFByb2NlZHVyZSByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRvdGFsIGhpcCByZXBsYWNlbWVudCB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IHBlcmZvcm1lZFt4XSAgICAgICAgICAgICAgICAgICB8IDIwMDAtMDQtMjggfAogICAgICAgIHwgcGVyZm9ybWVkW3hdOnBlcmZvcm1lZERhdGVUaW1lIHwgMjAwMC0wNC0yOCB8CgogICAgQHByb2ZpbGU6RGV2aWNlLW9ic2VydmVyLXV2LWlwcwogICAgQGNvdmVyczpEZXZpY2UuaWRlbnRpZmllciBAY292ZXJzOkRldmljZS5tYW51ZmFjdHVyZXIgQGNvdmVyczpEZXZpY2UubW9kZWxOdW1iZXIKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDE5IERldmljZSAtIFBlcmZvcm1lciBvciBPYnNlcnZlciAoSVBTKSDigJQgdGhlIENvbnN1bWVyIGhhbmRsZXMgMyBlbGVtZW50cyBhbmQgZGlzcGxheXMgMwogICAgICBXaGVuIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBpbXBvcnQgb2YgdGhlIERldmljZSByZXNvdXJjZXMgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZERldmljZW9ic2VydmVyRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIERldmljZSByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGlkZW50aWZpZXIgICB8ICB8CiAgICAgICAgfCBtYW51ZmFjdHVyZXIgfCAgfAogICAgICAgIHwgbW9kZWxOdW1iZXIgIHwgIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIERldmljZSByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIERldmljZSByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZERldmljZW9ic2VydmVyRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBEZXZpY2UgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBpZGVudGlmaWVyICAgfCAgfAogICAgICAgIHwgbWFudWZhY3R1cmVyIHwgIHwKICAgICAgICB8IG1vZGVsTnVtYmVyICB8ICB8CgogICAgQHByb2ZpbGU6RGV2aWNlLXV2LWlwcwogICAgQGNvdmVyczpEZXZpY2UudHlwZQogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMjAgRGV2aWNlIChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAxIGVsZW1lbnQgYW5kIGRpc3BsYXlzIDEKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBEZXZpY2UgcmVzb3VyY2VzIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWREZXZpY2VFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgRGV2aWNlIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtIHwgZGV0YWlsIHwKICAgICAgICB8IHR5cGUgfCBIaXAgcHJvc3RoZXNpcywgZGV2aWNlIChwaHlzaWNhbCBvYmplY3QpIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIERldmljZSByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIERldmljZSByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZERldmljZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgRGV2aWNlIHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtIHwgZGV0YWlsIHwKICAgICAgICB8IHR5cGUgfCBIaXAgcHJvc3RoZXNpcywgZGV2aWNlIChwaHlzaWNhbCBvYmplY3QpIHwKCiAgICBAcHJvZmlsZTpEZXZpY2VVc2VTdGF0ZW1lbnQtdXYtaXBzCiAgICBAY292ZXJzOkRldmljZVVzZVN0YXRlbWVudC5zdWJqZWN0IEBjb3ZlcnM6RGV2aWNlVXNlU3RhdGVtZW50LnN1YmplY3QucmVmZXJlbmNlIEBjb3ZlcnM6RGV2aWNlVXNlU3RhdGVtZW50LnRpbWluZ1t4XSBAY292ZXJzOkRldmljZVVzZVN0YXRlbWVudC50aW1pbmdbeF06dGltaW5nRGF0ZVRpbWUKICAgIEBjb3ZlcnM6RGV2aWNlVXNlU3RhdGVtZW50LmRldmljZQogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMjEgRGV2aWNlVXNlU3RhdGVtZW50IChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyA1IGVsZW1lbnRzIGFuZCBkaXNwbGF5cyA0CiAgICAgIFdoZW4gQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIGltcG9ydCBvZiB0aGUgRGV2aWNlVXNlU3RhdGVtZW50IHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkRGV2aWNlVXNlU3RhdGVtZW50RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIERldmljZVVzZVN0YXRlbWVudCByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgICB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAogICAgICAgIHwgc3ViamVjdC5yZWZlcmVuY2UgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCB0aW1pbmdbeF0gICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgdGltaW5nW3hdOnRpbWluZ0RhdGVUaW1lIHwgIHwKICAgICAgICB8IGRldmljZSAgICAgICAgICAgICAgICAgICB8IEhpcCBwcm9zdGhlc2lzIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIERldmljZVVzZVN0YXRlbWVudCByZXNvdXJjZXMuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIERldmljZVVzZVN0YXRlbWVudCByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZERldmljZVVzZVN0YXRlbWVudEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgRGV2aWNlVXNlU3RhdGVtZW50IHJlc291cmNlcyI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCB0aW1pbmdbeF0gICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgdGltaW5nW3hdOnRpbWluZ0RhdGVUaW1lIHwgIHwKICAgICAgICB8IGRldmljZSAgICAgICAgICAgICAgICAgICB8IEhpcCBwcm9zdGhlc2lzIHwKCiAgUnVsZTogVGhlIG9wdGlvbmFsIHNlY3Rpb25zOiBhbGVydHMsIHByZWduYW5jeSwgc29jaWFsIGhpc3RvcnkKCiAgICBAcHJvZmlsZTpGbGFnLWFsZXJ0LXV2LWlwcwogICAgQGNvdmVyczpGbGFnLmV4dGVuc2lvbjpmbGFnLXByaW9yaXR5IEBjb3ZlcnM6RmxhZy5jYXRlZ29yeSBAY292ZXJzOkZsYWcuY29kZSBAY292ZXJzOkZsYWcuc3ViamVjdAogICAgQGNvdmVyczpGbGFnLnN1YmplY3QucmVmZXJlbmNlCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAyMiBGbGFnIC0gQWxlcnQgKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDUgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDQKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBGbGFnIHJlc291cmNlcyBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkRmxhZ2FsZXJ0RXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIEZsYWcgcmVzb3VyY2VzIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGV4dGVuc2lvbjpmbGFnLXByaW9yaXR5IHwgIHwKICAgICAgICB8IGNhdGVnb3J5ICAgICAgICAgICAgICAgIHwgRGlldCB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgICB8IFNoZWxsZmlzaCBmcmVlIGRpZXQgfAogICAgICAgIHwgc3ViamVjdCAgICAgICAgICAgICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IHN1YmplY3QucmVmZXJlbmNlICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBGbGFnIHJlc291cmNlcy4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgRmxhZyByZXNvdXJjZXMgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZEZsYWdhbGVydEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgRmxhZyByZXNvdXJjZXMiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgZXh0ZW5zaW9uOmZsYWctcHJpb3JpdHkgfCAgfAogICAgICAgIHwgY2F0ZWdvcnkgICAgICAgICAgICAgICAgfCBEaWV0IHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgIHwgU2hlbGxmaXNoIGZyZWUgZGlldCB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAoKICAgIEBwcm9maWxlOk9ic2VydmF0aW9uLXByZWduYW5jeS1lZGQtdXYtaXBzCiAgICBAY292ZXJzOk9ic2VydmF0aW9uLmNvZGUgQGNvdmVyczpPYnNlcnZhdGlvbi5zdWJqZWN0IEBjb3ZlcnM6T2JzZXJ2YXRpb24uc3ViamVjdC5yZWZlcmVuY2UgQGNvdmVyczpPYnNlcnZhdGlvbi5lZmZlY3RpdmVbeF0KICAgIEBjb3ZlcnM6T2JzZXJ2YXRpb24udmFsdWVbeF06dmFsdWVEYXRlVGltZQogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci0wMjMgT2JzZXJ2YXRpb24gUHJlZ25hbmN5IC0gRXhwZWN0ZWQgRGVsaXZlcnkgRGF0ZSAoSVBTKSDigJQgdGhlIENvbnN1bWVyIGhhbmRsZXMgNSBlbGVtZW50cyBhbmQgZGlzcGxheXMgNAogICAgICBXaGVuIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBpbXBvcnQgb2YgdGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZE9ic2VydmF0aW9ucHJlZ25hbmN5ZWRkRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc3ViamVjdC5yZWZlcmVuY2UgICAgICB8ICB8CiAgICAgICAgfCBlZmZlY3RpdmVbeF0gICAgICAgICAgIHwgIHwKICAgICAgICB8IHZhbHVlW3hdOnZhbHVlRGF0ZVRpbWUgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZC4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkT2JzZXJ2YXRpb25wcmVnbmFuY3llZGRFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgICAgICB8ICB8CiAgICAgICAgfCB2YWx1ZVt4XTp2YWx1ZURhdGVUaW1lIHwgIHwKCiAgICBAcHJvZmlsZTpPYnNlcnZhdGlvbi1wcmVnbmFuY3ktb3V0Y29tZS11di1pcHMKICAgIEBjb3ZlcnM6T2JzZXJ2YXRpb24uY29kZSBAY292ZXJzOk9ic2VydmF0aW9uLnN1YmplY3QgQGNvdmVyczpPYnNlcnZhdGlvbi5zdWJqZWN0LnJlZmVyZW5jZSBAY292ZXJzOk9ic2VydmF0aW9uLmVmZmVjdGl2ZVt4XQogICAgQGNvdmVyczpPYnNlcnZhdGlvbi52YWx1ZVt4XTp2YWx1ZVF1YW50aXR5CiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAyNCBPYnNlcnZhdGlvbiBQcmVnbmFuY3kgLSBPdXRjb21lIChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyA1IGVsZW1lbnRzIGFuZCBkaXNwbGF5cyA0CiAgICAgIFdoZW4gQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIGltcG9ydCBvZiB0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkT2JzZXJ2YXRpb25wcmVnbmFuY3lvdXRjb21lRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgfCAgfAogICAgICAgIHwgc3ViamVjdC5yZWZlcmVuY2UgICAgICB8ICB8CiAgICAgICAgfCBlZmZlY3RpdmVbeF0gICAgICAgICAgIHwgIHwKICAgICAgICB8IHZhbHVlW3hdOnZhbHVlUXVhbnRpdHkgfCAgfAogICAgICBXaGVuIENvbnN1bWVyIGlzIGluZm9ybWVkICJPcGVuIFBhdHJpY2lhIEpPUkRBTkEncyBzdW1tYXJ5IGluIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCBhbmQgZGlzcGxheSB0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZC4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCBkaXNwbGF5ZWQgKHNjcmVlbnNob3QpIiBhcyAkZGlzcGxheWVkT2JzZXJ2YXRpb25wcmVnbmFuY3lvdXRjb21lRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICB8ICB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSAgICAgICAgICAgfCAgfAogICAgICAgIHwgdmFsdWVbeF06dmFsdWVRdWFudGl0eSB8ICB8CgogICAgQHByb2ZpbGU6T2JzZXJ2YXRpb24tcHJlZ25hbmN5LXN0YXR1cy11di1pcHMKICAgIEBjb3ZlcnM6T2JzZXJ2YXRpb24uY29kZSBAY292ZXJzOk9ic2VydmF0aW9uLnN1YmplY3QgQGNvdmVyczpPYnNlcnZhdGlvbi5zdWJqZWN0LnJlZmVyZW5jZSBAY292ZXJzOk9ic2VydmF0aW9uLmVmZmVjdGl2ZVt4XQogICAgQGNvdmVyczpPYnNlcnZhdGlvbi52YWx1ZVt4XTp2YWx1ZUNvZGVhYmxlQ29uY2VwdCBAY292ZXJzOk9ic2VydmF0aW9uLmhhc01lbWJlciBAY292ZXJzOk9ic2VydmF0aW9uLmhhc01lbWJlci5yZWZlcmVuY2UKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDI1IE9ic2VydmF0aW9uIFByZWduYW5jeSAtIFN0YXR1cyAoSVBTKSDigJQgdGhlIENvbnN1bWVyIGhhbmRsZXMgNyBlbGVtZW50cyBhbmQgZGlzcGxheXMgNgogICAgICBXaGVuIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBpbXBvcnQgb2YgdGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZE9ic2VydmF0aW9ucHJlZ25hbmN5c3RhdHVzRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcmVnbmFuY3kgc3RhdHVzIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSAgICAgICAgICAgICB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgICAgICAgICAgICAgfCAyMDIwLTAxLTEwIHwKICAgICAgICB8IHZhbHVlW3hdOnZhbHVlQ29kZWFibGVDb25jZXB0IHwgTm90IFByZWduYW50IHwKICAgICAgICB8IGhhc01lbWJlciAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGhhc01lbWJlci5yZWZlcmVuY2UgICAgICAgICAgIHwgIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZE9ic2VydmF0aW9ucHJlZ25hbmN5c3RhdHVzRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGRpc3BsYXllZCBmb3IgInRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIjoKICAgICAgICB8IGl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHJlZ25hbmN5IHN0YXR1cyB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICAgICAgICAgICAgICB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgICAgICAgICAgICAgfCAyMDIwLTAxLTEwIHwKICAgICAgICB8IHZhbHVlW3hdOnZhbHVlQ29kZWFibGVDb25jZXB0IHwgTm90IFByZWduYW50IHwKICAgICAgICB8IGhhc01lbWJlciAgICAgICAgICAgICAgICAgICAgIHwgIHwKICAgICAgICB8IGhhc01lbWJlci5yZWZlcmVuY2UgICAgICAgICAgIHwgIHwKCiAgUnVsZTogRGF0YSB0eXBlcyB1c2VkIHRocm91Z2hvdXQKCiAgICBAcHJvZmlsZTpPYnNlcnZhdGlvbi10b2JhY2NvdXNlLXV2LWlwcwogICAgQGNvdmVyczpPYnNlcnZhdGlvbi5jb2RlIEBjb3ZlcnM6T2JzZXJ2YXRpb24uc3ViamVjdCBAY292ZXJzOk9ic2VydmF0aW9uLnN1YmplY3QucmVmZXJlbmNlIEBjb3ZlcnM6T2JzZXJ2YXRpb24uZWZmZWN0aXZlW3hdCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAyNiBPYnNlcnZhdGlvbiBTb2NpYWwgSGlzdG9yeSAtIFRvYmFjY28gVXNlIChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyA0IGVsZW1lbnRzIGFuZCBkaXNwbGF5cyAzCiAgICAgIFdoZW4gQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIGltcG9ydCBvZiB0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCBjb21wbGV0aW5nIHdpdGhvdXQgZXJyb3IgKGltcG9ydCBsb2cgb3Igc2NyZWVuc2hvdCkiIGFzICRoYW5kbGVkT2JzZXJ2YXRpb250b2JhY2NvdXNlRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY29kZSAgICAgICAgICAgICAgfCBUb2JhY2NvIHNtb2tpbmcgc3RhdHVzIHwKICAgICAgICB8IHN1YmplY3QgICAgICAgICAgIHwgUGF0aWVudC9kMTc0YmQxYS1iMzY4LTQxZTYtODNhMi1hZjc3ZuKApiB8CiAgICAgICAgfCBzdWJqZWN0LnJlZmVyZW5jZSB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAogICAgICAgIHwgZWZmZWN0aXZlW3hdICAgICAgfCAyMDIyLTEwLTIwIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgdGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQuIgogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQgZGlzcGxheWVkIChzY3JlZW5zaG90KSIgYXMgJGRpc3BsYXllZE9ic2VydmF0aW9udG9iYWNjb3VzZUV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBkaXNwbGF5ZWQgZm9yICJ0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCI6CiAgICAgICAgfCBpdGVtICAgICAgICAgfCBkZXRhaWwgfAogICAgICAgIHwgY29kZSAgICAgICAgIHwgVG9iYWNjbyBzbW9raW5nIHN0YXR1cyB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSB8IDIwMjItMTAtMjAgfAoKICAgIEBwcm9maWxlOk9ic2VydmF0aW9uLWFsY29ob2x1c2UtdXYtaXBzCiAgICBAY292ZXJzOk9ic2VydmF0aW9uLmNvZGUgQGNvdmVyczpPYnNlcnZhdGlvbi5zdWJqZWN0IEBjb3ZlcnM6T2JzZXJ2YXRpb24uc3ViamVjdC5yZWZlcmVuY2UgQGNvdmVyczpPYnNlcnZhdGlvbi5lZmZlY3RpdmVbeF0KICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItMDI3IE9ic2VydmF0aW9uIFNvY2lhbCBIaXN0b3J5IC0gQWxjb2hvbCBVc2UgKElQUykg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDQgZWxlbWVudHMgYW5kIGRpc3BsYXlzIDMKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIHRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRPYnNlcnZhdGlvbmFsY29ob2x1c2VFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJ0aGUgT2JzZXJ2YXRpb24gcmVzb3VyY2VzIG9mIHRoaXMga2luZCI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICB8IGRldGFpbCB8CiAgICAgICAgfCBjb2RlICAgICAgICAgICAgICB8IEFsY29ob2xpYyBkcmlua3MgcGVyIGRheSB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgICAgICB8IFBhdGllbnQvZDE3NGJkMWEtYjM2OC00MWU2LTgzYTItYWY3N2bigKYgfAogICAgICAgIHwgc3ViamVjdC5yZWZlcmVuY2UgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSAgICAgIHwgMjAxNi0wNi0yMiB8CiAgICAgIFdoZW4gQ29uc3VtZXIgaXMgaW5mb3JtZWQgIk9wZW4gUGF0cmljaWEgSk9SREFOQSdzIHN1bW1hcnkgaW4gdGhlIHN5c3RlbSB1bmRlciB0ZXN0IGFuZCBkaXNwbGF5IHRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kLiIKICAgICAgQW5kIENvbnN1bWVyIHN1Ym1pdHMgZXZpZGVuY2Ugb2YgInRoZSBPYnNlcnZhdGlvbiByZXNvdXJjZXMgb2YgdGhpcyBraW5kIGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRPYnNlcnZhdGlvbmFsY29ob2x1c2VFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAidGhlIE9ic2VydmF0aW9uIHJlc291cmNlcyBvZiB0aGlzIGtpbmQiOgogICAgICAgIHwgaXRlbSAgICAgICAgIHwgZGV0YWlsIHwKICAgICAgICB8IGNvZGUgICAgICAgICB8IEFsY29ob2xpYyBkcmlua3MgcGVyIGRheSB8CiAgICAgICAgfCBzdWJqZWN0ICAgICAgfCBQYXRpZW50L2QxNzRiZDFhLWIzNjgtNDFlNi04M2EyLWFmNzdm4oCmIHwKICAgICAgICB8IGVmZmVjdGl2ZVt4XSB8IDIwMTYtMDYtMjIgfAoKICAgIEBwcm9maWxlOkNvZGVhYmxlQ29uY2VwdC11di1pcHMKICAgIEBjb3ZlcnM6Q29kZWFibGVDb25jZXB0LmNvZGluZyBAY292ZXJzOkNvZGVhYmxlQ29uY2VwdC50ZXh0CiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAyOCBDb2RlYWJsZSBDb25jZXB0IChJUFMpIOKAlCB0aGUgQ29uc3VtZXIgaGFuZGxlcyAyIGVsZW1lbnRzIGFuZCBkaXNwbGF5cyAxCiAgICAgIFdoZW4gQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIGltcG9ydCBvZiBldmVyeSBDb2RlYWJsZUNvbmNlcHQgaW4gdGhlIGRvY3VtZW50IGNvbXBsZXRpbmcgd2l0aG91dCBlcnJvciAoaW1wb3J0IGxvZyBvciBzY3JlZW5zaG90KSIgYXMgJGhhbmRsZWRDb2RlYWJsZUNvbmNlcHRFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgYWNjZXB0ZWQgZm9yICJldmVyeSBDb2RlYWJsZUNvbmNlcHQgaW4gdGhlIGRvY3VtZW50IjoKICAgICAgICB8IGl0ZW0gICB8IGRldGFpbCB8CiAgICAgICAgfCBjb2RpbmcgfCAgfAogICAgICAgIHwgdGV4dCAgIHwgIHwKICAgICAgV2hlbiBDb25zdW1lciBpcyBpbmZvcm1lZCAiT3BlbiBQYXRyaWNpYSBKT1JEQU5BJ3Mgc3VtbWFyeSBpbiB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYW5kIGRpc3BsYXkgZXZlcnkgQ29kZWFibGVDb25jZXB0IGluIHRoZSBkb2N1bWVudC4iCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJldmVyeSBDb2RlYWJsZUNvbmNlcHQgaW4gdGhlIGRvY3VtZW50IGRpc3BsYXllZCAoc2NyZWVuc2hvdCkiIGFzICRkaXNwbGF5ZWRDb2RlYWJsZUNvbmNlcHRFdmlkZW5jZQogICAgICBUaGVuIENvbnN1bWVyIGNvbmZpcm1zIGVhY2ggb2YgdGhlc2UgaXMgZGlzcGxheWVkIGZvciAiZXZlcnkgQ29kZWFibGVDb25jZXB0IGluIHRoZSBkb2N1bWVudCI6CiAgICAgICAgfCBpdGVtIHwgZGV0YWlsIHwKICAgICAgICB8IHRleHQgfCAgfAoKICAgIEBwcm9maWxlOkNvZGluZy11di1pcHMKICAgIEBjb3ZlcnM6Q29kaW5nLnN5c3RlbSBAY292ZXJzOkNvZGluZy5jb2RlCiAgICBTY2VuYXJpbzogaXBzLWNvbnN1bWVyLTAyOSBDb2Rpbmcgd2l0aCB0cmFuc2xhdGlvbnMg4oCUIHRoZSBDb25zdW1lciBoYW5kbGVzIDIgZWxlbWVudHMKICAgICAgV2hlbiBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgaW1wb3J0IG9mIGV2ZXJ5IENvZGluZyBpbiB0aGUgZG9jdW1lbnQgY29tcGxldGluZyB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkaGFuZGxlZENvZGluZ0V2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgImV2ZXJ5IENvZGluZyBpbiB0aGUgZG9jdW1lbnQiOgogICAgICAgIHwgaXRlbSAgIHwgZGV0YWlsIHwKICAgICAgICB8IHN5c3RlbSB8ICB8CiAgICAgICAgfCBjb2RlICAgfCAgfAoKICBSdWxlOiBEb2N1bWVudHMgd2l0aCBtaXNzaW5nIGluZm9ybWF0aW9uIGFyZSBoYW5kbGVkLCBub3QgcmVqZWN0ZWQKCiAgICBAcHJvZmlsZTpDb21wb3NpdGlvbi11di1pcHMKICAgIEBjb3ZlcnM6Q29tcG9zaXRpb24uc2VjdGlvbjpzZWN0aW9uUHJvYmxlbXMuZW1wdHlSZWFzb24gQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25BbGxlcmdpZXMuZW1wdHlSZWFzb24gQGNvdmVyczpDb21wb3NpdGlvbi5zZWN0aW9uOnNlY3Rpb25NZWRpY2F0aW9ucy5lbXB0eVJlYXNvbgogICAgU2NlbmFyaW86IGlwcy1jb25zdW1lci05MDAgUmVxdWlyZWQgc2VjdGlvbnMgd2l0aCBhbiBlbXB0eVJlYXNvbiBhbmQgYSBtaW5pbWFsIGRvY3VtZW50IGFyZSBhY2NlcHRlZAogICAgICBXaGVuIFRlc3RlciBnZXRzICJodHRwczovL2hsNy5vcmcvZmhpci91di9pcHMvQnVuZGxlLWJ1bmRsZS1uby1pbmZvLXJlcXVpcmVkLXNlY3Rpb25zLmpzb24iIGFzICRpcHNOb0luZm8KICAgICAgQW5kIENvbnN1bWVyIGlzIGluZm9ybWVkICJJbXBvcnQgdGhpcyBJUFMsIHdob3NlIHByb2JsZW1zLCBhbGxlcmdpZXMgYW5kIG1lZGljYXRpb25zIHNlY3Rpb25zIGNhcnJ5IGFuIGVtcHR5UmVhc29uIGluc3RlYWQgb2YgZW50cmllcy4iIHdpdGggJGlwc05vSW5mbwogICAgICBBbmQgQ29uc3VtZXIgc3VibWl0cyBldmlkZW5jZSBvZiAidGhlIHRocmVlIHJlcXVpcmVkIHNlY3Rpb25zIHNob3duIHdpdGggbm8gaW5mb3JtYXRpb24gKHNjcmVlbnNob3QpIiBhcyAkbm9JbmZvRXZpZGVuY2UKICAgICAgVGhlbiBDb25zdW1lciBjb25maXJtcyBlYWNoIG9mIHRoZXNlIGlzIGFjY2VwdGVkIGZvciAiYSBkb2N1bWVudCB3aG9zZSByZXF1aXJlZCBzZWN0aW9ucyBjYXJyeSBhbiBlbXB0eVJlYXNvbiI6CiAgICAgICAgfCBpdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRldGFpbCAgICAgICAgICAgICAgICAgIHwKICAgICAgICB8IHNlY3Rpb246c2VjdGlvblByb2JsZW1zLmVtcHR5UmVhc29uICAgIHwgc2hvd24gYXMgbm8gaW5mb3JtYXRpb24gfAogICAgICAgIHwgc2VjdGlvbjpzZWN0aW9uQWxsZXJnaWVzLmVtcHR5UmVhc29uICAgfCBzaG93biBhcyBubyBpbmZvcm1hdGlvbiB8CiAgICAgICAgfCBzZWN0aW9uOnNlY3Rpb25NZWRpY2F0aW9ucy5lbXB0eVJlYXNvbiB8IHNob3duIGFzIG5vIGluZm9ybWF0aW9uIHwKICAgICAgV2hlbiBUZXN0ZXIgZ2V0cyAiaHR0cHM6Ly9obDcub3JnL2ZoaXIvdXYvaXBzL0J1bmRsZS1idW5kbGUtbWluaW1hbC5qc29uIiBhcyAkaXBzTWluaW1hbAogICAgICBBbmQgQ29uc3VtZXIgaXMgaW5mb3JtZWQgIkltcG9ydCB0aGlzIG1pbmltYWwgSVBTIChyZXF1aXJlZCBzZWN0aW9ucyBvbmx5LCBubyBvcHRpb25hbCBlbGVtZW50cykuIiB3aXRoICRpcHNNaW5pbWFsCiAgICAgIEFuZCBDb25zdW1lciBzdWJtaXRzIGV2aWRlbmNlIG9mICJ0aGUgbWluaW1hbCBkb2N1bWVudCBpbXBvcnRlZCB3aXRob3V0IGVycm9yIChpbXBvcnQgbG9nIG9yIHNjcmVlbnNob3QpIiBhcyAkbWluaW1hbEV2aWRlbmNlCiAgICAgIFRoZW4gQ29uc3VtZXIgY29uZmlybXMgZWFjaCBvZiB0aGVzZSBpcyBhY2NlcHRlZCBmb3IgInRoZSBtaW5pbWFsIGRvY3VtZW50IjoKICAgICAgICB8IGl0ZW0gICAgICAgICB8IGRldGFpbCAgICAgICAgICAgICAgICAgfAogICAgICAgIHwgdGhlIGRvY3VtZW50IHwgaW1wb3J0ZWQgd2l0aG91dCBlcnJvciB8CgogIFJ1bGU6IEEgQ29uc3VtZXIgdGhhdCBpcyBhIEZISVIgc2VydmVyIGlzIGRyaXZlbiBkaXJlY3RseQoKICAgIFNjZW5hcmlvOiBpcHMtY29uc3VtZXItOTUwIFRoZSBkb2N1bWVudCBpcyBhY2NlcHRlZCBvdmVyIHRoZSBGSElSIEFQSQogICAgICAjIEZvciBhIENvbnN1bWVyIGV4cG9zaW5nIGEgRkhJUiBlbmRwb2ludDogZGVjbGFyZSBpdCB3aXRoIGFuIGVuZHBvaW50IGluIHRoZQogICAgICAjIEJhY2tncm91bmQgKCJDb25zdW1lciBpcyB0aGUgc3lzdGVtIHVuZGVyIHRlc3QgYXQgLi4uIikgYW5kIHRoZSB0ZXN0IGJlZAogICAgICAjIHN1Ym1pdHMgdGhlIGRvY3VtZW50IGl0c2VsZiBpbnN0ZWFkIG9mIGFza2luZyBhIHRlc3RlciB0byBpbXBvcnQgaXQuCiAgICAgIFdoZW4gVGVzdGVyIHBvc3RzIHRvIENvbnN1bWVyIGF0ICIvQnVuZGxlIiB3aXRoIGJvZHkgJGlwcwogICAgICBUaGVuICRyZXNwb25zZS5zdGF0dXMgc2hvdWxkIGJlIG9uZSBvZiAiMjAwLCAyMDEiCg=="
}