@adonoustech/bacon-tax 2.5.24 → 2.5.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -378,7 +378,7 @@ exports.ActionTaxFragments = [
378
378
  <li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>
379
379
  <li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>
380
380
  </ol>
381
- <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or arrange for a meeting to provide them in person.</p>
381
+ <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or provide them via email.</p>
382
382
  <p>If you have any questions or need further assistance, do not hesitate to contact us.</p>
383
383
  <p>Thank you for your prompt attention to this matter.</p>`
384
384
  },
@@ -439,4 +439,4 @@ exports.ActionTaxFragments = [
439
439
  <p>Your prompt response is appreciated as it will help us in completing your tax preparations efficiently. If you have any questions or need clarification, do not hesitate to contact us.</p>`
440
440
  }
441
441
  ];
442
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRztJQUNoQztRQUNFLGdCQUFnQixFQUFFLHdCQUF3QjtRQUMxQyxXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLGtCQUFrQixFQUFFOzs7Ozs7OzsrSUFRdUg7S0FDNUk7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUseURBQXlEO1FBQ3RFLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dVBBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzhKQWFzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUJBQW1CO1FBQ3JDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7a1BBYTBOO0tBQy9PO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7OzsySEFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs2T0FXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Q0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs4SkFZc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDhCQUE4QjtRQUNoRCxXQUFXLEVBQUUsOEJBQThCO1FBQzNDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7NE5BU29NO0tBQ3pOO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixrQkFBa0IsRUFBRTs7Ozs7Ozs7dUtBUStJO0tBQ3BLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztvUkFVNFA7S0FDalI7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0RBU3VDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSx5QkFBeUI7UUFDM0MsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7cUdBVzZFO0tBQ2xHO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsV0FBVyxFQUFFLDZCQUE2QjtRQUMxQyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztrTEFVMEo7S0FDL0s7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt5TEFVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7O2tIQVUwRjtLQUMvRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozt5R0FTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvS0FvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt3SkFVZ0k7S0FDcko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsV0FBVyxFQUFFLGNBQWM7UUFDM0Isa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OytFQVd1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCO1FBQ25DLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7K0RBVXVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OzsrREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHFCQUFxQjtRQUN2QyxXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0VBU3VEO0tBQzVFO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxtQ0FBbUM7UUFDckQsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FFQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7OzttTUFRMks7S0FDaE07Q0FpQkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBY3Rpb25UYXhGcmFnbWVudHMgPSBbXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcmlvciBZZWFyIFRheCBSZXR1cm5zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYFByb3ZpZGUgUHJpb3IgWWVhciBUYXggUmV0dXJuc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIHJlcXVpcmUgeW91ciBhc3Npc3RhbmNlIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzLiBPbmUgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2UgbmVlZCBpcyB5b3VyIDxzdHJvbmc+UHJpb3IgWWVhciBUYXggUmV0dXJuczwvc3Ryb25nPi4gVGhpcyBkb2N1bWVudCBpcyBlc3NlbnRpYWwgZm9yIHNldmVyYWwgcmVhc29ucywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogdmVyaWZ5aW5nIGNhcnJ5LWZvcndhcmQgYW1vdW50cywgY29tcGFyaW5nIHllYXItb3Zlci15ZWFyIGluY29tZSBhbmQgZGVkdWN0aW9ucywgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cy48L3A+XHJcbiAgICA8cD5UbyBmYWNpbGl0YXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5GZWRlcmFsIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+U3RhdGUgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+QW55IDxzdHJvbmc+bm90aWNlcyBvciBhbWVuZG1lbnRzPC9zdHJvbmc+IHJlbGF0ZWQgdG8geW91ciBwcmlvciB5ZWFyIHRheCByZXR1cm5zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IGRpZmZpY3VsdHkgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGxldCB1cyBrbm93IGFzIHNvb24gYXMgcG9zc2libGUgc28gd2UgY2FuIGRpc2N1c3MgYWx0ZXJuYXRpdmUgc29sdXRpb25zLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gUHJvdmlkaW5nIHRoZXNlIHdpbGwgZW5hYmxlIHVzIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIHdpdGhvdXQgZGVsYXkuPC9wPmAsXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYERldGVybWluaW5nIEVsaWdpYmlsaXR5IGZvciBTdGF0dXRvcnkgRmlsaW5nIEV4dGVuc2lvbnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHlvdSBxdWFsaWZ5IGZvciBzdGF0dXRvcnkgZmlsaW5nIGV4dGVuc2lvbnMgZm9yIHlvdXIgdGF4IHJldHVybnMsIHdlIHJlcXVpcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB5b3UuIFBsZWFzZSBzZWUgYmVsb3cgdGhlIGNhdGVnb3JpZXMgb2YgaW5mb3JtYXRpb24gbmVlZGVkIGJhc2VkIG9uIGRpZmZlcmVudCBlbGlnaWJpbGl0eSBjcml0ZXJpYTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBEaXNhc3RlciBBcmVhczwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9mIHlvdXIgcHJpbWFyeSByZXNpZGVuY2UgbG9jYXRpb24gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIHJlY2VpdmVkIHJlZ2FyZGluZyBkaXNhc3RlciBkZWNsYXJhdGlvbnMgaW4geW91ciBhcmVhLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5MaXZpbmcgQWJyb2FkPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiByZXNpZGVuY2Ugb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcyBmb3IgbW9yZSB0aGFuIDMzMCBmdWxsIGRheXMgd2l0aGluIGEgMTItbW9udGggcGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHlvdXIgcGh5c2ljYWwgcHJlc2VuY2Ugb3IgYm9uYSBmaWRlIHJlc2lkZW5jZSBpbiBhIGZvcmVpZ24gY291bnRyeS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWN0aXZlIE1pbGl0YXJ5PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIGluZGljYXRpbmcgYWN0aXZlIGR1dHkgc3RhdHVzLCBpbmNsdWRpbmcgZGF0ZXMgb2Ygc2VydmljZSB3aXRoaW4gdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYXBwbGljYWJsZSwgb3JkZXJzIGZvciBvdmVyc2VhcyBkZXBsb3ltZW50LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Db21iYXQgWm9uZTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+T2ZmaWNpYWwgb3JkZXJzIGRlbW9uc3RyYXRpbmcgeW91ciBkZXBsb3ltZW50IHRvIGEgY29tYmF0IHpvbmUsIGluY2x1ZGluZyB0aGUgc3BlY2lmaWMgZGF0ZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgcmVsZXZhbnQgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIERlZmVuc2Ugb3Igb3RoZXIgb2ZmaWNpYWwgYm9kaWVzIHJlZ2FyZGluZyB5b3VyIHNlcnZpY2UgaW4gYSBjb21iYXQgem9uZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBhY2N1cmF0ZSBhbmQgdGltZWx5IHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRlcGVuZGVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlcXVlc3QgZm9yIERlcGVuZGVudCBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBkZXBlbmRlbnRzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFwcGx5aW5nIHRoZSBtb3N0IGJlbmVmaWNpYWwgZGVwZW5kZW5jeSB0ZXN0cywgaW5jbHVkaW5nIHF1YWxpZmljYXRpb25zIGZvciBIZWFkIG9mIEhvdXNlaG9sZCAoSE9IKSwgQ2hpbGQgVGF4IENyZWRpdCwgYW5kIG90aGVyIHJlbGF0ZWQgYmVuZWZpdHMuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBmb3IgZWFjaCBvZiB5b3VyIGNsYWltZWQgZGVwZW5kZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RnVsbCBOYW1lOjwvc3Ryb25nPiBUaGUgY29tcGxldGUgbGVnYWwgbmFtZSBvZiB0aGUgZGVwZW5kZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U29jaWFsIFNlY3VyaXR5IE51bWJlciAoU1NOKSBvciBUYXhwYXllciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKFRJTik6PC9zdHJvbmc+IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQmlydGg6PC9zdHJvbmc+IEhlbHBzIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgY2VydGFpbiBjcmVkaXRzIGxpa2UgdGhlIENoaWxkIFRheCBDcmVkaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGlvbnNoaXAgdG8gWW91Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkZXBlbmRlbnQncyByZWxhdGlvbnNoaXAgKHNvbiwgZGF1Z2h0ZXIsIHN0ZXBjaGlsZCwgZm9zdGVyIGNoaWxkLCBicm90aGVyLCBzaXN0ZXIsIGV0Yy4pIHRvIHlvdS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlc2lkZW5jeTo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGxpdmVkIHdpdGggeW91IGZvciBtb3JlIHRoYW4gaGFsZiB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZpbmFuY2lhbCBTdXBwb3J0Ojwvc3Ryb25nPiBDb25maXJtIHlvdSBwcm92aWRlZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgZGVwZW5kZW504oCZcyBmaW5hbmNpYWwgc3VwcG9ydCBmb3IgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5DaXRpemVuc2hpcDo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGlzIGEgVS5TLiBjaXRpemVuLCBVLlMuIG5hdGlvbmFsLCBvciBhIHJlc2lkZW50IGFsaWVuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IEluZGljYXRlIHdoZXRoZXIgdGhlIGRlcGVuZGVudCBpcyBtYXJyaWVkIGFuZCwgaWYgc28sIHdoZXRoZXIgdGhleSBhcmUgZmlsaW5nIGpvaW50bHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgSW5mb3JtYXRpb246PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIHByb3ZpZGUgZGV0YWlscyByZWdhcmRpbmcgYW55IGluY29tZSB0aGUgZGVwZW5kZW50IG1heSBoYXZlIGVhcm5lZCBvciByZWNlaXZlZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgeW91IHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uIHRvIGF2b2lkIGFueSBkZWxheXMgaW4gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciB0YXggcmV0dXJuLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSGVhZCBvZiBIb3VzZWhvbGRcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkhlYWQgb2YgSG91c2Vob2xkIEZpbGluZ1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIGFuZCBjb21wbGlhbnQgdGF4IGZpbGluZyB1bmRlciB0aGUgXCJIZWFkIG9mIEhvdXNlaG9sZFwiIHN0YXR1cywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBzdGF0dXMgY2FuIHByb3ZpZGUgc2lnbmlmaWNhbnQgdGF4IGJlbmVmaXRzLCBhbmQgaXQgaXMgY3J1Y2lhbCB0aGF0IGFsbCBJUlMgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFBsZWFzZSBwcm92aWRlOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBDb25maXJtYXRpb24gb2YgeW91ciBtYXJpdGFsIHN0YXR1cyBhcyBvZiB0aGUgbGFzdCBkYXkgb2YgdGhlIHRheCB5ZWFyIChlLmcuLCBzaW5nbGUsIGRpdm9yY2VkLCBsZWdhbGx5IHNlcGFyYXRlZCkuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkhvdXNlaG9sZCBFeHBlbnNlczo8L3N0cm9uZz4gRGV0YWlsZWQgcmVjb3JkcyBpbmRpY2F0aW5nIHRoYXQgeW91IHBhaWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvc3RzIG9mIGtlZXBpbmcgdXAgYSBob21lIGZvciB0aGUgdGF4IHllYXIuIFRoaXMgaW5jbHVkZXMgcmVudCwgbW9ydGdhZ2UgaW50ZXJlc3QsIHByb3BlcnR5IHRheGVzLCB1dGlsaXRpZXMsIHJlcGFpcnMsIG1haW50ZW5hbmNlLCBhbmQgZ3JvY2VyaWVzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5RdWFsaWZ5aW5nIFBlcnNvbjo8L3N0cm9uZz4gSW5mb3JtYXRpb24gb24gdGhlIHF1YWxpZnlpbmcgcGVyc29uKHMpIHdobyBsaXZlZCB3aXRoIHlvdSBpbiB0aGUgaG9tZSBmb3IgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIHllYXIsIGV4Y2VwdCBmb3IgdGVtcG9yYXJ5IGFic2VuY2VzIHN1Y2ggYXMgc2Nob29sLiBQbGVhc2UgaW5jbHVkZTpcclxuICAgICAgPHVsPlxyXG4gICAgICA8bGk+RnVsbCBuYW1lIGFuZCByZWxhdGlvbnNoaXAgdG8geW91IChlLmcuLCBjaGlsZCwgcGFyZW50LCBzaWJsaW5nKS48L2xpPlxyXG4gICAgICA8bGk+RHVyYXRpb24gb2YgcmVzaWRlbmN5IGF0IHlvdXIgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT5TdXBwb3J0aW5nIGRvY3VtZW50cyAoYmlydGggY2VydGlmaWNhdGVzLCBzY2hvb2wgcmVjb3JkcywgZXRjLikgcHJvdmluZyB0aGUgcmVzaWRlbmN5IGFuZCByZWxhdGlvbnNoaXAuPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIFN1cHBvcnQ6PC9zdHJvbmc+IEFueSBmdXJ0aGVyIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB5b3VyIGNsYWltIGZvciB0aGUgSGVhZCBvZiBIb3VzZWhvbGQgZmlsaW5nIHN0YXR1cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgcHJvdmlkaW5nIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIHlvdXIgYmVuZWZpdCBhbmQgdG8gY29tcGx5IHdpdGggdGF4IGxhd3MuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZGV0YWlscywgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5mb3JtYXRpb24gb24gUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBzcG91c2UgaXMgbm90IGEgVS5TLiBjaXRpemVuLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB5b3VyIHRheCBzdGF0dXMsIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lY2Vzc2FyeSBUYXggUmVzaWRlbmN5IFRlc3RzLCB3aGljaCBpbmNsdWRlIHRoZSA8c3Ryb25nPkdyZWVuIENhcmQgVGVzdDwvc3Ryb25nPiBhbmQgdGhlIDxzdHJvbmc+U3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdDwvc3Ryb25nPi4gVGhpcyB3aWxsIGhlbHAgdXMgZW5zdXJlIHlvdXIgdGF4IHJldHVybnMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkgYW5kIGNvbXBseSB3aXRoIFUuUy4gcmVndWxhdGlvbnMuPC9wPlxyXG5cclxuICAgIDxwPlRvIHByb2NlZWQsIHdlIGtpbmRseSBhc2sgeW91IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+R3JlZW4gQ2FyZCBTdGF0dXM6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHlvdSBvciB5b3VyIHNwb3VzZSBoYXZlIGJlZW4gaXNzdWVkIGEgVS5TLiBncmVlbiBjYXJkIChMYXdmdWwgUGVybWFuZW50IFJlc2lkZW50IENhcmQpIGF0IGFueSBwb2ludCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJZiB5ZXMsIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSBncmVlbiBjYXJkIG9yIHRoZSBvZmZpY2lhbCBkb2N1bWVudCBjb25maXJtaW5nIHRoZSBzdGF0dXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEFycml2YWwgaW4gdGhlIFUuUy46PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlcyB3aGVuIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZmlyc3QgYXJyaXZlZCBpbiB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VHJhdmVsIEhpc3Rvcnk6PC9zdHJvbmc+IEEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgdGhlIGRhdGVzIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZW50ZXJlZCBhbmQgbGVmdCB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHRoZSBTdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmlzYSBUeXBlOjwvc3Ryb25nPiBJZiB5b3Ugb3IgeW91ciBzcG91c2UgYXJlIG9uIGEgdmlzYSwgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgYW5kIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSB2aXNhLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBUYXggRmlsaW5nczo8L3N0cm9uZz4gQ29waWVzIG9mIGxhc3QgeWVhcidzIHRheCByZXR1cm5zLCBpZiBhcHBsaWNhYmxlLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBwcm92aWRlIGNvbnRleHQgYW5kIGhlbHAgZGV0ZXJtaW5lIHJlc2lkZW5jeSBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LjwvbGk+XHJcbiAgICA8L29sPlxyXG5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUuIFlvdSBjYW4gc2VuZCB0aGVtIHRvIHVzIHZpYSBlbWFpbCBvciB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC4gRm9yIGFueSBxdWVzdGlvbnMgb3IgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPlxyXG5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSB3aXRoIHlvdXIgdGF4IHByZXBhcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkpvaW50IFRheCBSZWxpZWZcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkpvaW50IFRheCBSZWxpZWYgRGV0YWlsc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gYXNzaXN0IHlvdSBlZmZlY3RpdmVseSB3aXRoIHlvdXIgcmVxdWVzdCBmb3Igam9pbnQgdGF4IHJlbGllZiwgd2UgbmVlZCB0byBjb2xsZWN0IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgeW91ciBzaXR1YXRpb24gdGhvcm91Z2hseS4gVGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBtb3N0IHN1aXRhYmxlIHR5cGUgb2YgcmVsaWVmIGZvciB5b3VyIGNpcmN1bXN0YW5jZXMsIHdoaWNoIG1heSBpbmNsdWRlIElubm9jZW50IFNwb3VzZSBSZWxpZWYsIEluanVyZWQgU3BvdXNlIEFsbG9jYXRpb24sIFNlcGFyYXRpb24gb2YgTGlhYmlsaXR5IFJlbGllZiwgb3IgRXF1aXRhYmxlIFJlbGllZi4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db21wbGV0ZSBUYXggUmV0dXJuczo8L3N0cm9uZz4gQ29waWVzIG9mIGFsbCB0YXggcmV0dXJucyBmb3IgdGhlIHllYXJzIHlvdSBhcmUgcmVxdWVzdGluZyByZWxpZWYuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGV0YWlsZWQgU3RhdGVtZW50Ojwvc3Ryb25nPiBBIHdyaXR0ZW4gc3RhdGVtZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBiZWxpZXZlIHlvdSBxdWFsaWZ5IGZvciByZWxpZWYsIGluY2x1ZGluZyBhbnkgc3BlY2lmaWMgZXZlbnRzIG9yIGNpcmN1bXN0YW5jZXMgeW91IHdhbnQgdXMgdG8gY29uc2lkZXIuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIERvY3VtZW50YXRpb246PC9zdHJvbmc+IFByb29mIG9mIHlvdXIgY3VycmVudCBpbmNvbWUgYW5kIHRoYXQgb2YgeW91ciBzcG91c2UgaWYgYXBwbGljYWJsZSwgc3VjaCBhcyByZWNlbnQgcGF5IHN0dWJzLCBXLTIgZm9ybXMsIG9yIG90aGVyIGluY29tZSBzdGF0ZW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIEZpbmFuY2lhbCBTaXR1YXRpb246PC9zdHJvbmc+IERvY3VtZW50cyBzaG93aW5nIHlvdXIgY3VycmVudCBmaW5hbmNpYWwgc2l0dWF0aW9uLCBpbmNsdWRpbmcgYmFuayBzdGF0ZW1lbnRzLCBtb250aGx5IGJpbGxzLCBhbmQgYW55IG90aGVyIGxpYWJpbGl0aWVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgTWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIGxlZ2FsIGRvY3VtZW50cyByZWxhdGVkIHRvIHNlcGFyYXRpb24sIGRpdm9yY2UsIG9yIGFubnVsbWVudC48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyB0aGF0IHByb3ZlIHdoZXJlIGVhY2ggb2YgeW91IGhhcyBsaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFycyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBqb2ludCB0YXggbGlhYmlsaXR5LCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFybHkgbGVnaWJsZS4gWW91IG1heSBzZW5kIHRoZW0gdmlhIGVtYWlsLCBvciB1cGxvYWQuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCB0byBwcm92aWRlLCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgY29tcGxleCwgYnV0IHdlIGFyZSBoZXJlIHRvIGd1aWRlIHlvdSB0aHJvdWdoIGl0LiBPdXIgZ29hbCBpcyB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHNpdHVhdGlvbiB0byBhZHZvY2F0ZSBmb3IgdGhlIG1vc3QgZmF2b3JhYmxlIG91dGNvbWUgb24geW91ciBiZWhhbGYuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCByZXF1aXJlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGFsbCB5b3VyIHNvdXJjZXMgb2YgaW5jb21lLiBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgeW91ciAxMDk5IE5FQyBJbmNvbWUuIFRoZSAxMDk5LU5FQyBmb3JtIGlzIGNydWNpYWwgZm9yIGNvcnJlY3RseSByZXBvcnRpbmcgeW91ciBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uLjwvcD5cclxuICAgIDxwPlRvIGVuc3VyZSBhIHRob3JvdWdoIGFuZCBhY2N1cmF0ZSB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHVzIHdpdGggdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkFsbCAxMDk5LU5FQyBmb3JtczwvYj4geW91IHJlY2VpdmVkIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPGI+YWRkaXRpb25hbCBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uPC9iPiBub3QgcmVwb3J0ZWQgb24gYSAxMDk5LU5FQyBmb3JtLjwvbGk+XHJcbiAgICAgICAgPGxpPkluZm9ybWF0aW9uIHJlZ2FyZGluZyA8Yj5leHBlbnNlcyByZWxhdGVkIHRvIHlvdXIgMTA5OSBORUMgaW5jb21lPC9iPiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYWxsIHlvdXIgMTA5OS1ORUMgZm9ybXMsIHBsZWFzZSBsZXQgdXMga25vdywgYW5kIHByb3ZpZGUgYW4gZXN0aW1hdGUgb2Ygd2hlbiB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgdGhlbS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgYWNjdXJhdGVseSByZXBvcnRpbmcgeW91ciBpbmNvbWUgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBwZW5hbHRpZXMgb3IgYXVkaXRzIGZyb20gdGhlIElSUy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGRpcmVjdGx5IHNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgcHJvY2Vzc2VkIGVmZmljaWVudGx5IGFuZCBhY2N1cmF0ZWx5LjwvcD5cclxuYFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2YgU2NoZWR1bGUgSyBpbmNvbWUgZm9yIHRoZSBjdXJyZW50IHRheCB5ZWFyLiBJbiBvcmRlciB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgd2UgZ2F0aGVyIGFsbCBuZWNlc3NhcnkgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gdGhpcyBpbmNvbWUuPC9wPlxyXG4gICAgPHA+SWYgd2UgYXJlIHByZXBhcmluZyB5b3VyIGJ1c2luZXNzIHJldHVybiwgcmVzdCBhc3N1cmVkIHRoYXQgd2Ugd2lsbCBnZW5lcmF0ZSB0aGUgYXBwbGljYWJsZSBTY2hlZHVsZSBLLTEocykgZm9yIHlvdXIgYnVzaW5lc3MgaW50ZXJlc3RzLiBIb3dldmVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBjb2xsZWN0IGNvcGllcyBvZiA8c3Ryb25nPmFsbCBvdGhlciBTY2hlZHVsZSBLLTFzPC9zdHJvbmc+IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCB0byBpbmNvcnBvcmF0ZSBpbnRvIHlvdXIgcGVyc29uYWwgdGF4IHJldHVybi48L3A+ICBcclxuICAgIDxoMz5TcGVjaWZpYyBEb2N1bWVudCBSZXF1ZXN0OjwvaDM+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkFueSBhbmQgYWxsIFNjaGVkdWxlIEstMShzKSB5b3UgaGF2ZSByZWNlaXZlZCBmcm9tOjwvbGk+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+UGFydG5lcnNoaXBzPC9saT5cclxuICAgICAgICAgICAgPGxpPlMgQ29ycG9yYXRpb25zPC9saT5cclxuICAgICAgICAgICAgPGxpPkVzdGF0ZSBvciBUcnVzdHM8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBkb2N1bWVudHMgYXJlIDxzdHJvbmc+Y2xlYXIgYW5kIGxlZ2libGU8L3N0cm9uZz4gdG8gcHJldmVudCBhbnkgZGVsYXlzIGluIHByb2Nlc3NpbmcgeW91ciByZXR1cm4uIFlvdSBtYXkgc3VibWl0IHRoZXNlIGRvY3VtZW50cyB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgY29udGFjdCB1cyB0byBtYWtlIGFsdGVybmF0aXZlIGFycmFuZ2VtZW50cyBpZiBuZWNlc3NhcnkuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFueSBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4ZXMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIHNlbGYtZW1wbG95bWVudCBpbmNvbWUgbm90IHJlcG9ydGVkIHRocm91Z2ggMTA5OS1ORUMgZm9ybXMgb3IgYSBTY2hlZHVsZSBLLTEuIFRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgYWNjdXJhdGUgYW5kIG1heGltaXplcyB5b3VyIGJlbmVmaXRzLCBpdCdzIGNydWNpYWwgd2UgZ2F0aGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGVzZSBzb3VyY2VzIG9mIGluY29tZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHk6PC9zdHJvbmc+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIG5hdHVyZSBvZiBlYWNoIGFjdGl2aXR5IGZyb20gd2hpY2ggeW91IGRlcml2ZSBzZWxmLWVtcGxveW1lbnQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2Ygb3BlcmF0aW9uOjwvc3Ryb25nPiBGb3IgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHksIHNwZWNpZnkgdGhlIGRhdGVzIG9yIHJhbmdlIG9mIGRhdGVzIGR1cmluZyB3aGljaCB5b3UgZWFybmVkIGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIGluY29tZSBnZW5lcmF0ZWQ6PC9zdHJvbmc+IEZvciBlYWNoIGFjdGl2aXR5LCBwcm92aWRlIHRoZSB0b3RhbCBhbW91bnQgb2YgaW5jb21lIGVhcm5lZCBiZWZvcmUgYW55IGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZXMgaW5jdXJyZWQ6PC9zdHJvbmc+IExpc3QgYWxsIGV4cGVuc2VzIHJlbGF0ZWQgdG8gZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHkuIFBsZWFzZSBjYXRlZ29yaXplIHRoZXNlIGV4cGVuc2VzIChlLmcuLCBvZmZpY2Ugc3VwcGxpZXMsIHRyYXZlbCwgYWR2ZXJ0aXNpbmcpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvciBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZXhpc3RpbmcgcmVjb3JkcyBvciBkb2N1bWVudGF0aW9uIHRoYXQgY29ycm9ib3JhdGUgeW91ciBpbmNvbWUgYW5kIGV4cGVuc2VzLCBzdWNoIGFzIGJhbmsgc3RhdGVtZW50cywgcmVjZWlwdHMsIGludm9pY2VzLCBvciBjb250cmFjdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBhbW91bnQgb2YgdGF4IHlvdSBvd2UgYW5kIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyB0aGF0IGNhbiBtaW5pbWl6ZSB5b3VyIHRheCBsaWFiaWxpdHkuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIHRpbWVseSBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBhbmQgd2UgYXJlIGhlcmUgdG8gaGVscCBldmVyeSBzdGVwIG9mIHRoZSB3YXkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VGhhbmsgeW91IGZvciBlbnRydXN0aW5nIHVzIHdpdGggdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIEFzIHBhcnQgb2Ygb3VyIGNvbXByZWhlbnNpdmUgcmV2aWV3IGFuZCBpbiBvdXIgcXVlc3QgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmdzLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgd2FnZXMgZnJvbSBlbXBsb3ltZW50IG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuPC9wPlxyXG4gICAgPHA+VG8gcHJvY2VlZCBlZmZlY3RpdmVseSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5XLTIgRm9ybXM6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGNvcGllcyBvZiBhbGwgVy0yIGZvcm1zIHJlY2VpdmVkIGZyb20geW91ciBlbXBsb3llcnMuIFRoaXMgaW5jbHVkZXMgd2FnZXMgZWFybmVkIGZyb20gYWxsIHNvdXJjZXMsIG5vdCBqdXN0IGZyb20gdGhlIFMtQ29ycG9yYXRpb24sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WZXJpZmljYXRpb24gb2YgUy1Db3Jwb3JhdGlvbiBXYWdlczo8L3N0cm9uZz4gSWYgd2UgYXJlIGFsc28gaGFuZGxpbmcgeW91ciBidXNpbmVzcyB0YXhlcyBmb3IgYW4gUy1Db3Jwb3JhdGlvbiwgd2UgbGlrZWx5IGhhdmUgdGhlIHdhZ2UgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50aXR5LiBIb3dldmVyLCBmb3IgdGhvcm91Z2huZXNzIGFuZCBjb21wbGlhbmNlLCBwbGVhc2UgY29uZmlybSBpZiB0aGUgd2FnZXMgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiBhcmUgZnVsbHkgcmVwcmVzZW50ZWQgaW4gdGhlIGRvY3VtZW50cyB3ZSBhbHJlYWR5IGhvbGQuIFRoaXMgd2lsbCBoZWxwIHVzIHZlcmlmeSB0aGF0IGFsbCBpbmNvbWUgaXMgYWNjdXJhdGVseSByZXBvcnRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgSW5jb21lIERvY3VtZW50czo8L3N0cm9uZz4gU2hvdWxkIHlvdSBoYXZlIG90aGVyIHNvdXJjZXMgb2Ygd2FnZSBpbmNvbWUgKGUuZy4sIGNvbnRyYWN0IHdvcmssIGJvbnVzZXMsIGV0Yy4pIG5vdCBjb3ZlcmVkIGJ5IHRoZSBXLTIgZm9ybXMgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIGFueSAxMDk5IGZvcm1zIG9yIG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5Zb3VyIGNvb3BlcmF0aW9uIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIEtpbmRseSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJvcGVydHkgb3IgU2VydmljZXMgTGlldSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUHJvcGVydHkvU2VydmljZXMgaW4gTGlldSBvZiBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIHByb3BlcnR5IGFuZC9vciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHRyYWRpdGlvbmFsIHdhZ2VzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgdHlwZSBvZiBjb21wZW5zYXRpb24gY29uc3RpdHV0ZXMgdGF4YWJsZSBpbmNvbWUgYW5kIG11c3QgYmUgYWNjdXJhdGVseSByZXBvcnRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIElSUyByZWd1bGF0aW9ucy48L3A+XHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IHJlY29nbml6ZSBhbmQgcmVwb3J0IHRoZXNlIGl0ZW1zIGFzIHRheGFibGUgaW5jb21lLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgUHJvcGVydHkgb3IgU2VydmljZXM6PC9zdHJvbmc+IFByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBhbnkgcHJvcGVydHkgb3Igc2VydmljZXMgeW91IHJlY2VpdmVkLiBQbGVhc2UgaW5jbHVkZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHByb3BlcnR5IG9yIHRoZSBzY29wZSBvZiBzZXJ2aWNlcyByZW5kZXJlZC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RmFpciBNYXJrZXQgVmFsdWUgYXQgVGltZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBJbmRpY2F0ZSB0aGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBwcm9wZXJ0eSBvciBzZXJ2aWNlIGF0IHRoZSB0aW1lIHlvdSByZWNlaXZlZCBpdC4gSWYgeW91IGhhdmUgYW55IGFwcHJhaXNhbHMgb3IgZG9jdW1lbnRzIHRvIHN1cHBvcnQgdGhlIEZNViwgcGxlYXNlIGluY2x1ZGUgdGhlbS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvciBBZ3JlZW1lbnRzOjwvc3Ryb25nPiBQcm92aWRlIGFueSBkb2N1bWVudGF0aW9uIG9yIHdyaXR0ZW4gYWdyZWVtZW50cyB0aGF0IGRldGFpbCB0aGUgYXJyYW5nZW1lbnQgZm9yIHJlY2VpdmluZyBwcm9wZXJ0eSBvciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHdhZ2VzLiBUaGlzIGNhbiBpbmNsdWRlIGNvbnRyYWN0cywgZW1haWxzLCBvciBhbnkgZm9ybSBvZiBjb21tdW5pY2F0aW9uIHRoYXQgb3V0bGluZXMgdGhlIGFncmVlbWVudC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkYXRlKHMpIG9uIHdoaWNoIHlvdSByZWNlaXZlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkVtcGxveWVyL1Byb3ZpZGVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBQcm92aWRlIHRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IHByb3ZpZGVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgcHJvdmlkZWQgaW5mb3JtYXRpb24gaXMgYXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGFzIHBvc3NpYmxlLiBJbmNvbXBsZXRlIG9yIGluYWNjdXJhdGUgaW5mb3JtYXRpb24gbWF5IGxlYWQgdG8gZGVsYXlzIGluIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm4gb3IgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIGFuZCBjcml0aWNhbCBmb3IgdGhlIHRpbWVseSBhbmQgYWNjdXJhdGUgY29tcGxldGlvbiBvZiB5b3VyIHRheCByZXR1cm4uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGljZWQgeW91J3ZlIG1lbnRpb25lZCBiZWluZyByZWltYnVyc2VkIGZvciBjZXJ0YWluIGV4cGVuc2VzIHVuZGVyIGFuIEVtcGxveWVlIEFjY291bnRhYmxlIFBsYW4uIFRvIGFjY3VyYXRlbHkgYWNjb3VudCBmb3IgdGhlc2UgcmVpbWJ1cnNlbWVudHMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgdGhlIGZvcm1hbCB3cml0dGVuIEFjY291bnRhYmxlIFBsYW4gcHJvdmlkZWQgYnkgeW91ciBlbXBsb3llci4gVGhpcyBzaG91bGQgb3V0bGluZSB0aGUgZXhwZW5zZSBhbGxvd2FuY2UgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHJlaW1idXJzZW1lbnQgcG9saWN5LjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIGZyb20geW91ciBlbXBsb3llciBjb25maXJtaW5nIHlvdXIgcGFydGljaXBhdGlvbiBpbiB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIHRoZSBleHBlbnNlcyByZWltYnVyc2VkIHVuZGVyIHRoZSBwbGFuLCBpbmNsdWRpbmcgZGF0ZXMsIGFtb3VudHMsIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBleHBlbnNlIChyZWNlaXB0cyBvciBpbnZvaWNlcykgcHJvdmlkZWQgdG8geW91ciBlbXBsb3llciBmb3IgcmVpbWJ1cnNlbWVudCB1bmRlciB0aGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSByZWltYnVyc2VtZW50cyBvciB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBzZW5kIHVzIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgd2UgY2FuIHByb2NlZWQgc21vb3RobHkgd2l0aCB5b3VyIHRheCByZXR1cm4gcHJlcGFyYXRpb24uIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGBcclxuICAgIDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBlbnN1cmluZyBhbGwgZm9ybXMgb2YgY29tcGVuc2F0aW9uLCBpbmNsdWRpbmcgdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMsIGFyZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIG9uIHlvdXIgdGF4IHJldHVybnMuIEJhc2VkIG9uIG91ciBwcmV2aW91cyBjb21tdW5pY2F0aW9uLCBpdCBhcHBlYXJzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBiZW5lZml0cyB0aGF0IG5lZWQgdG8gYmUgcmV2aWV3ZWQgZnVydGhlci4gVG8gYXNzaXN0IHlvdSBwcm9wZXJseSwgd2UgcmVxdWVzdCB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGRldGFpbHM6PC9wPlxyXG48b2w+XHJcbiAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0IHJlY2VpdmVkOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb21wYW55IGNhcnMsIG1lbWJlcnNoaXBzLCBlZHVjYXRpb25hbCBhc3Npc3RhbmNlLCBldGMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIElmIHlvdSdyZSB1bnN1cmUsIHBsZWFzZSBwcm92aWRlIGFuIGVzdGltYXRlIGFuZCB0aGUgYmFzaXMgZm9yIHRoaXMgZXN0aW1hdGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5BbnkgYW1vdW50cyBjb250cmlidXRlZCBieSB5b3U6PC9zdHJvbmc+IElmIHlvdSBtYWRlIGNvbnRyaWJ1dGlvbnMgdG93YXJkIHRoZSBjb3N0IG9mIGFueSBiZW5lZml0LCBwbGVhc2Ugc3BlY2lmeSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5EYXRlczo8L3N0cm9uZz4gVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIHNwZWNpZmljIGRhdGVzIGlmIHBvc3NpYmxlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBlbXBsb3llcihzKSBwcm92aWRpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuPC9vbD5cclxuPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSB0YXhhYmxlIHZhbHVlIG9mIHRoZXNlIGZyaW5nZSBiZW5lZml0cyBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIElSUyByZWd1bGF0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBpZGVudGlmaWVkIHBvdGVudGlhbCBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgdGhhdCBtYXkgYXBwbHkgdG8geW91ciBzaXR1YXRpb24uIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIG9wdGltaXplIHlvdXIgdGF4IG91dGNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgeW91IG1heSBoYXZlIHJlY2VpdmVkOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBtYXkgaW5jbHVkZSBoZWFsdGggc2F2aW5ncyBhY2NvdW50cyAoSFNBcyksIGVtcGxveWVlIGRpc2NvdW50cywgcHVibGljIHRyYW5zaXQgcGFzc2VzLCBldGMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBGb3Igbm9uLXRheGFibGUgYmVuZWZpdHMsIHRoaXMgaGVscHMgaW4gcmVjb3JkLWtlZXBpbmcgYW5kIGNvbmZpcm1pbmcgZXhlbXB0aW9uIHN0YXR1cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db250cmlidXRpb24gYW1vdW50cywgaWYgYW55Ojwvc3Ryb25nPiBJZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0b3dhcmRzIGFueSBvZiB0aGVzZSBiZW5lZml0cywgaW5kaWNhdGUgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIGNvcnJvYm9yYXRlIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiByZWNlaXB0Ojwvc3Ryb25nPiBUaGUgdGltZWZyYW1lIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgYXMgcHJlY2lzZSBkYXRlcyBhcyBwb3NzaWJsZS48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5FbXBsb3llciBvciBwcm92aWRlciBpbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgZW1wbG95ZXIocykgb3IgdGhpcmQtcGFydHkgcHJvdmlkZXIocykgb2ZmZXJpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5HYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiBoZWxwcyBlbnN1cmUgdGhhdCB5b3VyIHRheCBmaWxpbmdzIGFyZSBhY2N1cmF0ZSBhbmQgdGhhdCB5b3UgcmVjZWl2ZSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2Ygbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzLiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgaWRlbnRpZnlpbmcgb3IgZG9jdW1lbnRpbmcgdGhlc2UgYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIGFzIHdlIHN0cml2ZSB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiBlZmZpY2llbnRseS4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlZldGVyYW4gQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlZBIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgb25nb2luZyBlZmZvcnQgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIFZldGVyYW4gQmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIGtpbmRseSByZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIHRoaXMgdGFzaywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgZGV0YWlsZWQgbGlzdCBvZiB0aGUgVmV0ZXJhbiBCZW5lZml0cyB5b3UgcmVjZWl2ZWQsIGluY2x1ZGluZyBhbnkgZGlzYWJpbGl0eSwgZWR1Y2F0aW9uLCBhbmQgcGVuc2lvbiBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5PZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIHR5cGUgb2YgYmVuZWZpdCByZWNlaXZlZCwgc3VjaCBhcyBhd2FyZCBsZXR0ZXJzIG9yIHN0YXRlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzIChWQSkuPC9saT5cclxuICAgICAgICA8bGk+QW55IGNvcnJlc3BvbmRlbmNlIGZyb20gdGhlIFZBIG9yIG90aGVyIHJlbGV2YW50IGVudGl0aWVzIHJlZ2FyZGluZyB0aGUgdGF4YWJpbGl0eSBvZiB5b3VyIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPlRvdGFsIGFtb3VudCByZWNlaXZlZCBmb3IgZWFjaCBiZW5lZml0IHRocm91Z2hvdXQgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBvdGhlciBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBuYXR1cmUgYW5kIGFtb3VudCBvZiB5b3VyIFZldGVyYW4gQmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHdoaWNoIGJlbmVmaXRzIGFyZSB0YXhhYmxlIGFuZCBlbnN1cmluZyB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBQbGVhc2Ugc3VibWl0IHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgbWVudGlvbiBvZiByZWNlaXZpbmcgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSB0aGVzZSBwcm9jZWVkcyBhcmUgaW5kZWVkIG5vbi10YXhhYmxlLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRvY3VtZW50YXRpb24gb3Igc3RhdGVtZW50cyBwZXJ0YWluaW5nIHRvIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGluc3VyZWQgaW5kaXZpZHVhbCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdS48L2xpPlxyXG4gICAgICA8bGk+QW55IGNvbW11bmljYXRpb25zIG9yIGxldHRlcnMgZnJvbSB0aGUgaW5zdXJhbmNlIGNvbXBhbnkgcmVnYXJkaW5nIHRoZSB0YXggc3RhdHVzIG9mIHRoZXNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5EZXRhaWxzIHJlZ2FyZGluZyBpZiB0aGUgcG9saWN5IHdhcyBwdXJjaGFzZWQgd2l0aCBhZnRlci10YXggb3IgcHJlLXRheCBkb2xsYXJzLjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhbnkgcG9ydGlvbiBvZiB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudCB3YXMgYW4gaW52ZXN0bWVudCByZXR1cm4sIHBsZWFzZSBwcm92aWRlIHJlbGF0ZWQgZG9jdW1lbnRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBndWFyYW50ZWUgdGhlIGFjY3VyYWN5IGFuZCBpbnRlZ3JpdHkgb2YgeW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFdlJ3JlIGhlcmUgdG8gaGVscCE8L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHdlIHByb2NlZWQgd2l0aCBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucywgd2Ugbm90ZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgdW5kZXIgdGhlIGRpZmZpY3VsdHktb2YtY2FyZSBwcm92aXNpb25zIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBtYXhpbWl6ZSB5b3VyIGVsaWdpYmxlIGluY29tZSBleGNsdXNpb25zLCBpdCdzIGNydWNpYWwgd2UgdmVyaWZ5IGNlcnRhaW4gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgbGl2aW5nIGFycmFuZ2VtZW50LCBhcyBwZXIgSVJTIGd1aWRlbGluZXMuPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBwYXltZW50cyBxdWFsaWZ5IGZvciBpbmNvbWUgZXhjbHVzaW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyBwcm92aW5nIHRoYXQgeW91IGFuZCB0aGUgaW5kaXZpZHVhbCB1bmRlciBjYXJlIHNoYXJlZCB0aGUgc2FtZSBwcmltYXJ5IHJlc2lkZW5jZSBkdXJpbmcgdGhlIHJlY2VpcHQgb2YgdGhlc2UgcGF5bWVudHMuIFRoaXMgY291bGQgaW5jbHVkZSB1dGlsaXR5IGJpbGxzLCBhIHJlbnRhbCBhZ3JlZW1lbnQsIG9yIGhvbWVvd25lcidzIGluc3VyYW5jZSBpbiBib3RoIG9mIHlvdXIgbmFtZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIHRoZSBDYXJlIFJlY2lwaWVudDo8L3N0cm9uZz4gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlcnNvbiByZWNlaXZpbmcgY2FyZSwgaW5jbHVkaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UgYW5kIGFueSBkb2N1bWVudGF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGVpciBuZWVkIGZvciBjYXJlIChlLmcuLCBhIGxldHRlciBmcm9tIGEgaGVhbHRoY2FyZSBwcm92aWRlcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFJlY29yZHM6PC9zdHJvbmc+IEFueSByZWNvcmRzIG9mIHRoZSBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgeW91IHJlY2VpdmVkLCBhcyB0aGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIGV4YWN0IGFtb3VudHMgYW5kIHRoZSBwZXJpb2RzIGNvdmVyZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgRm9ybWFsIEFncmVlbWVudHMgb3IgQ29udHJhY3RzOjwvc3Ryb25nPiBJZiB0aGVyZSB3YXMgYSBmb3JtYWwgYWdyZWVtZW50IG9yIGNvbnRyYWN0IGRldGFpbGluZyB0aGUgY2FyZSBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgdGhpcyBhcyB3ZWxsLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZSBjYXJlIGFycmFuZ2VtZW50IHdhcyBmYWNpbGl0YXRlZCB0aHJvdWdoIGEgc3RhdGUgb3IgdGhpcmQtcGFydHkgYWdlbmN5LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgd2UgY29tcGx5IHdpdGggdGF4aW5nIGF1dGhvcml0aWVzIHdoaWxlIGFjY3VyYXRlbHkgcmVmbGVjdGluZyB5b3VyIGZpbmFuY2VzLiBJZiBhbnkgb2YgdGhlc2UgcmVxdWlyZW1lbnRzIHBvc2UgYSBkaWZmaWN1bHR5IG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIE91ciBnb2FsIGlzIHRvIHN1cHBvcnQgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gV2UgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGVzZSBiZW5lZml0cyBhcmUgZWxpZ2libGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB5b3VyIGluY29tZSwgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgcGFpZC48L3A+XHJcbiAgICA8cD5LaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IG9mIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgc3RhdGVtZW50cyBvciBkb2N1bWVudGF0aW9uIHNob3dpbmcgdGhlIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvbiB3aG8gcGFpZCB0aGUgaW5zdXJhbmNlIHByZW1pdW1zICh5b3Ugb3IgeW91ciBlbXBsb3llcikuPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCB5b3UgcGFpZCB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBzdXBwb3J0aW5nIGRvY3VtZW50cyBmb3IgdGhlIHBheW1lbnRzIG1hZGUgYnkgeW91IChyZWNlaXB0cyBvciBiYW5rIHN0YXRlbWVudHMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91ciBlbXBsb3llciBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHBhaWQgYnkgeW91ciBlbXBsb3llciB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBkb2N1bWVudHMgaW5kaWNhdGluZyBlbXBsb3llciBjb250cmlidXRpb25zIChwYXkgc3R1YnMsIGVtcGxveWVyIGxldHRlcnMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGRldGVybWluZSB0aGUgdGF4YWJsZSBwb3J0aW9uLCBpZiBhbnksIG9mIHlvdXIgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMuIFByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgaGVscCB1cyBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZyBhbmQgcG90ZW50aWFsbHkgbG93ZXIgeW91ciB0YXhhYmxlIGluY29tZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlmIHdlIGNhbiBiZSBvZiBmdXJ0aGVyIGFzc2lzdGFuY2UuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gSW4gb3JkZXIgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIG5lZWQgYWRkaXRpb25hbCBkZXRhaWxzLiBUaGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cyBjYW4gZGVwZW5kIG9uIHdoZW4geW91IHRvb2sgcmV0aXJlbWVudCBkdWUgdG8gZGlzYWJpbGl0eS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHNvb24gYXMgcG9zc2libGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmV0aXJlbWVudDo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgeW91IHJldGlyZWQgZHVlIHRvIGRpc2FiaWxpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIERpc2FiaWxpdHkgUmV0aXJlbWVudDo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IGhhdmUgdGhhdCBjb25maXJtcyB5b3VyIHJldGlyZW1lbnQgd2FzIGR1ZSB0byBkaXNhYmlsaXR5LiBUaGlzIG1heSBpbmNsdWRlIGxldHRlcnMgZnJvbSB5b3VyIGVtcGxveWVyLCB0aGUgcmV0aXJlbWVudCBwbGFuLCBvciBtZWRpY2FsIHJlY29yZHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIEJlbmVmaXRzIFJlY2VpdmVkOjwvc3Ryb25nPiBTcGVjaWZpYyBhbW91bnRzIGFuZCB0aGUgc291cmNlIG9mIHRoZSBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxhdGVkIGRvY3VtZW50cyBzdWNoIGFzIHN0YXRlbWVudHMgb3Igbm90aWNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVy0yIG9yIDEwOTkgRm9ybXM6PC9zdHJvbmc+IElmIHlvdSByZWNlaXZlZCBhbnkgd2FnZXMgb3IgZGlzYWJpbGl0eSBwYXltZW50cyB0aGF0IHdlcmUgcmVwb3J0ZWQgb24gVy0yIG9yIDEwOTkgZm9ybXMgaW4gdGhlIHllYXIgb2YgeW91ciByZXRpcmVtZW50LCBwbGVhc2UgcHJvdmlkZSB0aGVzZSBmb3Jtcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cywgcGxlYXNlIGluY2x1ZGUgY29waWVzIG9mIHRoZXNlIGNvbW11bmljYXRpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhlIGFib3ZlIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBVbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgd2lsbCBhaWQgdXMgaW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGF4YWJpbGl0eSBhbmQgZW5zdXJpbmcgdGhhdCB5b3VyIHRheCBvYmxpZ2F0aW9ucyBhcmUgcHJlY2lzZWx5IGNhbGN1bGF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIFctMiB3YWdlcyBhcyBhIGNsZXJneSBtZW1iZXIuIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIHRvIHBvdGVudGlhbGx5IG1heGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgeW91ciBjb21wZW5zYXRpb24gcGFja2FnZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPlctMiBGb3JtOjwvYj4gSWYgbm90IGFscmVhZHkgcHJvdmlkZWQsIGluY2x1ZGUgYW55IFctMiBmb3JtcyBpc3N1ZWQgYnkgeW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24uPC9saT5cclxuICAgICAgICA8bGk+PGI+SG91c2luZyBBbGxvd2FuY2UgRG9jdW1lbnRhdGlvbjo8L2I+IERldGFpbGVkIHN0YXRlbWVudCBvciBsZXR0ZXIgZnJvbSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbiBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgZGVzaWduYXRlZCBhcyBob3VzaW5nIGFsbG93YW5jZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5TZWxmLUVtcGxveW1lbnQgVGF4OjwvYj4gQ29uZmlybWF0aW9uIG9uIHdoZXRoZXIgeW91IGhhdmUgdGFrZW4gYSB2b3cgb2YgcG92ZXJ0eSAoaWYgYXBwbGljYWJsZSksIG9yIGFueSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gb3B0aW5nIG91dCBvZiBzZWxmLWVtcGxveW1lbnQgdGF4LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkV4cGVuc2UgUmVpbWJ1cnNlbWVudHM6PC9iPiBEb2N1bWVudGF0aW9uIHNob3dpbmcgYW55IGV4cGVuc2UgcmVpbWJ1cnNlbWVudHMgcmVjZWl2ZWQgdW5kZXIgYW4gYWNjb3VudGFibGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5PdGhlciBDb21wZW5zYXRpb246PC9iPiBJbmZvcm1hdGlvbiBvbiBhbnkgb3RoZXIgY29tcGVuc2F0aW9uIHJlY2VpdmVkIGluIHlvdXIgY2FwYWNpdHkgYXMgY2xlcmd5LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGxvdmUgb2ZmZXJpbmdzLCBmZWVzIGZvciBzZXJ2aWNlcyAod2VkZGluZ3MsIGZ1bmVyYWxzLCBldGMuKSwgYW5kIHBhcnNvbmFnZSBhbGxvd2FuY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB5b3VyIGVhcm5pbmdzIGFuZCB0byBjYWxjdWxhdGUgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIGNvcnJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgeW91ciB0YXggcmV0dXJucyBhcmUgcHJlcGFyZWQgaW4gYSB0aW1lbHkgYW5kIGVmZmljaWVudCBtYW5uZXIuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IGlzIHJlcXVpcmVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFdlIGFyZSBoZXJlIHRvIGFzc2lzdCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoaXMgcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW50ZXJlc3QgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIHJldmlld2luZyB5b3VyIGZpbmFuY2lhbCBhY3Rpdml0aWVzIGZvciB0aGUgdGF4IHllYXIsIHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGludGVyZXN0IGluY29tZS4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgZGV0YWlscy4gS2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48Yj5Tb3VyY2Ugb2YgSW50ZXJlc3QgSW5jb21lOjwvYj4gUGxlYXNlIHNwZWNpZnkgdGhlIGluc3RpdHV0aW9uKHMpIG9yIGVudGl0eShpZXMpIGZyb20gd2hpY2ggeW91IHJlY2VpdmVkIGludGVyZXN0IGluY29tZSAoZS5nLiwgYmFua3MsIGNyZWRpdCB1bmlvbnMpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BbW91bnQgUmVjZWl2ZWQ6PC9iPiBDb25maXJtIHRoZSB0b3RhbCBhbW91bnQgb2YgaW50ZXJlc3QgaW5jb21lIHJlY2VpdmVkIGZyb20gZWFjaCBzb3VyY2UgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+PGI+QWNjb3VudCBUeXBlczo8L2I+IElkZW50aWZ5IHRoZSB0eXBlIG9mIGFjY291bnRzIHRoYXQgZ2VuZXJhdGVkIHRoZSBpbnRlcmVzdCAoZS5nLiwgc2F2aW5ncywgY2hlY2tpbmcsIGNlcnRpZmljYXRlcyBvZiBkZXBvc2l0KS48L2xpPlxyXG4gICAgICA8bGk+PGI+VGF4IEZvcm1zIFJlY2VpdmVkOjwvYj4gTGlzdCBhbnkgdGF4IGZvcm1zIHlvdSBoYXZlIHJlY2VpdmVkIHJlbGF0ZWQgdG8gaW50ZXJlc3QgaW5jb21lLCBzdWNoIGFzIEZvcm0gMTA5OS1JTlQgb3IgRm9ybSAxMDk5LU9JRC48L2xpPlxyXG4gICAgICA8bGk+PGI+Rm9yZWlnbiBJbnRlcmVzdDo8L2I+IElmIGFueSBpbnRlcmVzdCBpbmNvbWUgd2FzIGVhcm5lZCBmcm9tIGZvcmVpZ24gYWNjb3VudHMgb3Igc291cmNlcywgcGxlYXNlIHByb3ZpZGUgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgZW5hYmxlIHVzIHRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHlvdXIgaW50ZXJlc3QgaW5jb21lIGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBjb3JyZWN0LiBZb3UgY2FuIGF0dGFjaCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYnkgcmVwbHlpbmcgdG8gdGhpcyBlbWFpbCBvciB1cGxvYWRpbmcgdGhlbSBkaXJlY3RseSB0byBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJldmlld2luZyB5b3VyIHRheCBzaXR1YXRpb24gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgYSBnaWZ0IGZvciBvcGVuaW5nIGFuIGFjY291bnQgYXQgYSBmaW5hbmNpYWwgaW5zdGl0dXRpb24uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoaXMgaW5jb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiB3aGVyZSB0aGUgYWNjb3VudCB3YXMgb3BlbmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBkYXRlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2lmdCByZWNlaXZlZCAoZS5nLiwgY2FzaCwgbWVyY2hhbmRpc2UsIG9yIHNlcnZpY2VzKS48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgZmFpciBtYXJrZXQgdmFsdWUgb2YgdGhlIGdpZnQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24gcmVnYXJkaW5nIHRoZSBnaWZ0IChlLmcuLCBhIGxldHRlciwgZW1haWwgY29uZmlybWF0aW9uLCBvciBzdGF0ZW1lbnQgaW5kaWNhdGluZyB0aGUgdmFsdWUgb2YgdGhlIGdpZnQpLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBpZiB5b3UgaGF2ZSByZWNlaXZlZCBtb3JlIHRoYW4gb25lIGdpZnQgZm9yIG9wZW5pbmcgYWNjb3VudHMgd2l0aGluIHRoZSBzYW1lIHRheCB5ZWFyLCBhbmQgaWYgc28sIHRoZSBkZXRhaWxzIGZvciBlYWNoLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGNvbXBseSB3aXRoIGFsbCBJUlMgcmVxdWlyZW1lbnRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDRCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiB5b3VyIGluY29tZSBmcm9tIENlcnRpZmljYXRlcyBvZiBEZXBvc2l0IChDRHMpIGZvciB0aGUgdGF4IHllYXIsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgaXMgZXNzZW50aWFsIHRvIGNvbXBseSB3aXRoIElSUyByZWd1bGF0aW9ucyBhbmQgdG8gcG90ZW50aWFsbHkgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk5hbWUgb2YgdGhlIEJhbmsgb3IgRmluYW5jaWFsIEluc3RpdHV0aW9uOjwvc3Ryb25nPiBXaGVyZSB0aGUgQ0QgaXMgaGVsZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgTnVtYmVyOjwvc3Ryb25nPiBUaGlzIGhlbHBzIGluIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIEludGVyZXN0IEVhcm5lZDo8L3N0cm9uZz4gVGhlIGFtb3VudCBvZiBpbnRlcmVzdCBlYXJuZWQgZnJvbSB0aGUgQ0QgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNEIFRlcm06PC9zdHJvbmc+IFRoZSBkdXJhdGlvbiBvciB0ZXJtIG9mIHRoZSBDRCAoZS5nLiwgNiBtb250aHMsIDEgeWVhcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFB1cmNoYXNlOjwvc3Ryb25nPiBXaGVuIHlvdSBvcmlnaW5hbGx5IGFjcXVpcmVkIHRoZSBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hdHVyaXR5IERhdGU6PC9zdHJvbmc+IFdoZW4gdGhlIENEIHJlYWNoZWQgb3Igd2lsbCByZWFjaCBpdHMgZnVsbCB0ZXJtLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1JTlQgRm9ybXM6PC9zdHJvbmc+IElmIHJlY2VpdmVkLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgYW55IDEwOTktSU5UIGZvcm1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ0QgaW50ZXJlc3QuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggZG9jdW1lbnRzLiBZb3UgbWF5IHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIGFycmFuZ2UgZm9yIGEgbWVldGluZyB0byBwcm92aWRlIHRoZW0gaW4gcGVyc29uLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0YXgtZXhlbXB0IGludGVyZXN0IGR1cmluZyB0aGUgdGF4IHllYXIsIHBvc3NpYmx5IGZyb20gbXVuaWNpcGFsIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRvIGFjY3VyYXRlbHkgcHJlcGFyZSB5b3VyIHRheCByZXR1cm5zIGFuZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRheCByZWd1bGF0aW9ucywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U3RhdGVtZW50cyBvZiBUYXgtRXhlbXB0IEludGVyZXN0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhbGwgMTA5OS1JTlQgZm9ybXMgb3IgZXF1aXZhbGVudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHlvdXIgdGF4LWV4ZW1wdCBpbnRlcmVzdCBpbmNvbWUgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgSXNzdWluZyBFbnRpdGllczo8L3N0cm9uZz4gQSBsaXN0IG9yIHN0YXRlbWVudCBpZGVudGlmeWluZyB0aGUgZW50aXRpZXMgdGhhdCBpc3N1ZWQgdGhlIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRoaXMgaW5jbHVkZXMgbXVuaWNpcGFsLCBzdGF0ZSwgb3IgZmVkZXJhbCBlbnRpdGllcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkludmVzdG1lbnQgRGV0YWlsOjwvc3Ryb25nPiBBIGJyZWFrZG93biBvZiB0aGUgaW52ZXN0bWVudHMgY29udHJpYnV0aW5nIHRvIHRheC1leGVtcHQgaW50ZXJlc3QuIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIHB1cmNoYXNlIGRhdGUsIHB1cmNoYXNlIGFtb3VudHMsIGFuZCBhbnkgcmVsYXRlZCBtYXR1cml0eSBkYXRlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkJyb2tlcmFnZSBBY2NvdW50IFN0YXRlbWVudHM6PC9zdHJvbmc+IENvcGllcyBvZiB5b3VyIGJyb2tlcmFnZSBhY2NvdW50IHN0YXRlbWVudHMgdGhhdCBkZXRhaWwgdHJhbnNhY3Rpb25zIGFuZCBob2xkaW5ncyBpbiB0YXgtZXhlbXB0IGludmVzdG1lbnRzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QU1UIChBbHRlcm5hdGl2ZSBNaW5pbXVtIFRheCkgQ29uc2lkZXJhdGlvbjo8L3N0cm9uZz4gSWYgYXZhaWxhYmxlLCBkb2N1bWVudGF0aW9uIGluZGljYXRpbmcgd2hldGhlciBhbnkgb2YgdGhlIHRheC1leGVtcHQgaW50ZXJlc3QgaXMgc3ViamVjdCB0byB0aGUgQWx0ZXJuYXRpdmUgTWluaW11bSBUYXguPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFuIGFjY3VyYXRlIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIFBsZWFzZSBmb3J3YXJkIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBjb250aW51ZWQgZWZmb3J0IHRvIHByb3ZpZGUgeW91IHdpdGggdGhlIGJlc3QgdGF4IHByZXBhcmF0aW9uIHNlcnZpY2VzLCB3ZSBhcmUgcmVhY2hpbmcgb3V0IHRvIGdhdGhlciBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIHRoZSBpbnRlcmVzdCB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQgZnJvbSByZWRlZW1pbmcgYW4gRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kLjwvcD5cclxuXHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgZWxpZ2liaWxpdHkgZm9yIGV4ZW1wdGlvbiBhbmQgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSVJTLCB3ZSBraW5kbHkgcmVxdWVzdCB5b3UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIEZvcm0gMTA5OS1JTlQgb3Igc2ltaWxhciBzdGF0ZW1lbnQgcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiwgaW5kaWNhdGluZyB0aGUgYW1vdW50IG9mIGludGVyZXN0IHJlY2VpdmVkIGZyb20gdGhlIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCByZWNvcmRzIG9mIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmRzIHJlZGVlbWVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkJvbmQgc2VyaWFsIG51bWJlcnM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklzc3VlIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5SZWRlbXB0aW9uIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbW91bnRzPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5SZWNlaXB0cyBvciBkb2N1bWVudGF0aW9uIGZvciBxdWFsaWZpZWQgZWR1Y2F0aW9uYWwgZXhwZW5zZXMgcGFpZCBkdXJpbmcgdGhlIHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlR1aXRpb24gYW5kIGZlZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvdXJzZSBtYXRlcmlhbHM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvdGhlciByZXF1aXJlZCBleHBlbnNlcyBmb3IgZW5yb2xsbWVudCBvciBhdHRlbmRhbmNlIGF0IGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBlbnJvbGxtZW50IGZyb20gYW4gZWxpZ2libGUgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb24gZm9yIHRoZSBiZW5lZmljaWFyeSBvZiB0aGUgYm9uZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHRheGFiaWxpdHkgb2YgdGhlIGludGVyZXN0IGluY29tZSBhbmQgcG90ZW50aWFsbHkgbWF4aW1pemluZyB5b3VyIHRheCBiZW5lZml0cy4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGFuZCByZWNvbW1lbmQgY29tcGlsaW5nIHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCBvdXIgb2ZmaWNlIGRpcmVjdGx5LjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgdHJ1c3QgaW4gb3VyIHNlcnZpY2VzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGl2aWRlbmQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IGluZGljYXRlZCByZWNlaXZpbmcgZGl2aWRlbmQgaW5jb21lIG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBhY2N1cmF0ZWx5IHJlcG9ydCB0aGlzIGluY29tZSBhbmQgb3B0aW1pemUgeW91ciB0YXggc2l0dWF0aW9uLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb24gYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPkFsbCAxMDk5LURJViBmb3JtcyByZWNlaXZlZCBmcm9tIGNvcnBvcmF0aW9ucyBvciBtdXR1YWwgZnVuZHMuIFRoaXMgaW5jbHVkZXMgZGlzdHJpYnV0aW9ucyBvZiBjYXNoLCBzdG9jaywgb3Igb3RoZXIgcHJvcGVydHkuPC9saT5cclxuICAgICAgPGxpPklmIGFwcGxpY2FibGUsIGRldGFpbHMgcmVnYXJkaW5nIGFueSBmb3JlaWduIGRpdmlkZW5kcyBpbmNsdWRpbmcgdGhlIGFtb3VudCBpbiBmb3JlaWduIGN1cnJlbmN5LCB0aGUgY291bnRyeSBvZiBvcmlnaW4sIGFuZCBhbnkgZm9yZWlnbiB0YXggcGFpZC48L2xpPlxyXG4gICAgICA8bGk+Rm9yIGRpdmlkZW5kcyByZWludmVzdGVkLCBwbGVhc2UgcHJvdmlkZSBzdGF0ZW1lbnRzIG9yIGNvbmZpcm1hdGlvbnMgc2hvd2luZyB0aGVzZSB0cmFuc2FjdGlvbnMuPC9saT5cclxuICAgICAgPGxpPkFueSBvdGhlciByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBkaXZpZGVuZHMgbm90IGNvdmVyZWQgYnkgYSAxMDk5LURJVi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUgdG8gYXZvaWQgYW55IHByb2Nlc3NpbmcgZGVsYXlzLiBXZSByZWNvbW1lbmQgc2VjdXJlbHkgdXBsb2FkaW5nIHRoZSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gdGhyb3VnaCBvdXIgY2xpZW50IHBvcnRhbCBvciBhcnJhbmdpbmcgYSBzZWN1cmUgZW1haWwgdHJhbnNtaXNzaW9uLjwvcD5cclxuICAgIDxwPllvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGFwcHJlY2lhdGVkIGFzIGl0IHdpbGwgaGVscCB1cyBpbiBjb21wbGV0aW5nIHlvdXIgdGF4IHByZXBhcmF0aW9ucyBlZmZpY2llbnRseS4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxrQkFBa0IsR0FBRztJQUNoQztRQUNFLGdCQUFnQixFQUFFLHdCQUF3QjtRQUMxQyxXQUFXLEVBQUUsZ0NBQWdDO1FBQzdDLGtCQUFrQixFQUFFOzs7Ozs7OzsrSUFRdUg7S0FDNUk7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHNCQUFzQjtRQUN4QyxXQUFXLEVBQUUseURBQXlEO1FBQ3RFLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7dVBBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7OzhKQWFzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUJBQW1CO1FBQ3JDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs7a1BBYTBOO0tBQy9PO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGlDQUFpQztRQUM5QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7OzsySEFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs2T0FXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Q0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7Ozs4SkFZc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDhCQUE4QjtRQUNoRCxXQUFXLEVBQUUsOEJBQThCO1FBQzNDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7NE5BU29NO0tBQ3pOO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7UUFDcEMsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixrQkFBa0IsRUFBRTs7Ozs7Ozs7dUtBUStJO0tBQ3BLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsV0FBVyxFQUFFLG9DQUFvQztRQUNqRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztvUkFVNFA7S0FDalI7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDJCQUEyQjtRQUM3QyxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0RBU3VDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSx5QkFBeUI7UUFDM0MsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7cUdBVzZFO0tBQ2xHO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw2QkFBNkI7UUFDL0MsV0FBVyxFQUFFLDZCQUE2QjtRQUMxQyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OztrTEFVMEo7S0FDL0s7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsYUFBYTtRQUMxQixrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt5TEFVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7O2tIQVUwRjtLQUMvRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozt5R0FTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvS0FvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozt3SkFVZ0k7S0FDcko7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGNBQWM7UUFDaEMsV0FBVyxFQUFFLGNBQWM7UUFDM0Isa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OytFQVd1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUJBQWlCO1FBQ25DLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7K0RBVXVDO0tBQzVEO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxrQkFBa0IsRUFBRTs7Ozs7Ozs7OzsrREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUU7Ozs7Ozs7Ozs7OzsrREFZdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHFCQUFxQjtRQUN2QyxXQUFXLEVBQUUscUJBQXFCO1FBQ2xDLGtCQUFrQixFQUFFOzs7Ozs7Ozs7K0VBU3VEO0tBQzVFO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxtQ0FBbUM7UUFDckQsV0FBVyxFQUFFLG1DQUFtQztRQUNoRCxrQkFBa0IsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FFQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFOzs7Ozs7OzttTUFRMks7S0FDaE07Q0FpQkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBY3Rpb25UYXhGcmFnbWVudHMgPSBbXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcmlvciBZZWFyIFRheCBSZXR1cm5zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYFByb3ZpZGUgUHJpb3IgWWVhciBUYXggUmV0dXJuc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIHJlcXVpcmUgeW91ciBhc3Npc3RhbmNlIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzLiBPbmUgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2UgbmVlZCBpcyB5b3VyIDxzdHJvbmc+UHJpb3IgWWVhciBUYXggUmV0dXJuczwvc3Ryb25nPi4gVGhpcyBkb2N1bWVudCBpcyBlc3NlbnRpYWwgZm9yIHNldmVyYWwgcmVhc29ucywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogdmVyaWZ5aW5nIGNhcnJ5LWZvcndhcmQgYW1vdW50cywgY29tcGFyaW5nIHllYXItb3Zlci15ZWFyIGluY29tZSBhbmQgZGVkdWN0aW9ucywgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cy48L3A+XHJcbiAgICA8cD5UbyBmYWNpbGl0YXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5GZWRlcmFsIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+U3RhdGUgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+QW55IDxzdHJvbmc+bm90aWNlcyBvciBhbWVuZG1lbnRzPC9zdHJvbmc+IHJlbGF0ZWQgdG8geW91ciBwcmlvciB5ZWFyIHRheCByZXR1cm5zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IGRpZmZpY3VsdHkgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGxldCB1cyBrbm93IGFzIHNvb24gYXMgcG9zc2libGUgc28gd2UgY2FuIGRpc2N1c3MgYWx0ZXJuYXRpdmUgc29sdXRpb25zLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gUHJvdmlkaW5nIHRoZXNlIHdpbGwgZW5hYmxlIHVzIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIHdpdGhvdXQgZGVsYXkuPC9wPmAsXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYERldGVybWluaW5nIEVsaWdpYmlsaXR5IGZvciBTdGF0dXRvcnkgRmlsaW5nIEV4dGVuc2lvbnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHlvdSBxdWFsaWZ5IGZvciBzdGF0dXRvcnkgZmlsaW5nIGV4dGVuc2lvbnMgZm9yIHlvdXIgdGF4IHJldHVybnMsIHdlIHJlcXVpcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB5b3UuIFBsZWFzZSBzZWUgYmVsb3cgdGhlIGNhdGVnb3JpZXMgb2YgaW5mb3JtYXRpb24gbmVlZGVkIGJhc2VkIG9uIGRpZmZlcmVudCBlbGlnaWJpbGl0eSBjcml0ZXJpYTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBEaXNhc3RlciBBcmVhczwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9mIHlvdXIgcHJpbWFyeSByZXNpZGVuY2UgbG9jYXRpb24gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIHJlY2VpdmVkIHJlZ2FyZGluZyBkaXNhc3RlciBkZWNsYXJhdGlvbnMgaW4geW91ciBhcmVhLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5MaXZpbmcgQWJyb2FkPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiByZXNpZGVuY2Ugb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcyBmb3IgbW9yZSB0aGFuIDMzMCBmdWxsIGRheXMgd2l0aGluIGEgMTItbW9udGggcGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHlvdXIgcGh5c2ljYWwgcHJlc2VuY2Ugb3IgYm9uYSBmaWRlIHJlc2lkZW5jZSBpbiBhIGZvcmVpZ24gY291bnRyeS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWN0aXZlIE1pbGl0YXJ5PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIGluZGljYXRpbmcgYWN0aXZlIGR1dHkgc3RhdHVzLCBpbmNsdWRpbmcgZGF0ZXMgb2Ygc2VydmljZSB3aXRoaW4gdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYXBwbGljYWJsZSwgb3JkZXJzIGZvciBvdmVyc2VhcyBkZXBsb3ltZW50LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Db21iYXQgWm9uZTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+T2ZmaWNpYWwgb3JkZXJzIGRlbW9uc3RyYXRpbmcgeW91ciBkZXBsb3ltZW50IHRvIGEgY29tYmF0IHpvbmUsIGluY2x1ZGluZyB0aGUgc3BlY2lmaWMgZGF0ZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgcmVsZXZhbnQgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIERlZmVuc2Ugb3Igb3RoZXIgb2ZmaWNpYWwgYm9kaWVzIHJlZ2FyZGluZyB5b3VyIHNlcnZpY2UgaW4gYSBjb21iYXQgem9uZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBhY2N1cmF0ZSBhbmQgdGltZWx5IHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRlcGVuZGVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlcXVlc3QgZm9yIERlcGVuZGVudCBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBkZXBlbmRlbnRzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFwcGx5aW5nIHRoZSBtb3N0IGJlbmVmaWNpYWwgZGVwZW5kZW5jeSB0ZXN0cywgaW5jbHVkaW5nIHF1YWxpZmljYXRpb25zIGZvciBIZWFkIG9mIEhvdXNlaG9sZCAoSE9IKSwgQ2hpbGQgVGF4IENyZWRpdCwgYW5kIG90aGVyIHJlbGF0ZWQgYmVuZWZpdHMuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBmb3IgZWFjaCBvZiB5b3VyIGNsYWltZWQgZGVwZW5kZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RnVsbCBOYW1lOjwvc3Ryb25nPiBUaGUgY29tcGxldGUgbGVnYWwgbmFtZSBvZiB0aGUgZGVwZW5kZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U29jaWFsIFNlY3VyaXR5IE51bWJlciAoU1NOKSBvciBUYXhwYXllciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKFRJTik6PC9zdHJvbmc+IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQmlydGg6PC9zdHJvbmc+IEhlbHBzIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgY2VydGFpbiBjcmVkaXRzIGxpa2UgdGhlIENoaWxkIFRheCBDcmVkaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGlvbnNoaXAgdG8gWW91Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkZXBlbmRlbnQncyByZWxhdGlvbnNoaXAgKHNvbiwgZGF1Z2h0ZXIsIHN0ZXBjaGlsZCwgZm9zdGVyIGNoaWxkLCBicm90aGVyLCBzaXN0ZXIsIGV0Yy4pIHRvIHlvdS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlc2lkZW5jeTo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGxpdmVkIHdpdGggeW91IGZvciBtb3JlIHRoYW4gaGFsZiB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZpbmFuY2lhbCBTdXBwb3J0Ojwvc3Ryb25nPiBDb25maXJtIHlvdSBwcm92aWRlZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgZGVwZW5kZW504oCZcyBmaW5hbmNpYWwgc3VwcG9ydCBmb3IgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5DaXRpemVuc2hpcDo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGlzIGEgVS5TLiBjaXRpemVuLCBVLlMuIG5hdGlvbmFsLCBvciBhIHJlc2lkZW50IGFsaWVuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IEluZGljYXRlIHdoZXRoZXIgdGhlIGRlcGVuZGVudCBpcyBtYXJyaWVkIGFuZCwgaWYgc28sIHdoZXRoZXIgdGhleSBhcmUgZmlsaW5nIGpvaW50bHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgSW5mb3JtYXRpb246PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIHByb3ZpZGUgZGV0YWlscyByZWdhcmRpbmcgYW55IGluY29tZSB0aGUgZGVwZW5kZW50IG1heSBoYXZlIGVhcm5lZCBvciByZWNlaXZlZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgeW91IHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uIHRvIGF2b2lkIGFueSBkZWxheXMgaW4gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciB0YXggcmV0dXJuLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSGVhZCBvZiBIb3VzZWhvbGRcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkhlYWQgb2YgSG91c2Vob2xkIEZpbGluZ1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIGFuZCBjb21wbGlhbnQgdGF4IGZpbGluZyB1bmRlciB0aGUgXCJIZWFkIG9mIEhvdXNlaG9sZFwiIHN0YXR1cywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBzdGF0dXMgY2FuIHByb3ZpZGUgc2lnbmlmaWNhbnQgdGF4IGJlbmVmaXRzLCBhbmQgaXQgaXMgY3J1Y2lhbCB0aGF0IGFsbCBJUlMgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFBsZWFzZSBwcm92aWRlOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBDb25maXJtYXRpb24gb2YgeW91ciBtYXJpdGFsIHN0YXR1cyBhcyBvZiB0aGUgbGFzdCBkYXkgb2YgdGhlIHRheCB5ZWFyIChlLmcuLCBzaW5nbGUsIGRpdm9yY2VkLCBsZWdhbGx5IHNlcGFyYXRlZCkuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkhvdXNlaG9sZCBFeHBlbnNlczo8L3N0cm9uZz4gRGV0YWlsZWQgcmVjb3JkcyBpbmRpY2F0aW5nIHRoYXQgeW91IHBhaWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvc3RzIG9mIGtlZXBpbmcgdXAgYSBob21lIGZvciB0aGUgdGF4IHllYXIuIFRoaXMgaW5jbHVkZXMgcmVudCwgbW9ydGdhZ2UgaW50ZXJlc3QsIHByb3BlcnR5IHRheGVzLCB1dGlsaXRpZXMsIHJlcGFpcnMsIG1haW50ZW5hbmNlLCBhbmQgZ3JvY2VyaWVzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5RdWFsaWZ5aW5nIFBlcnNvbjo8L3N0cm9uZz4gSW5mb3JtYXRpb24gb24gdGhlIHF1YWxpZnlpbmcgcGVyc29uKHMpIHdobyBsaXZlZCB3aXRoIHlvdSBpbiB0aGUgaG9tZSBmb3IgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIHllYXIsIGV4Y2VwdCBmb3IgdGVtcG9yYXJ5IGFic2VuY2VzIHN1Y2ggYXMgc2Nob29sLiBQbGVhc2UgaW5jbHVkZTpcclxuICAgICAgPHVsPlxyXG4gICAgICA8bGk+RnVsbCBuYW1lIGFuZCByZWxhdGlvbnNoaXAgdG8geW91IChlLmcuLCBjaGlsZCwgcGFyZW50LCBzaWJsaW5nKS48L2xpPlxyXG4gICAgICA8bGk+RHVyYXRpb24gb2YgcmVzaWRlbmN5IGF0IHlvdXIgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT5TdXBwb3J0aW5nIGRvY3VtZW50cyAoYmlydGggY2VydGlmaWNhdGVzLCBzY2hvb2wgcmVjb3JkcywgZXRjLikgcHJvdmluZyB0aGUgcmVzaWRlbmN5IGFuZCByZWxhdGlvbnNoaXAuPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIFN1cHBvcnQ6PC9zdHJvbmc+IEFueSBmdXJ0aGVyIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB5b3VyIGNsYWltIGZvciB0aGUgSGVhZCBvZiBIb3VzZWhvbGQgZmlsaW5nIHN0YXR1cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgcHJvdmlkaW5nIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIHlvdXIgYmVuZWZpdCBhbmQgdG8gY29tcGx5IHdpdGggdGF4IGxhd3MuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZGV0YWlscywgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5mb3JtYXRpb24gb24gUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBzcG91c2UgaXMgbm90IGEgVS5TLiBjaXRpemVuLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB5b3VyIHRheCBzdGF0dXMsIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lY2Vzc2FyeSBUYXggUmVzaWRlbmN5IFRlc3RzLCB3aGljaCBpbmNsdWRlIHRoZSA8c3Ryb25nPkdyZWVuIENhcmQgVGVzdDwvc3Ryb25nPiBhbmQgdGhlIDxzdHJvbmc+U3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdDwvc3Ryb25nPi4gVGhpcyB3aWxsIGhlbHAgdXMgZW5zdXJlIHlvdXIgdGF4IHJldHVybnMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkgYW5kIGNvbXBseSB3aXRoIFUuUy4gcmVndWxhdGlvbnMuPC9wPlxyXG5cclxuICAgIDxwPlRvIHByb2NlZWQsIHdlIGtpbmRseSBhc2sgeW91IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+R3JlZW4gQ2FyZCBTdGF0dXM6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHlvdSBvciB5b3VyIHNwb3VzZSBoYXZlIGJlZW4gaXNzdWVkIGEgVS5TLiBncmVlbiBjYXJkIChMYXdmdWwgUGVybWFuZW50IFJlc2lkZW50IENhcmQpIGF0IGFueSBwb2ludCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJZiB5ZXMsIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSBncmVlbiBjYXJkIG9yIHRoZSBvZmZpY2lhbCBkb2N1bWVudCBjb25maXJtaW5nIHRoZSBzdGF0dXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEFycml2YWwgaW4gdGhlIFUuUy46PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlcyB3aGVuIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZmlyc3QgYXJyaXZlZCBpbiB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VHJhdmVsIEhpc3Rvcnk6PC9zdHJvbmc+IEEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgdGhlIGRhdGVzIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZW50ZXJlZCBhbmQgbGVmdCB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHRoZSBTdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmlzYSBUeXBlOjwvc3Ryb25nPiBJZiB5b3Ugb3IgeW91ciBzcG91c2UgYXJlIG9uIGEgdmlzYSwgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgYW5kIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSB2aXNhLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBUYXggRmlsaW5nczo8L3N0cm9uZz4gQ29waWVzIG9mIGxhc3QgeWVhcidzIHRheCByZXR1cm5zLCBpZiBhcHBsaWNhYmxlLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBwcm92aWRlIGNvbnRleHQgYW5kIGhlbHAgZGV0ZXJtaW5lIHJlc2lkZW5jeSBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LjwvbGk+XHJcbiAgICA8L29sPlxyXG5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUuIFlvdSBjYW4gc2VuZCB0aGVtIHRvIHVzIHZpYSBlbWFpbCBvciB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC4gRm9yIGFueSBxdWVzdGlvbnMgb3IgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPlxyXG5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSB3aXRoIHlvdXIgdGF4IHByZXBhcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkpvaW50IFRheCBSZWxpZWZcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkpvaW50IFRheCBSZWxpZWYgRGV0YWlsc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gYXNzaXN0IHlvdSBlZmZlY3RpdmVseSB3aXRoIHlvdXIgcmVxdWVzdCBmb3Igam9pbnQgdGF4IHJlbGllZiwgd2UgbmVlZCB0byBjb2xsZWN0IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgeW91ciBzaXR1YXRpb24gdGhvcm91Z2hseS4gVGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBtb3N0IHN1aXRhYmxlIHR5cGUgb2YgcmVsaWVmIGZvciB5b3VyIGNpcmN1bXN0YW5jZXMsIHdoaWNoIG1heSBpbmNsdWRlIElubm9jZW50IFNwb3VzZSBSZWxpZWYsIEluanVyZWQgU3BvdXNlIEFsbG9jYXRpb24sIFNlcGFyYXRpb24gb2YgTGlhYmlsaXR5IFJlbGllZiwgb3IgRXF1aXRhYmxlIFJlbGllZi4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db21wbGV0ZSBUYXggUmV0dXJuczo8L3N0cm9uZz4gQ29waWVzIG9mIGFsbCB0YXggcmV0dXJucyBmb3IgdGhlIHllYXJzIHlvdSBhcmUgcmVxdWVzdGluZyByZWxpZWYuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGV0YWlsZWQgU3RhdGVtZW50Ojwvc3Ryb25nPiBBIHdyaXR0ZW4gc3RhdGVtZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBiZWxpZXZlIHlvdSBxdWFsaWZ5IGZvciByZWxpZWYsIGluY2x1ZGluZyBhbnkgc3BlY2lmaWMgZXZlbnRzIG9yIGNpcmN1bXN0YW5jZXMgeW91IHdhbnQgdXMgdG8gY29uc2lkZXIuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIERvY3VtZW50YXRpb246PC9zdHJvbmc+IFByb29mIG9mIHlvdXIgY3VycmVudCBpbmNvbWUgYW5kIHRoYXQgb2YgeW91ciBzcG91c2UgaWYgYXBwbGljYWJsZSwgc3VjaCBhcyByZWNlbnQgcGF5IHN0dWJzLCBXLTIgZm9ybXMsIG9yIG90aGVyIGluY29tZSBzdGF0ZW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIEZpbmFuY2lhbCBTaXR1YXRpb246PC9zdHJvbmc+IERvY3VtZW50cyBzaG93aW5nIHlvdXIgY3VycmVudCBmaW5hbmNpYWwgc2l0dWF0aW9uLCBpbmNsdWRpbmcgYmFuayBzdGF0ZW1lbnRzLCBtb250aGx5IGJpbGxzLCBhbmQgYW55IG90aGVyIGxpYWJpbGl0aWVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgTWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIGxlZ2FsIGRvY3VtZW50cyByZWxhdGVkIHRvIHNlcGFyYXRpb24sIGRpdm9yY2UsIG9yIGFubnVsbWVudC48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyB0aGF0IHByb3ZlIHdoZXJlIGVhY2ggb2YgeW91IGhhcyBsaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFycyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBqb2ludCB0YXggbGlhYmlsaXR5LCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFybHkgbGVnaWJsZS4gWW91IG1heSBzZW5kIHRoZW0gdmlhIGVtYWlsLCBvciB1cGxvYWQuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCB0byBwcm92aWRlLCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgY29tcGxleCwgYnV0IHdlIGFyZSBoZXJlIHRvIGd1aWRlIHlvdSB0aHJvdWdoIGl0LiBPdXIgZ29hbCBpcyB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHNpdHVhdGlvbiB0byBhZHZvY2F0ZSBmb3IgdGhlIG1vc3QgZmF2b3JhYmxlIG91dGNvbWUgb24geW91ciBiZWhhbGYuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCByZXF1aXJlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGFsbCB5b3VyIHNvdXJjZXMgb2YgaW5jb21lLiBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgeW91ciAxMDk5IE5FQyBJbmNvbWUuIFRoZSAxMDk5LU5FQyBmb3JtIGlzIGNydWNpYWwgZm9yIGNvcnJlY3RseSByZXBvcnRpbmcgeW91ciBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uLjwvcD5cclxuICAgIDxwPlRvIGVuc3VyZSBhIHRob3JvdWdoIGFuZCBhY2N1cmF0ZSB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHVzIHdpdGggdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkFsbCAxMDk5LU5FQyBmb3JtczwvYj4geW91IHJlY2VpdmVkIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPGI+YWRkaXRpb25hbCBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uPC9iPiBub3QgcmVwb3J0ZWQgb24gYSAxMDk5LU5FQyBmb3JtLjwvbGk+XHJcbiAgICAgICAgPGxpPkluZm9ybWF0aW9uIHJlZ2FyZGluZyA8Yj5leHBlbnNlcyByZWxhdGVkIHRvIHlvdXIgMTA5OSBORUMgaW5jb21lPC9iPiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYWxsIHlvdXIgMTA5OS1ORUMgZm9ybXMsIHBsZWFzZSBsZXQgdXMga25vdywgYW5kIHByb3ZpZGUgYW4gZXN0aW1hdGUgb2Ygd2hlbiB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgdGhlbS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgYWNjdXJhdGVseSByZXBvcnRpbmcgeW91ciBpbmNvbWUgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBwZW5hbHRpZXMgb3IgYXVkaXRzIGZyb20gdGhlIElSUy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGRpcmVjdGx5IHNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgcHJvY2Vzc2VkIGVmZmljaWVudGx5IGFuZCBhY2N1cmF0ZWx5LjwvcD5cclxuYFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2YgU2NoZWR1bGUgSyBpbmNvbWUgZm9yIHRoZSBjdXJyZW50IHRheCB5ZWFyLiBJbiBvcmRlciB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgd2UgZ2F0aGVyIGFsbCBuZWNlc3NhcnkgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gdGhpcyBpbmNvbWUuPC9wPlxyXG4gICAgPHA+SWYgd2UgYXJlIHByZXBhcmluZyB5b3VyIGJ1c2luZXNzIHJldHVybiwgcmVzdCBhc3N1cmVkIHRoYXQgd2Ugd2lsbCBnZW5lcmF0ZSB0aGUgYXBwbGljYWJsZSBTY2hlZHVsZSBLLTEocykgZm9yIHlvdXIgYnVzaW5lc3MgaW50ZXJlc3RzLiBIb3dldmVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBjb2xsZWN0IGNvcGllcyBvZiA8c3Ryb25nPmFsbCBvdGhlciBTY2hlZHVsZSBLLTFzPC9zdHJvbmc+IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCB0byBpbmNvcnBvcmF0ZSBpbnRvIHlvdXIgcGVyc29uYWwgdGF4IHJldHVybi48L3A+ICBcclxuICAgIDxoMz5TcGVjaWZpYyBEb2N1bWVudCBSZXF1ZXN0OjwvaDM+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkFueSBhbmQgYWxsIFNjaGVkdWxlIEstMShzKSB5b3UgaGF2ZSByZWNlaXZlZCBmcm9tOjwvbGk+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+UGFydG5lcnNoaXBzPC9saT5cclxuICAgICAgICAgICAgPGxpPlMgQ29ycG9yYXRpb25zPC9saT5cclxuICAgICAgICAgICAgPGxpPkVzdGF0ZSBvciBUcnVzdHM8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBkb2N1bWVudHMgYXJlIDxzdHJvbmc+Y2xlYXIgYW5kIGxlZ2libGU8L3N0cm9uZz4gdG8gcHJldmVudCBhbnkgZGVsYXlzIGluIHByb2Nlc3NpbmcgeW91ciByZXR1cm4uIFlvdSBtYXkgc3VibWl0IHRoZXNlIGRvY3VtZW50cyB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgY29udGFjdCB1cyB0byBtYWtlIGFsdGVybmF0aXZlIGFycmFuZ2VtZW50cyBpZiBuZWNlc3NhcnkuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFueSBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4ZXMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIHNlbGYtZW1wbG95bWVudCBpbmNvbWUgbm90IHJlcG9ydGVkIHRocm91Z2ggMTA5OS1ORUMgZm9ybXMgb3IgYSBTY2hlZHVsZSBLLTEuIFRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgYWNjdXJhdGUgYW5kIG1heGltaXplcyB5b3VyIGJlbmVmaXRzLCBpdCdzIGNydWNpYWwgd2UgZ2F0aGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGVzZSBzb3VyY2VzIG9mIGluY29tZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHk6PC9zdHJvbmc+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIG5hdHVyZSBvZiBlYWNoIGFjdGl2aXR5IGZyb20gd2hpY2ggeW91IGRlcml2ZSBzZWxmLWVtcGxveW1lbnQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2Ygb3BlcmF0aW9uOjwvc3Ryb25nPiBGb3IgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHksIHNwZWNpZnkgdGhlIGRhdGVzIG9yIHJhbmdlIG9mIGRhdGVzIGR1cmluZyB3aGljaCB5b3UgZWFybmVkIGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIGluY29tZSBnZW5lcmF0ZWQ6PC9zdHJvbmc+IEZvciBlYWNoIGFjdGl2aXR5LCBwcm92aWRlIHRoZSB0b3RhbCBhbW91bnQgb2YgaW5jb21lIGVhcm5lZCBiZWZvcmUgYW55IGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZXMgaW5jdXJyZWQ6PC9zdHJvbmc+IExpc3QgYWxsIGV4cGVuc2VzIHJlbGF0ZWQgdG8gZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHkuIFBsZWFzZSBjYXRlZ29yaXplIHRoZXNlIGV4cGVuc2VzIChlLmcuLCBvZmZpY2Ugc3VwcGxpZXMsIHRyYXZlbCwgYWR2ZXJ0aXNpbmcpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvciBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZXhpc3RpbmcgcmVjb3JkcyBvciBkb2N1bWVudGF0aW9uIHRoYXQgY29ycm9ib3JhdGUgeW91ciBpbmNvbWUgYW5kIGV4cGVuc2VzLCBzdWNoIGFzIGJhbmsgc3RhdGVtZW50cywgcmVjZWlwdHMsIGludm9pY2VzLCBvciBjb250cmFjdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBhbW91bnQgb2YgdGF4IHlvdSBvd2UgYW5kIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyB0aGF0IGNhbiBtaW5pbWl6ZSB5b3VyIHRheCBsaWFiaWxpdHkuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIHRpbWVseSBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBhbmQgd2UgYXJlIGhlcmUgdG8gaGVscCBldmVyeSBzdGVwIG9mIHRoZSB3YXkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VGhhbmsgeW91IGZvciBlbnRydXN0aW5nIHVzIHdpdGggdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIEFzIHBhcnQgb2Ygb3VyIGNvbXByZWhlbnNpdmUgcmV2aWV3IGFuZCBpbiBvdXIgcXVlc3QgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmdzLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgd2FnZXMgZnJvbSBlbXBsb3ltZW50IG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuPC9wPlxyXG4gICAgPHA+VG8gcHJvY2VlZCBlZmZlY3RpdmVseSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5XLTIgRm9ybXM6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGNvcGllcyBvZiBhbGwgVy0yIGZvcm1zIHJlY2VpdmVkIGZyb20geW91ciBlbXBsb3llcnMuIFRoaXMgaW5jbHVkZXMgd2FnZXMgZWFybmVkIGZyb20gYWxsIHNvdXJjZXMsIG5vdCBqdXN0IGZyb20gdGhlIFMtQ29ycG9yYXRpb24sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WZXJpZmljYXRpb24gb2YgUy1Db3Jwb3JhdGlvbiBXYWdlczo8L3N0cm9uZz4gSWYgd2UgYXJlIGFsc28gaGFuZGxpbmcgeW91ciBidXNpbmVzcyB0YXhlcyBmb3IgYW4gUy1Db3Jwb3JhdGlvbiwgd2UgbGlrZWx5IGhhdmUgdGhlIHdhZ2UgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50aXR5LiBIb3dldmVyLCBmb3IgdGhvcm91Z2huZXNzIGFuZCBjb21wbGlhbmNlLCBwbGVhc2UgY29uZmlybSBpZiB0aGUgd2FnZXMgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiBhcmUgZnVsbHkgcmVwcmVzZW50ZWQgaW4gdGhlIGRvY3VtZW50cyB3ZSBhbHJlYWR5IGhvbGQuIFRoaXMgd2lsbCBoZWxwIHVzIHZlcmlmeSB0aGF0IGFsbCBpbmNvbWUgaXMgYWNjdXJhdGVseSByZXBvcnRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgSW5jb21lIERvY3VtZW50czo8L3N0cm9uZz4gU2hvdWxkIHlvdSBoYXZlIG90aGVyIHNvdXJjZXMgb2Ygd2FnZSBpbmNvbWUgKGUuZy4sIGNvbnRyYWN0IHdvcmssIGJvbnVzZXMsIGV0Yy4pIG5vdCBjb3ZlcmVkIGJ5IHRoZSBXLTIgZm9ybXMgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIGFueSAxMDk5IGZvcm1zIG9yIG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5Zb3VyIGNvb3BlcmF0aW9uIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIEtpbmRseSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJvcGVydHkgb3IgU2VydmljZXMgTGlldSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUHJvcGVydHkvU2VydmljZXMgaW4gTGlldSBvZiBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIHByb3BlcnR5IGFuZC9vciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHRyYWRpdGlvbmFsIHdhZ2VzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgdHlwZSBvZiBjb21wZW5zYXRpb24gY29uc3RpdHV0ZXMgdGF4YWJsZSBpbmNvbWUgYW5kIG11c3QgYmUgYWNjdXJhdGVseSByZXBvcnRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIElSUyByZWd1bGF0aW9ucy48L3A+XHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IHJlY29nbml6ZSBhbmQgcmVwb3J0IHRoZXNlIGl0ZW1zIGFzIHRheGFibGUgaW5jb21lLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgUHJvcGVydHkgb3IgU2VydmljZXM6PC9zdHJvbmc+IFByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBhbnkgcHJvcGVydHkgb3Igc2VydmljZXMgeW91IHJlY2VpdmVkLiBQbGVhc2UgaW5jbHVkZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHByb3BlcnR5IG9yIHRoZSBzY29wZSBvZiBzZXJ2aWNlcyByZW5kZXJlZC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RmFpciBNYXJrZXQgVmFsdWUgYXQgVGltZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBJbmRpY2F0ZSB0aGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBwcm9wZXJ0eSBvciBzZXJ2aWNlIGF0IHRoZSB0aW1lIHlvdSByZWNlaXZlZCBpdC4gSWYgeW91IGhhdmUgYW55IGFwcHJhaXNhbHMgb3IgZG9jdW1lbnRzIHRvIHN1cHBvcnQgdGhlIEZNViwgcGxlYXNlIGluY2x1ZGUgdGhlbS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvciBBZ3JlZW1lbnRzOjwvc3Ryb25nPiBQcm92aWRlIGFueSBkb2N1bWVudGF0aW9uIG9yIHdyaXR0ZW4gYWdyZWVtZW50cyB0aGF0IGRldGFpbCB0aGUgYXJyYW5nZW1lbnQgZm9yIHJlY2VpdmluZyBwcm9wZXJ0eSBvciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHdhZ2VzLiBUaGlzIGNhbiBpbmNsdWRlIGNvbnRyYWN0cywgZW1haWxzLCBvciBhbnkgZm9ybSBvZiBjb21tdW5pY2F0aW9uIHRoYXQgb3V0bGluZXMgdGhlIGFncmVlbWVudC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkYXRlKHMpIG9uIHdoaWNoIHlvdSByZWNlaXZlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkVtcGxveWVyL1Byb3ZpZGVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBQcm92aWRlIHRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IHByb3ZpZGVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgcHJvdmlkZWQgaW5mb3JtYXRpb24gaXMgYXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGFzIHBvc3NpYmxlLiBJbmNvbXBsZXRlIG9yIGluYWNjdXJhdGUgaW5mb3JtYXRpb24gbWF5IGxlYWQgdG8gZGVsYXlzIGluIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm4gb3IgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIGFuZCBjcml0aWNhbCBmb3IgdGhlIHRpbWVseSBhbmQgYWNjdXJhdGUgY29tcGxldGlvbiBvZiB5b3VyIHRheCByZXR1cm4uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGljZWQgeW91J3ZlIG1lbnRpb25lZCBiZWluZyByZWltYnVyc2VkIGZvciBjZXJ0YWluIGV4cGVuc2VzIHVuZGVyIGFuIEVtcGxveWVlIEFjY291bnRhYmxlIFBsYW4uIFRvIGFjY3VyYXRlbHkgYWNjb3VudCBmb3IgdGhlc2UgcmVpbWJ1cnNlbWVudHMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgdGhlIGZvcm1hbCB3cml0dGVuIEFjY291bnRhYmxlIFBsYW4gcHJvdmlkZWQgYnkgeW91ciBlbXBsb3llci4gVGhpcyBzaG91bGQgb3V0bGluZSB0aGUgZXhwZW5zZSBhbGxvd2FuY2UgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHJlaW1idXJzZW1lbnQgcG9saWN5LjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIGZyb20geW91ciBlbXBsb3llciBjb25maXJtaW5nIHlvdXIgcGFydGljaXBhdGlvbiBpbiB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIHRoZSBleHBlbnNlcyByZWltYnVyc2VkIHVuZGVyIHRoZSBwbGFuLCBpbmNsdWRpbmcgZGF0ZXMsIGFtb3VudHMsIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBleHBlbnNlIChyZWNlaXB0cyBvciBpbnZvaWNlcykgcHJvdmlkZWQgdG8geW91ciBlbXBsb3llciBmb3IgcmVpbWJ1cnNlbWVudCB1bmRlciB0aGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSByZWltYnVyc2VtZW50cyBvciB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBzZW5kIHVzIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgd2UgY2FuIHByb2NlZWQgc21vb3RobHkgd2l0aCB5b3VyIHRheCByZXR1cm4gcHJlcGFyYXRpb24uIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGBcclxuICAgIDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBlbnN1cmluZyBhbGwgZm9ybXMgb2YgY29tcGVuc2F0aW9uLCBpbmNsdWRpbmcgdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMsIGFyZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIG9uIHlvdXIgdGF4IHJldHVybnMuIEJhc2VkIG9uIG91ciBwcmV2aW91cyBjb21tdW5pY2F0aW9uLCBpdCBhcHBlYXJzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBiZW5lZml0cyB0aGF0IG5lZWQgdG8gYmUgcmV2aWV3ZWQgZnVydGhlci4gVG8gYXNzaXN0IHlvdSBwcm9wZXJseSwgd2UgcmVxdWVzdCB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGRldGFpbHM6PC9wPlxyXG48b2w+XHJcbiAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0IHJlY2VpdmVkOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb21wYW55IGNhcnMsIG1lbWJlcnNoaXBzLCBlZHVjYXRpb25hbCBhc3Npc3RhbmNlLCBldGMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIElmIHlvdSdyZSB1bnN1cmUsIHBsZWFzZSBwcm92aWRlIGFuIGVzdGltYXRlIGFuZCB0aGUgYmFzaXMgZm9yIHRoaXMgZXN0aW1hdGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5BbnkgYW1vdW50cyBjb250cmlidXRlZCBieSB5b3U6PC9zdHJvbmc+IElmIHlvdSBtYWRlIGNvbnRyaWJ1dGlvbnMgdG93YXJkIHRoZSBjb3N0IG9mIGFueSBiZW5lZml0LCBwbGVhc2Ugc3BlY2lmeSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5EYXRlczo8L3N0cm9uZz4gVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIHNwZWNpZmljIGRhdGVzIGlmIHBvc3NpYmxlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBlbXBsb3llcihzKSBwcm92aWRpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuPC9vbD5cclxuPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSB0YXhhYmxlIHZhbHVlIG9mIHRoZXNlIGZyaW5nZSBiZW5lZml0cyBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIElSUyByZWd1bGF0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBpZGVudGlmaWVkIHBvdGVudGlhbCBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgdGhhdCBtYXkgYXBwbHkgdG8geW91ciBzaXR1YXRpb24uIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIG9wdGltaXplIHlvdXIgdGF4IG91dGNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgeW91IG1heSBoYXZlIHJlY2VpdmVkOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBtYXkgaW5jbHVkZSBoZWFsdGggc2F2aW5ncyBhY2NvdW50cyAoSFNBcyksIGVtcGxveWVlIGRpc2NvdW50cywgcHVibGljIHRyYW5zaXQgcGFzc2VzLCBldGMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBGb3Igbm9uLXRheGFibGUgYmVuZWZpdHMsIHRoaXMgaGVscHMgaW4gcmVjb3JkLWtlZXBpbmcgYW5kIGNvbmZpcm1pbmcgZXhlbXB0aW9uIHN0YXR1cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db250cmlidXRpb24gYW1vdW50cywgaWYgYW55Ojwvc3Ryb25nPiBJZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0b3dhcmRzIGFueSBvZiB0aGVzZSBiZW5lZml0cywgaW5kaWNhdGUgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIGNvcnJvYm9yYXRlIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiByZWNlaXB0Ojwvc3Ryb25nPiBUaGUgdGltZWZyYW1lIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgYXMgcHJlY2lzZSBkYXRlcyBhcyBwb3NzaWJsZS48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5FbXBsb3llciBvciBwcm92aWRlciBpbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgZW1wbG95ZXIocykgb3IgdGhpcmQtcGFydHkgcHJvdmlkZXIocykgb2ZmZXJpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5HYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiBoZWxwcyBlbnN1cmUgdGhhdCB5b3VyIHRheCBmaWxpbmdzIGFyZSBhY2N1cmF0ZSBhbmQgdGhhdCB5b3UgcmVjZWl2ZSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2Ygbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzLiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgaWRlbnRpZnlpbmcgb3IgZG9jdW1lbnRpbmcgdGhlc2UgYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIGFzIHdlIHN0cml2ZSB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiBlZmZpY2llbnRseS4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlZldGVyYW4gQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlZBIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgb25nb2luZyBlZmZvcnQgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIFZldGVyYW4gQmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIGtpbmRseSByZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIHRoaXMgdGFzaywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgZGV0YWlsZWQgbGlzdCBvZiB0aGUgVmV0ZXJhbiBCZW5lZml0cyB5b3UgcmVjZWl2ZWQsIGluY2x1ZGluZyBhbnkgZGlzYWJpbGl0eSwgZWR1Y2F0aW9uLCBhbmQgcGVuc2lvbiBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5PZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIHR5cGUgb2YgYmVuZWZpdCByZWNlaXZlZCwgc3VjaCBhcyBhd2FyZCBsZXR0ZXJzIG9yIHN0YXRlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzIChWQSkuPC9saT5cclxuICAgICAgICA8bGk+QW55IGNvcnJlc3BvbmRlbmNlIGZyb20gdGhlIFZBIG9yIG90aGVyIHJlbGV2YW50IGVudGl0aWVzIHJlZ2FyZGluZyB0aGUgdGF4YWJpbGl0eSBvZiB5b3VyIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPlRvdGFsIGFtb3VudCByZWNlaXZlZCBmb3IgZWFjaCBiZW5lZml0IHRocm91Z2hvdXQgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBvdGhlciBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBuYXR1cmUgYW5kIGFtb3VudCBvZiB5b3VyIFZldGVyYW4gQmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHdoaWNoIGJlbmVmaXRzIGFyZSB0YXhhYmxlIGFuZCBlbnN1cmluZyB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBQbGVhc2Ugc3VibWl0IHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgbWVudGlvbiBvZiByZWNlaXZpbmcgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSB0aGVzZSBwcm9jZWVkcyBhcmUgaW5kZWVkIG5vbi10YXhhYmxlLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRvY3VtZW50YXRpb24gb3Igc3RhdGVtZW50cyBwZXJ0YWluaW5nIHRvIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGluc3VyZWQgaW5kaXZpZHVhbCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdS48L2xpPlxyXG4gICAgICA8bGk+QW55IGNvbW11bmljYXRpb25zIG9yIGxldHRlcnMgZnJvbSB0aGUgaW5zdXJhbmNlIGNvbXBhbnkgcmVnYXJkaW5nIHRoZSB0YXggc3RhdHVzIG9mIHRoZXNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5EZXRhaWxzIHJlZ2FyZGluZyBpZiB0aGUgcG9saWN5IHdhcyBwdXJjaGFzZWQgd2l0aCBhZnRlci10YXggb3IgcHJlLXRheCBkb2xsYXJzLjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhbnkgcG9ydGlvbiBvZiB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudCB3YXMgYW4gaW52ZXN0bWVudCByZXR1cm4sIHBsZWFzZSBwcm92aWRlIHJlbGF0ZWQgZG9jdW1lbnRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBndWFyYW50ZWUgdGhlIGFjY3VyYWN5IGFuZCBpbnRlZ3JpdHkgb2YgeW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFdlJ3JlIGhlcmUgdG8gaGVscCE8L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHdlIHByb2NlZWQgd2l0aCBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucywgd2Ugbm90ZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgdW5kZXIgdGhlIGRpZmZpY3VsdHktb2YtY2FyZSBwcm92aXNpb25zIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBtYXhpbWl6ZSB5b3VyIGVsaWdpYmxlIGluY29tZSBleGNsdXNpb25zLCBpdCdzIGNydWNpYWwgd2UgdmVyaWZ5IGNlcnRhaW4gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgbGl2aW5nIGFycmFuZ2VtZW50LCBhcyBwZXIgSVJTIGd1aWRlbGluZXMuPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBwYXltZW50cyBxdWFsaWZ5IGZvciBpbmNvbWUgZXhjbHVzaW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyBwcm92aW5nIHRoYXQgeW91IGFuZCB0aGUgaW5kaXZpZHVhbCB1bmRlciBjYXJlIHNoYXJlZCB0aGUgc2FtZSBwcmltYXJ5IHJlc2lkZW5jZSBkdXJpbmcgdGhlIHJlY2VpcHQgb2YgdGhlc2UgcGF5bWVudHMuIFRoaXMgY291bGQgaW5jbHVkZSB1dGlsaXR5IGJpbGxzLCBhIHJlbnRhbCBhZ3JlZW1lbnQsIG9yIGhvbWVvd25lcidzIGluc3VyYW5jZSBpbiBib3RoIG9mIHlvdXIgbmFtZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIHRoZSBDYXJlIFJlY2lwaWVudDo8L3N0cm9uZz4gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlcnNvbiByZWNlaXZpbmcgY2FyZSwgaW5jbHVkaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UgYW5kIGFueSBkb2N1bWVudGF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGVpciBuZWVkIGZvciBjYXJlIChlLmcuLCBhIGxldHRlciBmcm9tIGEgaGVhbHRoY2FyZSBwcm92aWRlcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFJlY29yZHM6PC9zdHJvbmc+IEFueSByZWNvcmRzIG9mIHRoZSBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgeW91IHJlY2VpdmVkLCBhcyB0aGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIGV4YWN0IGFtb3VudHMgYW5kIHRoZSBwZXJpb2RzIGNvdmVyZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgRm9ybWFsIEFncmVlbWVudHMgb3IgQ29udHJhY3RzOjwvc3Ryb25nPiBJZiB0aGVyZSB3YXMgYSBmb3JtYWwgYWdyZWVtZW50IG9yIGNvbnRyYWN0IGRldGFpbGluZyB0aGUgY2FyZSBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgdGhpcyBhcyB3ZWxsLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZSBjYXJlIGFycmFuZ2VtZW50IHdhcyBmYWNpbGl0YXRlZCB0aHJvdWdoIGEgc3RhdGUgb3IgdGhpcmQtcGFydHkgYWdlbmN5LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgd2UgY29tcGx5IHdpdGggdGF4aW5nIGF1dGhvcml0aWVzIHdoaWxlIGFjY3VyYXRlbHkgcmVmbGVjdGluZyB5b3VyIGZpbmFuY2VzLiBJZiBhbnkgb2YgdGhlc2UgcmVxdWlyZW1lbnRzIHBvc2UgYSBkaWZmaWN1bHR5IG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIE91ciBnb2FsIGlzIHRvIHN1cHBvcnQgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gV2UgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGVzZSBiZW5lZml0cyBhcmUgZWxpZ2libGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB5b3VyIGluY29tZSwgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgcGFpZC48L3A+XHJcbiAgICA8cD5LaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IG9mIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgc3RhdGVtZW50cyBvciBkb2N1bWVudGF0aW9uIHNob3dpbmcgdGhlIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvbiB3aG8gcGFpZCB0aGUgaW5zdXJhbmNlIHByZW1pdW1zICh5b3Ugb3IgeW91ciBlbXBsb3llcikuPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCB5b3UgcGFpZCB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBzdXBwb3J0aW5nIGRvY3VtZW50cyBmb3IgdGhlIHBheW1lbnRzIG1hZGUgYnkgeW91IChyZWNlaXB0cyBvciBiYW5rIHN0YXRlbWVudHMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91ciBlbXBsb3llciBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHBhaWQgYnkgeW91ciBlbXBsb3llciB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBkb2N1bWVudHMgaW5kaWNhdGluZyBlbXBsb3llciBjb250cmlidXRpb25zIChwYXkgc3R1YnMsIGVtcGxveWVyIGxldHRlcnMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGRldGVybWluZSB0aGUgdGF4YWJsZSBwb3J0aW9uLCBpZiBhbnksIG9mIHlvdXIgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMuIFByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgaGVscCB1cyBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZyBhbmQgcG90ZW50aWFsbHkgbG93ZXIgeW91ciB0YXhhYmxlIGluY29tZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlmIHdlIGNhbiBiZSBvZiBmdXJ0aGVyIGFzc2lzdGFuY2UuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gSW4gb3JkZXIgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIG5lZWQgYWRkaXRpb25hbCBkZXRhaWxzLiBUaGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cyBjYW4gZGVwZW5kIG9uIHdoZW4geW91IHRvb2sgcmV0aXJlbWVudCBkdWUgdG8gZGlzYWJpbGl0eS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHNvb24gYXMgcG9zc2libGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmV0aXJlbWVudDo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgeW91IHJldGlyZWQgZHVlIHRvIGRpc2FiaWxpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIERpc2FiaWxpdHkgUmV0aXJlbWVudDo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IGhhdmUgdGhhdCBjb25maXJtcyB5b3VyIHJldGlyZW1lbnQgd2FzIGR1ZSB0byBkaXNhYmlsaXR5LiBUaGlzIG1heSBpbmNsdWRlIGxldHRlcnMgZnJvbSB5b3VyIGVtcGxveWVyLCB0aGUgcmV0aXJlbWVudCBwbGFuLCBvciBtZWRpY2FsIHJlY29yZHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIEJlbmVmaXRzIFJlY2VpdmVkOjwvc3Ryb25nPiBTcGVjaWZpYyBhbW91bnRzIGFuZCB0aGUgc291cmNlIG9mIHRoZSBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxhdGVkIGRvY3VtZW50cyBzdWNoIGFzIHN0YXRlbWVudHMgb3Igbm90aWNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVy0yIG9yIDEwOTkgRm9ybXM6PC9zdHJvbmc+IElmIHlvdSByZWNlaXZlZCBhbnkgd2FnZXMgb3IgZGlzYWJpbGl0eSBwYXltZW50cyB0aGF0IHdlcmUgcmVwb3J0ZWQgb24gVy0yIG9yIDEwOTkgZm9ybXMgaW4gdGhlIHllYXIgb2YgeW91ciByZXRpcmVtZW50LCBwbGVhc2UgcHJvdmlkZSB0aGVzZSBmb3Jtcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cywgcGxlYXNlIGluY2x1ZGUgY29waWVzIG9mIHRoZXNlIGNvbW11bmljYXRpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhlIGFib3ZlIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBVbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgd2lsbCBhaWQgdXMgaW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGF4YWJpbGl0eSBhbmQgZW5zdXJpbmcgdGhhdCB5b3VyIHRheCBvYmxpZ2F0aW9ucyBhcmUgcHJlY2lzZWx5IGNhbGN1bGF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIFctMiB3YWdlcyBhcyBhIGNsZXJneSBtZW1iZXIuIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIHRvIHBvdGVudGlhbGx5IG1heGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgeW91ciBjb21wZW5zYXRpb24gcGFja2FnZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPlctMiBGb3JtOjwvYj4gSWYgbm90IGFscmVhZHkgcHJvdmlkZWQsIGluY2x1ZGUgYW55IFctMiBmb3JtcyBpc3N1ZWQgYnkgeW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24uPC9saT5cclxuICAgICAgICA8bGk+PGI+SG91c2luZyBBbGxvd2FuY2UgRG9jdW1lbnRhdGlvbjo8L2I+IERldGFpbGVkIHN0YXRlbWVudCBvciBsZXR0ZXIgZnJvbSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbiBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgZGVzaWduYXRlZCBhcyBob3VzaW5nIGFsbG93YW5jZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5TZWxmLUVtcGxveW1lbnQgVGF4OjwvYj4gQ29uZmlybWF0aW9uIG9uIHdoZXRoZXIgeW91IGhhdmUgdGFrZW4gYSB2b3cgb2YgcG92ZXJ0eSAoaWYgYXBwbGljYWJsZSksIG9yIGFueSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gb3B0aW5nIG91dCBvZiBzZWxmLWVtcGxveW1lbnQgdGF4LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkV4cGVuc2UgUmVpbWJ1cnNlbWVudHM6PC9iPiBEb2N1bWVudGF0aW9uIHNob3dpbmcgYW55IGV4cGVuc2UgcmVpbWJ1cnNlbWVudHMgcmVjZWl2ZWQgdW5kZXIgYW4gYWNjb3VudGFibGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5PdGhlciBDb21wZW5zYXRpb246PC9iPiBJbmZvcm1hdGlvbiBvbiBhbnkgb3RoZXIgY29tcGVuc2F0aW9uIHJlY2VpdmVkIGluIHlvdXIgY2FwYWNpdHkgYXMgY2xlcmd5LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGxvdmUgb2ZmZXJpbmdzLCBmZWVzIGZvciBzZXJ2aWNlcyAod2VkZGluZ3MsIGZ1bmVyYWxzLCBldGMuKSwgYW5kIHBhcnNvbmFnZSBhbGxvd2FuY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB5b3VyIGVhcm5pbmdzIGFuZCB0byBjYWxjdWxhdGUgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIGNvcnJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgeW91ciB0YXggcmV0dXJucyBhcmUgcHJlcGFyZWQgaW4gYSB0aW1lbHkgYW5kIGVmZmljaWVudCBtYW5uZXIuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IGlzIHJlcXVpcmVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFdlIGFyZSBoZXJlIHRvIGFzc2lzdCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoaXMgcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW50ZXJlc3QgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIHJldmlld2luZyB5b3VyIGZpbmFuY2lhbCBhY3Rpdml0aWVzIGZvciB0aGUgdGF4IHllYXIsIHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGludGVyZXN0IGluY29tZS4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgZGV0YWlscy4gS2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48Yj5Tb3VyY2Ugb2YgSW50ZXJlc3QgSW5jb21lOjwvYj4gUGxlYXNlIHNwZWNpZnkgdGhlIGluc3RpdHV0aW9uKHMpIG9yIGVudGl0eShpZXMpIGZyb20gd2hpY2ggeW91IHJlY2VpdmVkIGludGVyZXN0IGluY29tZSAoZS5nLiwgYmFua3MsIGNyZWRpdCB1bmlvbnMpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BbW91bnQgUmVjZWl2ZWQ6PC9iPiBDb25maXJtIHRoZSB0b3RhbCBhbW91bnQgb2YgaW50ZXJlc3QgaW5jb21lIHJlY2VpdmVkIGZyb20gZWFjaCBzb3VyY2UgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+PGI+QWNjb3VudCBUeXBlczo8L2I+IElkZW50aWZ5IHRoZSB0eXBlIG9mIGFjY291bnRzIHRoYXQgZ2VuZXJhdGVkIHRoZSBpbnRlcmVzdCAoZS5nLiwgc2F2aW5ncywgY2hlY2tpbmcsIGNlcnRpZmljYXRlcyBvZiBkZXBvc2l0KS48L2xpPlxyXG4gICAgICA8bGk+PGI+VGF4IEZvcm1zIFJlY2VpdmVkOjwvYj4gTGlzdCBhbnkgdGF4IGZvcm1zIHlvdSBoYXZlIHJlY2VpdmVkIHJlbGF0ZWQgdG8gaW50ZXJlc3QgaW5jb21lLCBzdWNoIGFzIEZvcm0gMTA5OS1JTlQgb3IgRm9ybSAxMDk5LU9JRC48L2xpPlxyXG4gICAgICA8bGk+PGI+Rm9yZWlnbiBJbnRlcmVzdDo8L2I+IElmIGFueSBpbnRlcmVzdCBpbmNvbWUgd2FzIGVhcm5lZCBmcm9tIGZvcmVpZ24gYWNjb3VudHMgb3Igc291cmNlcywgcGxlYXNlIHByb3ZpZGUgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgZW5hYmxlIHVzIHRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHlvdXIgaW50ZXJlc3QgaW5jb21lIGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBjb3JyZWN0LiBZb3UgY2FuIGF0dGFjaCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYnkgcmVwbHlpbmcgdG8gdGhpcyBlbWFpbCBvciB1cGxvYWRpbmcgdGhlbSBkaXJlY3RseSB0byBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJldmlld2luZyB5b3VyIHRheCBzaXR1YXRpb24gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgYSBnaWZ0IGZvciBvcGVuaW5nIGFuIGFjY291bnQgYXQgYSBmaW5hbmNpYWwgaW5zdGl0dXRpb24uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoaXMgaW5jb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiB3aGVyZSB0aGUgYWNjb3VudCB3YXMgb3BlbmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBkYXRlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2lmdCByZWNlaXZlZCAoZS5nLiwgY2FzaCwgbWVyY2hhbmRpc2UsIG9yIHNlcnZpY2VzKS48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgZmFpciBtYXJrZXQgdmFsdWUgb2YgdGhlIGdpZnQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24gcmVnYXJkaW5nIHRoZSBnaWZ0IChlLmcuLCBhIGxldHRlciwgZW1haWwgY29uZmlybWF0aW9uLCBvciBzdGF0ZW1lbnQgaW5kaWNhdGluZyB0aGUgdmFsdWUgb2YgdGhlIGdpZnQpLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBpZiB5b3UgaGF2ZSByZWNlaXZlZCBtb3JlIHRoYW4gb25lIGdpZnQgZm9yIG9wZW5pbmcgYWNjb3VudHMgd2l0aGluIHRoZSBzYW1lIHRheCB5ZWFyLCBhbmQgaWYgc28sIHRoZSBkZXRhaWxzIGZvciBlYWNoLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGNvbXBseSB3aXRoIGFsbCBJUlMgcmVxdWlyZW1lbnRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDRCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiB5b3VyIGluY29tZSBmcm9tIENlcnRpZmljYXRlcyBvZiBEZXBvc2l0IChDRHMpIGZvciB0aGUgdGF4IHllYXIsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgaXMgZXNzZW50aWFsIHRvIGNvbXBseSB3aXRoIElSUyByZWd1bGF0aW9ucyBhbmQgdG8gcG90ZW50aWFsbHkgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk5hbWUgb2YgdGhlIEJhbmsgb3IgRmluYW5jaWFsIEluc3RpdHV0aW9uOjwvc3Ryb25nPiBXaGVyZSB0aGUgQ0QgaXMgaGVsZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgTnVtYmVyOjwvc3Ryb25nPiBUaGlzIGhlbHBzIGluIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIEludGVyZXN0IEVhcm5lZDo8L3N0cm9uZz4gVGhlIGFtb3VudCBvZiBpbnRlcmVzdCBlYXJuZWQgZnJvbSB0aGUgQ0QgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNEIFRlcm06PC9zdHJvbmc+IFRoZSBkdXJhdGlvbiBvciB0ZXJtIG9mIHRoZSBDRCAoZS5nLiwgNiBtb250aHMsIDEgeWVhcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFB1cmNoYXNlOjwvc3Ryb25nPiBXaGVuIHlvdSBvcmlnaW5hbGx5IGFjcXVpcmVkIHRoZSBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hdHVyaXR5IERhdGU6PC9zdHJvbmc+IFdoZW4gdGhlIENEIHJlYWNoZWQgb3Igd2lsbCByZWFjaCBpdHMgZnVsbCB0ZXJtLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1JTlQgRm9ybXM6PC9zdHJvbmc+IElmIHJlY2VpdmVkLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgYW55IDEwOTktSU5UIGZvcm1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ0QgaW50ZXJlc3QuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggZG9jdW1lbnRzLiBZb3UgbWF5IHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIHByb3ZpZGUgdGhlbSB2aWEgZW1haWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4IEV4ZW1wdCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4IEV4ZW1wdCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRheC1leGVtcHQgaW50ZXJlc3QgZHVyaW5nIHRoZSB0YXggeWVhciwgcG9zc2libHkgZnJvbSBtdW5pY2lwYWwgYm9uZHMgb3Igc2ltaWxhciBpbnZlc3RtZW50cy4gVG8gYWNjdXJhdGVseSBwcmVwYXJlIHlvdXIgdGF4IHJldHVybnMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5TdGF0ZW1lbnRzIG9mIFRheC1FeGVtcHQgSW50ZXJlc3Q6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGFsbCAxMDk5LUlOVCBmb3JtcyBvciBlcXVpdmFsZW50IHN0YXRlbWVudHMgdGhhdCBkZXRhaWwgeW91ciB0YXgtZXhlbXB0IGludGVyZXN0IGluY29tZSBmb3IgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGV0YWlscyBvZiBJc3N1aW5nIEVudGl0aWVzOjwvc3Ryb25nPiBBIGxpc3Qgb3Igc3RhdGVtZW50IGlkZW50aWZ5aW5nIHRoZSBlbnRpdGllcyB0aGF0IGlzc3VlZCB0aGUgYm9uZHMgb3Igc2ltaWxhciBpbnZlc3RtZW50cy4gVGhpcyBpbmNsdWRlcyBtdW5pY2lwYWwsIHN0YXRlLCBvciBmZWRlcmFsIGVudGl0aWVzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+SW52ZXN0bWVudCBEZXRhaWw6PC9zdHJvbmc+IEEgYnJlYWtkb3duIG9mIHRoZSBpbnZlc3RtZW50cyBjb250cmlidXRpbmcgdG8gdGF4LWV4ZW1wdCBpbnRlcmVzdC4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgcHVyY2hhc2UgZGF0ZSwgcHVyY2hhc2UgYW1vdW50cywgYW5kIGFueSByZWxhdGVkIG1hdHVyaXR5IGRhdGVzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QnJva2VyYWdlIEFjY291bnQgU3RhdGVtZW50czo8L3N0cm9uZz4gQ29waWVzIG9mIHlvdXIgYnJva2VyYWdlIGFjY291bnQgc3RhdGVtZW50cyB0aGF0IGRldGFpbCB0cmFuc2FjdGlvbnMgYW5kIGhvbGRpbmdzIGluIHRheC1leGVtcHQgaW52ZXN0bWVudHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BTVQgKEFsdGVybmF0aXZlIE1pbmltdW0gVGF4KSBDb25zaWRlcmF0aW9uOjwvc3Ryb25nPiBJZiBhdmFpbGFibGUsIGRvY3VtZW50YXRpb24gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBvZiB0aGUgdGF4LWV4ZW1wdCBpbnRlcmVzdCBpcyBzdWJqZWN0IHRvIHRoZSBBbHRlcm5hdGl2ZSBNaW5pbXVtIFRheC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYW4gYWNjdXJhdGUgYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gUGxlYXNlIGZvcndhcmQgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHBhcnQgb2Ygb3VyIGNvbnRpbnVlZCBlZmZvcnQgdG8gcHJvdmlkZSB5b3Ugd2l0aCB0aGUgYmVzdCB0YXggcHJlcGFyYXRpb24gc2VydmljZXMsIHdlIGFyZSByZWFjaGluZyBvdXQgdG8gZ2F0aGVyIG5lY2Vzc2FyeSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gdGhlIGludGVyZXN0IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBmcm9tIHJlZGVlbWluZyBhbiBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQuPC9wPlxyXG5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBlbGlnaWJpbGl0eSBmb3IgZXhlbXB0aW9uIGFuZCB0byBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRoZSBJUlMsIHdlIGtpbmRseSByZXF1ZXN0IHlvdSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgRm9ybSAxMDk5LUlOVCBvciBzaW1pbGFyIHN0YXRlbWVudCBwcm92aWRlZCBieSB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9uLCBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgaW50ZXJlc3QgcmVjZWl2ZWQgZnJvbSB0aGUgRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbGVkIHJlY29yZHMgb2YgdGhlIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZHMgcmVkZWVtZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Qm9uZCBzZXJpYWwgbnVtYmVyczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SXNzdWUgZGF0ZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlJlZGVtcHRpb24gZGF0ZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFtb3VudHM8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPlJlY2VpcHRzIG9yIGRvY3VtZW50YXRpb24gZm9yIHF1YWxpZmllZCBlZHVjYXRpb25hbCBleHBlbnNlcyBwYWlkIGR1cmluZyB0aGUgeWVhciwgaW5jbHVkaW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VHVpdGlvbiBhbmQgZmVlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q291cnNlIG1hdGVyaWFsczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG90aGVyIHJlcXVpcmVkIGV4cGVuc2VzIGZvciBlbnJvbGxtZW50IG9yIGF0dGVuZGFuY2UgYXQgYW4gZWxpZ2libGUgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb248L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGVucm9sbG1lbnQgZnJvbSBhbiBlbGlnaWJsZSBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbiBmb3IgdGhlIGJlbmVmaWNpYXJ5IG9mIHRoZSBib25kLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyB0aGUgdGF4YWJpbGl0eSBvZiB0aGUgaW50ZXJlc3QgaW5jb21lIGFuZCBwb3RlbnRpYWxseSBtYXhpbWl6aW5nIHlvdXIgdGF4IGJlbmVmaXRzLiBXZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QgYW5kIHJlY29tbWVuZCBjb21waWxpbmcgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IG91ciBvZmZpY2UgZGlyZWN0bHkuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGl2aWRlbmQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXZpZGVuZCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBjdXJyZW50bHkgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaW5kaWNhdGVkIHJlY2VpdmluZyBkaXZpZGVuZCBpbmNvbWUgb3ZlciB0aGUgcGFzdCB0YXggeWVhci4gVG8gZW5zdXJlIHdlIGFjY3VyYXRlbHkgcmVwb3J0IHRoaXMgaW5jb21lIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBzaXR1YXRpb24sIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbiBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+QWxsIDEwOTktRElWIGZvcm1zIHJlY2VpdmVkIGZyb20gY29ycG9yYXRpb25zIG9yIG11dHVhbCBmdW5kcy4gVGhpcyBpbmNsdWRlcyBkaXN0cmlidXRpb25zIG9mIGNhc2gsIHN0b2NrLCBvciBvdGhlciBwcm9wZXJ0eS48L2xpPlxyXG4gICAgICA8bGk+SWYgYXBwbGljYWJsZSwgZGV0YWlscyByZWdhcmRpbmcgYW55IGZvcmVpZ24gZGl2aWRlbmRzIGluY2x1ZGluZyB0aGUgYW1vdW50IGluIGZvcmVpZ24gY3VycmVuY3ksIHRoZSBjb3VudHJ5IG9mIG9yaWdpbiwgYW5kIGFueSBmb3JlaWduIHRheCBwYWlkLjwvbGk+XHJcbiAgICAgIDxsaT5Gb3IgZGl2aWRlbmRzIHJlaW52ZXN0ZWQsIHBsZWFzZSBwcm92aWRlIHN0YXRlbWVudHMgb3IgY29uZmlybWF0aW9ucyBzaG93aW5nIHRoZXNlIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgICA8bGk+QW55IG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGRpdmlkZW5kcyBub3QgY292ZXJlZCBieSBhIDEwOTktRElWLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZSB0byBhdm9pZCBhbnkgcHJvY2Vzc2luZyBkZWxheXMuIFdlIHJlY29tbWVuZCBzZWN1cmVseSB1cGxvYWRpbmcgdGhlIHJlcXVlc3RlZCBpbmZvcm1hdGlvbiB0aHJvdWdoIG91ciBjbGllbnQgcG9ydGFsIG9yIGFycmFuZ2luZyBhIHNlY3VyZSBlbWFpbCB0cmFuc21pc3Npb24uPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgYXBwcmVjaWF0ZWQgYXMgaXQgd2lsbCBoZWxwIHVzIGluIGNvbXBsZXRpbmcgeW91ciB0YXggcHJlcGFyYXRpb25zIGVmZmljaWVudGx5LiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbl07XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUNhcGl0YWxHYWluc0xvc3NNb2RlbCB7XHJcbiAgICBkaXNwb3NlZENhcGl0YWxBc3NldHM6IGJvb2xlYW47XHJcbiAgICBtdXR1YWxGdW5kR2FpblByb2ZpdDogYm9vbGVhbjtcclxuICAgIG11dHVhbEZ1bmREaXNwb3NhbDogYm9vbGVhbjsgXHJcbiAgICBtdXR1YWxGdW5kR2FpblByb2ZpdEFtb3VudDogbnVtYmVyO1xyXG4gICAgaGFzV2FzaFNhbGU6IGJvb2xlYW47XHJcbiAgICBzb2xkSG9tZTogYm9vbGVhbjtcclxuICAgIGhhc0luc3RhbGxtZW50U2FsZVBheW1lbnRzOiBib29sZWFuO1xyXG4gICAgaGFzV29ydGhsZXNzU2VjdXJpdGllczogYm9vbGVhbjtcclxuICAgIGhhc1NlYzEyNFNtYWxsQnVzaW5lc3NTdG9jazogYm9vbGVhbjtcclxufSJdfQ==
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./i-address-model"), exports);
5
5
  tslib_1.__exportStar(require("./i-canonical-residency.model"), exports);
6
+ tslib_1.__exportStar(require("./i-capital-gains-loss-model"), exports);
6
7
  tslib_1.__exportStar(require("./i-clergy-taxation-model"), exports);
7
8
  tslib_1.__exportStar(require("./i-dependents-form-model"), exports);
8
9
  tslib_1.__exportStar(require("./i-fringe-benefits-model"), exports);
@@ -16,4 +17,4 @@ tslib_1.__exportStar(require("./i-taxable-self-employment-income-model"), export
16
17
  tslib_1.__exportStar(require("./i-taxpayer-bio-model"), exports);
17
18
  tslib_1.__exportStar(require("./i-veteran-benefits-model"), exports);
18
19
  tslib_1.__exportStar(require("./last-day-year-marital-statuses"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWtDO0FBQ2xDLHdFQUE4QztBQUM5QyxvRUFBMEM7QUFDMUMsb0VBQTBDO0FBQzFDLG9FQUEwQztBQUMxQywwRUFBZ0Q7QUFDaEQsdUVBQTZDO0FBQzdDLHNFQUE0QztBQUM1QyxpRkFBdUQ7QUFDdkQsNkVBQW1EO0FBQ25ELHlFQUErQztBQUMvQyxtRkFBeUQ7QUFDekQsaUVBQXVDO0FBQ3ZDLHFFQUEyQztBQUMzQywyRUFBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pLWFkZHJlc3MtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jYW5vbmljYWwtcmVzaWRlbmN5Lm1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktY2xlcmd5LXRheGF0aW9uLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktZGVwZW5kZW50cy1mb3JtLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktZnJpbmdlLWJlbmVmaXRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktZW1wbG95ZWUtY29tcGVuc2F0aW9uLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktaW5zdXJhbmNlLXBheW1lbnRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktaW52ZXN0bWVudC1pbmNvbWUtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1sYXN0LWRheS15ZWFyLW1hcml0YWwtc3RhdHVzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktbXVsdGlwbGUtYnVzaW5lc3Mtc2UtdGF4LW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktc3RhdHV0b3J5LWV4dGVuc2lvbnMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS10YXhhYmxlLXNlbGYtZW1wbG95bWVudC1pbmNvbWUtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS10YXhwYXllci1iaW8tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS12ZXRlcmFuLWJlbmVmaXRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xhc3QtZGF5LXllYXItbWFyaXRhbC1zdGF0dXNlc1wiO1xyXG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNERBQWtDO0FBQ2xDLHdFQUE4QztBQUM5Qyx1RUFBNkM7QUFDN0Msb0VBQTBDO0FBQzFDLG9FQUEwQztBQUMxQyxvRUFBMEM7QUFDMUMsMEVBQWdEO0FBQ2hELHVFQUE2QztBQUM3QyxzRUFBNEM7QUFDNUMsaUZBQXVEO0FBQ3ZELDZFQUFtRDtBQUNuRCx5RUFBK0M7QUFDL0MsbUZBQXlEO0FBQ3pELGlFQUF1QztBQUN2QyxxRUFBMkM7QUFDM0MsMkVBQWlEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaS1hZGRyZXNzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktY2Fub25pY2FsLXJlc2lkZW5jeS5tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNhcGl0YWwtZ2FpbnMtbG9zcy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNsZXJneS10YXhhdGlvbi1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWRlcGVuZGVudHMtZm9ybS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWZyaW5nZS1iZW5lZml0cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWVtcGxveWVlLWNvbXBlbnNhdGlvbi1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWluc3VyYW5jZS1wYXltZW50cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWludmVzdG1lbnQtaW5jb21lLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktbGFzdC1kYXkteWVhci1tYXJpdGFsLXN0YXR1cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLW11bHRpcGxlLWJ1c2luZXNzLXNlLXRheC1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXN0YXR1dG9yeS1leHRlbnNpb25zLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktdGF4YWJsZS1zZWxmLWVtcGxveW1lbnQtaW5jb21lLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktdGF4cGF5ZXItYmlvLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktdmV0ZXJhbi1iZW5lZml0cy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9sYXN0LWRheS15ZWFyLW1hcml0YWwtc3RhdHVzZXNcIjtcclxuIl19
@@ -112,7 +112,7 @@ export var ActionTaxFragments = [
112
112
  {
113
113
  actionTaxSubject: "CD Interest",
114
114
  actionTitle: "CD Interest",
115
- actionInstructions: "<p>To ensure accurate reporting of your income from Certificates of Deposit (CDs) for the tax year, we kindly request the following information. This is essential to comply with IRS regulations and to potentially optimize your tax benefits.</p>\n <ol>\n <li><strong>Name of the Bank or Financial Institution:</strong> Where the CD is held.</li>\n <li><strong>Account Number:</strong> This helps in identifying the specific CD.</li>\n <li><strong>Total Interest Earned:</strong> The amount of interest earned from the CD during the tax year.</li>\n <li><strong>CD Term:</strong> The duration or term of the CD (e.g., 6 months, 1 year).</li>\n <li><strong>Date of Purchase:</strong> When you originally acquired the CD.</li>\n <li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>\n <li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>\n </ol>\n <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or arrange for a meeting to provide them in person.</p>\n <p>If you have any questions or need further assistance, do not hesitate to contact us.</p>\n <p>Thank you for your prompt attention to this matter.</p>"
115
+ actionInstructions: "<p>To ensure accurate reporting of your income from Certificates of Deposit (CDs) for the tax year, we kindly request the following information. This is essential to comply with IRS regulations and to potentially optimize your tax benefits.</p>\n <ol>\n <li><strong>Name of the Bank or Financial Institution:</strong> Where the CD is held.</li>\n <li><strong>Account Number:</strong> This helps in identifying the specific CD.</li>\n <li><strong>Total Interest Earned:</strong> The amount of interest earned from the CD during the tax year.</li>\n <li><strong>CD Term:</strong> The duration or term of the CD (e.g., 6 months, 1 year).</li>\n <li><strong>Date of Purchase:</strong> When you originally acquired the CD.</li>\n <li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>\n <li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>\n </ol>\n <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or provide them via email.</p>\n <p>If you have any questions or need further assistance, do not hesitate to contact us.</p>\n <p>Thank you for your prompt attention to this matter.</p>"
116
116
  },
117
117
  {
118
118
  actionTaxSubject: "Tax Exempt Interest",
@@ -130,4 +130,4 @@ export var ActionTaxFragments = [
130
130
  actionInstructions: "<p>We are currently in the process of preparing your tax returns and have noted that you indicated receiving dividend income over the past tax year. To ensure we accurately report this income and optimize your tax situation, we kindly request the following documentation and information:</p>\n <ol>\n <li>All 1099-DIV forms received from corporations or mutual funds. This includes distributions of cash, stock, or other property.</li>\n <li>If applicable, details regarding any foreign dividends including the amount in foreign currency, the country of origin, and any foreign tax paid.</li>\n <li>For dividends reinvested, please provide statements or confirmations showing these transactions.</li>\n <li>Any other relevant documentation or information regarding dividends not covered by a 1099-DIV.</li>\n </ol>\n <p>Please ensure all documents are clear and legible to avoid any processing delays. We recommend securely uploading the requested information through our client portal or arranging a secure email transmission.</p>\n <p>Your prompt response is appreciated as it will help us in completing your tax preparations efficiently. If you have any questions or need clarification, do not hesitate to contact us.</p>"
131
131
  }
132
132
  ];
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUc7SUFDaEM7UUFDRSxnQkFBZ0IsRUFBRSx3QkFBd0I7UUFDMUMsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxnbENBUXVIO0tBQzVJO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxrQkFBa0IsRUFBRSxzekRBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFLGcyREFhc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDRrREFhME47S0FDL087SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLGtCQUFrQixFQUFFLHV3REFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLCtnRUFXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLHNwQ0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUUsd3VDQVlzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsOEJBQThCO1FBQ2hELFdBQVcsRUFBRSw4QkFBOEI7UUFDM0Msa0JBQWtCLEVBQUUseXREQVNvTTtLQUN6TjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUscWpEQVErSTtLQUNwSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDO1FBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsa0JBQWtCLEVBQUUsbytEQVU0UDtLQUNqUjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMkJBQTJCO1FBQzdDLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsa0JBQWtCLEVBQUUsMHdDQVN1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUseUJBQXlCO1FBQzNDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsa0JBQWtCLEVBQUUsMHJEQVc2RTtLQUNsRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUUsdzBEQVUwSjtLQUMvSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGtCQUFrQixFQUFFLDA0Q0FVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG1tQ0FVMEY7S0FDL0c7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDBCQUEwQjtRQUM1QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDY1REFTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFLG1yREFvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxtekRBVWdJO0tBQ3JKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxjQUFjO1FBQ2hDLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGtCQUFrQixFQUFFLG11REFXdUQ7S0FDNUU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLGdoREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDRCQUE0QjtRQUM5QyxXQUFXLEVBQUUsNEJBQTRCO1FBQ3pDLGtCQUFrQixFQUFFLGtvQ0FVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUUsMjVDQVl1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsa0JBQWtCLEVBQUUseWxEQVN1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUNBQW1DO1FBQ3JELFdBQVcsRUFBRSxtQ0FBbUM7UUFDaEQsa0JBQWtCLEVBQUUsKzFEQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLDB1Q0FRMks7S0FDaE07Q0FpQkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBY3Rpb25UYXhGcmFnbWVudHMgPSBbXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcmlvciBZZWFyIFRheCBSZXR1cm5zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYFByb3ZpZGUgUHJpb3IgWWVhciBUYXggUmV0dXJuc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIHJlcXVpcmUgeW91ciBhc3Npc3RhbmNlIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzLiBPbmUgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2UgbmVlZCBpcyB5b3VyIDxzdHJvbmc+UHJpb3IgWWVhciBUYXggUmV0dXJuczwvc3Ryb25nPi4gVGhpcyBkb2N1bWVudCBpcyBlc3NlbnRpYWwgZm9yIHNldmVyYWwgcmVhc29ucywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogdmVyaWZ5aW5nIGNhcnJ5LWZvcndhcmQgYW1vdW50cywgY29tcGFyaW5nIHllYXItb3Zlci15ZWFyIGluY29tZSBhbmQgZGVkdWN0aW9ucywgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cy48L3A+XHJcbiAgICA8cD5UbyBmYWNpbGl0YXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5GZWRlcmFsIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+U3RhdGUgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+QW55IDxzdHJvbmc+bm90aWNlcyBvciBhbWVuZG1lbnRzPC9zdHJvbmc+IHJlbGF0ZWQgdG8geW91ciBwcmlvciB5ZWFyIHRheCByZXR1cm5zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IGRpZmZpY3VsdHkgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGxldCB1cyBrbm93IGFzIHNvb24gYXMgcG9zc2libGUgc28gd2UgY2FuIGRpc2N1c3MgYWx0ZXJuYXRpdmUgc29sdXRpb25zLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gUHJvdmlkaW5nIHRoZXNlIHdpbGwgZW5hYmxlIHVzIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIHdpdGhvdXQgZGVsYXkuPC9wPmAsXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYERldGVybWluaW5nIEVsaWdpYmlsaXR5IGZvciBTdGF0dXRvcnkgRmlsaW5nIEV4dGVuc2lvbnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHlvdSBxdWFsaWZ5IGZvciBzdGF0dXRvcnkgZmlsaW5nIGV4dGVuc2lvbnMgZm9yIHlvdXIgdGF4IHJldHVybnMsIHdlIHJlcXVpcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB5b3UuIFBsZWFzZSBzZWUgYmVsb3cgdGhlIGNhdGVnb3JpZXMgb2YgaW5mb3JtYXRpb24gbmVlZGVkIGJhc2VkIG9uIGRpZmZlcmVudCBlbGlnaWJpbGl0eSBjcml0ZXJpYTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBEaXNhc3RlciBBcmVhczwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9mIHlvdXIgcHJpbWFyeSByZXNpZGVuY2UgbG9jYXRpb24gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIHJlY2VpdmVkIHJlZ2FyZGluZyBkaXNhc3RlciBkZWNsYXJhdGlvbnMgaW4geW91ciBhcmVhLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5MaXZpbmcgQWJyb2FkPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiByZXNpZGVuY2Ugb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcyBmb3IgbW9yZSB0aGFuIDMzMCBmdWxsIGRheXMgd2l0aGluIGEgMTItbW9udGggcGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHlvdXIgcGh5c2ljYWwgcHJlc2VuY2Ugb3IgYm9uYSBmaWRlIHJlc2lkZW5jZSBpbiBhIGZvcmVpZ24gY291bnRyeS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWN0aXZlIE1pbGl0YXJ5PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIGluZGljYXRpbmcgYWN0aXZlIGR1dHkgc3RhdHVzLCBpbmNsdWRpbmcgZGF0ZXMgb2Ygc2VydmljZSB3aXRoaW4gdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYXBwbGljYWJsZSwgb3JkZXJzIGZvciBvdmVyc2VhcyBkZXBsb3ltZW50LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Db21iYXQgWm9uZTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+T2ZmaWNpYWwgb3JkZXJzIGRlbW9uc3RyYXRpbmcgeW91ciBkZXBsb3ltZW50IHRvIGEgY29tYmF0IHpvbmUsIGluY2x1ZGluZyB0aGUgc3BlY2lmaWMgZGF0ZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgcmVsZXZhbnQgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIERlZmVuc2Ugb3Igb3RoZXIgb2ZmaWNpYWwgYm9kaWVzIHJlZ2FyZGluZyB5b3VyIHNlcnZpY2UgaW4gYSBjb21iYXQgem9uZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBhY2N1cmF0ZSBhbmQgdGltZWx5IHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRlcGVuZGVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlcXVlc3QgZm9yIERlcGVuZGVudCBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBkZXBlbmRlbnRzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFwcGx5aW5nIHRoZSBtb3N0IGJlbmVmaWNpYWwgZGVwZW5kZW5jeSB0ZXN0cywgaW5jbHVkaW5nIHF1YWxpZmljYXRpb25zIGZvciBIZWFkIG9mIEhvdXNlaG9sZCAoSE9IKSwgQ2hpbGQgVGF4IENyZWRpdCwgYW5kIG90aGVyIHJlbGF0ZWQgYmVuZWZpdHMuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBmb3IgZWFjaCBvZiB5b3VyIGNsYWltZWQgZGVwZW5kZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RnVsbCBOYW1lOjwvc3Ryb25nPiBUaGUgY29tcGxldGUgbGVnYWwgbmFtZSBvZiB0aGUgZGVwZW5kZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U29jaWFsIFNlY3VyaXR5IE51bWJlciAoU1NOKSBvciBUYXhwYXllciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKFRJTik6PC9zdHJvbmc+IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQmlydGg6PC9zdHJvbmc+IEhlbHBzIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgY2VydGFpbiBjcmVkaXRzIGxpa2UgdGhlIENoaWxkIFRheCBDcmVkaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGlvbnNoaXAgdG8gWW91Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkZXBlbmRlbnQncyByZWxhdGlvbnNoaXAgKHNvbiwgZGF1Z2h0ZXIsIHN0ZXBjaGlsZCwgZm9zdGVyIGNoaWxkLCBicm90aGVyLCBzaXN0ZXIsIGV0Yy4pIHRvIHlvdS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlc2lkZW5jeTo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGxpdmVkIHdpdGggeW91IGZvciBtb3JlIHRoYW4gaGFsZiB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZpbmFuY2lhbCBTdXBwb3J0Ojwvc3Ryb25nPiBDb25maXJtIHlvdSBwcm92aWRlZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgZGVwZW5kZW504oCZcyBmaW5hbmNpYWwgc3VwcG9ydCBmb3IgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5DaXRpemVuc2hpcDo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGlzIGEgVS5TLiBjaXRpemVuLCBVLlMuIG5hdGlvbmFsLCBvciBhIHJlc2lkZW50IGFsaWVuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IEluZGljYXRlIHdoZXRoZXIgdGhlIGRlcGVuZGVudCBpcyBtYXJyaWVkIGFuZCwgaWYgc28sIHdoZXRoZXIgdGhleSBhcmUgZmlsaW5nIGpvaW50bHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgSW5mb3JtYXRpb246PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIHByb3ZpZGUgZGV0YWlscyByZWdhcmRpbmcgYW55IGluY29tZSB0aGUgZGVwZW5kZW50IG1heSBoYXZlIGVhcm5lZCBvciByZWNlaXZlZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgeW91IHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uIHRvIGF2b2lkIGFueSBkZWxheXMgaW4gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciB0YXggcmV0dXJuLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSGVhZCBvZiBIb3VzZWhvbGRcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkhlYWQgb2YgSG91c2Vob2xkIEZpbGluZ1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIGFuZCBjb21wbGlhbnQgdGF4IGZpbGluZyB1bmRlciB0aGUgXCJIZWFkIG9mIEhvdXNlaG9sZFwiIHN0YXR1cywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBzdGF0dXMgY2FuIHByb3ZpZGUgc2lnbmlmaWNhbnQgdGF4IGJlbmVmaXRzLCBhbmQgaXQgaXMgY3J1Y2lhbCB0aGF0IGFsbCBJUlMgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFBsZWFzZSBwcm92aWRlOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBDb25maXJtYXRpb24gb2YgeW91ciBtYXJpdGFsIHN0YXR1cyBhcyBvZiB0aGUgbGFzdCBkYXkgb2YgdGhlIHRheCB5ZWFyIChlLmcuLCBzaW5nbGUsIGRpdm9yY2VkLCBsZWdhbGx5IHNlcGFyYXRlZCkuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkhvdXNlaG9sZCBFeHBlbnNlczo8L3N0cm9uZz4gRGV0YWlsZWQgcmVjb3JkcyBpbmRpY2F0aW5nIHRoYXQgeW91IHBhaWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvc3RzIG9mIGtlZXBpbmcgdXAgYSBob21lIGZvciB0aGUgdGF4IHllYXIuIFRoaXMgaW5jbHVkZXMgcmVudCwgbW9ydGdhZ2UgaW50ZXJlc3QsIHByb3BlcnR5IHRheGVzLCB1dGlsaXRpZXMsIHJlcGFpcnMsIG1haW50ZW5hbmNlLCBhbmQgZ3JvY2VyaWVzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5RdWFsaWZ5aW5nIFBlcnNvbjo8L3N0cm9uZz4gSW5mb3JtYXRpb24gb24gdGhlIHF1YWxpZnlpbmcgcGVyc29uKHMpIHdobyBsaXZlZCB3aXRoIHlvdSBpbiB0aGUgaG9tZSBmb3IgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIHllYXIsIGV4Y2VwdCBmb3IgdGVtcG9yYXJ5IGFic2VuY2VzIHN1Y2ggYXMgc2Nob29sLiBQbGVhc2UgaW5jbHVkZTpcclxuICAgICAgPHVsPlxyXG4gICAgICA8bGk+RnVsbCBuYW1lIGFuZCByZWxhdGlvbnNoaXAgdG8geW91IChlLmcuLCBjaGlsZCwgcGFyZW50LCBzaWJsaW5nKS48L2xpPlxyXG4gICAgICA8bGk+RHVyYXRpb24gb2YgcmVzaWRlbmN5IGF0IHlvdXIgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT5TdXBwb3J0aW5nIGRvY3VtZW50cyAoYmlydGggY2VydGlmaWNhdGVzLCBzY2hvb2wgcmVjb3JkcywgZXRjLikgcHJvdmluZyB0aGUgcmVzaWRlbmN5IGFuZCByZWxhdGlvbnNoaXAuPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIFN1cHBvcnQ6PC9zdHJvbmc+IEFueSBmdXJ0aGVyIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB5b3VyIGNsYWltIGZvciB0aGUgSGVhZCBvZiBIb3VzZWhvbGQgZmlsaW5nIHN0YXR1cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgcHJvdmlkaW5nIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIHlvdXIgYmVuZWZpdCBhbmQgdG8gY29tcGx5IHdpdGggdGF4IGxhd3MuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZGV0YWlscywgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5mb3JtYXRpb24gb24gUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBzcG91c2UgaXMgbm90IGEgVS5TLiBjaXRpemVuLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB5b3VyIHRheCBzdGF0dXMsIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lY2Vzc2FyeSBUYXggUmVzaWRlbmN5IFRlc3RzLCB3aGljaCBpbmNsdWRlIHRoZSA8c3Ryb25nPkdyZWVuIENhcmQgVGVzdDwvc3Ryb25nPiBhbmQgdGhlIDxzdHJvbmc+U3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdDwvc3Ryb25nPi4gVGhpcyB3aWxsIGhlbHAgdXMgZW5zdXJlIHlvdXIgdGF4IHJldHVybnMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkgYW5kIGNvbXBseSB3aXRoIFUuUy4gcmVndWxhdGlvbnMuPC9wPlxyXG5cclxuICAgIDxwPlRvIHByb2NlZWQsIHdlIGtpbmRseSBhc2sgeW91IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+R3JlZW4gQ2FyZCBTdGF0dXM6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHlvdSBvciB5b3VyIHNwb3VzZSBoYXZlIGJlZW4gaXNzdWVkIGEgVS5TLiBncmVlbiBjYXJkIChMYXdmdWwgUGVybWFuZW50IFJlc2lkZW50IENhcmQpIGF0IGFueSBwb2ludCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJZiB5ZXMsIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSBncmVlbiBjYXJkIG9yIHRoZSBvZmZpY2lhbCBkb2N1bWVudCBjb25maXJtaW5nIHRoZSBzdGF0dXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEFycml2YWwgaW4gdGhlIFUuUy46PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlcyB3aGVuIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZmlyc3QgYXJyaXZlZCBpbiB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VHJhdmVsIEhpc3Rvcnk6PC9zdHJvbmc+IEEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgdGhlIGRhdGVzIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZW50ZXJlZCBhbmQgbGVmdCB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHRoZSBTdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmlzYSBUeXBlOjwvc3Ryb25nPiBJZiB5b3Ugb3IgeW91ciBzcG91c2UgYXJlIG9uIGEgdmlzYSwgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgYW5kIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSB2aXNhLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBUYXggRmlsaW5nczo8L3N0cm9uZz4gQ29waWVzIG9mIGxhc3QgeWVhcidzIHRheCByZXR1cm5zLCBpZiBhcHBsaWNhYmxlLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBwcm92aWRlIGNvbnRleHQgYW5kIGhlbHAgZGV0ZXJtaW5lIHJlc2lkZW5jeSBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LjwvbGk+XHJcbiAgICA8L29sPlxyXG5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUuIFlvdSBjYW4gc2VuZCB0aGVtIHRvIHVzIHZpYSBlbWFpbCBvciB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC4gRm9yIGFueSBxdWVzdGlvbnMgb3IgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPlxyXG5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSB3aXRoIHlvdXIgdGF4IHByZXBhcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkpvaW50IFRheCBSZWxpZWZcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkpvaW50IFRheCBSZWxpZWYgRGV0YWlsc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gYXNzaXN0IHlvdSBlZmZlY3RpdmVseSB3aXRoIHlvdXIgcmVxdWVzdCBmb3Igam9pbnQgdGF4IHJlbGllZiwgd2UgbmVlZCB0byBjb2xsZWN0IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgeW91ciBzaXR1YXRpb24gdGhvcm91Z2hseS4gVGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBtb3N0IHN1aXRhYmxlIHR5cGUgb2YgcmVsaWVmIGZvciB5b3VyIGNpcmN1bXN0YW5jZXMsIHdoaWNoIG1heSBpbmNsdWRlIElubm9jZW50IFNwb3VzZSBSZWxpZWYsIEluanVyZWQgU3BvdXNlIEFsbG9jYXRpb24sIFNlcGFyYXRpb24gb2YgTGlhYmlsaXR5IFJlbGllZiwgb3IgRXF1aXRhYmxlIFJlbGllZi4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db21wbGV0ZSBUYXggUmV0dXJuczo8L3N0cm9uZz4gQ29waWVzIG9mIGFsbCB0YXggcmV0dXJucyBmb3IgdGhlIHllYXJzIHlvdSBhcmUgcmVxdWVzdGluZyByZWxpZWYuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGV0YWlsZWQgU3RhdGVtZW50Ojwvc3Ryb25nPiBBIHdyaXR0ZW4gc3RhdGVtZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBiZWxpZXZlIHlvdSBxdWFsaWZ5IGZvciByZWxpZWYsIGluY2x1ZGluZyBhbnkgc3BlY2lmaWMgZXZlbnRzIG9yIGNpcmN1bXN0YW5jZXMgeW91IHdhbnQgdXMgdG8gY29uc2lkZXIuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIERvY3VtZW50YXRpb246PC9zdHJvbmc+IFByb29mIG9mIHlvdXIgY3VycmVudCBpbmNvbWUgYW5kIHRoYXQgb2YgeW91ciBzcG91c2UgaWYgYXBwbGljYWJsZSwgc3VjaCBhcyByZWNlbnQgcGF5IHN0dWJzLCBXLTIgZm9ybXMsIG9yIG90aGVyIGluY29tZSBzdGF0ZW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIEZpbmFuY2lhbCBTaXR1YXRpb246PC9zdHJvbmc+IERvY3VtZW50cyBzaG93aW5nIHlvdXIgY3VycmVudCBmaW5hbmNpYWwgc2l0dWF0aW9uLCBpbmNsdWRpbmcgYmFuayBzdGF0ZW1lbnRzLCBtb250aGx5IGJpbGxzLCBhbmQgYW55IG90aGVyIGxpYWJpbGl0aWVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgTWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIGxlZ2FsIGRvY3VtZW50cyByZWxhdGVkIHRvIHNlcGFyYXRpb24sIGRpdm9yY2UsIG9yIGFubnVsbWVudC48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyB0aGF0IHByb3ZlIHdoZXJlIGVhY2ggb2YgeW91IGhhcyBsaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFycyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBqb2ludCB0YXggbGlhYmlsaXR5LCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFybHkgbGVnaWJsZS4gWW91IG1heSBzZW5kIHRoZW0gdmlhIGVtYWlsLCBvciB1cGxvYWQuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCB0byBwcm92aWRlLCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgY29tcGxleCwgYnV0IHdlIGFyZSBoZXJlIHRvIGd1aWRlIHlvdSB0aHJvdWdoIGl0LiBPdXIgZ29hbCBpcyB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHNpdHVhdGlvbiB0byBhZHZvY2F0ZSBmb3IgdGhlIG1vc3QgZmF2b3JhYmxlIG91dGNvbWUgb24geW91ciBiZWhhbGYuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCByZXF1aXJlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGFsbCB5b3VyIHNvdXJjZXMgb2YgaW5jb21lLiBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgeW91ciAxMDk5IE5FQyBJbmNvbWUuIFRoZSAxMDk5LU5FQyBmb3JtIGlzIGNydWNpYWwgZm9yIGNvcnJlY3RseSByZXBvcnRpbmcgeW91ciBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uLjwvcD5cclxuICAgIDxwPlRvIGVuc3VyZSBhIHRob3JvdWdoIGFuZCBhY2N1cmF0ZSB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHVzIHdpdGggdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkFsbCAxMDk5LU5FQyBmb3JtczwvYj4geW91IHJlY2VpdmVkIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPGI+YWRkaXRpb25hbCBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uPC9iPiBub3QgcmVwb3J0ZWQgb24gYSAxMDk5LU5FQyBmb3JtLjwvbGk+XHJcbiAgICAgICAgPGxpPkluZm9ybWF0aW9uIHJlZ2FyZGluZyA8Yj5leHBlbnNlcyByZWxhdGVkIHRvIHlvdXIgMTA5OSBORUMgaW5jb21lPC9iPiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYWxsIHlvdXIgMTA5OS1ORUMgZm9ybXMsIHBsZWFzZSBsZXQgdXMga25vdywgYW5kIHByb3ZpZGUgYW4gZXN0aW1hdGUgb2Ygd2hlbiB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgdGhlbS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgYWNjdXJhdGVseSByZXBvcnRpbmcgeW91ciBpbmNvbWUgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBwZW5hbHRpZXMgb3IgYXVkaXRzIGZyb20gdGhlIElSUy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGRpcmVjdGx5IHNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgcHJvY2Vzc2VkIGVmZmljaWVudGx5IGFuZCBhY2N1cmF0ZWx5LjwvcD5cclxuYFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2YgU2NoZWR1bGUgSyBpbmNvbWUgZm9yIHRoZSBjdXJyZW50IHRheCB5ZWFyLiBJbiBvcmRlciB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgd2UgZ2F0aGVyIGFsbCBuZWNlc3NhcnkgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gdGhpcyBpbmNvbWUuPC9wPlxyXG4gICAgPHA+SWYgd2UgYXJlIHByZXBhcmluZyB5b3VyIGJ1c2luZXNzIHJldHVybiwgcmVzdCBhc3N1cmVkIHRoYXQgd2Ugd2lsbCBnZW5lcmF0ZSB0aGUgYXBwbGljYWJsZSBTY2hlZHVsZSBLLTEocykgZm9yIHlvdXIgYnVzaW5lc3MgaW50ZXJlc3RzLiBIb3dldmVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBjb2xsZWN0IGNvcGllcyBvZiA8c3Ryb25nPmFsbCBvdGhlciBTY2hlZHVsZSBLLTFzPC9zdHJvbmc+IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCB0byBpbmNvcnBvcmF0ZSBpbnRvIHlvdXIgcGVyc29uYWwgdGF4IHJldHVybi48L3A+ICBcclxuICAgIDxoMz5TcGVjaWZpYyBEb2N1bWVudCBSZXF1ZXN0OjwvaDM+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkFueSBhbmQgYWxsIFNjaGVkdWxlIEstMShzKSB5b3UgaGF2ZSByZWNlaXZlZCBmcm9tOjwvbGk+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+UGFydG5lcnNoaXBzPC9saT5cclxuICAgICAgICAgICAgPGxpPlMgQ29ycG9yYXRpb25zPC9saT5cclxuICAgICAgICAgICAgPGxpPkVzdGF0ZSBvciBUcnVzdHM8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBkb2N1bWVudHMgYXJlIDxzdHJvbmc+Y2xlYXIgYW5kIGxlZ2libGU8L3N0cm9uZz4gdG8gcHJldmVudCBhbnkgZGVsYXlzIGluIHByb2Nlc3NpbmcgeW91ciByZXR1cm4uIFlvdSBtYXkgc3VibWl0IHRoZXNlIGRvY3VtZW50cyB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgY29udGFjdCB1cyB0byBtYWtlIGFsdGVybmF0aXZlIGFycmFuZ2VtZW50cyBpZiBuZWNlc3NhcnkuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFueSBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4ZXMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIHNlbGYtZW1wbG95bWVudCBpbmNvbWUgbm90IHJlcG9ydGVkIHRocm91Z2ggMTA5OS1ORUMgZm9ybXMgb3IgYSBTY2hlZHVsZSBLLTEuIFRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgYWNjdXJhdGUgYW5kIG1heGltaXplcyB5b3VyIGJlbmVmaXRzLCBpdCdzIGNydWNpYWwgd2UgZ2F0aGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGVzZSBzb3VyY2VzIG9mIGluY29tZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHk6PC9zdHJvbmc+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIG5hdHVyZSBvZiBlYWNoIGFjdGl2aXR5IGZyb20gd2hpY2ggeW91IGRlcml2ZSBzZWxmLWVtcGxveW1lbnQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2Ygb3BlcmF0aW9uOjwvc3Ryb25nPiBGb3IgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHksIHNwZWNpZnkgdGhlIGRhdGVzIG9yIHJhbmdlIG9mIGRhdGVzIGR1cmluZyB3aGljaCB5b3UgZWFybmVkIGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIGluY29tZSBnZW5lcmF0ZWQ6PC9zdHJvbmc+IEZvciBlYWNoIGFjdGl2aXR5LCBwcm92aWRlIHRoZSB0b3RhbCBhbW91bnQgb2YgaW5jb21lIGVhcm5lZCBiZWZvcmUgYW55IGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZXMgaW5jdXJyZWQ6PC9zdHJvbmc+IExpc3QgYWxsIGV4cGVuc2VzIHJlbGF0ZWQgdG8gZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHkuIFBsZWFzZSBjYXRlZ29yaXplIHRoZXNlIGV4cGVuc2VzIChlLmcuLCBvZmZpY2Ugc3VwcGxpZXMsIHRyYXZlbCwgYWR2ZXJ0aXNpbmcpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvciBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZXhpc3RpbmcgcmVjb3JkcyBvciBkb2N1bWVudGF0aW9uIHRoYXQgY29ycm9ib3JhdGUgeW91ciBpbmNvbWUgYW5kIGV4cGVuc2VzLCBzdWNoIGFzIGJhbmsgc3RhdGVtZW50cywgcmVjZWlwdHMsIGludm9pY2VzLCBvciBjb250cmFjdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBhbW91bnQgb2YgdGF4IHlvdSBvd2UgYW5kIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyB0aGF0IGNhbiBtaW5pbWl6ZSB5b3VyIHRheCBsaWFiaWxpdHkuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIHRpbWVseSBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBhbmQgd2UgYXJlIGhlcmUgdG8gaGVscCBldmVyeSBzdGVwIG9mIHRoZSB3YXkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VGhhbmsgeW91IGZvciBlbnRydXN0aW5nIHVzIHdpdGggdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIEFzIHBhcnQgb2Ygb3VyIGNvbXByZWhlbnNpdmUgcmV2aWV3IGFuZCBpbiBvdXIgcXVlc3QgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmdzLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgd2FnZXMgZnJvbSBlbXBsb3ltZW50IG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuPC9wPlxyXG4gICAgPHA+VG8gcHJvY2VlZCBlZmZlY3RpdmVseSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5XLTIgRm9ybXM6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGNvcGllcyBvZiBhbGwgVy0yIGZvcm1zIHJlY2VpdmVkIGZyb20geW91ciBlbXBsb3llcnMuIFRoaXMgaW5jbHVkZXMgd2FnZXMgZWFybmVkIGZyb20gYWxsIHNvdXJjZXMsIG5vdCBqdXN0IGZyb20gdGhlIFMtQ29ycG9yYXRpb24sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WZXJpZmljYXRpb24gb2YgUy1Db3Jwb3JhdGlvbiBXYWdlczo8L3N0cm9uZz4gSWYgd2UgYXJlIGFsc28gaGFuZGxpbmcgeW91ciBidXNpbmVzcyB0YXhlcyBmb3IgYW4gUy1Db3Jwb3JhdGlvbiwgd2UgbGlrZWx5IGhhdmUgdGhlIHdhZ2UgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50aXR5LiBIb3dldmVyLCBmb3IgdGhvcm91Z2huZXNzIGFuZCBjb21wbGlhbmNlLCBwbGVhc2UgY29uZmlybSBpZiB0aGUgd2FnZXMgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiBhcmUgZnVsbHkgcmVwcmVzZW50ZWQgaW4gdGhlIGRvY3VtZW50cyB3ZSBhbHJlYWR5IGhvbGQuIFRoaXMgd2lsbCBoZWxwIHVzIHZlcmlmeSB0aGF0IGFsbCBpbmNvbWUgaXMgYWNjdXJhdGVseSByZXBvcnRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgSW5jb21lIERvY3VtZW50czo8L3N0cm9uZz4gU2hvdWxkIHlvdSBoYXZlIG90aGVyIHNvdXJjZXMgb2Ygd2FnZSBpbmNvbWUgKGUuZy4sIGNvbnRyYWN0IHdvcmssIGJvbnVzZXMsIGV0Yy4pIG5vdCBjb3ZlcmVkIGJ5IHRoZSBXLTIgZm9ybXMgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIGFueSAxMDk5IGZvcm1zIG9yIG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5Zb3VyIGNvb3BlcmF0aW9uIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIEtpbmRseSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJvcGVydHkgb3IgU2VydmljZXMgTGlldSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUHJvcGVydHkvU2VydmljZXMgaW4gTGlldSBvZiBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIHByb3BlcnR5IGFuZC9vciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHRyYWRpdGlvbmFsIHdhZ2VzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgdHlwZSBvZiBjb21wZW5zYXRpb24gY29uc3RpdHV0ZXMgdGF4YWJsZSBpbmNvbWUgYW5kIG11c3QgYmUgYWNjdXJhdGVseSByZXBvcnRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIElSUyByZWd1bGF0aW9ucy48L3A+XHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IHJlY29nbml6ZSBhbmQgcmVwb3J0IHRoZXNlIGl0ZW1zIGFzIHRheGFibGUgaW5jb21lLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgUHJvcGVydHkgb3IgU2VydmljZXM6PC9zdHJvbmc+IFByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBhbnkgcHJvcGVydHkgb3Igc2VydmljZXMgeW91IHJlY2VpdmVkLiBQbGVhc2UgaW5jbHVkZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHByb3BlcnR5IG9yIHRoZSBzY29wZSBvZiBzZXJ2aWNlcyByZW5kZXJlZC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RmFpciBNYXJrZXQgVmFsdWUgYXQgVGltZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBJbmRpY2F0ZSB0aGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBwcm9wZXJ0eSBvciBzZXJ2aWNlIGF0IHRoZSB0aW1lIHlvdSByZWNlaXZlZCBpdC4gSWYgeW91IGhhdmUgYW55IGFwcHJhaXNhbHMgb3IgZG9jdW1lbnRzIHRvIHN1cHBvcnQgdGhlIEZNViwgcGxlYXNlIGluY2x1ZGUgdGhlbS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvciBBZ3JlZW1lbnRzOjwvc3Ryb25nPiBQcm92aWRlIGFueSBkb2N1bWVudGF0aW9uIG9yIHdyaXR0ZW4gYWdyZWVtZW50cyB0aGF0IGRldGFpbCB0aGUgYXJyYW5nZW1lbnQgZm9yIHJlY2VpdmluZyBwcm9wZXJ0eSBvciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHdhZ2VzLiBUaGlzIGNhbiBpbmNsdWRlIGNvbnRyYWN0cywgZW1haWxzLCBvciBhbnkgZm9ybSBvZiBjb21tdW5pY2F0aW9uIHRoYXQgb3V0bGluZXMgdGhlIGFncmVlbWVudC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkYXRlKHMpIG9uIHdoaWNoIHlvdSByZWNlaXZlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkVtcGxveWVyL1Byb3ZpZGVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBQcm92aWRlIHRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IHByb3ZpZGVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgcHJvdmlkZWQgaW5mb3JtYXRpb24gaXMgYXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGFzIHBvc3NpYmxlLiBJbmNvbXBsZXRlIG9yIGluYWNjdXJhdGUgaW5mb3JtYXRpb24gbWF5IGxlYWQgdG8gZGVsYXlzIGluIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm4gb3IgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIGFuZCBjcml0aWNhbCBmb3IgdGhlIHRpbWVseSBhbmQgYWNjdXJhdGUgY29tcGxldGlvbiBvZiB5b3VyIHRheCByZXR1cm4uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGljZWQgeW91J3ZlIG1lbnRpb25lZCBiZWluZyByZWltYnVyc2VkIGZvciBjZXJ0YWluIGV4cGVuc2VzIHVuZGVyIGFuIEVtcGxveWVlIEFjY291bnRhYmxlIFBsYW4uIFRvIGFjY3VyYXRlbHkgYWNjb3VudCBmb3IgdGhlc2UgcmVpbWJ1cnNlbWVudHMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgdGhlIGZvcm1hbCB3cml0dGVuIEFjY291bnRhYmxlIFBsYW4gcHJvdmlkZWQgYnkgeW91ciBlbXBsb3llci4gVGhpcyBzaG91bGQgb3V0bGluZSB0aGUgZXhwZW5zZSBhbGxvd2FuY2UgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHJlaW1idXJzZW1lbnQgcG9saWN5LjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIGZyb20geW91ciBlbXBsb3llciBjb25maXJtaW5nIHlvdXIgcGFydGljaXBhdGlvbiBpbiB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIHRoZSBleHBlbnNlcyByZWltYnVyc2VkIHVuZGVyIHRoZSBwbGFuLCBpbmNsdWRpbmcgZGF0ZXMsIGFtb3VudHMsIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBleHBlbnNlIChyZWNlaXB0cyBvciBpbnZvaWNlcykgcHJvdmlkZWQgdG8geW91ciBlbXBsb3llciBmb3IgcmVpbWJ1cnNlbWVudCB1bmRlciB0aGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSByZWltYnVyc2VtZW50cyBvciB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBzZW5kIHVzIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgd2UgY2FuIHByb2NlZWQgc21vb3RobHkgd2l0aCB5b3VyIHRheCByZXR1cm4gcHJlcGFyYXRpb24uIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGBcclxuICAgIDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBlbnN1cmluZyBhbGwgZm9ybXMgb2YgY29tcGVuc2F0aW9uLCBpbmNsdWRpbmcgdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMsIGFyZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIG9uIHlvdXIgdGF4IHJldHVybnMuIEJhc2VkIG9uIG91ciBwcmV2aW91cyBjb21tdW5pY2F0aW9uLCBpdCBhcHBlYXJzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBiZW5lZml0cyB0aGF0IG5lZWQgdG8gYmUgcmV2aWV3ZWQgZnVydGhlci4gVG8gYXNzaXN0IHlvdSBwcm9wZXJseSwgd2UgcmVxdWVzdCB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGRldGFpbHM6PC9wPlxyXG48b2w+XHJcbiAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0IHJlY2VpdmVkOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb21wYW55IGNhcnMsIG1lbWJlcnNoaXBzLCBlZHVjYXRpb25hbCBhc3Npc3RhbmNlLCBldGMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIElmIHlvdSdyZSB1bnN1cmUsIHBsZWFzZSBwcm92aWRlIGFuIGVzdGltYXRlIGFuZCB0aGUgYmFzaXMgZm9yIHRoaXMgZXN0aW1hdGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5BbnkgYW1vdW50cyBjb250cmlidXRlZCBieSB5b3U6PC9zdHJvbmc+IElmIHlvdSBtYWRlIGNvbnRyaWJ1dGlvbnMgdG93YXJkIHRoZSBjb3N0IG9mIGFueSBiZW5lZml0LCBwbGVhc2Ugc3BlY2lmeSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5EYXRlczo8L3N0cm9uZz4gVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIHNwZWNpZmljIGRhdGVzIGlmIHBvc3NpYmxlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBlbXBsb3llcihzKSBwcm92aWRpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuPC9vbD5cclxuPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSB0YXhhYmxlIHZhbHVlIG9mIHRoZXNlIGZyaW5nZSBiZW5lZml0cyBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIElSUyByZWd1bGF0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBpZGVudGlmaWVkIHBvdGVudGlhbCBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgdGhhdCBtYXkgYXBwbHkgdG8geW91ciBzaXR1YXRpb24uIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIG9wdGltaXplIHlvdXIgdGF4IG91dGNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgeW91IG1heSBoYXZlIHJlY2VpdmVkOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBtYXkgaW5jbHVkZSBoZWFsdGggc2F2aW5ncyBhY2NvdW50cyAoSFNBcyksIGVtcGxveWVlIGRpc2NvdW50cywgcHVibGljIHRyYW5zaXQgcGFzc2VzLCBldGMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBGb3Igbm9uLXRheGFibGUgYmVuZWZpdHMsIHRoaXMgaGVscHMgaW4gcmVjb3JkLWtlZXBpbmcgYW5kIGNvbmZpcm1pbmcgZXhlbXB0aW9uIHN0YXR1cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db250cmlidXRpb24gYW1vdW50cywgaWYgYW55Ojwvc3Ryb25nPiBJZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0b3dhcmRzIGFueSBvZiB0aGVzZSBiZW5lZml0cywgaW5kaWNhdGUgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIGNvcnJvYm9yYXRlIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiByZWNlaXB0Ojwvc3Ryb25nPiBUaGUgdGltZWZyYW1lIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgYXMgcHJlY2lzZSBkYXRlcyBhcyBwb3NzaWJsZS48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5FbXBsb3llciBvciBwcm92aWRlciBpbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgZW1wbG95ZXIocykgb3IgdGhpcmQtcGFydHkgcHJvdmlkZXIocykgb2ZmZXJpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5HYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiBoZWxwcyBlbnN1cmUgdGhhdCB5b3VyIHRheCBmaWxpbmdzIGFyZSBhY2N1cmF0ZSBhbmQgdGhhdCB5b3UgcmVjZWl2ZSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2Ygbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzLiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgaWRlbnRpZnlpbmcgb3IgZG9jdW1lbnRpbmcgdGhlc2UgYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIGFzIHdlIHN0cml2ZSB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiBlZmZpY2llbnRseS4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlZldGVyYW4gQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlZBIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgb25nb2luZyBlZmZvcnQgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIFZldGVyYW4gQmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIGtpbmRseSByZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIHRoaXMgdGFzaywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgZGV0YWlsZWQgbGlzdCBvZiB0aGUgVmV0ZXJhbiBCZW5lZml0cyB5b3UgcmVjZWl2ZWQsIGluY2x1ZGluZyBhbnkgZGlzYWJpbGl0eSwgZWR1Y2F0aW9uLCBhbmQgcGVuc2lvbiBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5PZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIHR5cGUgb2YgYmVuZWZpdCByZWNlaXZlZCwgc3VjaCBhcyBhd2FyZCBsZXR0ZXJzIG9yIHN0YXRlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzIChWQSkuPC9saT5cclxuICAgICAgICA8bGk+QW55IGNvcnJlc3BvbmRlbmNlIGZyb20gdGhlIFZBIG9yIG90aGVyIHJlbGV2YW50IGVudGl0aWVzIHJlZ2FyZGluZyB0aGUgdGF4YWJpbGl0eSBvZiB5b3VyIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPlRvdGFsIGFtb3VudCByZWNlaXZlZCBmb3IgZWFjaCBiZW5lZml0IHRocm91Z2hvdXQgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBvdGhlciBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBuYXR1cmUgYW5kIGFtb3VudCBvZiB5b3VyIFZldGVyYW4gQmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHdoaWNoIGJlbmVmaXRzIGFyZSB0YXhhYmxlIGFuZCBlbnN1cmluZyB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBQbGVhc2Ugc3VibWl0IHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgbWVudGlvbiBvZiByZWNlaXZpbmcgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSB0aGVzZSBwcm9jZWVkcyBhcmUgaW5kZWVkIG5vbi10YXhhYmxlLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRvY3VtZW50YXRpb24gb3Igc3RhdGVtZW50cyBwZXJ0YWluaW5nIHRvIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGluc3VyZWQgaW5kaXZpZHVhbCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdS48L2xpPlxyXG4gICAgICA8bGk+QW55IGNvbW11bmljYXRpb25zIG9yIGxldHRlcnMgZnJvbSB0aGUgaW5zdXJhbmNlIGNvbXBhbnkgcmVnYXJkaW5nIHRoZSB0YXggc3RhdHVzIG9mIHRoZXNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5EZXRhaWxzIHJlZ2FyZGluZyBpZiB0aGUgcG9saWN5IHdhcyBwdXJjaGFzZWQgd2l0aCBhZnRlci10YXggb3IgcHJlLXRheCBkb2xsYXJzLjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhbnkgcG9ydGlvbiBvZiB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudCB3YXMgYW4gaW52ZXN0bWVudCByZXR1cm4sIHBsZWFzZSBwcm92aWRlIHJlbGF0ZWQgZG9jdW1lbnRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBndWFyYW50ZWUgdGhlIGFjY3VyYWN5IGFuZCBpbnRlZ3JpdHkgb2YgeW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFdlJ3JlIGhlcmUgdG8gaGVscCE8L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHdlIHByb2NlZWQgd2l0aCBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucywgd2Ugbm90ZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgdW5kZXIgdGhlIGRpZmZpY3VsdHktb2YtY2FyZSBwcm92aXNpb25zIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBtYXhpbWl6ZSB5b3VyIGVsaWdpYmxlIGluY29tZSBleGNsdXNpb25zLCBpdCdzIGNydWNpYWwgd2UgdmVyaWZ5IGNlcnRhaW4gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgbGl2aW5nIGFycmFuZ2VtZW50LCBhcyBwZXIgSVJTIGd1aWRlbGluZXMuPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBwYXltZW50cyBxdWFsaWZ5IGZvciBpbmNvbWUgZXhjbHVzaW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyBwcm92aW5nIHRoYXQgeW91IGFuZCB0aGUgaW5kaXZpZHVhbCB1bmRlciBjYXJlIHNoYXJlZCB0aGUgc2FtZSBwcmltYXJ5IHJlc2lkZW5jZSBkdXJpbmcgdGhlIHJlY2VpcHQgb2YgdGhlc2UgcGF5bWVudHMuIFRoaXMgY291bGQgaW5jbHVkZSB1dGlsaXR5IGJpbGxzLCBhIHJlbnRhbCBhZ3JlZW1lbnQsIG9yIGhvbWVvd25lcidzIGluc3VyYW5jZSBpbiBib3RoIG9mIHlvdXIgbmFtZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIHRoZSBDYXJlIFJlY2lwaWVudDo8L3N0cm9uZz4gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlcnNvbiByZWNlaXZpbmcgY2FyZSwgaW5jbHVkaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UgYW5kIGFueSBkb2N1bWVudGF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGVpciBuZWVkIGZvciBjYXJlIChlLmcuLCBhIGxldHRlciBmcm9tIGEgaGVhbHRoY2FyZSBwcm92aWRlcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFJlY29yZHM6PC9zdHJvbmc+IEFueSByZWNvcmRzIG9mIHRoZSBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgeW91IHJlY2VpdmVkLCBhcyB0aGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIGV4YWN0IGFtb3VudHMgYW5kIHRoZSBwZXJpb2RzIGNvdmVyZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgRm9ybWFsIEFncmVlbWVudHMgb3IgQ29udHJhY3RzOjwvc3Ryb25nPiBJZiB0aGVyZSB3YXMgYSBmb3JtYWwgYWdyZWVtZW50IG9yIGNvbnRyYWN0IGRldGFpbGluZyB0aGUgY2FyZSBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgdGhpcyBhcyB3ZWxsLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZSBjYXJlIGFycmFuZ2VtZW50IHdhcyBmYWNpbGl0YXRlZCB0aHJvdWdoIGEgc3RhdGUgb3IgdGhpcmQtcGFydHkgYWdlbmN5LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgd2UgY29tcGx5IHdpdGggdGF4aW5nIGF1dGhvcml0aWVzIHdoaWxlIGFjY3VyYXRlbHkgcmVmbGVjdGluZyB5b3VyIGZpbmFuY2VzLiBJZiBhbnkgb2YgdGhlc2UgcmVxdWlyZW1lbnRzIHBvc2UgYSBkaWZmaWN1bHR5IG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIE91ciBnb2FsIGlzIHRvIHN1cHBvcnQgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gV2UgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGVzZSBiZW5lZml0cyBhcmUgZWxpZ2libGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB5b3VyIGluY29tZSwgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgcGFpZC48L3A+XHJcbiAgICA8cD5LaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IG9mIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgc3RhdGVtZW50cyBvciBkb2N1bWVudGF0aW9uIHNob3dpbmcgdGhlIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvbiB3aG8gcGFpZCB0aGUgaW5zdXJhbmNlIHByZW1pdW1zICh5b3Ugb3IgeW91ciBlbXBsb3llcikuPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCB5b3UgcGFpZCB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBzdXBwb3J0aW5nIGRvY3VtZW50cyBmb3IgdGhlIHBheW1lbnRzIG1hZGUgYnkgeW91IChyZWNlaXB0cyBvciBiYW5rIHN0YXRlbWVudHMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91ciBlbXBsb3llciBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHBhaWQgYnkgeW91ciBlbXBsb3llciB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBkb2N1bWVudHMgaW5kaWNhdGluZyBlbXBsb3llciBjb250cmlidXRpb25zIChwYXkgc3R1YnMsIGVtcGxveWVyIGxldHRlcnMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGRldGVybWluZSB0aGUgdGF4YWJsZSBwb3J0aW9uLCBpZiBhbnksIG9mIHlvdXIgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMuIFByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgaGVscCB1cyBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZyBhbmQgcG90ZW50aWFsbHkgbG93ZXIgeW91ciB0YXhhYmxlIGluY29tZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlmIHdlIGNhbiBiZSBvZiBmdXJ0aGVyIGFzc2lzdGFuY2UuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gSW4gb3JkZXIgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIG5lZWQgYWRkaXRpb25hbCBkZXRhaWxzLiBUaGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cyBjYW4gZGVwZW5kIG9uIHdoZW4geW91IHRvb2sgcmV0aXJlbWVudCBkdWUgdG8gZGlzYWJpbGl0eS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHNvb24gYXMgcG9zc2libGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmV0aXJlbWVudDo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgeW91IHJldGlyZWQgZHVlIHRvIGRpc2FiaWxpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIERpc2FiaWxpdHkgUmV0aXJlbWVudDo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IGhhdmUgdGhhdCBjb25maXJtcyB5b3VyIHJldGlyZW1lbnQgd2FzIGR1ZSB0byBkaXNhYmlsaXR5LiBUaGlzIG1heSBpbmNsdWRlIGxldHRlcnMgZnJvbSB5b3VyIGVtcGxveWVyLCB0aGUgcmV0aXJlbWVudCBwbGFuLCBvciBtZWRpY2FsIHJlY29yZHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIEJlbmVmaXRzIFJlY2VpdmVkOjwvc3Ryb25nPiBTcGVjaWZpYyBhbW91bnRzIGFuZCB0aGUgc291cmNlIG9mIHRoZSBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxhdGVkIGRvY3VtZW50cyBzdWNoIGFzIHN0YXRlbWVudHMgb3Igbm90aWNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVy0yIG9yIDEwOTkgRm9ybXM6PC9zdHJvbmc+IElmIHlvdSByZWNlaXZlZCBhbnkgd2FnZXMgb3IgZGlzYWJpbGl0eSBwYXltZW50cyB0aGF0IHdlcmUgcmVwb3J0ZWQgb24gVy0yIG9yIDEwOTkgZm9ybXMgaW4gdGhlIHllYXIgb2YgeW91ciByZXRpcmVtZW50LCBwbGVhc2UgcHJvdmlkZSB0aGVzZSBmb3Jtcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cywgcGxlYXNlIGluY2x1ZGUgY29waWVzIG9mIHRoZXNlIGNvbW11bmljYXRpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhlIGFib3ZlIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBVbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgd2lsbCBhaWQgdXMgaW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGF4YWJpbGl0eSBhbmQgZW5zdXJpbmcgdGhhdCB5b3VyIHRheCBvYmxpZ2F0aW9ucyBhcmUgcHJlY2lzZWx5IGNhbGN1bGF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIFctMiB3YWdlcyBhcyBhIGNsZXJneSBtZW1iZXIuIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIHRvIHBvdGVudGlhbGx5IG1heGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgeW91ciBjb21wZW5zYXRpb24gcGFja2FnZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPlctMiBGb3JtOjwvYj4gSWYgbm90IGFscmVhZHkgcHJvdmlkZWQsIGluY2x1ZGUgYW55IFctMiBmb3JtcyBpc3N1ZWQgYnkgeW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24uPC9saT5cclxuICAgICAgICA8bGk+PGI+SG91c2luZyBBbGxvd2FuY2UgRG9jdW1lbnRhdGlvbjo8L2I+IERldGFpbGVkIHN0YXRlbWVudCBvciBsZXR0ZXIgZnJvbSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbiBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgZGVzaWduYXRlZCBhcyBob3VzaW5nIGFsbG93YW5jZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5TZWxmLUVtcGxveW1lbnQgVGF4OjwvYj4gQ29uZmlybWF0aW9uIG9uIHdoZXRoZXIgeW91IGhhdmUgdGFrZW4gYSB2b3cgb2YgcG92ZXJ0eSAoaWYgYXBwbGljYWJsZSksIG9yIGFueSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gb3B0aW5nIG91dCBvZiBzZWxmLWVtcGxveW1lbnQgdGF4LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkV4cGVuc2UgUmVpbWJ1cnNlbWVudHM6PC9iPiBEb2N1bWVudGF0aW9uIHNob3dpbmcgYW55IGV4cGVuc2UgcmVpbWJ1cnNlbWVudHMgcmVjZWl2ZWQgdW5kZXIgYW4gYWNjb3VudGFibGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5PdGhlciBDb21wZW5zYXRpb246PC9iPiBJbmZvcm1hdGlvbiBvbiBhbnkgb3RoZXIgY29tcGVuc2F0aW9uIHJlY2VpdmVkIGluIHlvdXIgY2FwYWNpdHkgYXMgY2xlcmd5LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGxvdmUgb2ZmZXJpbmdzLCBmZWVzIGZvciBzZXJ2aWNlcyAod2VkZGluZ3MsIGZ1bmVyYWxzLCBldGMuKSwgYW5kIHBhcnNvbmFnZSBhbGxvd2FuY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB5b3VyIGVhcm5pbmdzIGFuZCB0byBjYWxjdWxhdGUgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIGNvcnJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgeW91ciB0YXggcmV0dXJucyBhcmUgcHJlcGFyZWQgaW4gYSB0aW1lbHkgYW5kIGVmZmljaWVudCBtYW5uZXIuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IGlzIHJlcXVpcmVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFdlIGFyZSBoZXJlIHRvIGFzc2lzdCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoaXMgcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW50ZXJlc3QgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIHJldmlld2luZyB5b3VyIGZpbmFuY2lhbCBhY3Rpdml0aWVzIGZvciB0aGUgdGF4IHllYXIsIHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGludGVyZXN0IGluY29tZS4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgZGV0YWlscy4gS2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48Yj5Tb3VyY2Ugb2YgSW50ZXJlc3QgSW5jb21lOjwvYj4gUGxlYXNlIHNwZWNpZnkgdGhlIGluc3RpdHV0aW9uKHMpIG9yIGVudGl0eShpZXMpIGZyb20gd2hpY2ggeW91IHJlY2VpdmVkIGludGVyZXN0IGluY29tZSAoZS5nLiwgYmFua3MsIGNyZWRpdCB1bmlvbnMpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BbW91bnQgUmVjZWl2ZWQ6PC9iPiBDb25maXJtIHRoZSB0b3RhbCBhbW91bnQgb2YgaW50ZXJlc3QgaW5jb21lIHJlY2VpdmVkIGZyb20gZWFjaCBzb3VyY2UgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+PGI+QWNjb3VudCBUeXBlczo8L2I+IElkZW50aWZ5IHRoZSB0eXBlIG9mIGFjY291bnRzIHRoYXQgZ2VuZXJhdGVkIHRoZSBpbnRlcmVzdCAoZS5nLiwgc2F2aW5ncywgY2hlY2tpbmcsIGNlcnRpZmljYXRlcyBvZiBkZXBvc2l0KS48L2xpPlxyXG4gICAgICA8bGk+PGI+VGF4IEZvcm1zIFJlY2VpdmVkOjwvYj4gTGlzdCBhbnkgdGF4IGZvcm1zIHlvdSBoYXZlIHJlY2VpdmVkIHJlbGF0ZWQgdG8gaW50ZXJlc3QgaW5jb21lLCBzdWNoIGFzIEZvcm0gMTA5OS1JTlQgb3IgRm9ybSAxMDk5LU9JRC48L2xpPlxyXG4gICAgICA8bGk+PGI+Rm9yZWlnbiBJbnRlcmVzdDo8L2I+IElmIGFueSBpbnRlcmVzdCBpbmNvbWUgd2FzIGVhcm5lZCBmcm9tIGZvcmVpZ24gYWNjb3VudHMgb3Igc291cmNlcywgcGxlYXNlIHByb3ZpZGUgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgZW5hYmxlIHVzIHRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHlvdXIgaW50ZXJlc3QgaW5jb21lIGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBjb3JyZWN0LiBZb3UgY2FuIGF0dGFjaCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYnkgcmVwbHlpbmcgdG8gdGhpcyBlbWFpbCBvciB1cGxvYWRpbmcgdGhlbSBkaXJlY3RseSB0byBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJldmlld2luZyB5b3VyIHRheCBzaXR1YXRpb24gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgYSBnaWZ0IGZvciBvcGVuaW5nIGFuIGFjY291bnQgYXQgYSBmaW5hbmNpYWwgaW5zdGl0dXRpb24uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoaXMgaW5jb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiB3aGVyZSB0aGUgYWNjb3VudCB3YXMgb3BlbmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBkYXRlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2lmdCByZWNlaXZlZCAoZS5nLiwgY2FzaCwgbWVyY2hhbmRpc2UsIG9yIHNlcnZpY2VzKS48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgZmFpciBtYXJrZXQgdmFsdWUgb2YgdGhlIGdpZnQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24gcmVnYXJkaW5nIHRoZSBnaWZ0IChlLmcuLCBhIGxldHRlciwgZW1haWwgY29uZmlybWF0aW9uLCBvciBzdGF0ZW1lbnQgaW5kaWNhdGluZyB0aGUgdmFsdWUgb2YgdGhlIGdpZnQpLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBpZiB5b3UgaGF2ZSByZWNlaXZlZCBtb3JlIHRoYW4gb25lIGdpZnQgZm9yIG9wZW5pbmcgYWNjb3VudHMgd2l0aGluIHRoZSBzYW1lIHRheCB5ZWFyLCBhbmQgaWYgc28sIHRoZSBkZXRhaWxzIGZvciBlYWNoLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGNvbXBseSB3aXRoIGFsbCBJUlMgcmVxdWlyZW1lbnRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDRCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiB5b3VyIGluY29tZSBmcm9tIENlcnRpZmljYXRlcyBvZiBEZXBvc2l0IChDRHMpIGZvciB0aGUgdGF4IHllYXIsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgaXMgZXNzZW50aWFsIHRvIGNvbXBseSB3aXRoIElSUyByZWd1bGF0aW9ucyBhbmQgdG8gcG90ZW50aWFsbHkgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk5hbWUgb2YgdGhlIEJhbmsgb3IgRmluYW5jaWFsIEluc3RpdHV0aW9uOjwvc3Ryb25nPiBXaGVyZSB0aGUgQ0QgaXMgaGVsZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgTnVtYmVyOjwvc3Ryb25nPiBUaGlzIGhlbHBzIGluIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIEludGVyZXN0IEVhcm5lZDo8L3N0cm9uZz4gVGhlIGFtb3VudCBvZiBpbnRlcmVzdCBlYXJuZWQgZnJvbSB0aGUgQ0QgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNEIFRlcm06PC9zdHJvbmc+IFRoZSBkdXJhdGlvbiBvciB0ZXJtIG9mIHRoZSBDRCAoZS5nLiwgNiBtb250aHMsIDEgeWVhcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFB1cmNoYXNlOjwvc3Ryb25nPiBXaGVuIHlvdSBvcmlnaW5hbGx5IGFjcXVpcmVkIHRoZSBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hdHVyaXR5IERhdGU6PC9zdHJvbmc+IFdoZW4gdGhlIENEIHJlYWNoZWQgb3Igd2lsbCByZWFjaCBpdHMgZnVsbCB0ZXJtLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1JTlQgRm9ybXM6PC9zdHJvbmc+IElmIHJlY2VpdmVkLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgYW55IDEwOTktSU5UIGZvcm1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ0QgaW50ZXJlc3QuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggZG9jdW1lbnRzLiBZb3UgbWF5IHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIGFycmFuZ2UgZm9yIGEgbWVldGluZyB0byBwcm92aWRlIHRoZW0gaW4gcGVyc29uLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheCBFeGVtcHQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIHVuZGVyc3RhbmQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0YXgtZXhlbXB0IGludGVyZXN0IGR1cmluZyB0aGUgdGF4IHllYXIsIHBvc3NpYmx5IGZyb20gbXVuaWNpcGFsIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRvIGFjY3VyYXRlbHkgcHJlcGFyZSB5b3VyIHRheCByZXR1cm5zIGFuZCBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRheCByZWd1bGF0aW9ucywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U3RhdGVtZW50cyBvZiBUYXgtRXhlbXB0IEludGVyZXN0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhbGwgMTA5OS1JTlQgZm9ybXMgb3IgZXF1aXZhbGVudCBzdGF0ZW1lbnRzIHRoYXQgZGV0YWlsIHlvdXIgdGF4LWV4ZW1wdCBpbnRlcmVzdCBpbmNvbWUgZm9yIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRldGFpbHMgb2YgSXNzdWluZyBFbnRpdGllczo8L3N0cm9uZz4gQSBsaXN0IG9yIHN0YXRlbWVudCBpZGVudGlmeWluZyB0aGUgZW50aXRpZXMgdGhhdCBpc3N1ZWQgdGhlIGJvbmRzIG9yIHNpbWlsYXIgaW52ZXN0bWVudHMuIFRoaXMgaW5jbHVkZXMgbXVuaWNpcGFsLCBzdGF0ZSwgb3IgZmVkZXJhbCBlbnRpdGllcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkludmVzdG1lbnQgRGV0YWlsOjwvc3Ryb25nPiBBIGJyZWFrZG93biBvZiB0aGUgaW52ZXN0bWVudHMgY29udHJpYnV0aW5nIHRvIHRheC1leGVtcHQgaW50ZXJlc3QuIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIHB1cmNoYXNlIGRhdGUsIHB1cmNoYXNlIGFtb3VudHMsIGFuZCBhbnkgcmVsYXRlZCBtYXR1cml0eSBkYXRlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkJyb2tlcmFnZSBBY2NvdW50IFN0YXRlbWVudHM6PC9zdHJvbmc+IENvcGllcyBvZiB5b3VyIGJyb2tlcmFnZSBhY2NvdW50IHN0YXRlbWVudHMgdGhhdCBkZXRhaWwgdHJhbnNhY3Rpb25zIGFuZCBob2xkaW5ncyBpbiB0YXgtZXhlbXB0IGludmVzdG1lbnRzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QU1UIChBbHRlcm5hdGl2ZSBNaW5pbXVtIFRheCkgQ29uc2lkZXJhdGlvbjo8L3N0cm9uZz4gSWYgYXZhaWxhYmxlLCBkb2N1bWVudGF0aW9uIGluZGljYXRpbmcgd2hldGhlciBhbnkgb2YgdGhlIHRheC1leGVtcHQgaW50ZXJlc3QgaXMgc3ViamVjdCB0byB0aGUgQWx0ZXJuYXRpdmUgTWluaW11bSBUYXguPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFuIGFjY3VyYXRlIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIFBsZWFzZSBmb3J3YXJkIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGlzIGluZm9ybWF0aW9uLCBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGhvcGUgdGhpcyBtZXNzYWdlIGZpbmRzIHlvdSB3ZWxsLiBBcyBwYXJ0IG9mIG91ciBjb250aW51ZWQgZWZmb3J0IHRvIHByb3ZpZGUgeW91IHdpdGggdGhlIGJlc3QgdGF4IHByZXBhcmF0aW9uIHNlcnZpY2VzLCB3ZSBhcmUgcmVhY2hpbmcgb3V0IHRvIGdhdGhlciBuZWNlc3NhcnkgZG9jdW1lbnRhdGlvbiByZWxhdGVkIHRvIHRoZSBpbnRlcmVzdCB5b3UgbWF5IGhhdmUgcmVjZWl2ZWQgZnJvbSByZWRlZW1pbmcgYW4gRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kLjwvcD5cclxuXHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IGFzc2VzcyB0aGUgZWxpZ2liaWxpdHkgZm9yIGV4ZW1wdGlvbiBhbmQgdG8gZW5zdXJlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSVJTLCB3ZSBraW5kbHkgcmVxdWVzdCB5b3UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIEZvcm0gMTA5OS1JTlQgb3Igc2ltaWxhciBzdGF0ZW1lbnQgcHJvdmlkZWQgYnkgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiwgaW5kaWNhdGluZyB0aGUgYW1vdW50IG9mIGludGVyZXN0IHJlY2VpdmVkIGZyb20gdGhlIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZC48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxlZCByZWNvcmRzIG9mIHRoZSBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmRzIHJlZGVlbWVkIGR1cmluZyB0aGUgdGF4IHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPkJvbmQgc2VyaWFsIG51bWJlcnM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPklzc3VlIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5SZWRlbXB0aW9uIGRhdGVzPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbW91bnRzPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5SZWNlaXB0cyBvciBkb2N1bWVudGF0aW9uIGZvciBxdWFsaWZpZWQgZWR1Y2F0aW9uYWwgZXhwZW5zZXMgcGFpZCBkdXJpbmcgdGhlIHllYXIsIGluY2x1ZGluZzpcclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpPlR1aXRpb24gYW5kIGZlZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkNvdXJzZSBtYXRlcmlhbHM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvdGhlciByZXF1aXJlZCBleHBlbnNlcyBmb3IgZW5yb2xsbWVudCBvciBhdHRlbmRhbmNlIGF0IGFuIGVsaWdpYmxlIGVkdWNhdGlvbmFsIGluc3RpdHV0aW9uPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBlbnJvbGxtZW50IGZyb20gYW4gZWxpZ2libGUgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb24gZm9yIHRoZSBiZW5lZmljaWFyeSBvZiB0aGUgYm9uZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgdGhlIHRheGFiaWxpdHkgb2YgdGhlIGludGVyZXN0IGluY29tZSBhbmQgcG90ZW50aWFsbHkgbWF4aW1pemluZyB5b3VyIHRheCBiZW5lZml0cy4gV2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0IGFuZCByZWNvbW1lbmQgY29tcGlsaW5nIHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGFzc2lzdGFuY2UsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCBvdXIgb2ZmaWNlIGRpcmVjdGx5LjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgdHJ1c3QgaW4gb3VyIHNlcnZpY2VzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpdmlkZW5kIEluY29tZVwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGl2aWRlbmQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IGluZGljYXRlZCByZWNlaXZpbmcgZGl2aWRlbmQgaW5jb21lIG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBhY2N1cmF0ZWx5IHJlcG9ydCB0aGlzIGluY29tZSBhbmQgb3B0aW1pemUgeW91ciB0YXggc2l0dWF0aW9uLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb24gYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPkFsbCAxMDk5LURJViBmb3JtcyByZWNlaXZlZCBmcm9tIGNvcnBvcmF0aW9ucyBvciBtdXR1YWwgZnVuZHMuIFRoaXMgaW5jbHVkZXMgZGlzdHJpYnV0aW9ucyBvZiBjYXNoLCBzdG9jaywgb3Igb3RoZXIgcHJvcGVydHkuPC9saT5cclxuICAgICAgPGxpPklmIGFwcGxpY2FibGUsIGRldGFpbHMgcmVnYXJkaW5nIGFueSBmb3JlaWduIGRpdmlkZW5kcyBpbmNsdWRpbmcgdGhlIGFtb3VudCBpbiBmb3JlaWduIGN1cnJlbmN5LCB0aGUgY291bnRyeSBvZiBvcmlnaW4sIGFuZCBhbnkgZm9yZWlnbiB0YXggcGFpZC48L2xpPlxyXG4gICAgICA8bGk+Rm9yIGRpdmlkZW5kcyByZWludmVzdGVkLCBwbGVhc2UgcHJvdmlkZSBzdGF0ZW1lbnRzIG9yIGNvbmZpcm1hdGlvbnMgc2hvd2luZyB0aGVzZSB0cmFuc2FjdGlvbnMuPC9saT5cclxuICAgICAgPGxpPkFueSBvdGhlciByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBkaXZpZGVuZHMgbm90IGNvdmVyZWQgYnkgYSAxMDk5LURJVi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUgdG8gYXZvaWQgYW55IHByb2Nlc3NpbmcgZGVsYXlzLiBXZSByZWNvbW1lbmQgc2VjdXJlbHkgdXBsb2FkaW5nIHRoZSByZXF1ZXN0ZWQgaW5mb3JtYXRpb24gdGhyb3VnaCBvdXIgY2xpZW50IHBvcnRhbCBvciBhcnJhbmdpbmcgYSBzZWN1cmUgZW1haWwgdHJhbnNtaXNzaW9uLjwvcD5cclxuICAgIDxwPllvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGFwcHJlY2lhdGVkIGFzIGl0IHdpbGwgaGVscCB1cyBpbiBjb21wbGV0aW5nIHlvdXIgdGF4IHByZXBhcmF0aW9ucyBlZmZpY2llbnRseS4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG4gIFxyXG5dO1xyXG4iXX0=
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXRheC1mcmFnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uLXRlbXMvYWN0aW9uLXRheC1mcmFnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLElBQU0sa0JBQWtCLEdBQUc7SUFDaEM7UUFDRSxnQkFBZ0IsRUFBRSx3QkFBd0I7UUFDMUMsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxnbENBUXVIO0tBQzVJO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxzQkFBc0I7UUFDeEMsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxrQkFBa0IsRUFBRSxzekRBMkIrTjtLQUNwUDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsWUFBWTtRQUM5QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELGtCQUFrQixFQUFFLGcyREFhc0k7S0FDM0o7SUFDRDtRQUNFLGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDRrREFhME47S0FDL087SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLGtCQUFrQixFQUFFLHV3REFhbUc7S0FDeEg7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLCtnRUFXcU47S0FDMU87SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLHNwQ0FTdkI7S0FDRTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMEJBQTBCO1FBQzVDLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsa0JBQWtCLEVBQUUsd3VDQVlzSTtLQUMzSjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsOEJBQThCO1FBQ2hELFdBQVcsRUFBRSw4QkFBOEI7UUFDM0Msa0JBQWtCLEVBQUUseXREQVNvTTtLQUN6TjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxrQkFBa0I7UUFDL0Isa0JBQWtCLEVBQUUscWpEQVErSTtLQUNwSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsaUNBQWlDO1FBQ25ELFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsa0JBQWtCLEVBQUUsbytEQVU0UDtLQUNqUjtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsMkJBQTJCO1FBQzdDLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsa0JBQWtCLEVBQUUsMHdDQVN1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUseUJBQXlCO1FBQzNDLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsa0JBQWtCLEVBQUUsMHJEQVc2RTtLQUNsRztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsNkJBQTZCO1FBQy9DLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsa0JBQWtCLEVBQUUsdzBEQVUwSjtLQUMvSztJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGtCQUFrQixFQUFFLDA0Q0FVaUs7S0FDdEw7SUFDRDtRQUNFLGdCQUFnQixFQUFFLHlCQUF5QjtRQUMzQyxXQUFXLEVBQUUseUJBQXlCO1FBQ3RDLGtCQUFrQixFQUFFLG1tQ0FVMEY7S0FDL0c7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDBCQUEwQjtRQUM1QyxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLGtCQUFrQixFQUFFLDY1REFTaUY7S0FDdEc7SUFDRDtRQUNFLGdCQUFnQixFQUFFLCtCQUErQjtRQUNqRCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGtCQUFrQixFQUFFLG1yREFvQjRJO0tBQ2pLO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxnQ0FBZ0M7UUFDbEQsV0FBVyxFQUFFLGdDQUFnQztRQUM3QyxrQkFBa0IsRUFBRSxtekRBVWdJO0tBQ3JKO0lBQ0Q7UUFDRSxnQkFBZ0IsRUFBRSxjQUFjO1FBQ2hDLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGtCQUFrQixFQUFFLG11REFXdUQ7S0FDNUU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLGdoREFVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLDRCQUE0QjtRQUM5QyxXQUFXLEVBQUUsNEJBQTRCO1FBQ3pDLGtCQUFrQixFQUFFLGtvQ0FVdUM7S0FDNUQ7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsV0FBVyxFQUFFLGFBQWE7UUFDMUIsa0JBQWtCLEVBQUUsazRDQVl1QztLQUM1RDtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsa0JBQWtCLEVBQUUseWxEQVN1RDtLQUM1RTtJQUNEO1FBQ0UsZ0JBQWdCLEVBQUUsbUNBQW1DO1FBQ3JELFdBQVcsRUFBRSxtQ0FBbUM7UUFDaEQsa0JBQWtCLEVBQUUsKzFEQXdCNkM7S0FDbEU7SUFDRDtRQUNFLGdCQUFnQixFQUFFLGlCQUFpQjtRQUNuQyxXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLGtCQUFrQixFQUFFLDB1Q0FRMks7S0FDaE07Q0FpQkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBY3Rpb25UYXhGcmFnbWVudHMgPSBbXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJQcmlvciBZZWFyIFRheCBSZXR1cm5zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYFByb3ZpZGUgUHJpb3IgWWVhciBUYXggUmV0dXJuc2AsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIHJlcXVpcmUgeW91ciBhc3Npc3RhbmNlIHRvIGVuc3VyZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzLiBPbmUgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2UgbmVlZCBpcyB5b3VyIDxzdHJvbmc+UHJpb3IgWWVhciBUYXggUmV0dXJuczwvc3Ryb25nPi4gVGhpcyBkb2N1bWVudCBpcyBlc3NlbnRpYWwgZm9yIHNldmVyYWwgcmVhc29ucywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bzogdmVyaWZ5aW5nIGNhcnJ5LWZvcndhcmQgYW1vdW50cywgY29tcGFyaW5nIHllYXItb3Zlci15ZWFyIGluY29tZSBhbmQgZGVkdWN0aW9ucywgYW5kIGVuc3VyaW5nIGNvbXBsaWFuY2Ugd2l0aCB0YXggbGF3cy48L3A+XHJcbiAgICA8cD5UbyBmYWNpbGl0YXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+QSBjb3B5IG9mIHlvdXIgPHN0cm9uZz5GZWRlcmFsIHRheCByZXR1cm48L3N0cm9uZz4gZm9yIHRoZSBsYXN0IHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkEgY29weSBvZiB5b3VyIDxzdHJvbmc+U3RhdGUgdGF4IHJldHVybjwvc3Ryb25nPiBmb3IgdGhlIGxhc3QgdGF4IHllYXIsIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+QW55IDxzdHJvbmc+bm90aWNlcyBvciBhbWVuZG1lbnRzPC9zdHJvbmc+IHJlbGF0ZWQgdG8geW91ciBwcmlvciB5ZWFyIHRheCByZXR1cm5zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IGRpZmZpY3VsdHkgaW4gZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgcGxlYXNlIGxldCB1cyBrbm93IGFzIHNvb24gYXMgcG9zc2libGUgc28gd2UgY2FuIGRpc2N1c3MgYWx0ZXJuYXRpdmUgc29sdXRpb25zLjwvcD5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdC4gUHJvdmlkaW5nIHRoZXNlIHdpbGwgZW5hYmxlIHVzIHRvIGNvbXBsZXRlIHlvdXIgdGF4IHByZXBhcmF0aW9uIHdpdGhvdXQgZGVsYXkuPC9wPmAsXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlN0YXR1dG9yeSBFeHRlbnNpb25zXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogYERldGVybWluaW5nIEVsaWdpYmlsaXR5IGZvciBTdGF0dXRvcnkgRmlsaW5nIEV4dGVuc2lvbnNgLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIGlmIHlvdSBxdWFsaWZ5IGZvciBzdGF0dXRvcnkgZmlsaW5nIGV4dGVuc2lvbnMgZm9yIHlvdXIgdGF4IHJldHVybnMsIHdlIHJlcXVpcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gZnJvbSB5b3UuIFBsZWFzZSBzZWUgYmVsb3cgdGhlIGNhdGVnb3JpZXMgb2YgaW5mb3JtYXRpb24gbmVlZGVkIGJhc2VkIG9uIGRpZmZlcmVudCBlbGlnaWJpbGl0eSBjcml0ZXJpYTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RmVkZXJhbCBEaXNhc3RlciBBcmVhczwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q29uZmlybWF0aW9uIG9mIHlvdXIgcHJpbWFyeSByZXNpZGVuY2UgbG9jYXRpb24gZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIHJlY2VpdmVkIHJlZ2FyZGluZyBkaXNhc3RlciBkZWNsYXJhdGlvbnMgaW4geW91ciBhcmVhLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5MaXZpbmcgQWJyb2FkPC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Qcm9vZiBvZiByZXNpZGVuY2Ugb3V0c2lkZSB0aGUgVW5pdGVkIFN0YXRlcyBmb3IgbW9yZSB0aGFuIDMzMCBmdWxsIGRheXMgd2l0aGluIGEgMTItbW9udGggcGVyaW9kLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiBzdXBwb3J0aW5nIHlvdXIgcGh5c2ljYWwgcHJlc2VuY2Ugb3IgYm9uYSBmaWRlIHJlc2lkZW5jZSBpbiBhIGZvcmVpZ24gY291bnRyeS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QWN0aXZlIE1pbGl0YXJ5PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5Eb2N1bWVudGF0aW9uIGluZGljYXRpbmcgYWN0aXZlIGR1dHkgc3RhdHVzLCBpbmNsdWRpbmcgZGF0ZXMgb2Ygc2VydmljZSB3aXRoaW4gdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SWYgYXBwbGljYWJsZSwgb3JkZXJzIGZvciBvdmVyc2VhcyBkZXBsb3ltZW50LjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Db21iYXQgWm9uZTwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+T2ZmaWNpYWwgb3JkZXJzIGRlbW9uc3RyYXRpbmcgeW91ciBkZXBsb3ltZW50IHRvIGEgY29tYmF0IHpvbmUsIGluY2x1ZGluZyB0aGUgc3BlY2lmaWMgZGF0ZXMuPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5BbnkgcmVsZXZhbnQgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIERlZmVuc2Ugb3Igb3RoZXIgb2ZmaWNpYWwgYm9kaWVzIHJlZ2FyZGluZyB5b3VyIHNlcnZpY2UgaW4gYSBjb21iYXQgem9uZS48L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IHlvdSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBmYWNpbGl0YXRlIHRoZSBhY2N1cmF0ZSBhbmQgdGltZWx5IHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRlcGVuZGVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlJlcXVlc3QgZm9yIERlcGVuZGVudCBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCBkb2N1bWVudHMgYW5kIG5lZWQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgeW91ciBkZXBlbmRlbnRzLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGFwcGx5aW5nIHRoZSBtb3N0IGJlbmVmaWNpYWwgZGVwZW5kZW5jeSB0ZXN0cywgaW5jbHVkaW5nIHF1YWxpZmljYXRpb25zIGZvciBIZWFkIG9mIEhvdXNlaG9sZCAoSE9IKSwgQ2hpbGQgVGF4IENyZWRpdCwgYW5kIG90aGVyIHJlbGF0ZWQgYmVuZWZpdHMuIFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscyBmb3IgZWFjaCBvZiB5b3VyIGNsYWltZWQgZGVwZW5kZW50czo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RnVsbCBOYW1lOjwvc3Ryb25nPiBUaGUgY29tcGxldGUgbGVnYWwgbmFtZSBvZiB0aGUgZGVwZW5kZW50LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+U29jaWFsIFNlY3VyaXR5IE51bWJlciAoU1NOKSBvciBUYXhwYXllciBJZGVudGlmaWNhdGlvbiBOdW1iZXIgKFRJTik6PC9zdHJvbmc+IFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3Nlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgQmlydGg6PC9zdHJvbmc+IEhlbHBzIHRvIGRldGVybWluZSBlbGlnaWJpbGl0eSBmb3IgY2VydGFpbiBjcmVkaXRzIGxpa2UgdGhlIENoaWxkIFRheCBDcmVkaXQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5SZWxhdGlvbnNoaXAgdG8gWW91Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkZXBlbmRlbnQncyByZWxhdGlvbnNoaXAgKHNvbiwgZGF1Z2h0ZXIsIHN0ZXBjaGlsZCwgZm9zdGVyIGNoaWxkLCBicm90aGVyLCBzaXN0ZXIsIGV0Yy4pIHRvIHlvdS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlJlc2lkZW5jeTo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGxpdmVkIHdpdGggeW91IGZvciBtb3JlIHRoYW4gaGFsZiB0aGUgeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkZpbmFuY2lhbCBTdXBwb3J0Ojwvc3Ryb25nPiBDb25maXJtIHlvdSBwcm92aWRlZCBtb3JlIHRoYW4gaGFsZiBvZiB0aGUgZGVwZW5kZW504oCZcyBmaW5hbmNpYWwgc3VwcG9ydCBmb3IgdGhlIHllYXIuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5DaXRpemVuc2hpcDo8L3N0cm9uZz4gQ29uZmlybSB0aGUgZGVwZW5kZW50IGlzIGEgVS5TLiBjaXRpemVuLCBVLlMuIG5hdGlvbmFsLCBvciBhIHJlc2lkZW50IGFsaWVuLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+TWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IEluZGljYXRlIHdoZXRoZXIgdGhlIGRlcGVuZGVudCBpcyBtYXJyaWVkIGFuZCwgaWYgc28sIHdoZXRoZXIgdGhleSBhcmUgZmlsaW5nIGpvaW50bHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5JbmNvbWUgSW5mb3JtYXRpb246PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIHByb3ZpZGUgZGV0YWlscyByZWdhcmRpbmcgYW55IGluY29tZSB0aGUgZGVwZW5kZW50IG1heSBoYXZlIGVhcm5lZCBvciByZWNlaXZlZC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgeW91IHByb3ZpZGUgY29tcGxldGUgYW5kIGFjY3VyYXRlIGluZm9ybWF0aW9uIHRvIGF2b2lkIGFueSBkZWxheXMgaW4gdGhlIHByb2Nlc3Npbmcgb2YgeW91ciB0YXggcmV0dXJuLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgZnVydGhlciBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSGVhZCBvZiBIb3VzZWhvbGRcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkhlYWQgb2YgSG91c2Vob2xkIEZpbGluZ1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIGFuZCBjb21wbGlhbnQgdGF4IGZpbGluZyB1bmRlciB0aGUgXCJIZWFkIG9mIEhvdXNlaG9sZFwiIHN0YXR1cywgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4gVGhpcyBzdGF0dXMgY2FuIHByb3ZpZGUgc2lnbmlmaWNhbnQgdGF4IGJlbmVmaXRzLCBhbmQgaXQgaXMgY3J1Y2lhbCB0aGF0IGFsbCBJUlMgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFBsZWFzZSBwcm92aWRlOjwvcD5cclxuICAgIDxvbD5cclxuICAgIDxsaT48c3Ryb25nPk1hcml0YWwgU3RhdHVzOjwvc3Ryb25nPiBDb25maXJtYXRpb24gb2YgeW91ciBtYXJpdGFsIHN0YXR1cyBhcyBvZiB0aGUgbGFzdCBkYXkgb2YgdGhlIHRheCB5ZWFyIChlLmcuLCBzaW5nbGUsIGRpdm9yY2VkLCBsZWdhbGx5IHNlcGFyYXRlZCkuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkhvdXNlaG9sZCBFeHBlbnNlczo8L3N0cm9uZz4gRGV0YWlsZWQgcmVjb3JkcyBpbmRpY2F0aW5nIHRoYXQgeW91IHBhaWQgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGNvc3RzIG9mIGtlZXBpbmcgdXAgYSBob21lIGZvciB0aGUgdGF4IHllYXIuIFRoaXMgaW5jbHVkZXMgcmVudCwgbW9ydGdhZ2UgaW50ZXJlc3QsIHByb3BlcnR5IHRheGVzLCB1dGlsaXRpZXMsIHJlcGFpcnMsIG1haW50ZW5hbmNlLCBhbmQgZ3JvY2VyaWVzLjwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5RdWFsaWZ5aW5nIFBlcnNvbjo8L3N0cm9uZz4gSW5mb3JtYXRpb24gb24gdGhlIHF1YWxpZnlpbmcgcGVyc29uKHMpIHdobyBsaXZlZCB3aXRoIHlvdSBpbiB0aGUgaG9tZSBmb3IgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIHllYXIsIGV4Y2VwdCBmb3IgdGVtcG9yYXJ5IGFic2VuY2VzIHN1Y2ggYXMgc2Nob29sLiBQbGVhc2UgaW5jbHVkZTpcclxuICAgICAgPHVsPlxyXG4gICAgICA8bGk+RnVsbCBuYW1lIGFuZCByZWxhdGlvbnNoaXAgdG8geW91IChlLmcuLCBjaGlsZCwgcGFyZW50LCBzaWJsaW5nKS48L2xpPlxyXG4gICAgICA8bGk+RHVyYXRpb24gb2YgcmVzaWRlbmN5IGF0IHlvdXIgaG9tZSBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgIDxsaT5TdXBwb3J0aW5nIGRvY3VtZW50cyAoYmlydGggY2VydGlmaWNhdGVzLCBzY2hvb2wgcmVjb3JkcywgZXRjLikgcHJvdmluZyB0aGUgcmVzaWRlbmN5IGFuZCByZWxhdGlvbnNoaXAuPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgICA8bGk+PHN0cm9uZz5BZGRpdGlvbmFsIFN1cHBvcnQ6PC9zdHJvbmc+IEFueSBmdXJ0aGVyIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB5b3VyIGNsYWltIGZvciB0aGUgSGVhZCBvZiBIb3VzZWhvbGQgZmlsaW5nIHN0YXR1cy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBub3RlIHRoYXQgcHJvdmlkaW5nIGFjY3VyYXRlIGFuZCBjb21wbGV0ZSBpbmZvcm1hdGlvbiBpcyBlc3NlbnRpYWwgZm9yIHlvdXIgYmVuZWZpdCBhbmQgdG8gY29tcGx5IHdpdGggdGF4IGxhd3MuIFNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIHJlcXVpcmUgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhlc2UgZGV0YWlscywgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiSW5mb3JtYXRpb24gb24gUmVzaWRlbmN5IFN0YXR1c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IGVpdGhlciB5b3Ugb3IgeW91ciBzcG91c2UgaXMgbm90IGEgVS5TLiBjaXRpemVuLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSB5b3VyIHRheCBzdGF0dXMsIHdlIG5lZWQgdG8gYXBwbHkgdGhlIG5lY2Vzc2FyeSBUYXggUmVzaWRlbmN5IFRlc3RzLCB3aGljaCBpbmNsdWRlIHRoZSA8c3Ryb25nPkdyZWVuIENhcmQgVGVzdDwvc3Ryb25nPiBhbmQgdGhlIDxzdHJvbmc+U3Vic3RhbnRpYWwgUHJlc2VuY2UgVGVzdDwvc3Ryb25nPi4gVGhpcyB3aWxsIGhlbHAgdXMgZW5zdXJlIHlvdXIgdGF4IHJldHVybnMgYXJlIGNvbXBsZXRlZCBjb3JyZWN0bHkgYW5kIGNvbXBseSB3aXRoIFUuUy4gcmVndWxhdGlvbnMuPC9wPlxyXG5cclxuICAgIDxwPlRvIHByb2NlZWQsIHdlIGtpbmRseSBhc2sgeW91IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+R3JlZW4gQ2FyZCBTdGF0dXM6PC9zdHJvbmc+IFBsZWFzZSBjb25maXJtIGlmIHlvdSBvciB5b3VyIHNwb3VzZSBoYXZlIGJlZW4gaXNzdWVkIGEgVS5TLiBncmVlbiBjYXJkIChMYXdmdWwgUGVybWFuZW50IFJlc2lkZW50IENhcmQpIGF0IGFueSBwb2ludCBkdXJpbmcgdGhlIHRheCB5ZWFyLiBJZiB5ZXMsIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSBncmVlbiBjYXJkIG9yIHRoZSBvZmZpY2lhbCBkb2N1bWVudCBjb25maXJtaW5nIHRoZSBzdGF0dXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIEFycml2YWwgaW4gdGhlIFUuUy46PC9zdHJvbmc+IFRoZSBleGFjdCBkYXRlcyB3aGVuIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZmlyc3QgYXJyaXZlZCBpbiB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VHJhdmVsIEhpc3Rvcnk6PC9zdHJvbmc+IEEgZGV0YWlsZWQgbGlzdCBvZiBhbGwgdGhlIGRhdGVzIHlvdSBhbmQvb3IgeW91ciBzcG91c2UgZW50ZXJlZCBhbmQgbGVmdCB0aGUgVS5TLiBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHRoZSBTdWJzdGFudGlhbCBQcmVzZW5jZSBUZXN0LjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+VmlzYSBUeXBlOjwvc3Ryb25nPiBJZiB5b3Ugb3IgeW91ciBzcG91c2UgYXJlIG9uIGEgdmlzYSwgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgYW5kIHByb3ZpZGUgYSBjb3B5IG9mIHRoZSB2aXNhLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UHJldmlvdXMgWWVhciBUYXggRmlsaW5nczo8L3N0cm9uZz4gQ29waWVzIG9mIGxhc3QgeWVhcidzIHRheCByZXR1cm5zLCBpZiBhcHBsaWNhYmxlLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBwcm92aWRlIGNvbnRleHQgYW5kIGhlbHAgZGV0ZXJtaW5lIHJlc2lkZW5jeSBzdGF0dXMgbW9yZSBhY2N1cmF0ZWx5LjwvbGk+XHJcbiAgICA8L29sPlxyXG5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgYWxsIGRvY3VtZW50cyBhcmUgY2xlYXIgYW5kIGxlZ2libGUuIFlvdSBjYW4gc2VuZCB0aGVtIHRvIHVzIHZpYSBlbWFpbCBvciB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbC4gRm9yIGFueSBxdWVzdGlvbnMgb3IgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuPC9wPlxyXG5cclxuICAgIDxwPldlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyIGFuZCBsb29rIGZvcndhcmQgdG8gYXNzaXN0aW5nIHlvdSB3aXRoIHlvdXIgdGF4IHByZXBhcmF0aW9uLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkpvaW50IFRheCBSZWxpZWZcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkpvaW50IFRheCBSZWxpZWYgRGV0YWlsc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gYXNzaXN0IHlvdSBlZmZlY3RpdmVseSB3aXRoIHlvdXIgcmVxdWVzdCBmb3Igam9pbnQgdGF4IHJlbGllZiwgd2UgbmVlZCB0byBjb2xsZWN0IHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHVuZGVyc3RhbmQgeW91ciBzaXR1YXRpb24gdGhvcm91Z2hseS4gVGhpcyB3aWxsIGhlbHAgdXMgZGV0ZXJtaW5lIHRoZSBtb3N0IHN1aXRhYmxlIHR5cGUgb2YgcmVsaWVmIGZvciB5b3VyIGNpcmN1bXN0YW5jZXMsIHdoaWNoIG1heSBpbmNsdWRlIElubm9jZW50IFNwb3VzZSBSZWxpZWYsIEluanVyZWQgU3BvdXNlIEFsbG9jYXRpb24sIFNlcGFyYXRpb24gb2YgTGlhYmlsaXR5IFJlbGllZiwgb3IgRXF1aXRhYmxlIFJlbGllZi4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db21wbGV0ZSBUYXggUmV0dXJuczo8L3N0cm9uZz4gQ29waWVzIG9mIGFsbCB0YXggcmV0dXJucyBmb3IgdGhlIHllYXJzIHlvdSBhcmUgcmVxdWVzdGluZyByZWxpZWYuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+RGV0YWlsZWQgU3RhdGVtZW50Ojwvc3Ryb25nPiBBIHdyaXR0ZW4gc3RhdGVtZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBiZWxpZXZlIHlvdSBxdWFsaWZ5IGZvciByZWxpZWYsIGluY2x1ZGluZyBhbnkgc3BlY2lmaWMgZXZlbnRzIG9yIGNpcmN1bXN0YW5jZXMgeW91IHdhbnQgdXMgdG8gY29uc2lkZXIuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+SW5jb21lIERvY3VtZW50YXRpb246PC9zdHJvbmc+IFByb29mIG9mIHlvdXIgY3VycmVudCBpbmNvbWUgYW5kIHRoYXQgb2YgeW91ciBzcG91c2UgaWYgYXBwbGljYWJsZSwgc3VjaCBhcyByZWNlbnQgcGF5IHN0dWJzLCBXLTIgZm9ybXMsIG9yIG90aGVyIGluY29tZSBzdGF0ZW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPlByb29mIG9mIEZpbmFuY2lhbCBTaXR1YXRpb246PC9zdHJvbmc+IERvY3VtZW50cyBzaG93aW5nIHlvdXIgY3VycmVudCBmaW5hbmNpYWwgc2l0dWF0aW9uLCBpbmNsdWRpbmcgYmFuayBzdGF0ZW1lbnRzLCBtb250aGx5IGJpbGxzLCBhbmQgYW55IG90aGVyIGxpYWJpbGl0aWVzLjwvbGk+XHJcbiAgICAgIDxsaT48c3Ryb25nPkRvY3VtZW50YXRpb24gb2YgTWFyaXRhbCBTdGF0dXM6PC9zdHJvbmc+IElmIGFwcGxpY2FibGUsIGxlZ2FsIGRvY3VtZW50cyByZWxhdGVkIHRvIHNlcGFyYXRpb24sIGRpdm9yY2UsIG9yIGFubnVsbWVudC48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyB0aGF0IHByb3ZlIHdoZXJlIGVhY2ggb2YgeW91IGhhcyBsaXZlZCBkdXJpbmcgdGhlIHRheCB5ZWFycyBpbiBxdWVzdGlvbi48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5BbnkgQ29ycmVzcG9uZGVuY2UgZnJvbSB0aGUgSVJTOjwvc3Ryb25nPiBJZiB5b3UgaGF2ZSByZWNlaXZlZCBhbnkgbm90aWNlcyBvciBsZXR0ZXJzIGZyb20gdGhlIElSUyByZWdhcmRpbmcgeW91ciBqb2ludCB0YXggbGlhYmlsaXR5LCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgZW5zdXJlIGFsbCBkb2N1bWVudHMgYXJlIGNsZWFybHkgbGVnaWJsZS4gWW91IG1heSBzZW5kIHRoZW0gdmlhIGVtYWlsLCBvciB1cGxvYWQuIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24gb24gd2hhdCB0byBwcm92aWRlLCBkb24ndCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcHJvY2VzcyBjYW4gYmUgY29tcGxleCwgYnV0IHdlIGFyZSBoZXJlIHRvIGd1aWRlIHlvdSB0aHJvdWdoIGl0LiBPdXIgZ29hbCBpcyB0byBlbnN1cmUgd2UgaGF2ZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHNpdHVhdGlvbiB0byBhZHZvY2F0ZSBmb3IgdGhlIG1vc3QgZmF2b3JhYmxlIG91dGNvbWUgb24geW91ciBiZWhhbGYuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiMTA5OSBORUMgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCIxMDk5IE5FQyBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCByZXF1aXJlIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIGFsbCB5b3VyIHNvdXJjZXMgb2YgaW5jb21lLiBTcGVjaWZpY2FsbHksIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgeW91ciAxMDk5IE5FQyBJbmNvbWUuIFRoZSAxMDk5LU5FQyBmb3JtIGlzIGNydWNpYWwgZm9yIGNvcnJlY3RseSByZXBvcnRpbmcgeW91ciBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uLjwvcD5cclxuICAgIDxwPlRvIGVuc3VyZSBhIHRob3JvdWdoIGFuZCBhY2N1cmF0ZSB0YXggcHJlcGFyYXRpb24sIHBsZWFzZSBwcm92aWRlIHVzIHdpdGggdGhlIGZvbGxvd2luZzo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPkFsbCAxMDk5LU5FQyBmb3JtczwvYj4geW91IHJlY2VpdmVkIGZvciB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlscyBvZiBhbnkgPGI+YWRkaXRpb25hbCBub24tZW1wbG95ZWUgY29tcGVuc2F0aW9uPC9iPiBub3QgcmVwb3J0ZWQgb24gYSAxMDk5LU5FQyBmb3JtLjwvbGk+XHJcbiAgICAgICAgPGxpPkluZm9ybWF0aW9uIHJlZ2FyZGluZyA8Yj5leHBlbnNlcyByZWxhdGVkIHRvIHlvdXIgMTA5OSBORUMgaW5jb21lPC9iPiwgaWYgYXBwbGljYWJsZS48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPklmIHlvdSBoYXZlIG5vdCB5ZXQgcmVjZWl2ZWQgYWxsIHlvdXIgMTA5OS1ORUMgZm9ybXMsIHBsZWFzZSBsZXQgdXMga25vdywgYW5kIHByb3ZpZGUgYW4gZXN0aW1hdGUgb2Ygd2hlbiB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgdGhlbS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgYWNjdXJhdGVseSByZXBvcnRpbmcgeW91ciBpbmNvbWUgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBwZW5hbHRpZXMgb3IgYXVkaXRzIGZyb20gdGhlIElSUy48L3A+XHJcbiAgICA8cD5QbGVhc2UgcmVhY2ggb3V0IHRvIHVzIGRpcmVjdGx5IHNob3VsZCB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgZnVydGhlciBjbGFyaWZpY2F0aW9uLiBZb3VyIHByb21wdCByZXNwb25zZSBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgcHJvY2Vzc2VkIGVmZmljaWVudGx5IGFuZCBhY2N1cmF0ZWx5LjwvcD5cclxuYFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJTY2hlZHVsZSBLLTEgSW5mb3JtYXRpb25cIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlNjaGVkdWxlIEstMSBJbmZvcm1hdGlvblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIGluZGljYXRlZCB0aGUgcHJlc2VuY2Ugb2YgU2NoZWR1bGUgSyBpbmNvbWUgZm9yIHRoZSBjdXJyZW50IHRheCB5ZWFyLiBJbiBvcmRlciB0byBlbnN1cmUgdGhlIGFjY3VyYWN5IGFuZCBjb21wbGV0ZW5lc3Mgb2YgeW91ciB0YXggcmV0dXJuLCBpdCBpcyBpbXBlcmF0aXZlIHRoYXQgd2UgZ2F0aGVyIGFsbCBuZWNlc3NhcnkgZG9jdW1lbnRzIHJlbGF0ZWQgdG8gdGhpcyBpbmNvbWUuPC9wPlxyXG4gICAgPHA+SWYgd2UgYXJlIHByZXBhcmluZyB5b3VyIGJ1c2luZXNzIHJldHVybiwgcmVzdCBhc3N1cmVkIHRoYXQgd2Ugd2lsbCBnZW5lcmF0ZSB0aGUgYXBwbGljYWJsZSBTY2hlZHVsZSBLLTEocykgZm9yIHlvdXIgYnVzaW5lc3MgaW50ZXJlc3RzLiBIb3dldmVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB3ZSBjb2xsZWN0IGNvcGllcyBvZiA8c3Ryb25nPmFsbCBvdGhlciBTY2hlZHVsZSBLLTFzPC9zdHJvbmc+IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCB0byBpbmNvcnBvcmF0ZSBpbnRvIHlvdXIgcGVyc29uYWwgdGF4IHJldHVybi48L3A+ICBcclxuICAgIDxoMz5TcGVjaWZpYyBEb2N1bWVudCBSZXF1ZXN0OjwvaDM+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkFueSBhbmQgYWxsIFNjaGVkdWxlIEstMShzKSB5b3UgaGF2ZSByZWNlaXZlZCBmcm9tOjwvbGk+XHJcbiAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICA8bGk+UGFydG5lcnNoaXBzPC9saT5cclxuICAgICAgICAgICAgPGxpPlMgQ29ycG9yYXRpb25zPC9saT5cclxuICAgICAgICAgICAgPGxpPkVzdGF0ZSBvciBUcnVzdHM8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBkb2N1bWVudHMgYXJlIDxzdHJvbmc+Y2xlYXIgYW5kIGxlZ2libGU8L3N0cm9uZz4gdG8gcHJldmVudCBhbnkgZGVsYXlzIGluIHByb2Nlc3NpbmcgeW91ciByZXR1cm4uIFlvdSBtYXkgc3VibWl0IHRoZXNlIGRvY3VtZW50cyB0aHJvdWdoIG91ciBzZWN1cmUgY2xpZW50IHBvcnRhbCwgb3IgY29udGFjdCB1cyB0byBtYWtlIGFsdGVybmF0aXZlIGFycmFuZ2VtZW50cyBpZiBuZWNlc3NhcnkuPC9wPlxyXG4gICAgPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyByZXF1ZXN0LiBTaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFueSBhc3Npc3RhbmNlLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJPdGhlciBTZWxmLUVtcGxveW1lbnQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4ZXMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaGF2ZSBpbmRpY2F0ZWQgdGhlIHByZXNlbmNlIG9mIHNlbGYtZW1wbG95bWVudCBpbmNvbWUgbm90IHJlcG9ydGVkIHRocm91Z2ggMTA5OS1ORUMgZm9ybXMgb3IgYSBTY2hlZHVsZSBLLTEuIFRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgYWNjdXJhdGUgYW5kIG1heGltaXplcyB5b3VyIGJlbmVmaXRzLCBpdCdzIGNydWNpYWwgd2UgZ2F0aGVyIG1vcmUgZGV0YWlscyBhYm91dCB0aGVzZSBzb3VyY2VzIG9mIGluY29tZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHk6PC9zdHJvbmc+IEJyaWVmbHkgZGVzY3JpYmUgdGhlIG5hdHVyZSBvZiBlYWNoIGFjdGl2aXR5IGZyb20gd2hpY2ggeW91IGRlcml2ZSBzZWxmLWVtcGxveW1lbnQgaW5jb21lLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGF0ZXMgb2Ygb3BlcmF0aW9uOjwvc3Ryb25nPiBGb3IgZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHksIHNwZWNpZnkgdGhlIGRhdGVzIG9yIHJhbmdlIG9mIGRhdGVzIGR1cmluZyB3aGljaCB5b3UgZWFybmVkIGluY29tZS48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIGluY29tZSBnZW5lcmF0ZWQ6PC9zdHJvbmc+IEZvciBlYWNoIGFjdGl2aXR5LCBwcm92aWRlIHRoZSB0b3RhbCBhbW91bnQgb2YgaW5jb21lIGVhcm5lZCBiZWZvcmUgYW55IGV4cGVuc2VzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RXhwZW5zZXMgaW5jdXJyZWQ6PC9zdHJvbmc+IExpc3QgYWxsIGV4cGVuc2VzIHJlbGF0ZWQgdG8gZWFjaCBzZWxmLWVtcGxveW1lbnQgYWN0aXZpdHkuIFBsZWFzZSBjYXRlZ29yaXplIHRoZXNlIGV4cGVuc2VzIChlLmcuLCBvZmZpY2Ugc3VwcGxpZXMsIHRyYXZlbCwgYWR2ZXJ0aXNpbmcpLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+UmVjb3JkcyBvciBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgZXhpc3RpbmcgcmVjb3JkcyBvciBkb2N1bWVudGF0aW9uIHRoYXQgY29ycm9ib3JhdGUgeW91ciBpbmNvbWUgYW5kIGV4cGVuc2VzLCBzdWNoIGFzIGJhbmsgc3RhdGVtZW50cywgcmVjZWlwdHMsIGludm9pY2VzLCBvciBjb250cmFjdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIHZpdGFsIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBhbW91bnQgb2YgdGF4IHlvdSBvd2UgYW5kIGlkZW50aWZ5aW5nIGFueSBwb3RlbnRpYWwgZGVkdWN0aW9ucyB0aGF0IGNhbiBtaW5pbWl6ZSB5b3VyIHRheCBsaWFiaWxpdHkuIFBsZWFzZSBwcm92aWRlIHRoZXNlIGRldGFpbHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgYSBzbW9vdGggYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5JZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgYXNzaXN0YW5jZSBpbiBnYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLiBZb3VyIHRpbWVseSBjb29wZXJhdGlvbiBpcyBncmVhdGx5IGFwcHJlY2lhdGVkLCBhbmQgd2UgYXJlIGhlcmUgdG8gaGVscCBldmVyeSBzdGVwIG9mIHRoZSB3YXkuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95bWVudCBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VGhhbmsgeW91IGZvciBlbnRydXN0aW5nIHVzIHdpdGggdGhlIHByZXBhcmF0aW9uIG9mIHlvdXIgdGF4IHJldHVybnMuIEFzIHBhcnQgb2Ygb3VyIGNvbXByZWhlbnNpdmUgcmV2aWV3IGFuZCBpbiBvdXIgcXVlc3QgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBvZiB5b3VyIHRheCBmaWxpbmdzLCB3ZSB1bmRlcnN0YW5kIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgd2FnZXMgZnJvbSBlbXBsb3ltZW50IG92ZXIgdGhlIHBhc3QgdGF4IHllYXIuPC9wPlxyXG4gICAgPHA+VG8gcHJvY2VlZCBlZmZlY3RpdmVseSwgd2Uga2luZGx5IHJlcXVlc3QgdGhlIGZvbGxvd2luZyBkb2N1bWVudHMgYW5kIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5XLTIgRm9ybXM6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGNvcGllcyBvZiBhbGwgVy0yIGZvcm1zIHJlY2VpdmVkIGZyb20geW91ciBlbXBsb3llcnMuIFRoaXMgaW5jbHVkZXMgd2FnZXMgZWFybmVkIGZyb20gYWxsIHNvdXJjZXMsIG5vdCBqdXN0IGZyb20gdGhlIFMtQ29ycG9yYXRpb24sIGlmIGFwcGxpY2FibGUuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5WZXJpZmljYXRpb24gb2YgUy1Db3Jwb3JhdGlvbiBXYWdlczo8L3N0cm9uZz4gSWYgd2UgYXJlIGFsc28gaGFuZGxpbmcgeW91ciBidXNpbmVzcyB0YXhlcyBmb3IgYW4gUy1Db3Jwb3JhdGlvbiwgd2UgbGlrZWx5IGhhdmUgdGhlIHdhZ2UgaW5mb3JtYXRpb24gZm9yIHRoYXQgZW50aXR5LiBIb3dldmVyLCBmb3IgdGhvcm91Z2huZXNzIGFuZCBjb21wbGlhbmNlLCBwbGVhc2UgY29uZmlybSBpZiB0aGUgd2FnZXMgZnJvbSB0aGUgUy1Db3Jwb3JhdGlvbiBhcmUgZnVsbHkgcmVwcmVzZW50ZWQgaW4gdGhlIGRvY3VtZW50cyB3ZSBhbHJlYWR5IGhvbGQuIFRoaXMgd2lsbCBoZWxwIHVzIHZlcmlmeSB0aGF0IGFsbCBpbmNvbWUgaXMgYWNjdXJhdGVseSByZXBvcnRlZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFkZGl0aW9uYWwgSW5jb21lIERvY3VtZW50czo8L3N0cm9uZz4gU2hvdWxkIHlvdSBoYXZlIG90aGVyIHNvdXJjZXMgb2Ygd2FnZSBpbmNvbWUgKGUuZy4sIGNvbnRyYWN0IHdvcmssIGJvbnVzZXMsIGV0Yy4pIG5vdCBjb3ZlcmVkIGJ5IHRoZSBXLTIgZm9ybXMgcHJvdmlkZWQsIHBsZWFzZSBpbmNsdWRlIGFueSAxMDk5IGZvcm1zIG9yIG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24uPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5Zb3VyIGNvb3BlcmF0aW9uIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIGEgc21vb3RoIGFuZCBlZmZpY2llbnQgdGF4IHByZXBhcmF0aW9uIHByb2Nlc3MuIEtpbmRseSBwcm92aWRlIHRoZSByZXF1ZXN0ZWQgZG9jdW1lbnRzIGFuZCBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gVGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiUHJvcGVydHkgb3IgU2VydmljZXMgTGlldSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiUHJvcGVydHkvU2VydmljZXMgaW4gTGlldSBvZiBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGN1cnJlbnRseSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIHByb3BlcnR5IGFuZC9vciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHRyYWRpdGlvbmFsIHdhZ2VzIGR1cmluZyB0aGUgdGF4IHllYXIuIFRoaXMgdHlwZSBvZiBjb21wZW5zYXRpb24gY29uc3RpdHV0ZXMgdGF4YWJsZSBpbmNvbWUgYW5kIG11c3QgYmUgYWNjdXJhdGVseSByZXBvcnRlZCB0byBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGZ1bGx5IGNvbXBsaWFudCB3aXRoIElSUyByZWd1bGF0aW9ucy48L3A+XHJcbiAgICA8cD5UbyBhY2N1cmF0ZWx5IHJlY29nbml6ZSBhbmQgcmVwb3J0IHRoZXNlIGl0ZW1zIGFzIHRheGFibGUgaW5jb21lLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgUHJvcGVydHkgb3IgU2VydmljZXM6PC9zdHJvbmc+IFByb3ZpZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBhbnkgcHJvcGVydHkgb3Igc2VydmljZXMgeW91IHJlY2VpdmVkLiBQbGVhc2UgaW5jbHVkZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgZm9yIHByb3BlcnR5IG9yIHRoZSBzY29wZSBvZiBzZXJ2aWNlcyByZW5kZXJlZC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RmFpciBNYXJrZXQgVmFsdWUgYXQgVGltZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBJbmRpY2F0ZSB0aGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBwcm9wZXJ0eSBvciBzZXJ2aWNlIGF0IHRoZSB0aW1lIHlvdSByZWNlaXZlZCBpdC4gSWYgeW91IGhhdmUgYW55IGFwcHJhaXNhbHMgb3IgZG9jdW1lbnRzIHRvIHN1cHBvcnQgdGhlIEZNViwgcGxlYXNlIGluY2x1ZGUgdGhlbS48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RG9jdW1lbnRhdGlvbiBvciBBZ3JlZW1lbnRzOjwvc3Ryb25nPiBQcm92aWRlIGFueSBkb2N1bWVudGF0aW9uIG9yIHdyaXR0ZW4gYWdyZWVtZW50cyB0aGF0IGRldGFpbCB0aGUgYXJyYW5nZW1lbnQgZm9yIHJlY2VpdmluZyBwcm9wZXJ0eSBvciBzZXJ2aWNlcyBpbiBsaWV1IG9mIHdhZ2VzLiBUaGlzIGNhbiBpbmNsdWRlIGNvbnRyYWN0cywgZW1haWxzLCBvciBhbnkgZm9ybSBvZiBjb21tdW5pY2F0aW9uIHRoYXQgb3V0bGluZXMgdGhlIGFncmVlbWVudC48L2xpPlxyXG4gICAgPGxpPjxzdHJvbmc+RGF0ZSBvZiBSZWNlaXB0Ojwvc3Ryb25nPiBTcGVjaWZ5IHRoZSBkYXRlKHMpIG9uIHdoaWNoIHlvdSByZWNlaXZlZCB0aGUgcHJvcGVydHkgb3Igc2VydmljZXMuPC9saT5cclxuICAgIDxsaT48c3Ryb25nPkVtcGxveWVyL1Byb3ZpZGVyIEluZm9ybWF0aW9uOjwvc3Ryb25nPiBQcm92aWRlIHRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IHByb3ZpZGVkIHRoZSBwcm9wZXJ0eSBvciBzZXJ2aWNlcy48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwgcHJvdmlkZWQgaW5mb3JtYXRpb24gaXMgYXMgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIGFzIHBvc3NpYmxlLiBJbmNvbXBsZXRlIG9yIGluYWNjdXJhdGUgaW5mb3JtYXRpb24gbWF5IGxlYWQgdG8gZGVsYXlzIGluIHRoZSBwcmVwYXJhdGlvbiBvZiB5b3VyIHRheCByZXR1cm4gb3IgcG90ZW50aWFsIGlzc3VlcyB3aXRoIHRoZSBJUlMuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGNsYXJpZmljYXRpb24gcmVnYXJkaW5nIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cyBkaXJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIGFuZCBjcml0aWNhbCBmb3IgdGhlIHRpbWVseSBhbmQgYWNjdXJhdGUgY29tcGxldGlvbiBvZiB5b3VyIHRheCByZXR1cm4uPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRW1wbG95ZWUgQWNjb3VudGFibGUgUGxhblwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm4gYW5kIG5vdGljZWQgeW91J3ZlIG1lbnRpb25lZCBiZWluZyByZWltYnVyc2VkIGZvciBjZXJ0YWluIGV4cGVuc2VzIHVuZGVyIGFuIEVtcGxveWVlIEFjY291bnRhYmxlIFBsYW4uIFRvIGFjY3VyYXRlbHkgYWNjb3VudCBmb3IgdGhlc2UgcmVpbWJ1cnNlbWVudHMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggSVJTIHJ1bGVzLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgdGhlIGZvcm1hbCB3cml0dGVuIEFjY291bnRhYmxlIFBsYW4gcHJvdmlkZWQgYnkgeW91ciBlbXBsb3llci4gVGhpcyBzaG91bGQgb3V0bGluZSB0aGUgZXhwZW5zZSBhbGxvd2FuY2UgYW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIHJlaW1idXJzZW1lbnQgcG9saWN5LjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIG9yIGNvcnJlc3BvbmRlbmNlIGZyb20geW91ciBlbXBsb3llciBjb25maXJtaW5nIHlvdXIgcGFydGljaXBhdGlvbiBpbiB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5EZXRhaWxzIG9mIHRoZSBleHBlbnNlcyByZWltYnVyc2VkIHVuZGVyIHRoZSBwbGFuLCBpbmNsdWRpbmcgZGF0ZXMsIGFtb3VudHMsIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBleHBlbnNlcy48L2xpPlxyXG4gICAgICAgIDxsaT5Qcm9vZiBvZiBleHBlbnNlIChyZWNlaXB0cyBvciBpbnZvaWNlcykgcHJvdmlkZWQgdG8geW91ciBlbXBsb3llciBmb3IgcmVpbWJ1cnNlbWVudCB1bmRlciB0aGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT5BbnkgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIG9yIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSByZWltYnVyc2VtZW50cyBvciB0aGUgQWNjb3VudGFibGUgUGxhbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlBsZWFzZSBzZW5kIHVzIHRoaXMgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZSB0byBlbnN1cmUgd2UgY2FuIHByb2NlZWQgc21vb3RobHkgd2l0aCB5b3VyIHRheCByZXR1cm4gcHJlcGFyYXRpb24uIElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgbmVlZCBmdXJ0aGVyIGNsYXJpZmljYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byByZWFjaCBvdXQuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGBcclxuICAgIDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBlbnN1cmluZyBhbGwgZm9ybXMgb2YgY29tcGVuc2F0aW9uLCBpbmNsdWRpbmcgdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMsIGFyZSBhY2N1cmF0ZWx5IHJlcG9ydGVkIG9uIHlvdXIgdGF4IHJldHVybnMuIEJhc2VkIG9uIG91ciBwcmV2aW91cyBjb21tdW5pY2F0aW9uLCBpdCBhcHBlYXJzIHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBiZW5lZml0cyB0aGF0IG5lZWQgdG8gYmUgcmV2aWV3ZWQgZnVydGhlci4gVG8gYXNzaXN0IHlvdSBwcm9wZXJseSwgd2UgcmVxdWVzdCB0aGUgZm9sbG93aW5nIHNwZWNpZmljIGRldGFpbHM6PC9wPlxyXG48b2w+XHJcbiAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0IHJlY2VpdmVkOjwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBjb21wYW55IGNhcnMsIG1lbWJlcnNoaXBzLCBlZHVjYXRpb25hbCBhc3Npc3RhbmNlLCBldGMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5WYWx1ZSBvZiBlYWNoIGJlbmVmaXQ6PC9zdHJvbmc+IFRoZSBmYWlyIG1hcmtldCB2YWx1ZSAoRk1WKSBvZiBlYWNoIGJlbmVmaXQuIElmIHlvdSdyZSB1bnN1cmUsIHBsZWFzZSBwcm92aWRlIGFuIGVzdGltYXRlIGFuZCB0aGUgYmFzaXMgZm9yIHRoaXMgZXN0aW1hdGUuPC9saT5cclxuICA8bGk+PHN0cm9uZz5BbnkgYW1vdW50cyBjb250cmlidXRlZCBieSB5b3U6PC9zdHJvbmc+IElmIHlvdSBtYWRlIGNvbnRyaWJ1dGlvbnMgdG93YXJkIHRoZSBjb3N0IG9mIGFueSBiZW5lZml0LCBwbGVhc2Ugc3BlY2lmeSB0aGUgYW1vdW50cyBhbmQgZm9yIHdoaWNoIGJlbmVmaXRzLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+QmVuZWZpdCBkb2N1bWVudGF0aW9uOjwvc3Ryb25nPiBBbnkgYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gc3VwcG9ydCB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHN1Y2ggYXMgc3RhdGVtZW50cywgYWdyZWVtZW50cywgb3IgcmVjZWlwdHMuPC9saT5cclxuICA8bGk+PHN0cm9uZz5EYXRlczo8L3N0cm9uZz4gVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggeW91IHJlY2VpdmVkIHRoZXNlIGJlbmVmaXRzLiBJbmNsdWRlIHNwZWNpZmljIGRhdGVzIGlmIHBvc3NpYmxlLjwvbGk+XHJcbiAgPGxpPjxzdHJvbmc+RW1wbG95ZXIgSW5mb3JtYXRpb246PC9zdHJvbmc+IFRoZSBuYW1lIGFuZCBjb250YWN0IGluZm9ybWF0aW9uIG9mIHRoZSBlbXBsb3llcihzKSBwcm92aWRpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuPC9vbD5cclxuPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBhY2N1cmF0ZWx5IGRldGVybWluaW5nIHRoZSB0YXhhYmxlIHZhbHVlIG9mIHRoZXNlIGZyaW5nZSBiZW5lZml0cyBhbmQgZW5zdXJpbmcgY29tcGxpYW5jZSB3aXRoIElSUyByZWd1bGF0aW9ucy4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuPHA+V2UgYXBwcmVjaWF0ZSB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIgYW5kIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IGZ1cnRoZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTm9uIFRheGFibGUgRnJpbmdlIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJOb24gVGF4YWJsZSBGcmluZ2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBmaW5hbGl6aW5nIHlvdXIgdGF4IHJldHVybiBhbmQgaGF2ZSBpZGVudGlmaWVkIHBvdGVudGlhbCBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgdGhhdCBtYXkgYXBwbHkgdG8geW91ciBzaXR1YXRpb24uIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIG9wdGltaXplIHlvdXIgdGF4IG91dGNvbWUsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgeW91IG1heSBoYXZlIHJlY2VpdmVkOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgPGxpPjxzdHJvbmc+RGVzY3JpcHRpb24gb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBQbGVhc2UgcHJvdmlkZSBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBub24tdGF4YWJsZSBmcmluZ2UgYmVuZWZpdHMgcmVjZWl2ZWQgZHVyaW5nIHRoZSB0YXggeWVhci4gVGhpcyBtYXkgaW5jbHVkZSBoZWFsdGggc2F2aW5ncyBhY2NvdW50cyAoSFNBcyksIGVtcGxveWVlIGRpc2NvdW50cywgcHVibGljIHRyYW5zaXQgcGFzc2VzLCBldGMuPC9saT5cclxuICAgICAgPGxpPjxzdHJvbmc+VmFsdWUgb2YgZWFjaCBiZW5lZml0Ojwvc3Ryb25nPiBUaGUgZmFpciBtYXJrZXQgdmFsdWUgKEZNVikgb2YgZWFjaCBiZW5lZml0LiBGb3Igbm9uLXRheGFibGUgYmVuZWZpdHMsIHRoaXMgaGVscHMgaW4gcmVjb3JkLWtlZXBpbmcgYW5kIGNvbmZpcm1pbmcgZXhlbXB0aW9uIHN0YXR1cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5Db250cmlidXRpb24gYW1vdW50cywgaWYgYW55Ojwvc3Ryb25nPiBJZiB5b3UgaGF2ZSBjb250cmlidXRlZCB0b3dhcmRzIGFueSBvZiB0aGVzZSBiZW5lZml0cywgaW5kaWNhdGUgdGhlIGFtb3VudHMgYW5kIGZvciB3aGljaCBiZW5lZml0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5CZW5lZml0IGRvY3VtZW50YXRpb246PC9zdHJvbmc+IEFueSBkb2N1bWVudGF0aW9uIHRoYXQgY2FuIGNvcnJvYm9yYXRlIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgc3VjaCBhcyBzdGF0ZW1lbnRzLCBhZ3JlZW1lbnRzLCBvciByZWNlaXB0cy48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5EYXRlcyBvZiByZWNlaXB0Ojwvc3Ryb25nPiBUaGUgdGltZWZyYW1lIGR1cmluZyB3aGljaCB5b3UgcmVjZWl2ZWQgdGhlc2UgYmVuZWZpdHMuIEluY2x1ZGUgYXMgcHJlY2lzZSBkYXRlcyBhcyBwb3NzaWJsZS48L2xpPlxyXG4gICAgICA8bGk+PHN0cm9uZz5FbXBsb3llciBvciBwcm92aWRlciBpbmZvcm1hdGlvbjo8L3N0cm9uZz4gVGhlIG5hbWUgYW5kIGNvbnRhY3QgZGV0YWlscyBvZiB0aGUgZW1wbG95ZXIocykgb3IgdGhpcmQtcGFydHkgcHJvdmlkZXIocykgb2ZmZXJpbmcgdGhlc2UgYmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5HYXRoZXJpbmcgdGhpcyBpbmZvcm1hdGlvbiBoZWxwcyBlbnN1cmUgdGhhdCB5b3VyIHRheCBmaWxpbmdzIGFyZSBhY2N1cmF0ZSBhbmQgdGhhdCB5b3UgcmVjZWl2ZSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2Ygbm9uLXRheGFibGUgZnJpbmdlIGJlbmVmaXRzLiBQbGVhc2UgbGV0IHVzIGtub3cgaWYgeW91IG5lZWQgYW55IGhlbHAgaWRlbnRpZnlpbmcgb3IgZG9jdW1lbnRpbmcgdGhlc2UgYmVuZWZpdHMuPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgaGlnaGx5IGFwcHJlY2lhdGVkIGFzIHdlIHN0cml2ZSB0byBjb21wbGV0ZSB5b3VyIHRheCBwcmVwYXJhdGlvbiBlZmZpY2llbnRseS4gU2hvdWxkIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMsIGZlZWwgZnJlZSB0byBjb250YWN0IHVzIGRpcmVjdGx5LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIlZldGVyYW4gQmVuZWZpdHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIlZBIEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBob3BlIHRoaXMgbWVzc2FnZSBmaW5kcyB5b3Ugd2VsbC4gQXMgcGFydCBvZiBvdXIgb25nb2luZyBlZmZvcnQgdG8gZW5zdXJlIHRoZSBhY2N1cmFjeSBhbmQgY29tcGxldGVuZXNzIG9mIHlvdXIgdGF4IHJldHVybiwgd2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIFZldGVyYW4gQmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIGtpbmRseSByZXF1ZXN0IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIHRoaXMgdGFzaywgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPkEgZGV0YWlsZWQgbGlzdCBvZiB0aGUgVmV0ZXJhbiBCZW5lZml0cyB5b3UgcmVjZWl2ZWQsIGluY2x1ZGluZyBhbnkgZGlzYWJpbGl0eSwgZWR1Y2F0aW9uLCBhbmQgcGVuc2lvbiBiZW5lZml0cy48L2xpPlxyXG4gICAgICAgIDxsaT5PZmZpY2lhbCBkb2N1bWVudGF0aW9uIGZvciBlYWNoIHR5cGUgb2YgYmVuZWZpdCByZWNlaXZlZCwgc3VjaCBhcyBhd2FyZCBsZXR0ZXJzIG9yIHN0YXRlbWVudHMgZnJvbSB0aGUgRGVwYXJ0bWVudCBvZiBWZXRlcmFucyBBZmZhaXJzIChWQSkuPC9saT5cclxuICAgICAgICA8bGk+QW55IGNvcnJlc3BvbmRlbmNlIGZyb20gdGhlIFZBIG9yIG90aGVyIHJlbGV2YW50IGVudGl0aWVzIHJlZ2FyZGluZyB0aGUgdGF4YWJpbGl0eSBvZiB5b3VyIGJlbmVmaXRzLjwvbGk+XHJcbiAgICAgICAgPGxpPlRvdGFsIGFtb3VudCByZWNlaXZlZCBmb3IgZWFjaCBiZW5lZml0IHRocm91Z2hvdXQgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBvdGhlciBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gdGhhdCBjYW4gcHJvdmlkZSBjbGFyaXR5IG9uIHRoZSBuYXR1cmUgYW5kIGFtb3VudCBvZiB5b3VyIFZldGVyYW4gQmVuZWZpdHMuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIGRldGVybWluaW5nIHdoaWNoIGJlbmVmaXRzIGFyZSB0YXhhYmxlIGFuZCBlbnN1cmluZyB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBQbGVhc2Ugc3VibWl0IHRoZXNlIGRvY3VtZW50cyBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlLjwvcD5cclxuICAgIDxwPklmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBhc3Npc3RhbmNlIGluIGdhdGhlcmluZyB0aGVzZSBkb2N1bWVudHMsIHBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gY29udGFjdCB1cy4gVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiTGlmZSBJbnN1cmFuY2UgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkxpZmUgSW5zdXJhbmNlIFBheW1lbnRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBoYXZlIG5vdGVkIHlvdXIgbWVudGlvbiBvZiByZWNlaXZpbmcgbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMgZHVyaW5nIHRoZSB0YXggeWVhci4gVG8gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGVuc3VyZSB0aGVzZSBwcm9jZWVkcyBhcmUgaW5kZWVkIG5vbi10YXhhYmxlLCB3ZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgZGV0YWlsczo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IHJlY2VpdmVkIGZyb20gbGlmZSBpbnN1cmFuY2UgcGF5bWVudHMuPC9saT5cclxuICAgICAgPGxpPkRvY3VtZW50YXRpb24gb3Igc3RhdGVtZW50cyBwZXJ0YWluaW5nIHRvIHRoZSBsaWZlIGluc3VyYW5jZSBwYXltZW50cy48L2xpPlxyXG4gICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGluc3VyZWQgaW5kaXZpZHVhbCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwIHRvIHlvdS48L2xpPlxyXG4gICAgICA8bGk+QW55IGNvbW11bmljYXRpb25zIG9yIGxldHRlcnMgZnJvbSB0aGUgaW5zdXJhbmNlIGNvbXBhbnkgcmVnYXJkaW5nIHRoZSB0YXggc3RhdHVzIG9mIHRoZXNlIHBheW1lbnRzLjwvbGk+XHJcbiAgICAgIDxsaT5EZXRhaWxzIHJlZ2FyZGluZyBpZiB0aGUgcG9saWN5IHdhcyBwdXJjaGFzZWQgd2l0aCBhZnRlci10YXggb3IgcHJlLXRheCBkb2xsYXJzLjwvbGk+XHJcbiAgICAgIDxsaT5JZiBhbnkgcG9ydGlvbiBvZiB0aGUgbGlmZSBpbnN1cmFuY2UgcGF5bWVudCB3YXMgYW4gaW52ZXN0bWVudCByZXR1cm4sIHBsZWFzZSBwcm92aWRlIHJlbGF0ZWQgZG9jdW1lbnRzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBndWFyYW50ZWUgdGhlIGFjY3VyYWN5IGFuZCBpbnRlZ3JpdHkgb2YgeW91ciB0YXggcmV0dXJuLiBQbGVhc2UgcHJvdmlkZSB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS48L3A+XHJcbiAgICA8cD5TaG91bGQgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFdlJ3JlIGhlcmUgdG8gaGVscCE8L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIk1lZGljYXJlIFdhaXZlciBQYXltZW50c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHdlIHByb2NlZWQgd2l0aCBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJucywgd2Ugbm90ZWQgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgdW5kZXIgdGhlIGRpZmZpY3VsdHktb2YtY2FyZSBwcm92aXNpb25zIGR1cmluZyB0aGUgdGF4IHllYXIuIFRvIGVuc3VyZSB3ZSBtYXhpbWl6ZSB5b3VyIGVsaWdpYmxlIGluY29tZSBleGNsdXNpb25zLCBpdCdzIGNydWNpYWwgd2UgdmVyaWZ5IGNlcnRhaW4gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHlvdXIgbGl2aW5nIGFycmFuZ2VtZW50LCBhcyBwZXIgSVJTIGd1aWRlbGluZXMuPC9wPlxyXG4gICAgPHA+VG8gYXNzaXN0IHVzIGluIGNvbmZpcm1pbmcgdGhhdCB0aGVzZSBwYXltZW50cyBxdWFsaWZ5IGZvciBpbmNvbWUgZXhjbHVzaW9uLCBwbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Qcm9vZiBvZiBSZXNpZGVuY2U6PC9zdHJvbmc+IERvY3VtZW50cyBwcm92aW5nIHRoYXQgeW91IGFuZCB0aGUgaW5kaXZpZHVhbCB1bmRlciBjYXJlIHNoYXJlZCB0aGUgc2FtZSBwcmltYXJ5IHJlc2lkZW5jZSBkdXJpbmcgdGhlIHJlY2VpcHQgb2YgdGhlc2UgcGF5bWVudHMuIFRoaXMgY291bGQgaW5jbHVkZSB1dGlsaXR5IGJpbGxzLCBhIHJlbnRhbCBhZ3JlZW1lbnQsIG9yIGhvbWVvd25lcidzIGluc3VyYW5jZSBpbiBib3RoIG9mIHlvdXIgbmFtZXMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIHRoZSBDYXJlIFJlY2lwaWVudDo8L3N0cm9uZz4gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHBlcnNvbiByZWNlaXZpbmcgY2FyZSwgaW5jbHVkaW5nIHRoZWlyIHJlbGF0aW9uc2hpcCB0byB5b3UgYW5kIGFueSBkb2N1bWVudGF0aW9uIHRoYXQgaWRlbnRpZmllcyB0aGVpciBuZWVkIGZvciBjYXJlIChlLmcuLCBhIGxldHRlciBmcm9tIGEgaGVhbHRoY2FyZSBwcm92aWRlcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5QYXltZW50IFJlY29yZHM6PC9zdHJvbmc+IEFueSByZWNvcmRzIG9mIHRoZSBNZWRpY2FyZSBXYWl2ZXIgUGF5bWVudHMgeW91IHJlY2VpdmVkLCBhcyB0aGlzIHdpbGwgaGVscCB1cyBkZXRlcm1pbmUgdGhlIGV4YWN0IGFtb3VudHMgYW5kIHRoZSBwZXJpb2RzIGNvdmVyZWQuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BbnkgRm9ybWFsIEFncmVlbWVudHMgb3IgQ29udHJhY3RzOjwvc3Ryb25nPiBJZiB0aGVyZSB3YXMgYSBmb3JtYWwgYWdyZWVtZW50IG9yIGNvbnRyYWN0IGRldGFpbGluZyB0aGUgY2FyZSBwcm92aWRlZCwgcGxlYXNlIGluY2x1ZGUgdGhpcyBhcyB3ZWxsLiBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGlmIHRoZSBjYXJlIGFycmFuZ2VtZW50IHdhcyBmYWNpbGl0YXRlZCB0aHJvdWdoIGEgc3RhdGUgb3IgdGhpcmQtcGFydHkgYWdlbmN5LjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyB2aXRhbCB0byBlbnN1cmUgd2UgY29tcGx5IHdpdGggdGF4aW5nIGF1dGhvcml0aWVzIHdoaWxlIGFjY3VyYXRlbHkgcmVmbGVjdGluZyB5b3VyIGZpbmFuY2VzLiBJZiBhbnkgb2YgdGhlc2UgcmVxdWlyZW1lbnRzIHBvc2UgYSBkaWZmaWN1bHR5IG9yIGlmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcGxlYXNlIGRvbid0IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMgZGlyZWN0bHkuIE91ciBnb2FsIGlzIHRvIHN1cHBvcnQgeW91IHRocm91Z2ggdGhpcyBwcm9jZXNzIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBiZW5lZml0cy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci4gV2UgbG9vayBmb3J3YXJkIHRvIGFzc2lzdGluZyB5b3UgZnVydGhlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJEaXNhYmlsaXR5IEluc3VyYW5jZSBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBJbnN1cmFuY2UgQmVuZWZpdHNcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwcmVwYXJpbmcgeW91ciB0YXggcmV0dXJuIGFuZCBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IGluc3VyYW5jZSBiZW5lZml0cyBkdXJpbmcgdGhlIHRheCB5ZWFyLiBUbyBhY2N1cmF0ZWx5IGRldGVybWluZSBpZiB0aGVzZSBiZW5lZml0cyBhcmUgZWxpZ2libGUgdG8gYmUgZXhjbHVkZWQgZnJvbSB5b3VyIGluY29tZSwgd2UgcmVxdWlyZSBmdXJ0aGVyIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBpbnN1cmFuY2UgcHJlbWl1bXMgcGFpZC48L3A+XHJcbiAgICA8cD5LaW5kbHkgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2U6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5UaGUgdG90YWwgYW1vdW50IG9mIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkIGR1cmluZyB0aGUgdGF4IHllYXIuPC9saT5cclxuICAgICAgICA8bGk+RGV0YWlsZWQgc3RhdGVtZW50cyBvciBkb2N1bWVudGF0aW9uIHNob3dpbmcgdGhlIGRpc2FiaWxpdHkgaW5zdXJhbmNlIGJlbmVmaXRzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBvbiB3aG8gcGFpZCB0aGUgaW5zdXJhbmNlIHByZW1pdW1zICh5b3Ugb3IgeW91ciBlbXBsb3llcikuPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIHBheW1lbnQgb2YgdGhlIHByZW1pdW1zOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VGhlIGFtb3VudCB5b3UgcGFpZCB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBzdXBwb3J0aW5nIGRvY3VtZW50cyBmb3IgdGhlIHBheW1lbnRzIG1hZGUgYnkgeW91IChyZWNlaXB0cyBvciBiYW5rIHN0YXRlbWVudHMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGk+SWYgeW91ciBlbXBsb3llciBjb250cmlidXRlZCB0byB0aGUgcGF5bWVudCBvZiB0aGUgcHJlbWl1bXM6XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaT5UaGUgYW1vdW50IHBhaWQgYnkgeW91ciBlbXBsb3llciB0b3dhcmRzIHRoZSBwcmVtaXVtcy48L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFueSBkb2N1bWVudHMgaW5kaWNhdGluZyBlbXBsb3llciBjb250cmlidXRpb25zIChwYXkgc3R1YnMsIGVtcGxveWVyIGxldHRlcnMpLjwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5UaGlzIGluZm9ybWF0aW9uIGlzIGNydWNpYWwgZm9yIHVzIHRvIGRldGVybWluZSB0aGUgdGF4YWJsZSBwb3J0aW9uLCBpZiBhbnksIG9mIHlvdXIgZGlzYWJpbGl0eSBpbnN1cmFuY2UgYmVuZWZpdHMuIFByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgaGVscCB1cyBlbnN1cmUgdGhlIGFjY3VyYWN5IG9mIHlvdXIgdGF4IGZpbGluZyBhbmQgcG90ZW50aWFsbHkgbG93ZXIgeW91ciB0YXhhYmxlIGluY29tZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIHJlYWNoIG91dCBpZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIGlmIHdlIGNhbiBiZSBvZiBmdXJ0aGVyIGFzc2lzdGFuY2UuIFdlIGFwcHJlY2lhdGUgeW91ciBwcm9tcHQgcmVzcG9uc2UgdG8gdGhpcyByZXF1ZXN0LjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkRpc2FiaWxpdHkgUmV0aXJlbWVudCBCZW5lZml0c1wiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiRGlzYWJpbGl0eSBSZXRpcmVtZW50IEJlbmVmaXRzXCIsXHJcbiAgICBhY3Rpb25JbnN0cnVjdGlvbnM6IGA8cD5XZSBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IGRvY3VtZW50cyBhbmQgaGF2ZSBub3RlZCB0aGF0IHlvdSByZWNlaXZlZCBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgZHVyaW5nIHRoZSB0YXggeWVhci4gSW4gb3JkZXIgdG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhlc2UgYmVuZWZpdHMsIHdlIG5lZWQgYWRkaXRpb25hbCBkZXRhaWxzLiBUaGUgdGF4YWJpbGl0eSBvZiB0aGVzZSBiZW5lZml0cyBjYW4gZGVwZW5kIG9uIHdoZW4geW91IHRvb2sgcmV0aXJlbWVudCBkdWUgdG8gZGlzYWJpbGl0eS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGFzIHNvb24gYXMgcG9zc2libGU6PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkRhdGUgb2YgUmV0aXJlbWVudDo8L3N0cm9uZz4gVGhlIGV4YWN0IGRhdGUgeW91IHJldGlyZWQgZHVlIHRvIGRpc2FiaWxpdHkuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5Eb2N1bWVudGF0aW9uIG9mIERpc2FiaWxpdHkgUmV0aXJlbWVudDo8L3N0cm9uZz4gQW55IG9mZmljaWFsIGRvY3VtZW50YXRpb24geW91IGhhdmUgdGhhdCBjb25maXJtcyB5b3VyIHJldGlyZW1lbnQgd2FzIGR1ZSB0byBkaXNhYmlsaXR5LiBUaGlzIG1heSBpbmNsdWRlIGxldHRlcnMgZnJvbSB5b3VyIGVtcGxveWVyLCB0aGUgcmV0aXJlbWVudCBwbGFuLCBvciBtZWRpY2FsIHJlY29yZHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EZXRhaWxzIG9mIEJlbmVmaXRzIFJlY2VpdmVkOjwvc3Ryb25nPiBTcGVjaWZpYyBhbW91bnRzIGFuZCB0aGUgc291cmNlIG9mIHRoZSBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMuIFBsZWFzZSBpbmNsdWRlIGFueSByZWxhdGVkIGRvY3VtZW50cyBzdWNoIGFzIHN0YXRlbWVudHMgb3Igbm90aWNlcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlByZXZpb3VzIFllYXIgVy0yIG9yIDEwOTkgRm9ybXM6PC9zdHJvbmc+IElmIHlvdSByZWNlaXZlZCBhbnkgd2FnZXMgb3IgZGlzYWJpbGl0eSBwYXltZW50cyB0aGF0IHdlcmUgcmVwb3J0ZWQgb24gVy0yIG9yIDEwOTkgZm9ybXMgaW4gdGhlIHllYXIgb2YgeW91ciByZXRpcmVtZW50LCBwbGVhc2UgcHJvdmlkZSB0aGVzZSBmb3Jtcy48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFueSBDb3JyZXNwb25kZW5jZSBmcm9tIHRoZSBJUlM6PC9zdHJvbmc+IElmIHlvdSBoYXZlIHJlY2VpdmVkIGFueSBub3RpY2VzIG9yIGxldHRlcnMgZnJvbSB0aGUgSVJTIHJlZ2FyZGluZyB5b3VyIGRpc2FiaWxpdHkgcmV0aXJlbWVudCBiZW5lZml0cywgcGxlYXNlIGluY2x1ZGUgY29waWVzIG9mIHRoZXNlIGNvbW11bmljYXRpb25zLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhlIGFib3ZlIGluZm9ybWF0aW9uIGlzIHZpdGFsIHRvIGVuc3VyZSB5b3VyIHRheCByZXR1cm4gaXMgY29tcGxldGUgYW5kIGFjY3VyYXRlLiBVbmRlcnN0YW5kaW5nIHRoZSBzcGVjaWZpY3Mgb2YgeW91ciBkaXNhYmlsaXR5IHJldGlyZW1lbnQgYmVuZWZpdHMgd2lsbCBhaWQgdXMgaW4gZGV0ZXJtaW5pbmcgdGhlaXIgdGF4YWJpbGl0eSBhbmQgZW5zdXJpbmcgdGhhdCB5b3VyIHRheCBvYmxpZ2F0aW9ucyBhcmUgcHJlY2lzZWx5IGNhbGN1bGF0ZWQuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgZ2F0aGVyaW5nIHRoZXNlIGRvY3VtZW50cywgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuIFlvdXIgcHJvbXB0IHJlc3BvbnNlIGlzIGhpZ2hseSBhcHByZWNpYXRlZC48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJDbGVyZ3kgV2FnZXNcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkNsZXJneSBXYWdlc1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHByZXBhcmluZyB5b3VyIHRheCByZXR1cm5zIGFuZCBoYXZlIG5vdGVkIHRoYXQgeW91IHJlY2VpdmVkIFctMiB3YWdlcyBhcyBhIGNsZXJneSBtZW1iZXIuIFRvIGVuc3VyZSBhY2N1cmF0ZSByZXBvcnRpbmcgYW5kIHRvIHBvdGVudGlhbGx5IG1heGltaXplIHlvdXIgdGF4IGJlbmVmaXRzLCB3ZSByZXF1aXJlIGZ1cnRoZXIgZGV0YWlscyByZWdhcmRpbmcgeW91ciBjb21wZW5zYXRpb24gcGFja2FnZS48L3A+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZTo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgICAgPGxpPjxiPlctMiBGb3JtOjwvYj4gSWYgbm90IGFscmVhZHkgcHJvdmlkZWQsIGluY2x1ZGUgYW55IFctMiBmb3JtcyBpc3N1ZWQgYnkgeW91ciByZWxpZ2lvdXMgaW5zdGl0dXRpb24uPC9saT5cclxuICAgICAgICA8bGk+PGI+SG91c2luZyBBbGxvd2FuY2UgRG9jdW1lbnRhdGlvbjo8L2I+IERldGFpbGVkIHN0YXRlbWVudCBvciBsZXR0ZXIgZnJvbSB5b3VyIHJlbGlnaW91cyBpbnN0aXR1dGlvbiBzcGVjaWZ5aW5nIHRoZSBhbW91bnQgZGVzaWduYXRlZCBhcyBob3VzaW5nIGFsbG93YW5jZS48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5TZWxmLUVtcGxveW1lbnQgVGF4OjwvYj4gQ29uZmlybWF0aW9uIG9uIHdoZXRoZXIgeW91IGhhdmUgdGFrZW4gYSB2b3cgb2YgcG92ZXJ0eSAoaWYgYXBwbGljYWJsZSksIG9yIGFueSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gb3B0aW5nIG91dCBvZiBzZWxmLWVtcGxveW1lbnQgdGF4LjwvbGk+XHJcbiAgICAgICAgPGxpPjxiPkV4cGVuc2UgUmVpbWJ1cnNlbWVudHM6PC9iPiBEb2N1bWVudGF0aW9uIHNob3dpbmcgYW55IGV4cGVuc2UgcmVpbWJ1cnNlbWVudHMgcmVjZWl2ZWQgdW5kZXIgYW4gYWNjb3VudGFibGUgcGxhbi48L2xpPlxyXG4gICAgICAgIDxsaT48Yj5PdGhlciBDb21wZW5zYXRpb246PC9iPiBJbmZvcm1hdGlvbiBvbiBhbnkgb3RoZXIgY29tcGVuc2F0aW9uIHJlY2VpdmVkIGluIHlvdXIgY2FwYWNpdHkgYXMgY2xlcmd5LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGxvdmUgb2ZmZXJpbmdzLCBmZWVzIGZvciBzZXJ2aWNlcyAod2VkZGluZ3MsIGZ1bmVyYWxzLCBldGMuKSwgYW5kIHBhcnNvbmFnZSBhbGxvd2FuY2VzLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciB1cyB0byBhY2N1cmF0ZWx5IHJlcHJlc2VudCB5b3VyIGVhcm5pbmdzIGFuZCB0byBjYWxjdWxhdGUgYW55IHBvdGVudGlhbCBkZWR1Y3Rpb25zIGNvcnJlY3RseS4gWW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgcmVxdWVzdCB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgeW91ciB0YXggcmV0dXJucyBhcmUgcHJlcGFyZWQgaW4gYSB0aW1lbHkgYW5kIGVmZmljaWVudCBtYW5uZXIuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgY2xhcmlmaWNhdGlvbiBvbiB3aGF0IGlzIHJlcXVpcmVkLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuIFdlIGFyZSBoZXJlIHRvIGFzc2lzdCB5b3UgdGhyb3VnaCBldmVyeSBzdGVwIG9mIHRoaXMgcHJvY2Vzcy48L3A+XHJcbiAgICA8cD5UaGFuayB5b3UgZm9yIHlvdXIgY29vcGVyYXRpb24gYW5kIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiSW50ZXJlc3QgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJJbnRlcmVzdCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPkluIHJldmlld2luZyB5b3VyIGZpbmFuY2lhbCBhY3Rpdml0aWVzIGZvciB0aGUgdGF4IHllYXIsIHlvdSBpbmRpY2F0ZWQgcmVjZWl2aW5nIGludGVyZXN0IGluY29tZS4gVG8gYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlIHRheGFiaWxpdHkgb2YgdGhpcyBpbmNvbWUgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSByZXF1aXJlIGFkZGl0aW9uYWwgZGV0YWlscy4gS2luZGx5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjo8L3A+XHJcbiAgICA8b2w+XHJcbiAgICAgIDxsaT48Yj5Tb3VyY2Ugb2YgSW50ZXJlc3QgSW5jb21lOjwvYj4gUGxlYXNlIHNwZWNpZnkgdGhlIGluc3RpdHV0aW9uKHMpIG9yIGVudGl0eShpZXMpIGZyb20gd2hpY2ggeW91IHJlY2VpdmVkIGludGVyZXN0IGluY29tZSAoZS5nLiwgYmFua3MsIGNyZWRpdCB1bmlvbnMpLjwvbGk+XHJcbiAgICAgIDxsaT48Yj5BbW91bnQgUmVjZWl2ZWQ6PC9iPiBDb25maXJtIHRoZSB0b3RhbCBhbW91bnQgb2YgaW50ZXJlc3QgaW5jb21lIHJlY2VpdmVkIGZyb20gZWFjaCBzb3VyY2UgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICA8bGk+PGI+QWNjb3VudCBUeXBlczo8L2I+IElkZW50aWZ5IHRoZSB0eXBlIG9mIGFjY291bnRzIHRoYXQgZ2VuZXJhdGVkIHRoZSBpbnRlcmVzdCAoZS5nLiwgc2F2aW5ncywgY2hlY2tpbmcsIGNlcnRpZmljYXRlcyBvZiBkZXBvc2l0KS48L2xpPlxyXG4gICAgICA8bGk+PGI+VGF4IEZvcm1zIFJlY2VpdmVkOjwvYj4gTGlzdCBhbnkgdGF4IGZvcm1zIHlvdSBoYXZlIHJlY2VpdmVkIHJlbGF0ZWQgdG8gaW50ZXJlc3QgaW5jb21lLCBzdWNoIGFzIEZvcm0gMTA5OS1JTlQgb3IgRm9ybSAxMDk5LU9JRC48L2xpPlxyXG4gICAgICA8bGk+PGI+Rm9yZWlnbiBJbnRlcmVzdDo8L2I+IElmIGFueSBpbnRlcmVzdCBpbmNvbWUgd2FzIGVhcm5lZCBmcm9tIGZvcmVpZ24gYWNjb3VudHMgb3Igc291cmNlcywgcGxlYXNlIHByb3ZpZGUgZGV0YWlscywgaW5jbHVkaW5nIHRoZSBjb3VudHJ5IG9mIG9yaWdpbi48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlByb3ZpZGluZyB0aGVzZSBkZXRhaWxzIHdpbGwgZW5hYmxlIHVzIHRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSB0YXggaW1wbGljYXRpb25zIG9mIHlvdXIgaW50ZXJlc3QgaW5jb21lIGFuZCBlbnN1cmUgeW91ciB0YXggcmV0dXJuIGlzIGNvbXBsZXRlIGFuZCBjb3JyZWN0LiBZb3UgY2FuIGF0dGFjaCB0aGUgcmVxdWVzdGVkIGRvY3VtZW50cyBhbmQgaW5mb3JtYXRpb24gYnkgcmVwbHlpbmcgdG8gdGhpcyBlbWFpbCBvciB1cGxvYWRpbmcgdGhlbSBkaXJlY3RseSB0byBvdXIgc2VjdXJlIGNsaWVudCBwb3J0YWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciByZXF1aXJlIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkJhbmsgQWNjb3VudCBPcGVuaW5nIEdpZnRzXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJCYW5rIEFjY291bnQgT3BlbmluZyBHaWZ0c1wiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJldmlld2luZyB5b3VyIHRheCBzaXR1YXRpb24gYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgcmVjZWl2ZWQgYSBnaWZ0IGZvciBvcGVuaW5nIGFuIGFjY291bnQgYXQgYSBmaW5hbmNpYWwgaW5zdGl0dXRpb24uIFRvIGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSB0YXhhYmlsaXR5IG9mIHRoaXMgaW5jb21lLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+VGhlIG5hbWUgb2YgdGhlIGZpbmFuY2lhbCBpbnN0aXR1dGlvbiB3aGVyZSB0aGUgYWNjb3VudCB3YXMgb3BlbmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPlRoZSBkYXRlIHRoZSBhY2NvdW50IHdhcyBvcGVuZWQuPC9saT5cclxuICAgICAgICA8bGk+QSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ2lmdCByZWNlaXZlZCAoZS5nLiwgY2FzaCwgbWVyY2hhbmRpc2UsIG9yIHNlcnZpY2VzKS48L2xpPlxyXG4gICAgICAgIDxsaT5UaGUgZmFpciBtYXJrZXQgdmFsdWUgb2YgdGhlIGdpZnQgYXQgdGhlIHRpbWUgaXQgd2FzIHJlY2VpdmVkLjwvbGk+XHJcbiAgICAgICAgPGxpPkFueSBkb2N1bWVudGF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBmaW5hbmNpYWwgaW5zdGl0dXRpb24gcmVnYXJkaW5nIHRoZSBnaWZ0IChlLmcuLCBhIGxldHRlciwgZW1haWwgY29uZmlybWF0aW9uLCBvciBzdGF0ZW1lbnQgaW5kaWNhdGluZyB0aGUgdmFsdWUgb2YgdGhlIGdpZnQpLjwvbGk+XHJcbiAgICAgICAgPGxpPkNvbmZpcm1hdGlvbiBpZiB5b3UgaGF2ZSByZWNlaXZlZCBtb3JlIHRoYW4gb25lIGdpZnQgZm9yIG9wZW5pbmcgYWNjb3VudHMgd2l0aGluIHRoZSBzYW1lIHRheCB5ZWFyLCBhbmQgaWYgc28sIHRoZSBkZXRhaWxzIGZvciBlYWNoLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBhdCB5b3VyIGVhcmxpZXN0IGNvbnZlbmllbmNlIHRvIGVuc3VyZSB3ZSBjYW4gYWNjdXJhdGVseSBhc3Nlc3MgdGhlIHRheCBpbXBsaWNhdGlvbnMgYW5kIGNvbXBseSB3aXRoIGFsbCBJUlMgcmVxdWlyZW1lbnRzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBwcm9tcHQgYXR0ZW50aW9uIHRvIHRoaXMgbWF0dGVyLjwvcD5gXHJcbiAgfSxcclxuICB7XHJcbiAgICBhY3Rpb25UYXhTdWJqZWN0OiBcIkNEIEludGVyZXN0XCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJDRCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+VG8gZW5zdXJlIGFjY3VyYXRlIHJlcG9ydGluZyBvZiB5b3VyIGluY29tZSBmcm9tIENlcnRpZmljYXRlcyBvZiBEZXBvc2l0IChDRHMpIGZvciB0aGUgdGF4IHllYXIsIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uIFRoaXMgaXMgZXNzZW50aWFsIHRvIGNvbXBseSB3aXRoIElSUyByZWd1bGF0aW9ucyBhbmQgdG8gcG90ZW50aWFsbHkgb3B0aW1pemUgeW91ciB0YXggYmVuZWZpdHMuPC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk5hbWUgb2YgdGhlIEJhbmsgb3IgRmluYW5jaWFsIEluc3RpdHV0aW9uOjwvc3Ryb25nPiBXaGVyZSB0aGUgQ0QgaXMgaGVsZC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkFjY291bnQgTnVtYmVyOjwvc3Ryb25nPiBUaGlzIGhlbHBzIGluIGlkZW50aWZ5aW5nIHRoZSBzcGVjaWZpYyBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPlRvdGFsIEludGVyZXN0IEVhcm5lZDo8L3N0cm9uZz4gVGhlIGFtb3VudCBvZiBpbnRlcmVzdCBlYXJuZWQgZnJvbSB0aGUgQ0QgZHVyaW5nIHRoZSB0YXggeWVhci48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPkNEIFRlcm06PC9zdHJvbmc+IFRoZSBkdXJhdGlvbiBvciB0ZXJtIG9mIHRoZSBDRCAoZS5nLiwgNiBtb250aHMsIDEgeWVhcikuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5EYXRlIG9mIFB1cmNoYXNlOjwvc3Ryb25nPiBXaGVuIHlvdSBvcmlnaW5hbGx5IGFjcXVpcmVkIHRoZSBDRC48L2xpPlxyXG4gICAgICAgIDxsaT48c3Ryb25nPk1hdHVyaXR5IERhdGU6PC9zdHJvbmc+IFdoZW4gdGhlIENEIHJlYWNoZWQgb3Igd2lsbCByZWFjaCBpdHMgZnVsbCB0ZXJtLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+MTA5OS1JTlQgRm9ybXM6PC9zdHJvbmc+IElmIHJlY2VpdmVkLCBwbGVhc2UgaW5jbHVkZSBjb3BpZXMgb2YgYW55IDEwOTktSU5UIGZvcm1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ0QgaW50ZXJlc3QuPC9saT5cclxuICAgIDwvb2w+XHJcbiAgICA8cD5QbGVhc2UgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UgdG8gZW5zdXJlIGFjY3VyYXRlIGFuZCB0aW1lbHkgcHJlcGFyYXRpb24gb2YgeW91ciB0YXggZG9jdW1lbnRzLiBZb3UgbWF5IHVwbG9hZCB0aGUgZG9jdW1lbnRzIGRpcmVjdGx5IHRocm91Z2ggb3VyIHNlY3VyZSBjbGllbnQgcG9ydGFsIG9yIHByb3ZpZGUgdGhlbSB2aWEgZW1haWwuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIHByb21wdCBhdHRlbnRpb24gdG8gdGhpcyBtYXR0ZXIuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiVGF4IEV4ZW1wdCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uVGl0bGU6IFwiVGF4IEV4ZW1wdCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgdW5kZXJzdGFuZCB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRheC1leGVtcHQgaW50ZXJlc3QgZHVyaW5nIHRoZSB0YXggeWVhciwgcG9zc2libHkgZnJvbSBtdW5pY2lwYWwgYm9uZHMgb3Igc2ltaWxhciBpbnZlc3RtZW50cy4gVG8gYWNjdXJhdGVseSBwcmVwYXJlIHlvdXIgdGF4IHJldHVybnMgYW5kIGVuc3VyZSBjb21wbGlhbmNlIHdpdGggdGF4IHJlZ3VsYXRpb25zLCB3ZSBraW5kbHkgcmVxdWVzdCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOjwvcD5cclxuICAgIDxvbD5cclxuICAgICAgICA8bGk+PHN0cm9uZz5TdGF0ZW1lbnRzIG9mIFRheC1FeGVtcHQgSW50ZXJlc3Q6PC9zdHJvbmc+IFBsZWFzZSBwcm92aWRlIGFsbCAxMDk5LUlOVCBmb3JtcyBvciBlcXVpdmFsZW50IHN0YXRlbWVudHMgdGhhdCBkZXRhaWwgeW91ciB0YXgtZXhlbXB0IGludGVyZXN0IGluY29tZSBmb3IgdGhlIHRheCB5ZWFyLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+RGV0YWlscyBvZiBJc3N1aW5nIEVudGl0aWVzOjwvc3Ryb25nPiBBIGxpc3Qgb3Igc3RhdGVtZW50IGlkZW50aWZ5aW5nIHRoZSBlbnRpdGllcyB0aGF0IGlzc3VlZCB0aGUgYm9uZHMgb3Igc2ltaWxhciBpbnZlc3RtZW50cy4gVGhpcyBpbmNsdWRlcyBtdW5pY2lwYWwsIHN0YXRlLCBvciBmZWRlcmFsIGVudGl0aWVzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+SW52ZXN0bWVudCBEZXRhaWw6PC9zdHJvbmc+IEEgYnJlYWtkb3duIG9mIHRoZSBpbnZlc3RtZW50cyBjb250cmlidXRpbmcgdG8gdGF4LWV4ZW1wdCBpbnRlcmVzdC4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgcHVyY2hhc2UgZGF0ZSwgcHVyY2hhc2UgYW1vdW50cywgYW5kIGFueSByZWxhdGVkIG1hdHVyaXR5IGRhdGVzLjwvbGk+XHJcbiAgICAgICAgPGxpPjxzdHJvbmc+QnJva2VyYWdlIEFjY291bnQgU3RhdGVtZW50czo8L3N0cm9uZz4gQ29waWVzIG9mIHlvdXIgYnJva2VyYWdlIGFjY291bnQgc3RhdGVtZW50cyB0aGF0IGRldGFpbCB0cmFuc2FjdGlvbnMgYW5kIGhvbGRpbmdzIGluIHRheC1leGVtcHQgaW52ZXN0bWVudHMuPC9saT5cclxuICAgICAgICA8bGk+PHN0cm9uZz5BTVQgKEFsdGVybmF0aXZlIE1pbmltdW0gVGF4KSBDb25zaWRlcmF0aW9uOjwvc3Ryb25nPiBJZiBhdmFpbGFibGUsIGRvY3VtZW50YXRpb24gaW5kaWNhdGluZyB3aGV0aGVyIGFueSBvZiB0aGUgdGF4LWV4ZW1wdCBpbnRlcmVzdCBpcyBzdWJqZWN0IHRvIHRoZSBBbHRlcm5hdGl2ZSBNaW5pbXVtIFRheC48L2xpPlxyXG4gICAgPC9vbD5cclxuICAgIDxwPlRoaXMgaW5mb3JtYXRpb24gaXMgY3J1Y2lhbCBmb3IgYW4gYWNjdXJhdGUgYW5kIGVmZmljaWVudCB0YXggcHJlcGFyYXRpb24gcHJvY2Vzcy4gUGxlYXNlIGZvcndhcmQgdGhlIHJlcXVlc3RlZCBkb2N1bWVudHMgYXQgeW91ciBlYXJsaWVzdCBjb252ZW5pZW5jZS4gSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGFzc2lzdGFuY2UgaW4gZ2F0aGVyaW5nIHRoaXMgaW5mb3JtYXRpb24sIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IHVzLjwvcD5cclxuICAgIDxwPlRoYW5rIHlvdSBmb3IgeW91ciBjb29wZXJhdGlvbiBhbmQgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIG1hdHRlci48L3A+YFxyXG4gIH0sXHJcbiAge1xyXG4gICAgYWN0aW9uVGF4U3ViamVjdDogXCJFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQgSW50ZXJlc3RcIixcclxuICAgIGFjdGlvblRpdGxlOiBcIkVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZCBJbnRlcmVzdFwiLFxyXG4gICAgYWN0aW9uSW5zdHJ1Y3Rpb25zOiBgPHA+V2UgaG9wZSB0aGlzIG1lc3NhZ2UgZmluZHMgeW91IHdlbGwuIEFzIHBhcnQgb2Ygb3VyIGNvbnRpbnVlZCBlZmZvcnQgdG8gcHJvdmlkZSB5b3Ugd2l0aCB0aGUgYmVzdCB0YXggcHJlcGFyYXRpb24gc2VydmljZXMsIHdlIGFyZSByZWFjaGluZyBvdXQgdG8gZ2F0aGVyIG5lY2Vzc2FyeSBkb2N1bWVudGF0aW9uIHJlbGF0ZWQgdG8gdGhlIGludGVyZXN0IHlvdSBtYXkgaGF2ZSByZWNlaXZlZCBmcm9tIHJlZGVlbWluZyBhbiBFZHVjYXRpb25hbCBTYXZpbmdzIEJvbmQuPC9wPlxyXG5cclxuICAgIDxwPlRvIGFjY3VyYXRlbHkgYXNzZXNzIHRoZSBlbGlnaWJpbGl0eSBmb3IgZXhlbXB0aW9uIGFuZCB0byBlbnN1cmUgY29tcGxpYW5jZSB3aXRoIHRoZSBJUlMsIHdlIGtpbmRseSByZXF1ZXN0IHlvdSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICAgIDxsaT5BIGNvcHkgb2YgRm9ybSAxMDk5LUlOVCBvciBzaW1pbGFyIHN0YXRlbWVudCBwcm92aWRlZCBieSB0aGUgZmluYW5jaWFsIGluc3RpdHV0aW9uLCBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgaW50ZXJlc3QgcmVjZWl2ZWQgZnJvbSB0aGUgRWR1Y2F0aW9uYWwgU2F2aW5ncyBCb25kLjwvbGk+XHJcbiAgICAgICAgPGxpPkRldGFpbGVkIHJlY29yZHMgb2YgdGhlIEVkdWNhdGlvbmFsIFNhdmluZ3MgQm9uZHMgcmVkZWVtZWQgZHVyaW5nIHRoZSB0YXggeWVhciwgaW5jbHVkaW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+Qm9uZCBzZXJpYWwgbnVtYmVyczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+SXNzdWUgZGF0ZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlJlZGVtcHRpb24gZGF0ZXM8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPkFtb3VudHM8L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPlJlY2VpcHRzIG9yIGRvY3VtZW50YXRpb24gZm9yIHF1YWxpZmllZCBlZHVjYXRpb25hbCBleHBlbnNlcyBwYWlkIGR1cmluZyB0aGUgeWVhciwgaW5jbHVkaW5nOlxyXG4gICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICA8bGk+VHVpdGlvbiBhbmQgZmVlczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+Q291cnNlIG1hdGVyaWFsczwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+QW55IG90aGVyIHJlcXVpcmVkIGV4cGVuc2VzIGZvciBlbnJvbGxtZW50IG9yIGF0dGVuZGFuY2UgYXQgYW4gZWxpZ2libGUgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb248L2xpPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpPlByb29mIG9mIGVucm9sbG1lbnQgZnJvbSBhbiBlbGlnaWJsZSBlZHVjYXRpb25hbCBpbnN0aXR1dGlvbiBmb3IgdGhlIGJlbmVmaWNpYXJ5IG9mIHRoZSBib25kLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+VGhpcyBpbmZvcm1hdGlvbiBpcyBjcnVjaWFsIGZvciBkZXRlcm1pbmluZyB0aGUgdGF4YWJpbGl0eSBvZiB0aGUgaW50ZXJlc3QgaW5jb21lIGFuZCBwb3RlbnRpYWxseSBtYXhpbWl6aW5nIHlvdXIgdGF4IGJlbmVmaXRzLiBXZSBhcHByZWNpYXRlIHlvdXIgcHJvbXB0IGF0dGVudGlvbiB0byB0aGlzIHJlcXVlc3QgYW5kIHJlY29tbWVuZCBjb21waWxpbmcgdGhlc2UgZG9jdW1lbnRzIGF0IHlvdXIgZWFybGllc3QgY29udmVuaWVuY2UuPC9wPlxyXG4gICAgPHA+SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBvciBuZWVkIGZ1cnRoZXIgYXNzaXN0YW5jZSwgcGxlYXNlIGRvIG5vdCBoZXNpdGF0ZSB0byBjb250YWN0IG91ciBvZmZpY2UgZGlyZWN0bHkuPC9wPlxyXG4gICAgPHA+VGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCB0cnVzdCBpbiBvdXIgc2VydmljZXMuPC9wPmBcclxuICB9LFxyXG4gIHtcclxuICAgIGFjdGlvblRheFN1YmplY3Q6IFwiRGl2aWRlbmQgSW5jb21lXCIsXHJcbiAgICBhY3Rpb25UaXRsZTogXCJEaXZpZGVuZCBJbmNvbWVcIixcclxuICAgIGFjdGlvbkluc3RydWN0aW9uczogYDxwPldlIGFyZSBjdXJyZW50bHkgaW4gdGhlIHByb2Nlc3Mgb2YgcHJlcGFyaW5nIHlvdXIgdGF4IHJldHVybnMgYW5kIGhhdmUgbm90ZWQgdGhhdCB5b3UgaW5kaWNhdGVkIHJlY2VpdmluZyBkaXZpZGVuZCBpbmNvbWUgb3ZlciB0aGUgcGFzdCB0YXggeWVhci4gVG8gZW5zdXJlIHdlIGFjY3VyYXRlbHkgcmVwb3J0IHRoaXMgaW5jb21lIGFuZCBvcHRpbWl6ZSB5b3VyIHRheCBzaXR1YXRpb24sIHdlIGtpbmRseSByZXF1ZXN0IHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRhdGlvbiBhbmQgaW5mb3JtYXRpb246PC9wPlxyXG4gICAgPG9sPlxyXG4gICAgICA8bGk+QWxsIDEwOTktRElWIGZvcm1zIHJlY2VpdmVkIGZyb20gY29ycG9yYXRpb25zIG9yIG11dHVhbCBmdW5kcy4gVGhpcyBpbmNsdWRlcyBkaXN0cmlidXRpb25zIG9mIGNhc2gsIHN0b2NrLCBvciBvdGhlciBwcm9wZXJ0eS48L2xpPlxyXG4gICAgICA8bGk+SWYgYXBwbGljYWJsZSwgZGV0YWlscyByZWdhcmRpbmcgYW55IGZvcmVpZ24gZGl2aWRlbmRzIGluY2x1ZGluZyB0aGUgYW1vdW50IGluIGZvcmVpZ24gY3VycmVuY3ksIHRoZSBjb3VudHJ5IG9mIG9yaWdpbiwgYW5kIGFueSBmb3JlaWduIHRheCBwYWlkLjwvbGk+XHJcbiAgICAgIDxsaT5Gb3IgZGl2aWRlbmRzIHJlaW52ZXN0ZWQsIHBsZWFzZSBwcm92aWRlIHN0YXRlbWVudHMgb3IgY29uZmlybWF0aW9ucyBzaG93aW5nIHRoZXNlIHRyYW5zYWN0aW9ucy48L2xpPlxyXG4gICAgICA8bGk+QW55IG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGRpdmlkZW5kcyBub3QgY292ZXJlZCBieSBhIDEwOTktRElWLjwvbGk+XHJcbiAgICA8L29sPlxyXG4gICAgPHA+UGxlYXNlIGVuc3VyZSBhbGwgZG9jdW1lbnRzIGFyZSBjbGVhciBhbmQgbGVnaWJsZSB0byBhdm9pZCBhbnkgcHJvY2Vzc2luZyBkZWxheXMuIFdlIHJlY29tbWVuZCBzZWN1cmVseSB1cGxvYWRpbmcgdGhlIHJlcXVlc3RlZCBpbmZvcm1hdGlvbiB0aHJvdWdoIG91ciBjbGllbnQgcG9ydGFsIG9yIGFycmFuZ2luZyBhIHNlY3VyZSBlbWFpbCB0cmFuc21pc3Npb24uPC9wPlxyXG4gICAgPHA+WW91ciBwcm9tcHQgcmVzcG9uc2UgaXMgYXBwcmVjaWF0ZWQgYXMgaXQgd2lsbCBoZWxwIHVzIGluIGNvbXBsZXRpbmcgeW91ciB0YXggcHJlcGFyYXRpb25zIGVmZmljaWVudGx5LiBJZiB5b3UgaGF2ZSBhbnkgcXVlc3Rpb25zIG9yIG5lZWQgY2xhcmlmaWNhdGlvbiwgZG8gbm90IGhlc2l0YXRlIHRvIGNvbnRhY3QgdXMuPC9wPmBcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbiAgXHJcbl07XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUNhcGl0YWxHYWluc0xvc3NNb2RlbCB7XHJcbiAgICBkaXNwb3NlZENhcGl0YWxBc3NldHM6IGJvb2xlYW47XHJcbiAgICBtdXR1YWxGdW5kR2FpblByb2ZpdDogYm9vbGVhbjtcclxuICAgIG11dHVhbEZ1bmREaXNwb3NhbDogYm9vbGVhbjsgXHJcbiAgICBtdXR1YWxGdW5kR2FpblByb2ZpdEFtb3VudDogbnVtYmVyO1xyXG4gICAgaGFzV2FzaFNhbGU6IGJvb2xlYW47XHJcbiAgICBzb2xkSG9tZTogYm9vbGVhbjtcclxuICAgIGhhc0luc3RhbGxtZW50U2FsZVBheW1lbnRzOiBib29sZWFuO1xyXG4gICAgaGFzV29ydGhsZXNzU2VjdXJpdGllczogYm9vbGVhbjtcclxuICAgIGhhc1NlYzEyNFNtYWxsQnVzaW5lc3NTdG9jazogYm9vbGVhbjtcclxufSJdfQ==
@@ -1,5 +1,6 @@
1
1
  export * from "./i-address-model";
2
2
  export * from "./i-canonical-residency.model";
3
+ export * from "./i-capital-gains-loss-model";
3
4
  export * from "./i-clergy-taxation-model";
4
5
  export * from "./i-dependents-form-model";
5
6
  export * from "./i-fringe-benefits-model";
@@ -13,4 +14,4 @@ export * from "./i-taxable-self-employment-income-model";
13
14
  export * from "./i-taxpayer-bio-model";
14
15
  export * from "./i-veteran-benefits-model";
15
16
  export * from "./last-day-year-marital-statuses";
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pLWFkZHJlc3MtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jYW5vbmljYWwtcmVzaWRlbmN5Lm1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktY2xlcmd5LXRheGF0aW9uLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktZGVwZW5kZW50cy1mb3JtLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktZnJpbmdlLWJlbmVmaXRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktZW1wbG95ZWUtY29tcGVuc2F0aW9uLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktaW5zdXJhbmNlLXBheW1lbnRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktaW52ZXN0bWVudC1pbmNvbWUtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1sYXN0LWRheS15ZWFyLW1hcml0YWwtc3RhdHVzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktbXVsdGlwbGUtYnVzaW5lc3Mtc2UtdGF4LW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2ktc3RhdHV0b3J5LWV4dGVuc2lvbnMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS10YXhhYmxlLXNlbGYtZW1wbG95bWVudC1pbmNvbWUtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS10YXhwYXllci1iaW8tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS12ZXRlcmFuLWJlbmVmaXRzLW1vZGVsXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xhc3QtZGF5LXllYXItbWFyaXRhbC1zdGF0dXNlc1wiO1xyXG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZm9ybS1tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQ0FBa0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ktYWRkcmVzcy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWNhbm9uaWNhbC1yZXNpZGVuY3kubW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jYXBpdGFsLWdhaW5zLWxvc3MtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1jbGVyZ3ktdGF4YXRpb24tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1kZXBlbmRlbnRzLWZvcm0tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1mcmluZ2UtYmVuZWZpdHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1lbXBsb3llZS1jb21wZW5zYXRpb24tbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1pbnN1cmFuY2UtcGF5bWVudHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1pbnZlc3RtZW50LWluY29tZS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLWxhc3QtZGF5LXllYXItbWFyaXRhbC1zdGF0dXMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1tdWx0aXBsZS1idXNpbmVzcy1zZS10YXgtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vaS1zdGF0dXRvcnktZXh0ZW5zaW9ucy1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXRheGFibGUtc2VsZi1lbXBsb3ltZW50LWluY29tZS1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXRheHBheWVyLWJpby1tb2RlbFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9pLXZldGVyYW4tYmVuZWZpdHMtbW9kZWxcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGFzdC1kYXkteWVhci1tYXJpdGFsLXN0YXR1c2VzXCI7XHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export interface ICapitalGainsLossModel {
2
+ disposedCapitalAssets: boolean;
3
+ mutualFundGainProfit: boolean;
4
+ mutualFundDisposal: boolean;
5
+ mutualFundGainProfitAmount: number;
6
+ hasWashSale: boolean;
7
+ soldHome: boolean;
8
+ hasInstallmentSalePayments: boolean;
9
+ hasWorthlessSecurities: boolean;
10
+ hasSec124SmallBusinessStock: boolean;
11
+ }
@@ -1,5 +1,6 @@
1
1
  export * from "./i-address-model";
2
2
  export * from "./i-canonical-residency.model";
3
+ export * from "./i-capital-gains-loss-model";
3
4
  export * from "./i-clergy-taxation-model";
4
5
  export * from "./i-dependents-form-model";
5
6
  export * from "./i-fringe-benefits-model";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonoustech/bacon-tax",
3
- "version": "2.5.24",
3
+ "version": "2.5.26",
4
4
  "scripts": {
5
5
  "build:cjs": "tsc -p tsconfig.cjs.json",
6
6
  "build:es": "tsc -p tsconfig.es.json",
@@ -36,5 +36,5 @@
36
36
  "bugs": {
37
37
  "url": "https://github.com/AdonousTech/bacon-tax/issues"
38
38
  },
39
- "gitHead": "56e9940288382d30eab06acaa3fdf5a08dba7c21"
39
+ "gitHead": "ec56dcc6a8c9244d11c1a1561b35d01afc7d912f"
40
40
  }
@@ -375,7 +375,7 @@ export const ActionTaxFragments = [
375
375
  <li><strong>Maturity Date:</strong> When the CD reached or will reach its full term.</li>
376
376
  <li><strong>1099-INT Forms:</strong> If received, please include copies of any 1099-INT forms associated with the CD interest.</li>
377
377
  </ol>
378
- <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or arrange for a meeting to provide them in person.</p>
378
+ <p>Please provide this information at your earliest convenience to ensure accurate and timely preparation of your tax documents. You may upload the documents directly through our secure client portal or provide them via email.</p>
379
379
  <p>If you have any questions or need further assistance, do not hesitate to contact us.</p>
380
380
  <p>Thank you for your prompt attention to this matter.</p>`
381
381
  },
@@ -0,0 +1,11 @@
1
+ export interface ICapitalGainsLossModel {
2
+ disposedCapitalAssets: boolean;
3
+ mutualFundGainProfit: boolean;
4
+ mutualFundDisposal: boolean;
5
+ mutualFundGainProfitAmount: number;
6
+ hasWashSale: boolean;
7
+ soldHome: boolean;
8
+ hasInstallmentSalePayments: boolean;
9
+ hasWorthlessSecurities: boolean;
10
+ hasSec124SmallBusinessStock: boolean;
11
+ }
@@ -1,5 +1,6 @@
1
1
  export * from "./i-address-model";
2
2
  export * from "./i-canonical-residency.model";
3
+ export * from "./i-capital-gains-loss-model";
3
4
  export * from "./i-clergy-taxation-model";
4
5
  export * from "./i-dependents-form-model";
5
6
  export * from "./i-fringe-benefits-model";