PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KICA8aGVhZD4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CiAgICA8dGl0bGU+T1Byb2ZpbGUgbWFudWFsPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNjkuMSIgLz4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJib29rIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGgxIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wcm9maWxlLWd1aWRlIj48L2E+T1Byb2ZpbGUgbWFudWFsPC9oMT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXV0aG9yZ3JvdXAiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF1dGhvciI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImF1dGhvciI+PHNwYW4gY2xhc3M9ImZpcnN0bmFtZSI+Sm9objwvc3Bhbj4gPHNwYW4gY2xhc3M9InN1cm5hbWUiPkxldm9uPC9zcGFuPjwvaDM+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhZmZpbGlhdGlvbiI+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkZHJlc3MiPgogICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImVtYWlsIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmxldm9uQG1vdmVtZW50YXJpYW4ub3JnIj5sZXZvbkBtb3ZlbWVudGFyaWFuLm9yZzwvYT4mZ3Q7PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjb3B5cmlnaHQiPkNvcHlyaWdodCCpIDIwMDAtMjAwNCBWaWN0b3JpYSBVbml2ZXJzaXR5IG9mIE1hbmNoZXN0ZXIsIEpvaG4gTGV2b24gYW5kIG90aGVyczwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxociAvPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICA8cD4KICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgIDwvcD4KICAgICAgICA8ZGw+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjaW50cm9kdWN0aW9uIj4xLiBJbnRyb2R1Y3Rpb248L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjYXBwbGljYXRpb25zIj4xLiBBcHBsaWNhdGlvbnMgb2YgT1Byb2ZpbGU8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ppdHN1cHBvcnQiPjEuMS4gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3JlcXVpcmVtZW50cyI+Mi4gU3lzdGVtIHJlcXVpcmVtZW50czwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNyZXNvdXJjZXMiPjMuIEludGVybmV0IHJlc291cmNlczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpbnN0YWxsIj40LiBJbnN0YWxsYXRpb248L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjdW5pbnN0YWxsIj41LiBVbmluc3RhbGxpbmcgT1Byb2ZpbGU8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjb3ZlcnZpZXciPjIuIE92ZXJ2aWV3PC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldHRpbmctc3RhcnRlZCI+MS4gR2V0dGluZyBzdGFydGVkPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Rvb2xzLW92ZXJ2aWV3Ij4yLiBUb29scyBzdW1tYXJ5PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcHRlciI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnRyb2xsaW5nIj4zLiBDb250cm9sbGluZyB0aGUgcHJvZmlsZXI8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29udHJvbGxpbmctZGFlbW9uIj4xLiBVc2luZyA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGNvbnRyb2xleGFtcGxlcyI+MS4xLiBFeGFtcGxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2V2ZW50c3BlYyI+MS4yLiBTcGVjaWZ5aW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIgZXZlbnRzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0dXAtaml0Ij4yLiBTZXR0aW5nIHVwIHRoZSBKSVQgcHJvZmlsaW5nIGZlYXR1cmU8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldHVwLWppdC1qdm0iPjIuMS4gSlZNIGluc3RydW1lbnRhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcm9maWxlLWd1aSI+My4gVXNpbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Byb2Zfc3RhcnQ8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RldGFpbGVkLXBhcmFtZXRlcnMiPjQuIENvbmZpZ3VyYXRpb24gZGV0YWlsczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGFyZHdhcmUtY291bnRlcnMiPjQuMS4gSGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNydGMiPjQuMi4gT1Byb2ZpbGUgaW4gUlRDIG1vZGU8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN0aW1lciI+NC4zLiBPUHJvZmlsZSBpbiB0aW1lciBpbnRlcnJ1cHQgbW9kZTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3A0Ij40LjQuIFBlbnRpdW0gNCBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaWE2NCI+NC41LiBJbnRlbCBJdGFuaXVtIDIgc3VwcG9ydDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3BwYzY0Ij40LjYuIFBvd2VyUEM2NCBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY2VsbC1iZSI+NC43LiBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgc3VwcG9ydDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FtZC1pYnMtc3VwcG9ydCI+NC44LiBBTUQ2NCAoeDg2XzY0KSBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKSBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWlzdXNlIj40LjkuIERhbmdlcm91cyBjb3VudGVyIHNldHRpbmdzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjaGFwdGVyIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjcmVzdWx0cyI+NC4gT2J0YWluaW5nIHJlc3VsdHM8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHJvZmlsZS1zcGVjIj4xLiBQcm9maWxlIHNwZWNpZmljYXRpb25zPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWMtZXhhbXBsZXMiPjEuMS4gRXhhbXBsZXM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWMtZGV0YWlscyI+MS4yLiBQcm9maWxlIHNwZWNpZmljYXRpb24gcGFyYW1ldGVyczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2xvY2F0aW5nLWFuZC1tYW5hZ2luZy1iaW5hcnktaW1hZ2VzIj4xLjMuIExvY2F0aW5nIGFuZCBtYW5hZ2luZyBiaW5hcnkgaW1hZ2VzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbm8tcmVzdWx0cyI+MS40LiBXaGF0IHRvIGRvIHdoZW4geW91IGRvbid0IGdldCBhbnkgcmVzdWx0czwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0Ij4yLiBJbWFnZSBzdW1tYXJpZXMgYW5kIHN5bWJvbCBzdW1tYXJpZXMgKDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPik8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LW1lcmdpbmciPjIuMS4gTWVyZ2luZyBzZXBhcmF0ZSBwcm9maWxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LWNvbXBhcmlzb24iPjIuMi4gU2lkZS1ieS1zaWRlIG11bHRpcGxlIHJlc3VsdHM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1jYWxsZ3JhcGgiPjIuMy4gQ2FsbGdyYXBoIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LWRpZmYiPjIuNC4gRGlmZmVyZW50aWFsIHByb2ZpbGVzIHdpdGggPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtYW5vbiI+Mi41LiBBbm9ueW1vdXMgZXhlY3V0YWJsZSBtYXBwaW5nczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LXhtbCI+Mi42LiBYTUwgZm9ybWF0dGVkIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LW9wdGlvbnMiPjIuNy4gT3B0aW9ucyBmb3IgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bhbm5vdGF0ZSI+My4gT3V0cHV0dGluZyBhbm5vdGF0ZWQgc291cmNlICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPik8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wYW5ub3RhdGUtZmluZGluZy1zb3VyY2UiPjMuMS4gTG9jYXRpbmcgc291cmNlIGZpbGVzPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bhbm5vdGF0ZS1kZXRhaWxzIj4zLjIuIFVzYWdlIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0dGluZy1qaXQtcmVwb3J0cyI+NC4gT1Byb2ZpbGUgcmVzdWx0cyB3aXRoIEpJVCBzYW1wbGVzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wZ3Byb2YiPjUuIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmdwcm9mPC9zdHJvbmc+PC9zcGFuPi1jb21wYXRpYmxlIG91dHB1dCAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGdwcm9mLWRldGFpbHMiPjUuMS4gVXNhZ2Ugb2YgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFyY2hpdmUiPjYuIEFyY2hpdmluZyBtZWFzdXJlbWVudHMgKDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFyY2hpdmUtZGV0YWlscyI+Ni4xLiBVc2FnZSBvZiA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BpbXBvcnQiPjcuIENvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGltcG9ydC1kZXRhaWxzIj43LjEuIFVzYWdlIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9waW1wb3J0PC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2RkPgogICAgICAgICAgPGR0PgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2hhcHRlciI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iI2ludGVycHJldGluZyI+NS4gSW50ZXJwcmV0aW5nIHByb2ZpbGluZyByZXN1bHRzPC9hPgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L2R0PgogICAgICAgICAgPGRkPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lycS1sYXRlbmN5Ij4xLiBQcm9maWxpbmcgaW50ZXJydXB0IGxhdGVuY3k8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIja2VybmVsLXByb2ZpbGluZyI+Mi4gS2VybmVsIHByb2ZpbGluZzwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaXJxLW1hc2tpbmciPjIuMS4gSW50ZXJydXB0IG1hc2tpbmc8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpZGxlIj4yLjIuIElkbGUgdGltZTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2tlcm5lbC1tb2R1bGVzIj4yLjMuIFByb2ZpbGluZyBrZXJuZWwgbW9kdWxlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ludGVycHJldGluZy1jYWxsZ3JhcGgiPjMuIEludGVycHJldGluZyBjYWxsLWdyYXBoIHByb2ZpbGVzPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlYnVnLWluZm8iPjQuIEluYWNjdXJhY2llcyBpbiBhbm5vdGF0ZWQgc291cmNlPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNlZmZlY3Qtb2Ytb3B0aW1pemF0aW9ucyI+NC4xLiBTaWRlIGVmZmVjdHMgb2Ygb3B0aW1pemF0aW9uczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2xvZ3VlcyI+NC4yLiBQcm9sb2d1ZXMgYW5kIGVwaWxvZ3VlczwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lubGluZWQtZnVuY3Rpb24iPjQuMy4gSW5saW5lZCBmdW5jdGlvbnM8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN3cm9uZy1saW5lbnItaW5mbyI+NC40LiBJbmFjY3VyYWN5IGluIGxpbmUgbnVtYmVyIGluZm9ybWF0aW9uPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgICA8YSBocmVmPSIjc3ltYm9sLXdpdGhvdXQtZGVidWctaW5mbyI+NS4gQXNzZW1ibHkgZnVuY3Rpb25zPC9hPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI292ZXJsYXBwaW5nLXN5bWJvbHMiPjYuIE92ZXJsYXBwaW5nIHN5bWJvbHMgaW4gSklUZWQgY29kZTwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNoaWRkZW4tY29zdCI+Ny4gT3RoZXIgZGlzY3JlcGFuY2llczwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kZD4KICAgICAgICAgIDxkdD4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNoYXB0ZXIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiNhY2siPjYuIEFja25vd2xlZGdtZW50czwvYT4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9kdD4KICAgICAgICA8L2RsPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImludHJvZHVjdGlvbiI+PC9hPkNoYXB0ZXKgMS6gSW50cm9kdWN0aW9uPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhcHBsaWNhdGlvbnMiPjEuIEFwcGxpY2F0aW9ucyBvZiBPUHJvZmlsZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2ppdHN1cHBvcnQiPjEuMS4gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZTwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNyZXF1aXJlbWVudHMiPjIuIFN5c3RlbSByZXF1aXJlbWVudHM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNyZXNvdXJjZXMiPjMuIEludGVybmV0IHJlc291cmNlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2luc3RhbGwiPjQuIEluc3RhbGxhdGlvbjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3VuaW5zdGFsbCI+NS4gVW5pbnN0YWxsaW5nIE9Qcm9maWxlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHA+ClRoaXMgbWFudWFsIGFwcGxpZXMgdG8gT1Byb2ZpbGUgdmVyc2lvbiAwLjkuNi4KT1Byb2ZpbGUgaXMgYSBwcm9maWxpbmcgc3lzdGVtIGZvciBMaW51eCAyLjIvMi40LzIuNiBzeXN0ZW1zIG9uIGEgbnVtYmVyIG9mIGFyY2hpdGVjdHVyZXMuIEl0IGlzIGNhcGFibGUgb2YgcHJvZmlsaW5nCmFsbCBwYXJ0cyBvZiBhIHJ1bm5pbmcgc3lzdGVtLCBmcm9tIHRoZSBrZXJuZWwgKGluY2x1ZGluZyBtb2R1bGVzIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMpIHRvIHNoYXJlZCBsaWJyYXJpZXMKdG8gYmluYXJpZXMuIEl0IHJ1bnMgdHJhbnNwYXJlbnRseSBpbiB0aGUgYmFja2dyb3VuZCBjb2xsZWN0aW5nIGluZm9ybWF0aW9uIGF0IGEgbG93IG92ZXJoZWFkLiBUaGVzZQpmZWF0dXJlcyBtYWtlIGl0IGlkZWFsIGZvciBwcm9maWxpbmcgZW50aXJlIHN5c3RlbXMgdG8gZGV0ZXJtaW5lIGJvdHRsZSBuZWNrcyBpbiByZWFsLXdvcmxkIHN5c3RlbXMuCjwvcD4KICAgICAgICA8cD4KTWFueSBDUFVzIHByb3ZpZGUgInBlcmZvcm1hbmNlIGNvdW50ZXJzIiwgaGFyZHdhcmUgcmVnaXN0ZXJzIHRoYXQgY2FuIGNvdW50ICJldmVudHMiOyBmb3IgZXhhbXBsZSwKY2FjaGUgbWlzc2VzLCBvciBDUFUgY3ljbGVzLiBPUHJvZmlsZSBwcm92aWRlcyBwcm9maWxlcyBvZiBjb2RlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgdGhlc2Ugb2NjdXJyaW5nIGV2ZW50czoKcmVwZWF0ZWRseSwgZXZlcnkgdGltZSBhIGNlcnRhaW4gKGNvbmZpZ3VyYWJsZSkgbnVtYmVyIG9mIGV2ZW50cyBoYXMgb2NjdXJyZWQsIHRoZSBQQyB2YWx1ZSBpcyByZWNvcmRlZC4KVGhpcyBpbmZvcm1hdGlvbiBpcyBhZ2dyZWdhdGVkIGludG8gcHJvZmlsZXMgZm9yIGVhY2ggYmluYXJ5IGltYWdlLjwvcD4KICAgICAgICA8cD4KU29tZSBoYXJkd2FyZSBzZXR1cHMgZG8gbm90IGFsbG93IE9Qcm9maWxlIHRvIHVzZSBwZXJmb3JtYW5jZSBjb3VudGVyczogaW4gdGhlc2UgY2FzZXMsIG5vCmV2ZW50cyBhcmUgYXZhaWxhYmxlLCBhbmQgT1Byb2ZpbGUgb3BlcmF0ZXMgaW4gdGltZXIvUlRDIG1vZGUsIGFzIGRlc2NyaWJlZCBpbiBsYXRlciBjaGFwdGVycy4KPC9wPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImFwcGxpY2F0aW9ucyI+PC9hPjEuoEFwcGxpY2F0aW9ucyBvZiBPUHJvZmlsZTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KT1Byb2ZpbGUgaXMgdXNlZnVsIGluIGEgbnVtYmVyIG9mIHNpdHVhdGlvbnMuIFlvdSBtaWdodCB3YW50IHRvIHVzZSBPUHJvZmlsZSB3aGVuIHlvdSA6CjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+CiAgICAgICAgICAgIDx1bCB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8cD5uZWVkIGxvdyBvdmVyaGVhZDwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxwPmNhbm5vdCB1c2UgaGlnaGx5IGludHJ1c2l2ZSBwcm9maWxpbmcgbWV0aG9kczwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxwPm5lZWQgdG8gcHJvZmlsZSBpbnRlcnJ1cHQgaGFuZGxlcnM8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8cD5uZWVkIHRvIHByb2ZpbGUgYW4gYXBwbGljYXRpb24gYW5kIGl0cyBzaGFyZWQgbGlicmFyaWVzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+bmVlZCB0byBwcm9maWxlIGR5bmFtaWNhbGx5IGNvbXBpbGVkIGNvZGUgb2Ygc3VwcG9ydGVkIHZpcnR1YWwgbWFjaGluZXMgKHNlZSA8YSBocmVmPSIjaml0c3VwcG9ydCIgdGl0bGU9IjEuMS6gU3VwcG9ydCBmb3IgZHluYW1pY2FsbHkgY29tcGlsZWQgKEpJVCkgY29kZSI+U2VjdGlvbqAxLjEsICYjODIyMDtTdXBwb3J0IGZvciBkeW5hbWljYWxseSBjb21waWxlZCAoSklUKSBjb2RlJiM4MjIxOzwvYT4pPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+bmVlZCB0byBjYXB0dXJlIHRoZSBwZXJmb3JtYW5jZSBiZWhhdmlvdXIgb2YgZW50aXJlIHN5c3RlbTwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxwPndhbnQgdG8gZXhhbWluZSBoYXJkd2FyZSBlZmZlY3RzIHN1Y2ggYXMgY2FjaGUgbWlzc2VzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+d2FudCBkZXRhaWxlZCBzb3VyY2UgYW5ub3RhdGlvbjwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxwPndhbnQgaW5zdHJ1Y3Rpb24tbGV2ZWwgcHJvZmlsZXM8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8cD53YW50IGNhbGwtZ3JhcGggcHJvZmlsZXM8L3A+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+Ck9Qcm9maWxlIGlzIG5vdCBhIHBhbmFjZWEuIE9Qcm9maWxlIG1pZ2h0IG5vdCBiZSBhIGNvbXBsZXRlIHNvbHV0aW9uIHdoZW4geW91IDoKPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgICAgPHVsIHR5cGU9ImRpc2MiPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxwPnJlcXVpcmUgY2FsbCBncmFwaCBwcm9maWxlcyBvbiBwbGF0Zm9ybXMgb3RoZXIgdGhhbiAyLjYveDg2PC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+ZG9uJ3QgaGF2ZSByb290IHBlcm1pc3Npb25zPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+cmVxdWlyZSAxMDAlIGluc3RydWN0aW9uLWFjY3VyYXRlIHByb2ZpbGVzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+bmVlZCBmdW5jdGlvbiBjYWxsIGNvdW50cyBvciBhbiBpbnRlcnN0aXRpYWwgcHJvZmlsaW5nIEFQSTwvcD4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxwPmNhbm5vdCB0b2xlcmF0ZSBhbnkgZGlzdHVyYmFuY2UgdG8gdGhlIHN5c3RlbSB3aGF0c29ldmVyPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPHA+bmVlZCB0byBwcm9maWxlIGludGVycHJldGVkIG9yIGR5bmFtaWNhbGx5IGNvbXBpbGVkIGNvZGUgb2Ygbm9uLXN1cHBvcnRlZCB2aXJ0dWFsIG1hY2hpbmVzPC9wPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImppdHN1cHBvcnQiPjwvYT4xLjEuoFN1cHBvcnQgZm9yIGR5bmFtaWNhbGx5IGNvbXBpbGVkIChKSVQpIGNvZGU8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT2xkZXIgdmVyc2lvbnMgb2YgT1Byb2ZpbGUgd2VyZSBub3QgY2FwYWJsZSBvZiBhdHRyaWJ1dGluZyBzYW1wbGVzIHRvIHN5bWJvbHMgZnJvbSBkeW5hbWljYWxseQpjb21waWxlZCBjb2RlLCBpLmUuICJqdXN0LWluLXRpbWUgKEpJVCkgY29kZSIuIFR5cGljYWwgSklUIGNvbXBpbGVycyBsb2FkIHRoZSBKSVQgY29kZSBpbnRvCmFub255bW91cyBtZW1vcnkgcmVnaW9ucy4gT1Byb2ZpbGUgcmVwb3J0ZWQgdGhlIHNhbXBsZXMgZnJvbSBzdWNoIGNvZGUsIGJ1dCB0aGUgYXR0cmlidXRpb24KcHJvdmlkZWQgd2FzIHNpbXBseToKICAgICAgICA8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPiJhbm9uOiAmbHQ7dGdpZCZndDsmbHQ7YWRkcmVzcyByYW5nZSZndDsiIDwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KRHVlIHRvIHRoaXMgbGltaXRhdGlvbiwgaXQgd2Fzbid0IHBvc3NpYmxlIHRvIHByb2ZpbGUgYXBwbGljYXRpb25zIGV4ZWN1dGVkIGJ5IHZpcnR1YWwgbWFjaGluZXMgKFZNcykKbGlrZSB0aGUgSmF2YSBWaXJ0dWFsIE1hY2hpbmUuIE9Qcm9maWxlIG5vdyBjb250YWlucyBhbiBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IEpJVGVkIGNvZGUuCkEgZGV2ZWxvcG1lbnQgbGlicmFyeSBpcyBwcm92aWRlZCB0byBhbGxvdyBkZXZlbG9wZXJzCnRvIGFkZCBzdXBwb3J0IGZvciBhbnkgVk0gdGhhdCBwcm9kdWNlcyBkeW5hbWljYWxseSBjb21waWxlZCBjb2RlIChzZWUgdGhlIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPk9Qcm9maWxlIEpJVCBhZ2VudApkZXZlbG9wZXIgZ3VpZGU8L2VtPjwvc3Bhbj4pLgpJbiBhZGRpdGlvbiwgYnVpbHQtaW4gc3VwcG9ydCBpcyBpbmNsdWRlZCBmb3IgdGhlIGZvbGxvd2luZzo8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+CiAgICAgICAgICAgICAgPHVsIHR5cGU9ImRpc2MiPgogICAgICAgICAgICAgICAgPGxpPkpWTVRJIGFnZW50IGxpYnJhcnkgZm9yIEphdmEgKDEuNSBhbmQgaGlnaGVyKTwvbGk+CiAgICAgICAgICAgICAgICA8bGk+SlZNUEkgYWdlbnQgbGlicmFyeSBmb3IgSmF2YSAoMS41IGFuZCBsb3dlcik8L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgT1Byb2ZpbGUncyBKSVQgc3VwcG9ydCwgc2VlIDxhIGhyZWY9IiNzZXR1cC1qaXQiIHRpdGxlPSIyLqBTZXR0aW5nIHVwIHRoZSBKSVQgcHJvZmlsaW5nIGZlYXR1cmUiPlNlY3Rpb26gMiwgJiM4MjIwO1NldHRpbmcgdXAgdGhlIEpJVCBwcm9maWxpbmcgZmVhdHVyZSYjODIyMTs8L2E+Lgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJyZXF1aXJlbWVudHMiPjwvYT4yLqBTeXN0ZW0gcmVxdWlyZW1lbnRzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+TGludXgga2VybmVsIDIuMi8yLjQvMi42PC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCU9Qcm9maWxlIHVzZXMgYSBrZXJuZWwgbW9kdWxlIHRoYXQgY2FuIGJlIGNvbXBpbGVkIGZvcgoJCQkyLjIuMTEgb3IgbGF0ZXIgYW5kIDIuNC4gMi40LjEwIG9yIGFib3ZlIGlzIHJlcXVpcmVkIGlmIHlvdSB1c2UgdGhlIAoJCQlib290LXRpbWUga2VybmVsIG9wdGlvbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj5ub3NtcDwvY29kZT4uICAyLjYga2VybmVscyBhcmUgc3VwcG9ydGVkIHdpdGggdGhlIGluLWtlcm5lbAoJCQlPUHJvZmlsZSBkcml2ZXIuIE5vdGUgdGhhdCBvbmx5IDMyLWJpdCB4ODYgYW5kIElBNjQgYXJlIHN1cHBvcnRlZCBvbiAyLjIvMi40IGtlcm5lbHMuCgkJCTwvcD4KICAgICAgICAgICAgICAgIDxwPgoJCQkyLjYga2VybmVscyBhcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQuIFVuZGVyIDIuNCwgT1Byb2ZpbGUgbWF5IGNhdXNlIHN5c3RlbSBjcmFzaGVzIGlmIHBvd2VyCgkJCW1hbmFnZW1lbnQgaXMgdXNlZCwgb3IgdGhlIEJJT1MgZG9lcyBub3QgY29ycmVjdGx5IGRlYWwgd2l0aCBsb2NhbCBBUElDcy4KCQkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJCVBQQzY0IHByb2Nlc3NvcnMgKFBvd2VyNC9Qb3dlcjUvUFBDOTcwLCBldGMuKSByZXF1aXJlIGEgcmVjZW50ICgmZ3Q7IDIuNi41KSBrZXJuZWwgd2l0aCB0aGUgbGluZSAKCQkJPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij4jZGVmaW5lIFBWXzk3MDwvY29kZT4gcHJlc2VudCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmluY2x1ZGUvYXNtLXBwYzY0L3Byb2Nlc3Nvci5oPC9jb2RlPi4KCiAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgUHJvZmlsaW5nIHRoZSBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgUG93ZXJQQyBQcm9jZXNzaW5nIEVsZW1lbnQgKFBQRSkgcmVxdWlyZXMgYSBrZXJuZWwgdmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgIG9mIDIuNi4xOCBvciBtb3JlIHJlY2VudC4KICAgICAgICAgICAgICAgICAgICAgICBQcm9maWxpbmcgdGhlIENlbGwgQnJvYWRiYW5kIEVuZ2luZSBTeW5lcmdpc3RpYyBQcm9jZXNzaW5nIEVsZW1lbnQgKFNQRSkgcmVxdWlyZXMgYSBrZXJuZWwgdmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgIG9mIDIuNi4yMiBvciBtb3JlIHJlY2VudC4gIEFkZGl0aW9uYWxseSwgZnVsbCBzdXBwb3J0IG9mIFNQRSBwcm9maWxpbmcgcmVxdWlyZXMgYSBCRkQgbGlicmFyeQogICAgICAgICAgICAgICAgICAgICAgIGZyb20gYmludXRpbHMgY29kZSBkYXRlZCBKYW51YXJ5IDIwMDcgb3IgbGF0ZXIuICBUbyBlbnN1cmUgdGhlIHByb3BlciBCRkQgc3VwcG9ydCBleGlzdHMsIHJ1bgogICAgICAgICAgICAgICAgICAgICAgIHRoZSA8Y29kZSBjbGFzcz0iY29kZSI+Y29uZmlndXJlPC9jb2RlPiB1dGlsaXR5IHdpdGggPGNvZGUgY2xhc3M9ImNvZGUiPi0td2l0aC10YXJnZXQ9Y2VsbC1iZTwvY29kZT4uCgoJCSAgICAgICBQcm9maWxpbmcgdGhlIENlbGwgQnJvYWRiYW5kIEVuZ2luZSB1c2luZyBTUFUgZXZlbnRzIHJlcXVpcmVzIGEga2VybmVsIHZlcnNpb24gb2YgMi42LjI5LXJjMQoJCSAgICAgICBvciAgbW9yZSByZWNlbnQuCgogICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij48aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz5BdHRlbXB0aW5nIHRvIHByb2ZpbGUgU1BFcyB3aXRoIGtlcm5lbCB2ZXJzaW9ucyBvbGRlciB0aGFuIDIuNi4yMiBtYXkgY2F1c2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRvIGNyYXNoLjwvZGl2PgogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJCUluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpIHByb2ZpbGUgb24gQU1EIGZhbWlseTEwaCBwcm9jZXNzb3JzIHJlcXVpcmVzIAoJCQlrZXJuZWwgdmVyc2lvbiAyLjYuMjgtcmMyIG9yIGxhdGVyLgoJCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+bW9kdXRpbHMgMi40LjYgb3IgYWJvdmU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJWW91IHNob3VsZCBoYXZlIGluc3RhbGxlZCBtb2R1dGlscyAyLjQuNiBvciBoaWdoZXIgKGluIGZhY3QgZWFybGllciB2ZXJzaW9ucyB3b3JrIHdlbGwgaW4gYWxtb3N0IGFsbAoJCQljYXNlcykuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPlN1cHBvcnRlZCBhcmNoaXRlY3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJRm9yIEludGVsIElBMzIsIGEgQ1BVIHdpdGggZWl0aGVyIGEgUDYgZ2VuZXJhdGlvbiBvciBQZW50aXVtIDQgY29yZSBpcwoJCQlyZXF1aXJlZC4gSW4gbWFya2V0aW5nIHRlcm1zIHRoaXMgdHJhbnNsYXRlcyB0byBhbnl0aGluZwoJCQliZXR3ZWVuIGFuIEludGVsIFBlbnRpdW0gUHJvIChub3QgUGVudGl1bSBDbGFzc2ljcykgYW5kCgkJCWEgUGVudGl1bSA0IC8gWGVvbiwgaW5jbHVkaW5nIGFsbCBDZWxlcm9ucy4gIFRoZSBBTUQKCQkJQXRobG9uLCBPcHRlcm9uLCBQaGVub20sIGFuZCBUdXJpb24gQ1BVcyBhcmUgYWxzbyBzdXBwb3J0ZWQuICBPdGhlciBJQTMyCgkJCUNQVSB0eXBlcyBvbmx5IHN1cHBvcnQgdGhlIFJUQyBtb2RlIG9mIE9Qcm9maWxlOyBwbGVhc2UKCQkJc2VlIGxhdGVyIGluIHRoaXMgbWFudWFsIGZvciBkZXRhaWxzLiAgSHlwZXItdGhyZWFkZWQgUGVudGl1bSBJVnMKCQkJYXJlIG5vdCBzdXBwb3J0ZWQgaW4gMi40LiBGb3IgMi40IGtlcm5lbHMsIHRoZSBJbnRlbAoJCQlJQS02NCBDUFVzIGFyZSBhbHNvIHN1cHBvcnRlZC4gRm9yIDIuNiBrZXJuZWxzLCB0aGVyZSBpcyBhZGRpdGlvbmFsbHkKCQkJc3VwcG9ydCBmb3IgQWxwaGEgcHJvY2Vzc29ycywgTUlQUywgQVJNLCB4ODYtNjQsIHNwYXJjNjQsIHBwYzY0LCBBVlIzMiwgYW5kLAoJCQlpbiB0aW1lciBtb2RlLCBQQS1SSVNDIGFuZCBzMzkwLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5Vbmlwcm9jZXNzb3Igb3IgU01QPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVNNUCBtYWNoaW5lcyBhcmUgZnVsbHkgc3VwcG9ydGVkLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5SZXF1aXJlZCBsaWJyYXJpZXM8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVGhlc2UgbGlicmFyaWVzIGFyZSByZXF1aXJlZCA6IDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+cG9wdDwvY29kZT4sIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+YmZkPC9jb2RlPiwKCQkJPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5saWJlcnR5PC9jb2RlPiAoZGViaWFuIHVzZXJzOiBsaWJpYmVydHkgaXMgcHJvdmlkZWQgaW4gYmludXRpbHMtZGV2IHBhY2thZ2UpLCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmRsPC9jb2RlPiwKCQkJcGx1cyB0aGUgc3RhbmRhcmQgQysrIGxpYnJhcmllcy4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+UmVxdWlyZWQgdXNlciBhY2NvdW50PC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCUZvciBzZWN1cmUgcHJvY2Vzc2luZyBvZiBzYW1wbGUgZGF0YSBmcm9tIEpJVCB2aXJ0dWFsIG1hY2hpbmVzIChlLmcuLCBKYXZhKSwKCQkJdGhlIHNwZWNpYWwgdXNlciBhY2NvdW50ICJvcHJvZmlsZSIgbXVzdCBleGlzdCBvbiB0aGUgc3lzdGVtLiAgVGhlICdjb25maWd1cmUnCgkJCWFuZCAnbWFrZSBpbnN0YWxsJyBvcGVyYXRpb25zIHdpbGwgcHJpbnQgd2FybmluZyBtZXNzYWdlcyBpZiB0aGlzCgkJCWFjY291bnQgaXMgbm90IGZvdW5kLiAgSWYgeW91IGludGVuZCB0byBwcm9maWxlIEpJVGVkIGNvZGUsIHlvdSBtdXN0IGNyZWF0ZQoJCQlhIGdyb3VwIGFjY291bnQgbmFtZWQgJ29wcm9maWxlJyBhbmQgdGhlbiBjcmVhdGUgdGhlICdvcHJvZmlsZScgdXNlciBhY2NvdW50LAoJCQlzZXR0aW5nIHRoZSBkZWZhdWx0IGdyb3VwIHRvICdvcHJvZmlsZScuICBBIHJ1bnRpbWUgZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIHRvCgkJCXRoZSBvcHJvZmlsZSBkYWVtb24gbG9nIHdoZW4gcHJvY2Vzc2luZyBKSVQgc2FtcGxlcyBpZiB0aGlzIHNwZWNpYWwgdXNlcgoJCQlhY2NvdW50IGNhbm5vdCBiZSBmb3VuZC4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+T1Byb2ZpbGUgR1VJPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVRoZSB1c2Ugb2YgdGhlIEdVSSB0byBzdGFydCB0aGUgcHJvZmlsZXIgcmVxdWlyZXMgdGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+UXQgMjwvY29kZT4gbGlicmFyeS4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5RdCAzPC9jb2RlPiBzaG91bGQKCQkJYWxzbyB3b3JrLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFjcm9ueW0iPkVMRjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlQcm9iYWJseSBub3QgdG9vIHN0cmVudW91cyBhIHJlcXVpcmVtZW50LCBidXQgb2xkZXIgPHNwYW4gY2xhc3M9ImFjcm9ueW0iPkEuT1VUPC9zcGFuPiBiaW5hcmllcy9saWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPksmYW1wO1IgY29kaW5nIHN0eWxlPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCU9LLCBzbyBpdCdzIG5vdCByZWFsbHkgYSByZXF1aXJlbWVudCwgYnV0IEkgd2lzaCBpdCB3YXMuLi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InJlc291cmNlcyI+PC9hPjMuoEludGVybmV0IHJlc291cmNlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPldlYiBwYWdlPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVRoZXJlIGlzIGEgd2ViIHBhZ2UgKHdoaWNoIHlvdSBtYXkgYmUgcmVhZGluZyBub3cpIGF0CgkJCTxhIGhyZWY9Imh0dHA6Ly9vcHJvZmlsZS5zZi5uZXQvIj5odHRwOi8vb3Byb2ZpbGUuc2YubmV0LzwvYT4uCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPkRvd25sb2FkPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVlvdSBjYW4gZG93bmxvYWQgYSBzb3VyY2UgdGFyYmFsbCBvciBnZXQgYW5vbnltb3VzIENWUyBhdCB0aGUgc291cmNlZm9yZ2UgcGFnZSwKCQkJPGEgaHJlZj0iaHR0cDovL3NmLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS8iPmh0dHA6Ly9zZi5uZXQvcHJvamVjdHMvb3Byb2ZpbGUvPC9hPi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+TWFpbGluZyBsaXN0PC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVRoZXJlIGlzIGEgbG93LXRyYWZmaWMgT1Byb2ZpbGUtc3BlY2lmaWMgbWFpbGluZyBsaXN0LCBkZXRhaWxzIGF0CgkJCTxhIGhyZWY9Imh0dHA6Ly9zZi5uZXQvbWFpbC8/Z3JvdXBfaWQ9MTYxOTEiPmh0dHA6Ly9zZi5uZXQvbWFpbC8/Z3JvdXBfaWQ9MTYxOTE8L2E+LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5CdWcgdHJhY2tlcjwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlUaGVyZSBpcyBhIGJ1ZyB0cmFja2VyIGZvciBPUHJvZmlsZSBhdCBTb3VyY2VGb3JnZSwKCQkJPGEgaHJlZj0iaHR0cDovL3NmLm5ldC90cmFja2VyLz9ncm91cF9pZD0xNjE5MSZhbXA7YXRpZD0xMTYxOTEiPmh0dHA6Ly9zZi5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTYxOTEmYW1wO2F0aWQ9MTE2MTkxPC9hPi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+SVJDIGNoYW5uZWw8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJU2V2ZXJhbCBPUHJvZmlsZSBkZXZlbG9wZXJzIGFuZCB1c2VycyBzb21ldGltZXMgaGFuZyBvdXQgb24gY2hhbm5lbCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj4jb3Byb2ZpbGU8L3N0cm9uZz48L3NwYW4+CgkJCW9uIHRoZSA8YSBocmVmPSJodHRwOi8vb2Z0Yy5uZXQiPk9GVEM8L2E+IG5ldHdvcmsuIAoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8L2RsPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iaW5zdGFsbCI+PC9hPjQuoEluc3RhbGxhdGlvbjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KRmlyc3QgeW91IG5lZWQgdG8gYnVpbGQgT1Byb2ZpbGUgYW5kIGluc3RhbGwgaXQuIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPi4vY29uZmlndXJlPC9zdHJvbmc+PC9zcGFuPiwgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+bWFrZTwvc3Ryb25nPjwvc3Bhbj4sIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm1ha2UgaW5zdGFsbDwvc3Ryb25nPjwvc3Bhbj4KaXMgb2Z0ZW4gYWxsIHlvdSBuZWVkLCBidXQgbm90ZSB0aGVzZSBhcmd1bWVudHMgdG8gPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Li9jb25maWd1cmU8L3N0cm9uZz48L3NwYW4+IDoKPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS13aXRoLWxpbnV4PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCVVzZSB0aGlzIG9wdGlvbiB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIHlvdSB3aXNoCgkJCXRvIGNvbXBpbGUgYWdhaW5zdC4gVGhlIGtlcm5lbCBtb2R1bGUgaXMgYnVpbHQgYWdhaW5zdCB0aGlzIHNvdXJjZSBhbmQKCQkJd2lsbCBvbmx5IHdvcmsgd2l0aCBhIHJ1bm5pbmcga2VybmVsIGJ1aWx0IGZyb20gdGhlIHNhbWUgc291cmNlIHdpdGgKCQkJZXhhY3Qgc2FtZSBvcHRpb25zLCBzbyBpdCBpcyBpbXBvcnRhbnQgeW91IHNwZWNpZnkgdGhpcyBvcHRpb24gaWYgeW91IG5lZWQKCQkJdG8uCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXdpdGgtamF2YTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlVc2UgdGhpcyBvcHRpb24gaWYgeW91IG5lZWQgdG8gcHJvZmlsZSBKYXZhIGFwcGxpY2F0aW9ucy4gIEFsc28sIHNlZQoJCQk8YSBocmVmPSIjcmVxdWlyZW1lbnRzIiB0aXRsZT0iMi6gU3lzdGVtIHJlcXVpcmVtZW50cyI+U2VjdGlvbqAyLCAmIzgyMjA7U3lzdGVtIHJlcXVpcmVtZW50cyYjODIyMTs8L2E+LCAiUmVxdWlyZWQgdXNlciBhY2NvdW50Ii4gIFRoaXMgb3B0aW9uCgkJCWlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIEphdmEgRGV2ZWxvcG1lbnQgS2l0IChKREspCgkJCXNvdXJjZSB0cmVlIHlvdSB3aXNoIHRvIHVzZS4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbnRlcmZhY2UgZGVzY3JpcHRpb24KCQkJb2YgdGhlIEpWTVBJIChvciBKVk1USSkgaW50ZXJmYWNlIHRvIGNvbXBpbGUgdGhlIEpJVCBzdXBwb3J0IGNvZGUgc3VjY2Vzc2Z1bGx5LgoJCQk8L3A+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgICAgICA8cD4KCQkJCVRoZSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQgKEpSRSkgZG9lcyBub3QgaW5jbHVkZSB0aGUgZGV2ZWxvcG1lbnQKCQkJCWZpbGVzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIGNvbXBpbGUgdGhlIEpJVCBzdXBwb3J0IGNvZGUsIHNvIHRoZSBmdWxsCgkJCQlKREsgbXVzdCBiZSBpbnN0YWxsZWQgaW4gb3JkZXIgdG8gdXNlIHRoaXMgb3B0aW9uLgoJCQkJPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8cD4KCQkJQnkgZGVmYXVsdCwgdGhlIE9wcm9maWxlIEpJVCBzdXBwb3J0IGxpYnJhcmllcyB3aWxsIGJlIGluc3RhbGxlZCBpbgoJCQk8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiZsdDtvcHJvZl9pbnN0YWxsX2RpciZndDsvbGliL29wcm9maWxlPC9jb2RlPi4gIFRvIGJ1aWxkCgkJCWFuZCBpbnN0YWxsIE9Qcm9maWxlIGFuZCB0aGUgSklUIHN1cHBvcnQgbGlicmFyaWVzIGFzIDY0LWJpdCwgeW91IGNhbgoJCQlkbyBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgoJCQk8L3A+CiAgICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KCQkJIyBDRkxBR1M9Ii1tNjQiIENYWEZMQUdTPSItbTY0IiAuL2NvbmZpZ3VyZSBcCgkJCS0td2l0aC1rZXJuZWwtc3VwcG9ydCAtLXdpdGgtamF2YT17bXlfamRrX2luc3RhbGxkaXJ9IFwKCQkJLS1saWJkaXI9L3Vzci9sb2NhbC9saWI2NAoJCQk8L3ByZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgIDxwPgoJCQk8L3A+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgICAgICA8cD4KCQkJCUlmIHlvdSBlbmNvdW50ZXIgZXJyb3JzIGJ1aWxkaW5nIDY0LWJpdCwgeW91IHNob3VsZAoJCQkJaW5zdGFsbCBsaWJ0b29sIDEuNS4yNiBvciBsYXRlciBzaW5jZSB0aGF0IHJlbGVhc2Ugb2YKCQkJCWxpYnRvb2wgZml4ZXMga25vd24gcHJvYmxlbXMgZm9yIGNlcnRhaW4gcGxhdGZvcm1zLgoJCQkJSWYgeW91IGluc3RhbGwgbGlidG9vbCBpbnRvIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uLAoJCQkJeW91J2xsIG5lZWQgdG8gZWRpdCB0aGUgaW52b2NhdGlvbiBvZiAnYWNsb2NhbCcgaW4KCQkJCU9Qcm9maWxlJ3MgYXV0b2dlbi5zaCBhcyBmb2xsb3dzIChhc3N1bWUgYW4gaW5zdGFsbAoJCQkJbG9jYXRpb24gb2YgL3Vzci9sb2NhbCk6CgkJCQk8L3A+CiAgICAgICAgICAgICAgICAgIDxwPgoJCQkJPGNvZGUgY2xhc3M9ImNvZGUiPmFjbG9jYWwgLUkgbTQgLUkgL3Vzci9sb2NhbC9zaGFyZS9hY2xvY2FsPC9jb2RlPgoJCQkJPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0td2l0aC1rZXJuZWwtc3VwcG9ydDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCQlVc2UgdGhpcyBvcHRpb24gd2l0aCAyLjYgYW5kIGFib3ZlIGtlcm5lbHMgdG8gaW5kaWNhdGUgdGhlIAoJICAgIAkJa2VybmVsIHByb3ZpZGVzIHRoZSBPUHJvZmlsZSBkZXZpY2UgZHJpdmVyLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS13aXRoLXF0LWRpci9pbmNsdWRlcy9saWJyYXJpZXM8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJU3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgUXQgaGVhZGVycyBhbmQgbGlicmFyaWVzLiBJdCBkZWZhdWx0cyB0byBzZWFyY2hpbmcgaW4KCQkJPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij4kUVRESVI8L2NvZGU+IGlmIHRoZXNlIGFyZSBub3Qgc3BlY2lmaWVkLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxhIGlkPSJkaXNhYmxlLXdlcnJvciI+PC9hPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRpc2FibGUtd2Vycm9yPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCURldmVsb3BtZW50IHZlcnNpb25zIG9mIE9Qcm9maWxlIGJ1aWxkIGJ5CgkJCWRlZmF1bHQgd2l0aCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tV2Vycm9yPC9jb2RlPi4gVGhpcyBvcHRpb24gdHVybnMKCQkJPGNvZGUgY2xhc3M9Im9wdGlvbiI+LVdlcnJvcjwvY29kZT4gb2ZmLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxhIGlkPSJkaXNhYmxlLW9wdGltaXphdGlvbiI+PC9hPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWRpc2FibGUtb3B0aW1pemF0aW9uPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJCURpc2FibGUgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1PMjwvY29kZT4gY29tcGlsZXIgZmxhZwoJCQkodXNlZnVsIGlmIHlvdSBkaXNjb3ZlciBhbiBPUHJvZmlsZSBidWcgYW5kIHdhbnQgdG8gZ2l2ZSBhIHVzZWZ1bAoJCQliYWNrLXRyYWNlIGV0Yy4pCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpZb3UnbGwgbmVlZCB0byBoYXZlIGEgY29uZmlndXJlZCBrZXJuZWwgc291cmNlIGZvciB0aGUgY3VycmVudCBrZXJuZWwKdG8gYnVpbGQgdGhlIG1vZHVsZSBmb3IgMi40IGtlcm5lbHMuICBTaW5jZSBhbGwgZGlzdHJpYnV0aW9ucyBwcm92aWRlIGRpZmZlcmVudCBrZXJuZWxzIGl0J3MgdW5saWtlbHkgdGhlIHJ1bm5pbmcga2VybmVsIG1hdGNoIHRoZSBjb25maWd1cmVkIHNvdXJjZQp5b3UgaW5zdGFsbGVkLiBUaGUgc2FmZXN0IHdheSBpcyB0byByZWNvbXBpbGUgeW91ciBvd24ga2VybmVsLCBydW4gaXQgYW5kIGNvbXBpbGUgb3Byb2ZpbGUuIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBpZiB5b3UgaGF2ZSBhCnVuaXByb2Nlc3NvciBtYWNoaW5lLCB5b3UgZW5hYmxlIHRoZSBsb2NhbCBBUElDIC8gSU9fQVBJQyBzdXBwb3J0IGZvcgp5b3VyIGtlcm5lbCAodGhpcyBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgZm9yIFNNUCBrZXJuZWxzKS4gV2l0aCBtYW55IEJJT1MsIGtlcm5lbCAmZ3Q7PSAyLjYuOSBhbmQgVVAga2VybmVsIGl0J3Mgbm90IHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSBsb2NhbCBBUElDIHlvdSBtdXN0IGFsc28gdHVybiBpdCBvbiBleHBsaWNpdGx5IGF0IGJvb3QgdGltZSBieSBwcm92aWRpbmcgImxhcGljIiBvcHRpb24gdG8gdGhlIGtlcm5lbC4gT24KbWFjaGluZXMgd2l0aCBwb3dlciBtYW5hZ2VtZW50LCBzdWNoIGFzIGxhcHRvcHMsIHRoZSBwb3dlciBtYW5hZ2VtZW50Cm11c3QgYmUgdHVybmVkIG9mZiB3aGVuIHVzaW5nIE9Qcm9maWxlIHdpdGggMi40IGtlcm5lbHMuIFRoZSBwb3dlciBtYW5hZ2VtZW50IHNvZnR3YXJlCmluIHRoZSBCSU9TIGNhbm5vdCBoYW5kbGUgdGhlIG5vbi1tYXNrYWJsZSBpbnRlcnJ1cHRzIChOTUlzKSB1c2VkIGJ5Ck9Qcm9maWxlIGZvciBkYXRhIGNvbGxlY3Rpb24uIElmIHlvdSB1c2UgdGhlIE5NSSB3YXRjaGRvZywgYmUgYXdhcmUgdGhhdAp0aGUgd2F0Y2hkb2cgaXMgZGlzYWJsZWQgd2hlbiBwcm9maWxpbmcgc3RhcnRzLCBhbmQgbm90IHJlLWVuYWJsZWQgdW50aWwgdGhlCk9Qcm9maWxlIG1vZHVsZSBpcyByZW1vdmVkIChvciwgaW4gMi42LCB3aGVuIE9Qcm9maWxlIGlzIG5vdCBydW5uaW5nKS4gSWYgeW91IGNvbXBpbGUgT1Byb2ZpbGUgZm9yCmEgMi4yIGtlcm5lbCB5b3UgbXVzdCBiZSByb290IHRvIGNvbXBpbGUgdGhlIG1vZHVsZS4gSWYgeW91IGFyZSB1c2luZwoyLjYga2VybmVscyBvciBoaWdoZXIsIHlvdSBkbyBub3QgbmVlZCBrZXJuZWwgc291cmNlLCBhcyBsb25nIGFzIHRoZQpPUHJvZmlsZSBkcml2ZXIgaXMgZW5hYmxlZDsgYWRkaXRpb25hbGx5LCB5b3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGRpc2FibGUKcG93ZXIgbWFuYWdlbWVudC4KPC9wPgogICAgICAgICAgPHA+ClBsZWFzZSBub3RlIHRoYXQgeW91IG11c3Qgc2F2ZSBvciBoYXZlIGF2YWlsYWJsZSB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj52bWxpbnV4PC9jb2RlPiBmaWxlCmdlbmVyYXRlZCBkdXJpbmcgYSBrZXJuZWwgY29tcGlsZSwgYXMgT1Byb2ZpbGUgbmVlZHMgaXQgKHlvdSBjYW4gdXNlCjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbm8tdm1saW51eDwvY29kZT4sIGJ1dCB0aGlzIHdpbGwgcHJldmVudCBrZXJuZWwgcHJvZmlsaW5nKS4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InVuaW5zdGFsbCI+PC9hPjUuoFVuaW5zdGFsbGluZyBPUHJvZmlsZTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KWW91IG11c3QgaGF2ZSB0aGUgc291cmNlIHRyZWUgYXZhaWxhYmxlIHRvIHVuaW5zdGFsbCBPUHJvZmlsZTsgYSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5tYWtlIHVuaW5zdGFsbDwvc3Ryb25nPjwvc3Bhbj4gd2lsbApyZW1vdmUgYWxsIGluc3RhbGxlZCBmaWxlcyBleGNlcHQgeW91ciBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPn4vLm9wcm9maWxlPC9jb2RlPi4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im92ZXJ2aWV3Ij48L2E+Q2hhcHRlcqAyLqBPdmVydmlldzwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9jIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICA8Yj5UYWJsZSBvZiBDb250ZW50czwvYj4KICAgICAgICAgIDwvcD4KICAgICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0dGluZy1zdGFydGVkIj4xLiBHZXR0aW5nIHN0YXJ0ZWQ8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN0b29scy1vdmVydmlldyI+Mi4gVG9vbHMgc3VtbWFyeTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImdldHRpbmctc3RhcnRlZCI+PC9hPjEuoEdldHRpbmcgc3RhcnRlZDwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KQmVmb3JlIHlvdSBjYW4gdXNlIE9Qcm9maWxlLCB5b3UgbXVzdCBzZXQgaXQgdXAuIFRoZSBtaW5pbXVtIHNldHVwIHJlcXVpcmVkIGZvciB0aGlzCmlzIHRvIHRlbGwgT1Byb2ZpbGUgd2hlcmUgdGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+dm1saW51eDwvY29kZT4gZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZQpydW5uaW5nIGtlcm5lbCBpcywgZm9yIGV4YW1wbGUgOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcGNvbnRyb2wgLS12bWxpbnV4PS9ib290L3ZtbGludXgtYHVuYW1lIC1yYDwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+CklmIHlvdSBkb24ndCB3YW50IHRvIHByb2ZpbGUgdGhlIGtlcm5lbCBpdHNlbGYsCnlvdSBjYW4gdGVsbCBPUHJvZmlsZSB5b3UgZG9uJ3QgaGF2ZSBhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+dm1saW51eDwvY29kZT4gZmlsZSA6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPm9wY29udHJvbCAtLW5vLXZtbGludXg8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpOb3cgd2UgYXJlIHJlYWR5IHRvIHN0YXJ0IHRoZSBkYWVtb24gKDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcm9maWxlZDwvc3Ryb25nPjwvc3Bhbj4pIHdoaWNoIGNvbGxlY3RzCnRoZSBwcm9maWxlIGRhdGEgOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcGNvbnRyb2wgLS1zdGFydDwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+CldoZW4gSSB3YW50IHRvIHN0b3AgcHJvZmlsaW5nLCBJIGNhbiBkbyBzbyB3aXRoIDoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3Bjb250cm9sIC0tc2h1dGRvd248L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpOb3RlIHRoYXQgdW5saWtlIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmdwcm9mPC9zdHJvbmc+PC9zcGFuPiwgbm8gaW5zdHJ1bWVudGF0aW9uICg8Y29kZSBjbGFzcz0ib3B0aW9uIj4tcGc8L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tYTwvY29kZT4gb3B0aW9ucyB0byA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5nY2M8L3N0cm9uZz48L3NwYW4+KQppcyBuZWNlc3NhcnkuCjwvcD4KICAgICAgICAgIDxwPgpQZXJpb2RpY2FsbHkgKG9yIG9uIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wY29udHJvbCAtLXNodXRkb3duPC9zdHJvbmc+PC9zcGFuPiBvciA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wgLS1kdW1wPC9zdHJvbmc+PC9zcGFuPikKdGhlIHByb2ZpbGUgZGF0YSBpcyB3cml0dGVuIG91dCBpbnRvIHRoZSAkU0VTU0lPTl9ESVIvc2FtcGxlcyBkaXJlY3RvcnkgKGJ5IGRlZmF1bHQgYXQgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vdmFyL2xpYi9vcHJvZmlsZS9zYW1wbGVzPC9jb2RlPikuClRoZXNlIHByb2ZpbGUgZmlsZXMgY292ZXIgc2hhcmVkIGxpYnJhcmllcywgYXBwbGljYXRpb25zLCB0aGUga2VybmVsICh2bWxpbnV4KSwgYW5kIGtlcm5lbCBtb2R1bGVzLgpZb3UgY2FuIGNsZWFyIHRoZSBwcm9maWxlIGRhdGEgKGF0IGFueSB0aW1lKSB3aXRoIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wY29udHJvbCAtLXJlc2V0PC9zdHJvbmc+PC9zcGFuPi4KPC9wPgogICAgICAgICAgPHA+ClRvIHBsYWNlIHRoZXNlIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyBpbiBhIHNwZWNpZmljIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGxvY2F0aW9uICg8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlPC9jb2RlPikgdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlc3Npb24tZGlyPWRpcjwvY29kZT4gb3B0aW9uLiBZb3UgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2Vzc2lvbi1kaXI8L2NvZGU+IHRvIHRlbGwgdGhlIHRvb2xzIHRvIGNvbnRpbnVlIHVzaW5nIHRoaXMgZGlyZWN0b3J5LiAoSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGFsbG93IHRoaXMgdG8gYmUgc3BlY2lmaWVkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLikgOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcGNvbnRyb2wgLS1uby12bWxpbnV4IC0tc2Vzc2lvbi1kaXI9L2hvbWUvbWUvdG1wc2Vzc2lvbjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3Bjb250cm9sIC0tc3RhcnQgLS1zZXNzaW9uLWRpcj0vaG9tZS9tZS90bXBzZXNzaW9uPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KWW91IGNhbiBnZXQgc3VtbWFyaWVzIG9mIHRoaXMgZGF0YSBpbiBhIG51bWJlciBvZiB3YXlzIGF0IGFueSB0aW1lLiBUbyBnZXQgYSBzdW1tYXJ5IG9mCmRhdGEgYWNyb3NzIHRoZSBlbnRpcmUgc3lzdGVtIGZvciBhbGwgb2YgdGhlc2UgcHJvZmlsZXMsIHlvdSBjYW4gZG8gOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj5vcHJlcG9ydCBbLS1zZXNzaW9uLWRpcj1kaXJdPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KT3IgdG8gZ2V0IGEgbW9yZSBkZXRhaWxlZCBzdW1tYXJ5LCBmb3IgYSBwYXJ0aWN1bGFyIGltYWdlLCB5b3UgY2FuIGRvIHNvbWV0aGluZyBsaWtlIDoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3ByZXBvcnQgLWwgL2Jvb3Qvdm1saW51eC1gdW5hbWUgLXJgPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KVGhlcmUgYXJlIGFsc28gYSBudW1iZXIgb2Ygb3RoZXIgd2F5cyBvZiBwcmVzZW50aW5nIHRoZSBkYXRhLCBhcyBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBtYW51YWwuCk5vdGUgdGhhdCBPUHJvZmlsZSB3aWxsIGNob29zZSBhIGRlZmF1bHQgcHJvZmlsaW5nIHNldHVwIGZvciB5b3UuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlcgpvZiBvcHRpb25zIHlvdSBjYW4gcGFzcyB0byA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IGlmIHlvdSBuZWVkIHRvIGNoYW5nZSBzb21ldGhpbmcsCmFsc28gZGV0YWlsZWQgbGF0ZXIuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJ0b29scy1vdmVydmlldyI+PC9hPjIuoFRvb2xzIHN1bW1hcnk8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+ClRoaXMgc2VjdGlvbiBnaXZlcyBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgT1Byb2ZpbGUgdXRpbGl0aWVzIGFuZCB0aGVpciBwdXJwb3NlLgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9waGVscDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgdXRpbGl0eSBsaXN0cyB0aGUgYXZhaWxhYmxlIGV2ZW50cyBhbmQgc2hvcnQgZGVzY3JpcHRpb25zLgoJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPm9wY29udHJvbDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVVzZWQgZm9yIGNvbnRyb2xsaW5nIHRoZSBPUHJvZmlsZSBkYXRhIGNvbGxlY3Rpb24sIGRpc2N1c3NlZCBpbiA8YSBocmVmPSIjY29udHJvbGxpbmciIHRpdGxlPSJDaGFwdGVyoDMuoENvbnRyb2xsaW5nIHRoZSBwcm9maWxlciI+Q2hhcHRlcqAzLCA8aT5Db250cm9sbGluZyB0aGUgcHJvZmlsZXI8L2k+PC9hPi4KCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hZ2VudCBsaWJyYXJpZXM8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkJVXNlZCBieSB2aXJ0dWFsIG1hY2hpbmVzIChsaWtlIHRoZSBKYXZhIFZNKSB0byByZWNvcmQgaW5mb3JtYXRpb24gYWJvdXQgSklUZWQgY29kZSBiZWluZyBwcm9maWxlZC4gU2VlIDxhIGhyZWY9IiNzZXR1cC1qaXQiIHRpdGxlPSIyLqBTZXR0aW5nIHVwIHRoZSBKSVQgcHJvZmlsaW5nIGZlYXR1cmUiPlNlY3Rpb26gMiwgJiM4MjIwO1NldHRpbmcgdXAgdGhlIEpJVCBwcm9maWxpbmcgZmVhdHVyZSYjODIyMTs8L2E+LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5vcHJlcG9ydDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgaXMgdGhlIG1haW4gdG9vbCBmb3IgcmV0cmlldmluZyB1c2VmdWwgcHJvZmlsZSBkYXRhLCBkZXNjcmliZWQgaW4KCQk8YSBocmVmPSIjb3ByZXBvcnQiIHRpdGxlPSIyLqBJbWFnZSBzdW1tYXJpZXMgYW5kIHN5bWJvbCBzdW1tYXJpZXMgKG9wcmVwb3J0KSI+U2VjdGlvbqAyLCAmIzgyMjA7SW1hZ2Ugc3VtbWFyaWVzIGFuZCBzeW1ib2wgc3VtbWFyaWVzICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4pJiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3Bhbm5vdGF0ZTwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgdXRpbGl0eSBjYW4gYmUgdXNlZCB0byBwcm9kdWNlIGFubm90YXRlZCBzb3VyY2UsIGFzc2VtYmx5IG9yIG1peGVkIHNvdXJjZS9hc3NlbWJseS4KCQlTb3VyY2UgbGV2ZWwgYW5ub3RhdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiB0aGUgYXBwbGljYXRpb24gd2FzIGNvbXBpbGVkIHdpdGggCgkJZGVidWdnaW5nIHN5bWJvbHMuIFNlZSA8YSBocmVmPSIjb3Bhbm5vdGF0ZSIgdGl0bGU9IjMuoE91dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAob3Bhbm5vdGF0ZSkiPlNlY3Rpb26gMywgJiM4MjIwO091dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pJiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+b3BncHJvZjwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgdXRpbGl0eSBjYW4gb3V0cHV0IGdwcm9mLXN0eWxlIGRhdGEgZmlsZXMgZm9yIGEgYmluYXJ5LCBmb3IgdXNlIHdpdGgKCQk8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5ncHJvZiAtcDwvc3Ryb25nPjwvc3Bhbj4uIFNlZSA8YSBocmVmPSIjb3BncHJvZiIgdGl0bGU9IjUuoGdwcm9mLWNvbXBhdGlibGUgb3V0cHV0IChvcGdwcm9mKSI+U2VjdGlvbqA1LCAmIzgyMjA7PHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Z3Byb2Y8L3N0cm9uZz48L3NwYW4+LWNvbXBhdGlibGUgb3V0cHV0ICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGdwcm9mPC9zdHJvbmc+PC9zcGFuPikmIzgyMjE7PC9hPi4KCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5vcGFyY2hpdmU8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlUaGlzIHV0aWxpdHkgY2FuIGJlIHVzZWQgdG8gY29sbGVjdCBleGVjdXRhYmxlcywgZGVidWdpbmZvLAoJCWFuZCBzYW1wbGUgZmlsZXMgYW5kIGNvcHkgdGhlIGZpbGVzIGludG8gYW4gYXJjaGl2ZS4KCQlUaGUgYXJjaGl2ZSBpcyBzZWxmLWNvbnRhaW5lZCBhbmQgY2FuIGJlIG1vdmVkIHRvIGFub3RoZXIKCQltYWNoaW5lIGZvciBmdXJ0aGVyIGFuYWx5c2lzLgoJCVNlZSA8YSBocmVmPSIjb3BhcmNoaXZlIiB0aXRsZT0iNi6gQXJjaGl2aW5nIG1lYXN1cmVtZW50cyAob3BhcmNoaXZlKSI+U2VjdGlvbqA2LCAmIzgyMjA7QXJjaGl2aW5nIG1lYXN1cmVtZW50cyAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPikmIzgyMjE7PC9hPi4KCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5vcGltcG9ydDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVRoaXMgdXRpbGl0eSBjb252ZXJ0cyBzYW1wbGUgZGF0YWJhc2UgZmlsZXMgZnJvbSBhIGZvcmVpZ24gYmluYXJ5IGZvcm1hdCAoYWJpKSB0bwoJCXRoZSBuYXRpdmUgZm9ybWF0LiBUaGlzIGlzIHVzZWZ1bCBvbmx5IHdoZW4gbW92aW5nIHNhbXBsZSBmaWxlcyBiZXR3ZWVuIGhvc3RzLAoJCWZvciBhbmFseXNpcyBvbiBwbGF0Zm9ybXMgb3RoZXIgdGhhbiB0aGUgb25lIHVzZWQgZm9yIGNvbGxlY3Rpb24uCgkJU2VlIDxhIGhyZWY9IiNvcGltcG9ydCIgdGl0bGU9IjcuoENvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzIChvcGltcG9ydCkiPlNlY3Rpb26gNywgJiM4MjIwO0NvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj4pJiM4MjIxOzwvYT4uCgk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPC9kbD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImNvbnRyb2xsaW5nIj48L2E+Q2hhcHRlcqAzLqBDb250cm9sbGluZyB0aGUgcHJvZmlsZXI8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvbnRyb2xsaW5nLWRhZW1vbiI+MS4gVXNpbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wY29udHJvbGV4YW1wbGVzIj4xLjEuIEV4YW1wbGVzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNldmVudHNwZWMiPjEuMi4gU3BlY2lmeWluZyBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50czwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzZXR1cC1qaXQiPjIuIFNldHRpbmcgdXAgdGhlIEpJVCBwcm9maWxpbmcgZmVhdHVyZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldHVwLWppdC1qdm0iPjIuMS4gSlZNIGluc3RydW1lbnRhdGlvbjwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJvZmlsZS1ndWkiPjMuIFVzaW5nIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcm9mX3N0YXJ0PC9zdHJvbmc+PC9zcGFuPjwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RldGFpbGVkLXBhcmFtZXRlcnMiPjQuIENvbmZpZ3VyYXRpb24gZGV0YWlsczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2hhcmR3YXJlLWNvdW50ZXJzIj40LjEuIEhhcmR3YXJlIHBlcmZvcm1hbmNlIGNvdW50ZXJzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNydGMiPjQuMi4gT1Byb2ZpbGUgaW4gUlRDIG1vZGU8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3RpbWVyIj40LjMuIE9Qcm9maWxlIGluIHRpbWVyIGludGVycnVwdCBtb2RlPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwNCI+NC40LiBQZW50aXVtIDQgc3VwcG9ydDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaWE2NCI+NC41LiBJbnRlbCBJdGFuaXVtIDIgc3VwcG9ydDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjcHBjNjQiPjQuNi4gUG93ZXJQQzY0IHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NlbGwtYmUiPjQuNy4gQ2VsbCBCcm9hZGJhbmQgRW5naW5lIHN1cHBvcnQ8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FtZC1pYnMtc3VwcG9ydCI+NC44LiBBTUQ2NCAoeDg2XzY0KSBJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZyAoSUJTKSBzdXBwb3J0PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtaXN1c2UiPjQuOS4gRGFuZ2Vyb3VzIGNvdW50ZXIgc2V0dGluZ3M8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgIDwvZGw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iY29udHJvbGxpbmctZGFlbW9uIj48L2E+MS6gVXNpbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPjwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KSW4gdGhpcyBzZWN0aW9uIHdlIGRlc2NyaWJlIHRoZSBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9mIHRoZSBwcm9maWxpbmcgc3lzdGVtCndpdGggb3Bjb250cm9sIGluIG1vcmUgZGVwdGguClRoZSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2w8L3N0cm9uZz48L3NwYW4+IHNjcmlwdCBoYXMgYSBkZWZhdWx0IHNldHVwLCBidXQgeW91CmNhbiBhbHRlciB0aGlzIHdpdGggdGhlIG9wdGlvbnMgZ2l2ZW4gYmVsb3cuIEluIHBhcnRpY3VsYXIsCmlmIHlvdXIgaGFyZHdhcmUgc3VwcG9ydHMgcGVyZm9ybWFuY2UgY291bnRlcnMsIHlvdSBjYW4gY29uZmlndXJlIHRoZW0uClRoZXJlIGFyZSBhIG51bWJlciBvZiBjb3VudGVycyAoZm9yIGV4YW1wbGUsIGNvdW50ZXIgMCBhbmQgY291bnRlciAxCm9uIHRoZSBQZW50aXVtIElJSSkuIEVhY2ggb2YgdGhlc2UgY291bnRlcnMgY2FuIGJlIHByb2dyYW1tZWQgd2l0aAphbiBldmVudCB0byBjb3VudCwgc3VjaCBhcyBjYWNoZSBtaXNzZXMgb3IgTU1YIG9wZXJhdGlvbnMuIFRoZSBldmVudApjaG9zZW4gZm9yIGVhY2ggY291bnRlciBpcyByZWZsZWN0ZWQgaW4gdGhlIHByb2ZpbGUgZGF0YSBjb2xsZWN0ZWQKYnkgT1Byb2ZpbGU6IGZ1bmN0aW9ucyBhbmQgYmluYXJpZXMgYXQgdGhlIHRvcCBvZiB0aGUgcHJvZmlsZXMgcmVmbGVjdAp0aGF0IG1vc3Qgb2YgdGhlIGNob3NlbiBldmVudHMgaGFwcGVuZWQgd2l0aGluIHRoYXQgY29kZS4KPC9wPgogICAgICAgICAgPHA+CkFkZGl0aW9uYWxseSwgZWFjaCBjb3VudGVyIGhhcyBhICJjb3VudCIgdmFsdWU6IHRoaXMgY29ycmVzcG9uZHMgdG8gaG93CmRldGFpbGVkIHRoZSBwcm9maWxlIGlzLiBUaGUgbG93ZXIgdGhlIHZhbHVlLCB0aGUgbW9yZSBmcmVxdWVudGx5IHByb2ZpbGUKc2FtcGxlcyBhcmUgdGFrZW4uIEEgY291bnRlciBjYW4gY2hvb3NlIHRvIHNhbXBsZSBvbmx5IGtlcm5lbCBjb2RlLCB1c2VyLXNwYWNlIGNvZGUsCm9yIGJvdGggKGJvdGggaXMgdGhlIGRlZmF1bHQpLiBGaW5hbGx5LCBzb21lIGV2ZW50cyBoYXZlIGEgInVuaXQgbWFzayIKLSB0aGlzIGlzIGEgdmFsdWUgdGhhdCBmdXJ0aGVyIHJlc3RyaWN0cyB0aGUgdHlwZXMgb2YgZXZlbnQgdGhhdCBhcmUgY291bnRlZC4gClRoZSBldmVudCB0eXBlcyBhbmQgdW5pdCBtYXNrcyBmb3IgeW91ciBDUFUgYXJlIGxpc3RlZCBieSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wKLS1saXN0LWV2ZW50czwvc3Ryb25nPjwvc3Bhbj4uCjwvcD4KICAgICAgICAgIDxwPgpUaGUgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiBzY3JpcHQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBhY3Rpb25zIDoKPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbml0PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJTG9hZHMgdGhlIE9Qcm9maWxlIG1vZHVsZSBpZiByZXF1aXJlZCBhbmQgbWFrZXMgdGhlIE9Qcm9maWxlIGRyaXZlcgoJCWludGVyZmFjZSBhdmFpbGFibGUuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNldHVwPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIEZvbGxvd2VkIGJ5IGxpc3QgYXJndW1lbnRzIGZvciBwcm9maWxpbmcgc2V0IHVwLiBMaXN0IG9mIGFyZ3VtZW50cwoJCSAgICBzYXZlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9yb290Ly5vcHJvZmlsZS9kYWVtb25yYzwvY29kZT4uCgkJICAgIEdpdmluZyB0aGlzIG9wdGlvbiBpcyBub3QgbmVjZXNzYXJ5OyB5b3UgY2FuIGp1c3QgZGlyZWN0bHkgcGFzcyBvbmUKCQkgICAgb2YgdGhlIHNldHVwIG9wdGlvbnMsIGUuZy4gPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sIC0tbm8tdm1saW51eDwvc3Ryb25nPjwvc3Bhbj4uCgkJICA8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhdHVzPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJU2hvdyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zdGFydC1kYWVtb248L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkgICAgU3RhcnQgdGhlIG9wcm9maWxlIGRhZW1vbiB3aXRob3V0IHN0YXJ0aW5nIGFjdHVhbCBwcm9maWxpbmcuIFRoZSBwcm9maWxpbmcKCQljYW4gdGhlbiBiZSBzdGFydGVkIHVzaW5nIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhcnQ8L2NvZGU+LiBUaGlzIGlzIHVzZWZ1bCBmb3IgYXZvaWRpbmcKCQltZWFzdXJpbmcgdGhlIGNvc3Qgb2YgZGFlbW9uIHN0YXJ0dXAsIGFzIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RhcnQ8L2NvZGU+IGlzIGEgc2ltcGxlCgkJd3JpdGUgdG8gYSBmaWxlIGluIG9wcm9maWxlZnMuIE5vdCBhdmFpbGFibGUgaW4gMi4yLzIuNCBrZXJuZWxzLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zdGFydDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBTdGFydCBkYXRhIGNvbGxlY3Rpb24gd2l0aCBlaXRoZXIgYXJndW1lbnRzIHByb3ZpZGVkIGJ5IDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2V0dXA8L2NvZGU+CgkJb3IgaW5mb3JtYXRpb24gc2F2ZWQgaW4gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vcm9vdC8ub3Byb2ZpbGUvZGFlbW9ucmM8L2NvZGU+LiBTcGVjaWZ5aW5nCgkJdGhlIGFkZGl0aW9uIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyYm9zZTwvY29kZT4gbWFrZXMgdGhlIGRhZW1vbiBnZW5lcmF0ZSBsb3RzIG9mIGRlYnVnIGRhdGEKCQl3aGlsc3QgaXQgaXMgcnVubmluZy4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZHVtcDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBGb3JjZSBhIGZsdXNoIG9mIHRoZSBjb2xsZWN0ZWQgcHJvZmlsaW5nIGRhdGEgdG8gdGhlIGRhZW1vbi4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3RvcDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBTdG9wIGRhdGEgY29sbGVjdGlvbiAodGhpcyBzZXBhcmF0ZSBzdGVwIGlzIG5vdCBwb3NzaWJsZSB3aXRoIDIuMiBvciAyLjQga2VybmVscykuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNodXRkb3duPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIFN0b3AgZGF0YSBjb2xsZWN0aW9uIGFuZCBraWxsIHRoZSBkYWVtb24uCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXJlc2V0PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIENsZWFycyBvdXQgZGF0YSBmcm9tIGN1cnJlbnQgc2Vzc2lvbiwgYnV0IGxlYXZlcyBzYXZlZCBzZXNzaW9ucy4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zYXZlPTwvY29kZT5zZXNzaW9uX25hbWU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkgICAgU2F2ZSBkYXRhIGZyb20gY3VycmVudCBzZXNzaW9uIHRvIHNlc3Npb25fbmFtZS4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZGVpbml0PC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICBTaHV0cyBkb3duIGRhZW1vbi4gVW5sb2FkIHRoZSBPUHJvZmlsZSBtb2R1bGUgYW5kIG9wcm9maWxlZnMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWxpc3QtZXZlbnRzPC9jb2RlPgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJICAgIExpc3QgZXZlbnQgdHlwZXMgYW5kIHVuaXQgbWFza3MuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHA8L2NvZGU+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQkgICAgR2VuZXJhdGUgdXNhZ2UgbWVzc2FnZXMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGVyZSBhcmUgYSBudW1iZXIgb2YgcG9zc2libGUgc2V0dGluZ3MsIG9mIHdoaWNoLCBvbmx5Cjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdm1saW51eDwvY29kZT4gKG9yIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbm8tdm1saW51eDwvY29kZT4pCmlzIHJlcXVpcmVkLiBUaGVzZSBzZXR0aW5ncyBhcmUgc3RvcmVkIGluIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+fi8ub3Byb2ZpbGUvZGFlbW9ucmM8L2NvZGU+Lgo8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tYnVmZmVyLXNpemU9PC9jb2RlPm51bTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCU51bWJlciBvZiBzYW1wbGVzIGluIGtlcm5lbCBidWZmZXIuIFdoZW4gdXNpbmcgYSAyLjYga2VybmVsCgkJYnVmZmVyIHdhdGVyc2hlZCBuZWVkIHRvIGJlIHR3ZWFrZWQgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJ1ZmZlci13YXRlcnNoZWQ9PC9jb2RlPm51bTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVNldCBrZXJuZWwgYnVmZmVyIHdhdGVyc2hlZCB0byBudW0gc2FtcGxlcyAoMi42IG9ubHkpLiBXaGVuIGl0J2xsIHJlbWFpbiBvbmx5CgkJYnVmZmVyLXNpemUgLSBidWZmZXItd2F0ZXJzaGVkIGZyZWUgZW50cnkgaW4gdGhlIGtlcm5lbCBidWZmZXIgZGF0YSB3aWxsIGJlCgkJZmx1c2hlZCB0byBkYWVtb24sIG1vc3QgdXNlZnVsbCB2YWx1ZSBhcmUgaW4gdGhlIHJhbmdlIFswLjI1IC0gMC41XSAqIGJ1ZmZlci1zaXplLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWNwdS1idWZmZXItc2l6ZT08L2NvZGU+bnVtPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJTnVtYmVyIG9mIHNhbXBsZXMgaW4ga2VybmVsIHBlci1jcHUgYnVmZmVyICgyLjYgb25seSkuIElmIHlvdQoJCXByb2ZpbGUgYXQgaGlnaCByYXRlIGl0IGNhbiBoZWxwIHRvIGluY3JlYXNlIHRoaXMgaWYgdGhlIGxvZwoJCWZpbGUgc2hvdyBleGNlc3NpdmUgY291bnQgb2Ygc2FtcGxlIGxvc3QgY3B1IGJ1ZmZlciBvdmVyZmxvdy4gCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXZlbnQ9PC9jb2RlPltldmVudHNwZWNdPC9zcGFuPgogICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgPHA+CgkJVXNlIHRoZSBnaXZlbiBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50IHRvIHByb2ZpbGUuCgkJU2VlIDxhIGhyZWY9IiNldmVudHNwZWMiIHRpdGxlPSIxLjIuoFNwZWNpZnlpbmcgcGVyZm9ybWFuY2UgY291bnRlciBldmVudHMiPlNlY3Rpb26gMS4yLCAmIzgyMjA7U3BlY2lmeWluZyBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50cyYjODIyMTs8L2E+IGJlbG93LgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlc3Npb24tZGlyPTwvY29kZT5kaXJfcGF0aDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCSAgICBDcmVhdGUvdXNlIHNhbXBsZSBkYXRhYmFzZSBvdXQgb2YgZGlyZWN0b3J5IDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGlyX3BhdGg8L2NvZGU+IGluc3RlYWQgb2YKCQl0aGUgZGVmYXVsdCBsb2NhdGlvbiAoL3Zhci9saWIvb3Byb2ZpbGUpLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPTwvY29kZT5bbm9uZSxsaWIsa2VybmVsLHRocmVhZCxjcHUsYWxsXTwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCUJ5IGRlZmF1bHQsIGV2ZXJ5IHByb2ZpbGUgaXMgc3RvcmVkIGluIGEgc2luZ2xlIGZpbGUuIFRodXMsIGZvciBleGFtcGxlLAoJCXNhbXBsZXMgaW4gdGhlIEMgbGlicmFyeSBhcmUgYWxsIGFjY3JlZGl0ZWQgdG8gdGhlIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2xpYi9saWJjLm88L2NvZGU+CgkJcHJvZmlsZS4gSG93ZXZlciwgeW91IGNob29zZSB0byBjcmVhdGUgc2VwYXJhdGUgc2FtcGxlIGZpbGVzIGJ5IHNwZWNpZnlpbmcKCQlvbmUgb2YgdGhlIGJlbG93IG9wdGlvbnMuCgkJPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+CiAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgogICAgICAgICAgICAgICAgICAgIDxjb2xncm91cD4KICAgICAgICAgICAgICAgICAgICAgIDxjb2wgLz4KICAgICAgICAgICAgICAgICAgICAgIDxjb2wgLz4KICAgICAgICAgICAgICAgICAgICA8L2NvbGdyb3VwPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPm5vbmU8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5ObyBwcm9maWxlIHNlcGFyYXRpb24gKGRlZmF1bHQpPC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5saWI8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5DcmVhdGUgcGVyLWFwcGxpY2F0aW9uIHByb2ZpbGVzIGZvciBsaWJyYXJpZXM8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmtlcm5lbDwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkNyZWF0ZSBwZXItYXBwbGljYXRpb24gcHJvZmlsZXMgZm9yIHRoZSBrZXJuZWwgYW5kIGtlcm5lbCBtb2R1bGVzPC90ZD4KICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj50aHJlYWQ8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5DcmVhdGUgcHJvZmlsZXMgZm9yIGVhY2ggdGhyZWFkIGFuZCBlYWNoIHRhc2s8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmNwdTwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkNyZWF0ZSBwcm9maWxlcyBmb3IgZWFjaCBDUFU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmFsbDwvY29kZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPkFsbCBvZiB0aGUgYWJvdmUgb3B0aW9uczwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxwPgoJCU5vdGUgIHRoYXQgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT1rZXJuZWw8L2NvZGU+IGFsc28gdHVybnMgb24gPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT1saWI8L2NvZGU+LgoJCQoJCVdoZW4gdXNpbmcgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT1rZXJuZWw8L2NvZGU+LCBzYW1wbGVzIGluIGhhcmR3YXJlIGludGVycnVwdHMsIHNvZnQtaXJxcywgb3Igb3RoZXIKCQlhc3luY2hyb25vdXMga2VybmVsIGNvbnRleHRzIGFyZSBjcmVkaXRlZCB0byB0aGUgdGFzayBjdXJyZW50bHkgcnVubmluZy4gVGhpcyBtZWFucyB5b3Ugd2lsbCBzZWUKCQlzZWVtaW5nbHkgbm9uc2Vuc2UgcHJvZmlsZXMgc3VjaCBhcyA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9iaW4vYmFzaDwvY29kZT4gc2hvd2luZyBzYW1wbGVzIGZvciB0aGUgUFBQIG1vZHVsZXMsCgkJZXRjLgoJCTwvcD4KICAgICAgICAgICAgICAgIDxwPgoJCU9uIDIuMi8yLjQgb25seSBrZXJuZWwgdGhyZWFkcyBhbHJlYWR5IHN0YXJ0ZWQgd2hlbiBwcm9maWxpbmcgYmVnaW5zIGFyZSBjb3JyZWN0bHkgcHJvZmlsZWQ7CgkJbmV3bHkgc3RhcnRlZCBrZXJuZWwgdGhyZWFkIHNhbXBsZXMgYXJlIGNyZWRpdGVkIHRvIHRoZSB2bWxpbnV4IChrZXJuZWwpIHByb2ZpbGUuCgkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJVXNpbmcgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT10aHJlYWQ8L2NvZGU+IGNyZWF0ZXMgYSBsb3QKCQlvZiBzYW1wbGUgZmlsZXMgaWYgeW91IGxlYXZlIE9Qcm9maWxlIHJ1bm5pbmcgZm9yIGEgd2hpbGU7IGl0J3MgbW9zdAoJCXVzZWZ1bCB3aGVuIHVzZWQgZm9yIHNob3J0IHNlc3Npb25zLCBvciB3aGVuIHVzaW5nIGltYWdlIGZpbHRlcmluZy4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jYWxsZ3JhcGg9PC9jb2RlPiNkZXB0aDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCUVuYWJsZSBjYWxsLWdyYXBoIHNhbXBsZSBjb2xsZWN0aW9uIHdpdGggYSBtYXhpbXVtIGRlcHRoLiBVc2UgMCB0byBkaXNhYmxlCgkJY2FsbGdyYXBoIHByb2ZpbGluZy4gIE5PVEU6IENhbGxncmFwaCBzdXBwb3J0IGlzIGF2YWlsYWJsZSBvbiBhIGxpbWl0ZWQKCQludW1iZXIgb2YgcGxhdGZvcm1zIGF0IHRoaXMgdGltZTsgZm9yIGV4YW1wbGU6CgkJPC9wPgogICAgICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgICAgICAgICAgPHVsIHR5cGU9ImRpc2MiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgIDxwPng4NiB3aXRoIHJlY2VudCAyLjYga2VybmVsPC9wPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgPHA+QVJNIHdpdGggcmVjZW50IDIuNiBrZXJuZWw8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICA8cD5Qb3dlclBDIHdpdGggMi42LjE3IGtlcm5lbDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8cD4KCQk8L3A+CiAgICAgICAgICAgICAgICA8cD4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbWFnZT08L2NvZGU+aW1hZ2UsW2ltYWdlc118ImFsbCI8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQlJbWFnZSBmaWx0ZXJpbmcuIElmIHlvdSBzcGVjaWZ5IG9uZSBvciBtb3JlIGFic29sdXRlCgkJcGF0aHMgdG8gYmluYXJpZXMsIE9Qcm9maWxlIHdpbGwgb25seSBwcm9kdWNlIHByb2ZpbGUgcmVzdWx0cyBmb3IgdGhvc2UKCQliaW5hcnkgaW1hZ2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcmVzdHJpY3RpbmcgdGhlIHNvbWV0aW1lcyB2b2x1bWlub3VzCgkJb3V0cHV0IHlvdSBtYXkgZ2V0IG90aGVyd2lzZSwgZXNwZWNpYWxseSB3aXRoCgkJPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT10aHJlYWQ8L2NvZGU+LiBOb3RlIHRoYXQgaWYgeW91IGFyZSB1c2luZwoJCTxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGU9bGliPC9jb2RlPiBvcgoJCTxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VwYXJhdGU9a2VybmVsPC9jb2RlPiwgdGhlbiBpZiB5b3Ugc3BlY2lmaWNhdGlvbiBhbgoJCWFwcGxpY2F0aW9uIGJpbmFyeSwgdGhlIHNoYXJlZCBsaWJyYXJpZXMgYW5kIGtlcm5lbCBjb2RlCgkJPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+YXJlPC9lbT48L3NwYW4+IGluY2x1ZGVkLiBTcGVjaWZ5IHRoZSB2YWx1ZQoJCSJhbGwiIHRvIHByb2ZpbGUgZXZlcnl0aGluZyAodGhlIGRlZmF1bHQpLgoJCTwvcD4KICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZtbGludXg9PC9jb2RlPmZpbGU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICA8cD4KCQl2bWxpbnV4IGtlcm5lbCBpbWFnZS4KCQk8L3A+CiAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbm8tdm1saW51eDwvY29kZT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIDxwPgoJCVVzZSB0aGlzIHdoZW4geW91IGRvbid0IGhhdmUgYSBrZXJuZWwgdm1saW51eCBmaWxlLCBhbmQgeW91IGRvbid0IHdhbnQKCQl0byBwcm9maWxlIHRoZSBrZXJuZWwuIFRoaXMgc3RpbGwgY291bnRzIHRoZSB0b3RhbCBudW1iZXIgb2Yga2VybmVsIHNhbXBsZXMsCgkJYnV0IGNhbid0IGdpdmUgc3ltYm9sLWJhc2VkIHJlc3VsdHMgZm9yIHRoZSBrZXJuZWwgb3IgYW55IG1vZHVsZXMuCgkJPC9wPgogICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im9wY29udHJvbGV4YW1wbGVzIj48L2E+MS4xLqBFeGFtcGxlczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QzIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj48YSBpZD0iZXhhbXBsZXNwZXJmY3RyIj48L2E+MS4xLjEuoEludGVsIHBlcmZvcm1hbmNlIGNvdW50ZXIgc2V0dXA8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpIZXJlLCB3ZSBoYXZlIGEgUGVudGl1bSBJSUkgcnVubmluZyBhdCA4MDBNSHosIGFuZCB3ZSB3YW50IHRvIGxvb2sgYXQgd2hlcmUgZGF0YSBtZW1vcnkKcmVmZXJlbmNlcyBhcmUgaGFwcGVuaW5nIG1vc3QsIGFuZCBhbHNvIGdldCByZXN1bHRzIGZvciBDUFUgdGltZS4KPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojIG9wY29udHJvbCAtLWV2ZW50PUNQVV9DTEtfVU5IQUxURUQ6NDAwMDAwIC0tZXZlbnQ9REFUQV9NRU1fUkVGUzoxMDAwMAojIG9wY29udHJvbCAtLXZtbGludXg9L2Jvb3QvMi42LjAvdm1saW51eAojIG9wY29udHJvbCAtLXN0YXJ0CjwvcHJlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJleGFtcGxlc3J0YyI+PC9hPjEuMS4yLqBSVEMgbW9kZTwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CkhlcmUsIHdlIGhhdmUgYW4gSW50ZWwgbGFwdG9wIHdpdGhvdXQgc3VwcG9ydCBmb3IgcGVyZm9ybWFuY2UgY291bnRlcnMsIHJ1bm5pbmcgb24gMi40IGtlcm5lbHMuCjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcGhlbHAgLXIKQ1BVIHdpdGggUlRDIGRldmljZQojIG9wY29udHJvbCAtLXZtbGludXg9L2Jvb3QvMi40LjEzL3ZtbGludXggLS1ldmVudD1SVENfSU5URVJSVVBUUzoxMDI0CiMgb3Bjb250cm9sIC0tc3RhcnQKPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4YW1wbGVzc3RhcnRkYWVtb24iPjwvYT4xLjEuMy6gU3RhcnRpbmcgdGhlIGRhZW1vbiBzZXBhcmF0ZWx5PC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KSWYgd2UncmUgcnVubmluZyAyLjYga2VybmVscywgd2UgY2FuIHVzZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXN0YXJ0LWRhZW1vbjwvY29kZT4gdG8gYXZvaWQKdGhlIHByb2ZpbGVyIHN0YXJ0dXAgYWZmZWN0aW5nIHJlc3VsdHMuCjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcGNvbnRyb2wgLS12bWxpbnV4PS9ib290LzIuNi4wL3ZtbGludXgKIyBvcGNvbnRyb2wgLS1zdGFydC1kYWVtb24KIyBteV9mYXZvdXJpdGVfYmVuY2htYXJrIC0taW5pdAojIG9wY29udHJvbCAtLXN0YXJ0IDsgbXlfZmF2b3VyaXRlX2JlbmNobWFyayAtLXJ1biA7IG9wY29udHJvbCAtLXN0b3AKPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV4YW1wbGVzZXBhcmF0ZSI+PC9hPjEuMS40LqBTZXBhcmF0ZSBwcm9maWxlcyBmb3IgbGlicmFyaWVzIGFuZCB0aGUga2VybmVsPC9oND4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8cD4KSGVyZSwgd2Ugd2FudCB0byBzZWUgYSBwcm9maWxlIG9mIHRoZSBPUHJvZmlsZSBkYWVtb24gaXRzZWxmLCBpbmNsdWRpbmcgd2hlbgppdCB3YXMgcnVubmluZyBpbnNpZGUgdGhlIGtlcm5lbCBkcml2ZXIsIGFuZCBpdHMgdXNlIG9mIHNoYXJlZCBsaWJyYXJpZXMuCjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcGNvbnRyb2wgLS1zZXBhcmF0ZT1rZXJuZWwgLS12bWxpbnV4PS9ib290LzIuNi4wL3ZtbGludXgKIyBvcGNvbnRyb2wgLS1zdGFydAojIG15X2Zhdm91cml0ZV9zdHJlc3NfdGVzdCAtLXJ1bgojIG9wcmVwb3J0IC1sIC1wIC9saWIvbW9kdWxlcy8yLjYuMC9rZXJuZWwgL3Vzci9sb2NhbC9iaW4vb3Byb2ZpbGVkCjwvcHJlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJleGFtcGxlc3Nlc3Npb25zIj48L2E+MS4xLjUuoFByb2ZpbGluZyBzZXNzaW9uczwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+Ckl0IGNhbiBvZnRlbiBiZSB1c2VmdWwgdG8gc3BsaXQgdXAgcHJvZmlsaW5nIGRhdGEgaW50byBzZXZlcmFsIGRpZmZlcmVudAp0aW1lIHBlcmlvZHMuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gY29sbGVjdCBkYXRhIG9uIGFuIGFwcGxpY2F0aW9uJ3MKc3RhcnR1cCBzZXBhcmF0ZWx5IGZyb20gdGhlIG5vcm1hbCBydW50aW1lIGRhdGEuIFlvdSBjYW4gdXNlIHRoZSBzaW1wbGUKY29tbWFuZCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wgLS1zYXZlPC9zdHJvbmc+PC9zcGFuPiB0byBkbyB0aGlzLiBGb3IgZXhhbXBsZSA6CjwvcD4KICAgICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcGNvbnRyb2wgLS1zYXZlPWJsYWgKPC9wcmU+CiAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgPHA+CndpbGwgY3JlYXRlIGEgc3ViLWRpcmVjdG9yeSBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiRTRVNTSU9OX0RJUi9zYW1wbGVzPC9jb2RlPiBjb250YWluaW5nIHRoZSBzYW1wbGVzCnVwIHRvIHRoYXQgcG9pbnQgKHRoZSBjdXJyZW50IHNlc3Npb24ncyBzYW1wbGUgZmlsZXMgYXJlIG1vdmVkIGludG8gdGhpcwpkaXJlY3RvcnkpLiBZb3UgY2FuIHRoZW4gcGFzcyB0aGlzIHNlc3Npb24gbmFtZSBhcyBhIHBhcmFtZXRlciB0byB0aGUgcG9zdC1wcm9maWxpbmcKYW5hbHlzaXMgdG9vbHMsIHRvIG9ubHkgZ2V0IGRhdGEgdXAgdG8gdGhlIHBvaW50IHlvdSBuYW1lZCB0aGUKc2Vzc2lvbi4gSWYgeW91IGRvIG5vdCB3YW50IHRvIHNhdmUgYSBzZXNzaW9uLCB5b3UgY2FuIGRvCjxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPnJtIC1yZiAkU0VTU0lPTl9ESVIvc2FtcGxlcy9zZXNzaW9ubmFtZTwvc3Ryb25nPjwvc3Bhbj4gb3IsIGZvciB0aGUKY3VycmVudCBzZXNzaW9uLCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wgLS1yZXNldDwvc3Ryb25nPjwvc3Bhbj4uCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImV2ZW50c3BlYyI+PC9hPjEuMi6gU3BlY2lmeWluZyBwZXJmb3JtYW5jZSBjb3VudGVyIGV2ZW50czwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1ldmVudDwvY29kZT4gb3B0aW9uIHRvIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4KdGFrZXMgYSBzcGVjaWZpY2F0aW9uIHRoYXQgaW5kaWNhdGVzIGhvdyB0aGUgZGV0YWlscyBvZiBlYWNoCmhhcmR3YXJlIHBlcmZvcm1hbmNlIGNvdW50ZXIgc2hvdWxkIGJlIHNldHVwLiBJZiB5b3Ugd2FudCB0bwpyZXZlcnQgdG8gT1Byb2ZpbGUncyBkZWZhdWx0IHNldHRpbmcgKDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXZlbnQ8L2NvZGU+CmlzIHN0cmljdGx5IG9wdGlvbmFsKSwgdXNlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXZlbnQ9ZGVmYXVsdDwvY29kZT4uIFVzZSBvZiB0aGlzCm9wdGlvbiBvdmVyLXJpZGVzIGFsbCBwcmV2aW91cyBldmVudCBzZWxlY3Rpb25zLgo8L3A+CiAgICAgICAgICAgIDxwPgpZb3UgY2FuIHBhc3MgbXVsdGlwbGUgZXZlbnQgc3BlY2lmaWNhdGlvbnMuIE9Qcm9maWxlIHdpbGwgYWxsb2NhdGUKaGFyZHdhcmUgY291bnRlcnMgYXMgbmVjZXNzYXJ5LiBOb3RlIHRoYXQgc29tZSBjb21iaW5hdGlvbnMgYXJlIG5vdAphbGxvd2VkIGJ5IHRoZSBDUFU7IHJ1bm5pbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sIC0tbGlzdC1ldmVudHM8L3N0cm9uZz48L3NwYW4+IGdpdmVzIHRoZSBkZXRhaWxzCm9mIGVhY2ggZXZlbnQuIFRoZSBldmVudCBzcGVjaWZpY2F0aW9uIGlzIGEgY29sb24tc2VwYXJhdGVkIHN0cmluZwpvZiB0aGUgZm9ybSA8Y29kZSBjbGFzcz0ib3B0aW9uIj48c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5uYW1lPC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNvdW50PC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPnVuaXRtYXNrPC9lbT48L3NwYW4+OjxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmtlcm5lbDwvZW0+PC9zcGFuPjo8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT51c2VyPC9lbT48L3NwYW4+PC9jb2RlPiBhcyBkZXNjcmliZWQgaW4gdGhpcyB0YWJsZToKPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj4KICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIxIj4KICAgICAgICAgICAgICAgIDxjb2xncm91cD4KICAgICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgICA8Y29sIC8+CiAgICAgICAgICAgICAgICA8L2NvbGdyb3VwPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+bmFtZTwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5UaGUgc3ltYm9saWMgZXZlbnQgbmFtZSwgZS5nLiA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkNQVV9DTEtfVU5IQUxURUQ8L2NvZGU+PC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmNvdW50PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPlRoZSBjb3VudGVyIHJlc2V0IHZhbHVlLCBlLmcuIDEwMDAwMDwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj51bml0bWFzazwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5UaGUgdW5pdCBtYXNrLCBhcyBnaXZlbiBpbiB0aGUgZXZlbnRzIGxpc3QsIGUuZy4gMHgwZjwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5rZXJuZWw8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+V2hldGhlciB0byBwcm9maWxlIGtlcm5lbCBjb2RlPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPnVzZXI8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+V2hldGhlciB0byBwcm9maWxlIHVzZXJzcGFjZSBjb2RlPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpUaGUgbGFzdCB0aHJlZSB2YWx1ZXMgYXJlIG9wdGlvbmFsLCBpZiB5b3Ugb21pdCB0aGVtIChlLmcuIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXZlbnQ9REFUQV9NRU1fUkVGUzozMDAwMDwvY29kZT4pLAp0aGV5IHdpbGwgYmUgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlcyAoYSB1bml0IG1hc2sgb2YgMCwgYW5kIHByb2ZpbGluZyBib3RoIGtlcm5lbCBhbmQKdXNlcnNwYWNlIGNvZGUpLiBOb3RlIHRoYXQgc29tZSBldmVudHMgcmVxdWlyZSBhIHVuaXQgbWFzay4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgICAgPHA+CkZvciB0aGUgUG93ZXJQQyBwbGF0Zm9ybXMsIGFsbCBldmVudHMgc3BlY2lmaWVkIG11c3QgYmUgaW4gdGhlIHNhbWUgZ3JvdXA7IGkuZS4sIHRoZSBncm91cCBudW1iZXIKYXBwZW5kZWQgdG8gdGhlIGV2ZW50IG5hbWUgKGUuZy4gPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij4mbHQ7PHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+c29tZS1ldmVudC1uYW1lPC9lbT48L3NwYW4+Jmd0O19HUlA5PC9jb2RlPikgbXVzdCBiZSB0aGUgc2FtZS4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CklmIE9Qcm9maWxlIGlzIHVzaW5nIFJUQyBtb2RlLCBhbmQgeW91IHdhbnQgdG8gYWx0ZXIgdGhlIGRlZmF1bHQgY291bnRlciB2YWx1ZSwKeW91IGNhbiB1c2Ugc29tZXRoaW5nIGxpa2UgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1ldmVudD1SVENfSU5URVJSVVBUUzoyMDQ4PC9jb2RlPi4gTm90ZSB0aGUgbGFzdAp0aHJlZSB2YWx1ZXMgaGVyZSBhcmUgaWdub3JlZC4KSWYgT1Byb2ZpbGUgaXMgdXNpbmcgdGltZXItaW50ZXJydXB0IG1vZGUsIHRoZXJlIGlzIG5vIGNvbmZpZ3VyYXRpb24gcG9zc2libGUuCjwvcD4KICAgICAgICAgICAgPHA+ClRoZSB0YWJsZSBiZWxvdyBsaXN0cyB0aGUgZXZlbnRzIHNlbGVjdGVkIGJ5IGRlZmF1bHQKKDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXZlbnQ9ZGVmYXVsdDwvY29kZT4pIGZvciB0aGUgdmFyaW91cyBjb21wdXRlciBhcmNoaXRlY3R1cmVzOgo8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPgogICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjEiPgogICAgICAgICAgICAgICAgPGNvbGdyb3VwPgogICAgICAgICAgICAgICAgICA8Y29sIC8+CiAgICAgICAgICAgICAgICAgIDxjb2wgLz4KICAgICAgICAgICAgICAgICAgPGNvbCAvPgogICAgICAgICAgICAgICAgPC9jb2xncm91cD4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5Qcm9jZXNzb3I8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5jcHVfdHlwZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkRlZmF1bHQgZXZlbnQ8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFscGhhIEVWNDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPmFscGhhL2V2NDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkNZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFscGhhIEVWNTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPmFscGhhL2V2NTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkNZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFscGhhIFBDQTU2PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+YWxwaGEvcGNhNTY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5BbHBoYSBFVjY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5hbHBoYS9ldjY8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5BbHBoYSBFVjY3PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+YWxwaGEvZXY2NzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkNZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFSTS9YU2NhbGUgUE1VMTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPmFybS94c2NhbGUxPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFSTS9YU2NhbGUgUE1VMjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPmFybS94c2NhbGUyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFSTS9NUENvcmU8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5hcm0vbXBjb3JlPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NZQ0xFUzoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkFWUjMyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+YXZyMzI8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ1lDTEVTOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+QXRobG9uPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+aTM4Ni9hdGhsb248L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ0xLX1VOSEFMVEVEOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+UGVudGl1bSBQcm88L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5pMzg2L3Bwcm88L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ0xLX1VOSEFMVEVEOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+UGVudGl1bSBJSTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPmkzODYvcGlpPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NMS19VTkhBTFRFRDoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPlBlbnRpdW0gSUlJPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+aTM4Ni9waWlpPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NMS19VTkhBTFRFRDoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPlBlbnRpdW0gTSAoUDYgY29yZSk8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5pMzg2L3A2X21vYmlsZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DTEtfVU5IQUxURUQ6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5QZW50aXVtIDQgKG5vbi1IVCk8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5pMzg2L3A0PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+R0xPQkFMX1BPV0VSX0VWRU5UUzoxMDAwMDA6MToxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPlBlbnRpdW0gNCAoSFQpPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+aTM4Ni9wNC1odDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkdMT0JBTF9QT1dFUl9FVkVOVFM6MTAwMDAwOjE6MToxPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5IYW1tZXI8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD54ODYtNjQvaGFtbWVyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NMS19VTkhBTFRFRDoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkZhbWlseTEwaDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPng4Ni02NC9mYW1pbHkxMDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DTEtfVU5IQUxURUQ6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5GYW1pbHkxMWg8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD54ODYtNjQvZmFtaWx5MTFoPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Q1BVX0NMS19VTkhBTFRFRDoxMDAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPkl0YW5pdW08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5pYTY0L2l0YW5pdW08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DUFVfQ1lDTEVTOjEwMDAwMDowOjE6MTwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+SXRhbml1bSAyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+aWE2NC9pdGFuaXVtMjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPkNQVV9DWUNMRVM6MTAwMDAwOjA6MToxPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZD5USU1FUl9JTlQ8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD50aW1lcjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPk5vbmUgc2VsZWN0YWJsZTwvdGQ+CiAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGQ+SUJNIGlzZXJpZXM8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5Qb3dlclBDIDQvNS85NzA8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPklCTSBwc2VyaWVzPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+UG93ZXJQQyA0LzUvOTcwL0NlbGw8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5DWUNMRVM6MTAwMDA6MDoxOjE8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPklCTSBzMzkwPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+dGltZXI8L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZD5Ob25lIHNlbGVjdGFibGU8L3RkPgogICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRkPklCTSBzMzkweDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkPnRpbWVyPC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQ+Tm9uZSBzZWxlY3RhYmxlPC90ZD4KICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJzZXR1cC1qaXQiPjwvYT4yLqBTZXR0aW5nIHVwIHRoZSBKSVQgcHJvZmlsaW5nIGZlYXR1cmU8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CgkJVG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IEpJVGVkIGNvZGUgZnJvbSBhIHZpcnR1YWwgbWFjaGluZSwKCQlpdCBuZWVkcyB0byBiZSBpbnN0cnVtZW50ZWQgd2l0aCBhbiBhZ2VudCBsaWJyYXJ5LiBXZSB1c2UgdGhlCgkJYWdlbnQgbGlicmFyaWVzIGZvciBKYXZhIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZS4gVG8gdXNlIHRoZQoJCUphdmEgcHJvZmlsaW5nIGZlYXR1cmUsIHlvdSBtdXN0IGJ1aWxkIE9Qcm9maWxlIHdpdGggdGhlICItLXdpdGgtamF2YSIgb3B0aW9uCiAgICAgICAgICAgICAgICAoPGEgaHJlZj0iI2luc3RhbGwiIHRpdGxlPSI0LqBJbnN0YWxsYXRpb24iPlNlY3Rpb26gNCwgJiM4MjIwO0luc3RhbGxhdGlvbiYjODIyMTs8L2E+KS4KCgk8L3A+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJzZXR1cC1qaXQtanZtIj48L2E+Mi4xLqBKVk0gaW5zdHJ1bWVudGF0aW9uPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CgkJCUFkZCB0aGlzIHRvIHRoZSBzdGFydHVwIHBhcmFtZXRlcnMgb2YgdGhlIEpWTSAoZm9yIEpWTVRJKToKCgkJCTwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+PGNvZGUgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGNsYXNzPSJvcHRpb24iPi1hZ2VudHBhdGg6Jmx0O2xpYmRpciZndDsvbGlianZtdGlfb3Byb2ZpbGUuc29bPSZsdDtvcHRpb25zJmd0O108L2NvZGU+IDwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KCQkJb3IKCQkJPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj48Y29kZSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgY2xhc3M9Im9wdGlvbiI+LWFnZW50bGliOmp2bXRpX29wcm9maWxlWz0mbHQ7b3B0aW9ucyZndDtdPC9jb2RlPiA8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICA8cD4KCQkJVGhlIEpWTVBJIGFnZW50IGltcGxlbWVudGF0aW9uIGlzIGVuYWJsZWQgd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbgoJCQk8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPjxjb2RlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBjbGFzcz0ib3B0aW9uIj4tWHJ1bmp2bXBpX29wcm9maWxlWzombHQ7b3B0aW9ucyZndDtdPC9jb2RlPiA8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CgkJPC9wPgogICAgICAgICAgICA8cD4KCQkJQ3VycmVudGx5LCB0aGVyZSBpcyBqdXN0IG9uZSBvcHRpb24gYXZhaWxhYmxlIC0tIDxjb2RlIGNsYXNzPSJvcHRpb24iPmRlYnVnPC9jb2RlPi4gRm9yIEpWTVBJLAoJCQl0aGUgY29udmVudGlvbiBmb3Igc3BlY2lmeWluZyBhbiBvcHRpb24gaXMgPGNvZGUgY2xhc3M9Im9wdGlvbiI+b3B0aW9uX25hbWU9W3llc3xub108L2NvZGU+LgoJCQlGb3IgSlZNVEksIHRoZSBvcHRpb24gc3BlY2lmaWNhdGlvbiBpcyBzaW1wbHkgdGhlIG9wdGlvbiBuYW1lLCBpbXBseWluZwoJCQkieWVzIjsgbm8gb3B0aW9uIHNwZWNpZmllZCBpbXBsaWVzICJubyIuCgkJPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGFnZW50IGxpYnJhcnkgKGluc3RhbGxlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiZsdDtvcHJvZl9pbnN0YWxsX2RpciZndDsvbGliL29wcm9maWxlPC9jb2RlPikKICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHMgdG8gYmUgaW4gdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGggKGUuZy4gYWRkIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgICAgICB0byA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkxEX0xJQlJBUllfUEFUSDwvY29kZT4pLiBJZiB0aGUgY29tbWFuZCBsaW5lIG9mCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBKVk0gaXMgbm90IGFjY2Vzc2libGUsIGl0IG1heSBiZSBidXJpZWQgd2l0aGluIHNoZWxsIHNjcmlwdHMgb3IgYQogICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hlciBwcm9ncmFtLiBJdCBtYXkgYWxzbyBiZSBwb3NzaWJsZSB0byBzZXQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYWRkCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0cnVtZW50YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIEZvciBTdW4gSlZNcyB0aGlzIGlzIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+SkFWQV9UT09MX09QVElPTlM8L2NvZGU+LiBQbGVhc2UgY2hlY2sKICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBKVk0gZG9jdW1lbnRhdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgYWdlbnQgc3RhcnR1cCBvcHRpb25zLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3Byb2ZpbGUtZ3VpIj48L2E+My6gVXNpbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Byb2Zfc3RhcnQ8L3N0cm9uZz48L3NwYW4+PC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGUgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Byb2Zfc3RhcnQ8L3N0cm9uZz48L3NwYW4+IGFwcGxpY2F0aW9uIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gc3RhcnQgdGhlIHByb2ZpbGVyLgpOb3RlIHRoYXQgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Byb2Zfc3RhcnQ8L3N0cm9uZz48L3NwYW4+IGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCB0aGUgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiBzY3JpcHQsCnNvIGl0IGRvZXMgbm90IHByb3ZpZGUgbW9yZSBzZXJ2aWNlcyB0aGFuIHRoZSBzY3JpcHQgaXRzZWxmLgo8L3A+CiAgICAgICAgICA8cD4KQWZ0ZXIgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Byb2Zfc3RhcnQ8L3N0cm9uZz48L3NwYW4+IGlzIHN0YXJ0ZWQgeW91IGNhbiBzZWxlY3QgdGhlIGV2ZW50IHR5cGUgZm9yIGVhY2ggY291bnRlcjsKdGhlIHNhbXBsaW5nIHJhdGUgYW5kIG90aGVyIHJlbGF0ZWQgcGFyYW1ldGVycyBhcmUgZXhwbGFpbmVkIGluIDxhIGhyZWY9IiNjb250cm9sbGluZy1kYWVtb24iIHRpdGxlPSIxLqBVc2luZyBvcGNvbnRyb2wiPlNlY3Rpb26gMSwgJiM4MjIwO1VzaW5nIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4mIzgyMjE7PC9hPi4KVGhlICJDb25maWd1cmF0aW9uIiBzZWN0aW9uIGFsbG93cyB5b3UgdG8gc2V0IGdlbmVyYWwgcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBidWZmZXIgc2l6ZSwga2VybmVsIGZpbGVuYW1lCmV0Yy4gVGhlIGNvdW50ZXIgc2V0dXAgaW50ZXJmYWNlIHNob3VsZCBiZSBzZWxmLWV4cGxhbmF0b3J5OyA8YSBocmVmPSIjaGFyZHdhcmUtY291bnRlcnMiIHRpdGxlPSI0LjEuoEhhcmR3YXJlIHBlcmZvcm1hbmNlIGNvdW50ZXJzIj5TZWN0aW9uoDQuMSwgJiM4MjIwO0hhcmR3YXJlIHBlcmZvcm1hbmNlIGNvdW50ZXJzJiM4MjIxOzwvYT4gYW5kIHJlbGF0ZWQgCmxpbmtzIGNvbnRhaW4gaW5mb3JtYXRpb24gb24gdXNpbmcgdW5pdCBtYXNrcy4KPC9wPgogICAgICAgICAgPHA+CkEgc3RhdHVzIGxpbmUgc2hvd3MgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBwcm9maWxlcjogaG93IGxvbmcgaXQgaGFzIGJlZW4gcnVubmluZywgYW5kIHRoZSBhdmVyYWdlCm51bWJlciBvZiBpbnRlcnJ1cHRzIHJlY2VpdmVkIHBlciBzZWNvbmQgYW5kIHRoZSB0b3RhbCwgb3ZlciBhbGwgcHJvY2Vzc29ycy4KTm90ZSB0aGF0IHF1aXR0aW5nIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcm9mX3N0YXJ0PC9zdHJvbmc+PC9zcGFuPiBkb2VzIG5vdCBzdG9wIHRoZSBwcm9maWxlci4KPC9wPgogICAgICAgICAgPHA+CllvdXIgY29uZmlndXJhdGlvbiBpcyBzYXZlZCBpbiB0aGUgc2FtZSBmaWxlIGFzIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wY29udHJvbDwvc3Ryb25nPjwvc3Bhbj4gdXNlczsgdGhhdCBpcywKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5+Ly5vcHJvZmlsZS9kYWVtb25yYzwvY29kZT4uCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJkZXRhaWxlZC1wYXJhbWV0ZXJzIj48L2E+NC6gQ29uZmlndXJhdGlvbiBkZXRhaWxzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImhhcmR3YXJlLWNvdW50ZXJzIj48L2E+NC4xLqBIYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVyczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij4KICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz4KICAgICAgICAgICAgICA8cD4KWW91ciBDUFUgdHlwZSBtYXkgbm90IGluY2x1ZGUgdGhlIHJlcXVpc2l0ZSBzdXBwb3J0IGZvciBoYXJkd2FyZSBwZXJmb3JtYW5jZSBjb3VudGVycywgaW4gd2hpY2ggY2FzZQp5b3UgbXVzdCB1c2UgT1Byb2ZpbGUgaW4gUlRDIG1vZGUgaW4gMi40IChzZWUgPGEgaHJlZj0iI3J0YyIgdGl0bGU9IjQuMi6gT1Byb2ZpbGUgaW4gUlRDIG1vZGUiPlNlY3Rpb26gNC4yLCAmIzgyMjA7T1Byb2ZpbGUgaW4gUlRDIG1vZGUmIzgyMjE7PC9hPiksIG9yIHRpbWVyIG1vZGUgaW4gMi42IChzZWUgPGEgaHJlZj0iI3RpbWVyIiB0aXRsZT0iNC4zLqBPUHJvZmlsZSBpbiB0aW1lciBpbnRlcnJ1cHQgbW9kZSI+U2VjdGlvbqA0LjMsICYjODIyMDtPUHJvZmlsZSBpbiB0aW1lciBpbnRlcnJ1cHQgbW9kZSYjODIyMTs8L2E+KS4gCllvdSBkbyBub3QgcmVhbGx5IG5lZWQgdG8gcmVhZCB0aGlzIHNlY3Rpb24gdW5sZXNzIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB1c2luZyAKZXZlbnRzIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgZXZlbnQgY2hvc2VuIGJ5IE9Qcm9maWxlLgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIEludGVsIGhhcmR3YXJlIHBlcmZvcm1hbmNlIGNvdW50ZXJzIGFyZSBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgSUEtMzIgQXJjaGl0ZWN0dXJlIE1hbnVhbCwgVm9sdW1lIDMsIGF2YWlsYWJsZQpmcm9tIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tLyI+aHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vPC9hPi4gClRoZSBBTUQgQXRobG9uL09wdGVyb24vUGhlbm9tL1R1cmlvbiBpbXBsZW1lbnRhdGlvbiBpcyBkZXRhaWxlZCBpbiA8YSBocmVmPSJodHRwOi8vd3d3LmFtZC5jb20vdXMtZW4vYXNzZXRzL2NvbnRlbnRfdHlwZS93aGl0ZV9wYXBlcnNfYW5kX3RlY2hfZG9jcy8yMjAwNy5wZGYiPgpodHRwOi8vd3d3LmFtZC5jb20vdXMtZW4vYXNzZXRzL2NvbnRlbnRfdHlwZS93aGl0ZV9wYXBlcnNfYW5kX3RlY2hfZG9jcy8yMjAwNy5wZGY8L2E+LgpGb3IgUG93ZXJQQzY0IHByb2Nlc3NvcnMgaW4gSUJNIGlTZXJpZXMsIHBTZXJpZXMsIGFuZCBibGFkZSBzZXJ2ZXIgc3lzdGVtcywgcHJvY2Vzc29yIGRvY3VtZW50YXRpb24KaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3ctMDEuaWJtLmNvbS9jaGlwcy90ZWNobGliL3RlY2hsaWIubnNmL3Byb2R1Y3RmYW1pbGllcy9Qb3dlclBDLyI+Cmh0dHA6Ly93d3ctMDEuaWJtLmNvbS9jaGlwcy90ZWNobGliL3RlY2hsaWIubnNmL3Byb2R1Y3RmYW1pbGllcy9Qb3dlclBDPC9hPi4gIChGb3IgZXhhbXBsZSwgdGhlCnNwZWNpZmljIHB1YmxpY2F0aW9uIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24gdGhlIHBlcmZvcm1hbmNlIG1vbml0b3IgdW5pdCBmb3IgdGhlIFBvd2VyUEM5NzAgaXMgCiJJQk0gUG93ZXJQQyA5NzBGWCBSSVNDIE1pY3JvcHJvY2Vzc29yIFVzZXIncyBNYW51YWwuIikKVGhlc2UgcHJvY2Vzc29ycyBhcmUgY2FwYWJsZSBvZiBkZWxpdmVyaW5nIGFuIGludGVycnVwdCB3aGVuIGEgY291bnRlciBvdmVyZmxvd3MuClRoaXMgaXMgdGhlIGJhc2ljIG1lY2hhbmlzbSBvbiB3aGljaCBPUHJvZmlsZSBpcyBiYXNlZC4gVGhlIGRlbGl2ZXJ5IG1vZGUgaXMgPHNwYW4gY2xhc3M9ImFjcm9ueW0iPk5NSTwvc3Bhbj4sCnNvIGJsb2NraW5nIGludGVycnVwdHMgaW4gdGhlIGtlcm5lbCBkb2VzIG5vdCBwcmV2ZW50IHByb2ZpbGluZy4gV2hlbiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaXMgY2FsbGVkLAp0aGUgY3VycmVudCA8c3BhbiBjbGFzcz0iYWNyb255bSI+UEM8L3NwYW4+IHZhbHVlIGFuZCB0aGUgY3VycmVudCB0YXNrIGFyZSByZWNvcmRlZCBpbnRvIHRoZSBwcm9maWxpbmcgc3RydWN0dXJlLgpUaGlzIGFsbG93cyB0aGUgb3ZlcmZsb3cgZXZlbnQgdG8gYmUgYXR0YWNoZWQgdG8gYSBzcGVjaWZpYyBhc3NlbWJseSBpbnN0cnVjdGlvbiBpbiBhIGJpbmFyeSBpbWFnZS4KVGhlIGRhZW1vbiByZWNlaXZlcyB0aGlzIGRhdGEgZnJvbSB0aGUga2VybmVsLCBhbmQgd3JpdGVzIGl0IHRvIHRoZSBzYW1wbGUgZmlsZXMuCjwvcD4KICAgICAgICAgICAgPHA+CklmIHdlIHVzZSBhbiBldmVudCBzdWNoIGFzIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+Q1BVX0NMS19VTkhBTFRFRDwvY29kZT4gb3IgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5JTlNUX1JFVElSRUQ8L2NvZGU+Cig8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkdMT0JBTF9QT1dFUl9FVkVOVFM8L2NvZGU+IG9yIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+SU5TVFJfUkVUSVJFRDwvY29kZT4sIHJlc3BlY3RpdmVseSwgb24gdGhlIFBlbnRpdW0gNCksIHdlIGNhbgp1c2UgdGhlIG92ZXJmbG93IGNvdW50cyBhcyBhbiBlc3RpbWF0ZSBvZiBhY3R1YWwgdGltZSBzcGVudCBpbiBlYWNoIHBhcnQgb2YgY29kZS4gQWx0ZXJuYXRpdmVseSB3ZSBjYW4gcHJvZmlsZSBpbnRlcmVzdGluZwpkYXRhIHN1Y2ggYXMgdGhlIGNhY2hlIGJlaGF2aW91ciBvZiByb3V0aW5lcyB3aXRoIHRoZSBvdGhlciBhdmFpbGFibGUgY291bnRlcnMuCjwvcD4KICAgICAgICAgICAgPHA+Ckhvd2V2ZXIgdGhlcmUgYXJlIHNldmVyYWwgY2F2ZWF0cy4gRmlyc3QsIHRoZXJlIGFyZSB0aG9zZSBpc3N1ZXMgbGlzdGVkIGluIHRoZSBJbnRlbCBtYW51YWwuIFRoZXJlIGlzIGEgZGVsYXkKYmV0d2VlbiB0aGUgY291bnRlciBvdmVyZmxvdyBhbmQgdGhlIGludGVycnVwdCBkZWxpdmVyeSB0aGF0IGNhbiBza2V3IHJlc3VsdHMgb24gYSBzbWFsbCBzY2FsZSAtIHRoaXMgbWVhbnMKeW91IGNhbm5vdCByZWx5IG9uIHRoZSBwcm9maWxlcyBhdCB0aGUgaW5zdHJ1Y3Rpb24gbGV2ZWwgYXMgYmVpbmcgcGVyZmVjdGx5IGFjY3VyYXRlLgpJZiB5b3UgYXJlIHVzaW5nIGFuICJldmVudC1tb2RlIiBjb3VudGVyIHN1Y2ggYXMgdGhlIGNhY2hlIGNvdW50ZXJzLCBhIGNvdW50IHJlZ2lzdGVyZWQgYWdhaW5zdCBpdCBkb2Vzbid0IG1lYW4KdGhhdCBpdCBpcyByZXNwb25zaWJsZSBmb3IgdGhhdCBldmVudC4gSG93ZXZlciwgaXQgaW1wbGllcyB0aGF0IHRoZSBjb3VudGVyIG92ZXJmbG93ZWQgaW4gdGhlIGR5bmFtaWMKdmljaW5pdHkgb2YgdGhhdCBpbnN0cnVjdGlvbiwgdG8gd2l0aGluIGEgZmV3IGluc3RydWN0aW9ucy4gRnVydGhlciBkZXRhaWxzIG9uIHRoaXMgcHJvYmxlbSBjYW4gYmUgZm91bmQgaW4gCjxhIGhyZWY9IiNpbnRlcnByZXRpbmciIHRpdGxlPSJDaGFwdGVyoDUuoEludGVycHJldGluZyBwcm9maWxpbmcgcmVzdWx0cyI+Q2hhcHRlcqA1LCA8aT5JbnRlcnByZXRpbmcgcHJvZmlsaW5nIHJlc3VsdHM8L2k+PC9hPiBhbmQgYWxzbyBpbiB0aGUgRGlnaXRhbCBwYXBlciAiUHJvZmlsZU1lOiBBIEhhcmR3YXJlIFBlcmZvcm1hbmNlIENvdW50ZXIiLgo8L3A+CiAgICAgICAgICAgIDxwPgpFYWNoIGNvdW50ZXIgaGFzIHNldmVyYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpGaXJzdCwgdGhlcmUgaXMgdGhlIHVuaXQgbWFzazogdGhpcyBzaW1wbHkgZnVydGhlciBzcGVjaWZpZXMgd2hhdCB0byBjb3VudC4KU2Vjb25kLCB0aGVyZSBpcyB0aGUgY291bnRlciB2YWx1ZSwgZGlzY3Vzc2VkIGJlbG93LiBUaGlyZCwgdGhlcmUgaXMgYSBwYXJhbWV0ZXIgd2hldGhlciB0byBpbmNyZW1lbnQgY291bnRzCndoaWxzdCBpbiBrZXJuZWwgb3IgdXNlciBzcGFjZS4gWW91IGNhbiBjb25maWd1cmUgdGhlc2Ugc2VwYXJhdGVseSBmb3IgZWFjaCBjb3VudGVyLgo8L3A+CiAgICAgICAgICAgIDxwPgpBZnRlciBlYWNoIG92ZXJmbG93IGV2ZW50LCB0aGUgY291bnRlciB3aWxsIGJlIHJlLWluaXRpYWxpemVkCnN1Y2ggdGhhdCBhbm90aGVyIG92ZXJmbG93IHdpbGwgb2NjdXIgYWZ0ZXIgdGhpcyBtYW55IGV2ZW50cyBoYXZlIGJlZW4gY291bnRlZC4gVGh1cywgaGlnaGVyCnZhbHVlcyBtZWFuIGxlc3MtZGV0YWlsZWQgcHJvZmlsaW5nLCBhbmQgbG93ZXIgdmFsdWVzIG1lYW4gbW9yZSBkZXRhaWwsIGJ1dCBoaWdoZXIgb3ZlcmhlYWQuClBpY2tpbmcgYSBnb29kIHZhbHVlIGZvciB0aGlzCnBhcmFtZXRlciBpcywgdW5mb3J0dW5hdGVseSwgc29tZXdoYXQgb2YgYSBibGFjayBhcnQuIEl0IGlzIG9mIGNvdXJzZSBkZXBlbmRlbnQgb24gdGhlIGV2ZW50CnlvdSBoYXZlIGNob3Nlbi4KU3BlY2lmeWluZyB0b28gbGFyZ2UgYSB2YWx1ZSB3aWxsIG1lYW4gbm90IGVub3VnaCBpbnRlcnJ1cHRzIGFyZSBnZW5lcmF0ZWQKdG8gZ2l2ZSBhIHJlYWxpc3RpYyBwcm9maWxlICh0aG91Z2ggdGhpcyBwcm9ibGVtIGNhbiBiZSBhbWVsaW9yYXRlZCBieSBwcm9maWxpbmcgZm9yIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmxvbmdlcjwvZW0+PC9zcGFuPikuClNwZWNpZnlpbmcgdG9vIHNtYWxsIGEgdmFsdWUgY2FuIGxlYWQgdG8gaGlnaGVyIHBlcmZvcm1hbmNlIG92ZXJoZWFkLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InJ0YyI+PC9hPjQuMi6gT1Byb2ZpbGUgaW4gUlRDIG1vZGU8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+CiAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgICAgPHA+ClRoaXMgc2VjdGlvbiBhcHBsaWVzIHRvIDIuMi8yLjQga2VybmVscyBvbmx5Lgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KU29tZSBDUFUgdHlwZXMgZG8gbm90IHByb3ZpZGUgdGhlIG5lZWRlZCBoYXJkd2FyZSBzdXBwb3J0IHRvIHVzZSB0aGUgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMuIFRoaXMgaW5jbHVkZXMKc29tZSBsYXB0b3BzLCBjbGFzc2ljIFBlbnRpdW1zLCBhbmQgb3RoZXIgQ1BVIHR5cGVzIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IE9Qcm9maWxlIChzdWNoIGFzIEN5cml4KS4gCk9uIHRoZXNlIG1hY2hpbmVzLCBPUHJvZmlsZSBmYWxscwpiYWNrIHRvIHVzaW5nIHRoZSByZWFsLXRpbWUgY2xvY2sgaW50ZXJydXB0IHRvIGNvbGxlY3Qgc2FtcGxlcy4gVGhpcyBpbnRlcnJ1cHQgaXMgYWxzbyB1c2VkIGJ5IHRoZSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5ydGM8L3N0cm9uZz48L3NwYW4+Cm1vZHVsZTogeW91IGNhbm5vdCBoYXZlIGJvdGggdGhlIE9Qcm9maWxlIGFuZCBydGMgbW9kdWxlcyBsb2FkZWQgbm9yIHRoZSBydGMgc3VwcG9ydCBjb21waWxlZCBpbiB0aGUga2VybmVsLgo8L3A+CiAgICAgICAgICAgIDxwPgpSVEMgbW9kZSBpcyBsZXNzIGNhcGFibGUgdGhhbiB0aGUgaGFyZHdhcmUgY291bnRlcnMgbW9kZTsgaW4gcGFydGljdWxhciwgaXQgaXMgdW5hYmxlIHRvIHByb2ZpbGUgc2VjdGlvbnMgb2YKdGhlIGtlcm5lbCB3aGVyZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZC4gVGhlcmUgaXMganVzdCBvbmUgYXZhaWxhYmxlIGV2ZW50LCAiUlRDIGludGVycnVwdHMiLCBhbmQgaXRzIHZhbHVlIApjb3JyZXNwb25kcyB0byB0aGUgbnVtYmVyIG9mIGludGVycnVwdHMgZ2VuZXJhdGVkIHBlciBzZWNvbmQgKHRoYXQgaXMsIGEgaGlnaGVyIG51bWJlciBtZWFucyBhIGJldHRlciBwcm9maWxpbmcKcmVzb2x1dGlvbiwgYW5kIGhpZ2hlciBvdmVyaGVhZCkuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSByZWFsLXRpbWUgY2xvY2sgc3VwcG9ydHMgb25seSBwb3dlci1vZi10d28Kc2FtcGxpbmcgcmF0ZXMgZnJvbSAyIHRvIDQwOTYgcGVyIHNlY29uZC4gIE90aGVyIHZhbHVlcyB3aXRoaW4gdGhpcyByYW5nZSBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBwb3dlciBvZgp0d28uCjwvcD4KICAgICAgICAgICAgPHA+CllvdSBjYW4gZm9yY2UgdXNlIG9mIHRoZSBSVEMgaW50ZXJydXB0IHdpdGggdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPmZvcmNlX3J0Yz0xPC9jb2RlPiBtb2R1bGUgcGFyYW1ldGVyLgo8L3A+CiAgICAgICAgICAgIDxwPgpTZXR0aW5nIHRoZSB2YWx1ZSBmcm9tIHRoZSBHVUkgc2hvdWxkIGJlIHN0cmFpZ2h0Zm9yd2FyZC4gT24gdGhlIGNvbW1hbmQgbGluZSwgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGUKZXZlbnQgdG8gPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPiwgZS5nLiA6CjwvcD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wgLS1ldmVudD1SVENfSU5URVJSVVBUUzoyNTY8L3N0cm9uZz4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0idGltZXIiPjwvYT40LjMuoE9Qcm9maWxlIGluIHRpbWVyIGludGVycnVwdCBtb2RlPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgIDxwPgpUaGlzIHNlY3Rpb24gYXBwbGllcyB0byAyLjYga2VybmVscyBhbmQgYWJvdmUgb25seS4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CkluIDIuNiBrZXJuZWxzIG9uIENQVXMgd2l0aG91dCBPUHJvZmlsZSBzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMsIHRoZSBkcml2ZXIKZmFsbHMgYmFjayB0byB1c2luZyB0aGUgdGltZXIgaW50ZXJydXB0IGZvciBwcm9maWxpbmcuIExpa2UgdGhlIFJUQyBtb2RlIGluIDIuNCBrZXJuZWxzLCB0aGlzIGlzIG5vdCBhYmxlIHRvCnByb2ZpbGUgY29kZSB0aGF0IGhhcyBpbnRlcnJ1cHRzIGRpc2FibGVkLiBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IKc2V0dGluZyB0aGlzLCB1bmxpa2UgdGhlIFJUQyBhbmQgaGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlciBzZXR1cC4KPC9wPgogICAgICAgICAgICA8cD4KWW91IGNhbiBmb3JjZSB1c2Ugb2YgdGhlIHRpbWVyIGludGVycnVwdCBieSB1c2luZyB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dGltZXI9MTwvY29kZT4gbW9kdWxlCnBhcmFtZXRlciAob3IgPGNvZGUgY2xhc3M9Im9wdGlvbiI+b3Byb2ZpbGUudGltZXI9MTwvY29kZT4gb24gdGhlIGJvb3QgY29tbWFuZCBsaW5lIGlmIE9Qcm9maWxlIGlzCmJ1aWx0LWluKS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwNCI+PC9hPjQuNC6gUGVudGl1bSA0IHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIFBlbnRpdW0gNCAvIFhlb24gcGVyZm9ybWFuY2UgY291bnRlcnMgYXJlIG9yZ2FuaXplZCBhcm91bmQgMyB0eXBlcyBvZiBtb2RlbCBzcGVjaWZpYyByZWdpc3RlcnMgKE1TUnMpOiA0NSBldmVudApzZWxlY3Rpb24gY29udHJvbCByZWdpc3RlcnMgKEVTQ1JzKSwgMTggY291bnRlciBjb25maWd1cmF0aW9uIGNvbnRyb2wgcmVnaXN0ZXJzIChDQ0NScykgYW5kIDE4IGNvdW50ZXJzLiBFU0NScyBkZXNjcmliZSBhCnBhcnRpY3VsYXIgc2V0IG9mIGV2ZW50cyB3aGljaCBhcmUgdG8gYmUgcmVjb3JkZWQsIGFuZCBDQ0NScyBiaW5kIEVTQ1JzIHRvIGNvdW50ZXJzIGFuZCBjb25maWd1cmUgdGhlaXIKb3BlcmF0aW9uLiBVbmZvcnR1bmF0ZWx5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSByZWdpc3RlcnMgaXMgcXVpdGUgY29tcGxleDsgdGhleSBjYW5ub3QgYWxsIGJlIHVzZWQgd2l0aCBvbmUKYW5vdGhlciBhdCBhbnkgdGltZS4gVGhlcmUgaXMsIGhvd2V2ZXIsIGEgc3Vic2V0IG9mIDggY291bnRlcnMsIDggRVNDUnMsIGFuZCA4IENDQ1JzIHdoaWNoIGNhbiBiZSB1c2VkIGluZGVwZW5kZW50bHkgb2YKb25lIGFub3RoZXIsIHNvIE9Qcm9maWxlIG9ubHkgYWNjZXNzZXMgdGhvc2UgcmVnaXN0ZXJzLCB0cmVhdGluZyB0aGVtIGFzIGEgYmFuayBvZiA4ICJub3JtYWwiIGNvdW50ZXJzLCBzaW1pbGFyCnRvIHRob3NlIGluIHRoZSBQNiBvciBBdGhsb24vT3B0ZXJvbi9QaGVub20vVHVyaW9uIGZhbWlsaWVzIG9mIENQVS4KPC9wPgogICAgICAgICAgICA8cD4KVGhlcmUgaXMgY3VycmVudGx5IG5vIHN1cHBvcnQgZm9yIFByZWNpc2lvbiBFdmVudC1CYXNlZCBTYW1wbGluZyAoUEVCUyksIG5vciBhbnkgYWR2YW5jZWQgdXNlcyBvZiB0aGUgRGVidWcgU3RvcmUKKERTKS4gQ3VycmVudCBzdXBwb3J0IGlzIGxpbWl0ZWQgdG8gdGhlIGNvbnNlcnZhdGl2ZSBleHRlbnNpb24gb2YgT1Byb2ZpbGUncyBleGlzdGluZyBpbnRlcnJ1cHQtYmFzZWQgbW9kZWwgZGVzY3JpYmVkCmFib3ZlLiAgUGVyZm9ybWFuY2UgbW9uaXRvcmluZyBoYXJkd2FyZSBvbiBQZW50aXVtIDQgLyBYZW9uIHByb2Nlc3NvcnMgd2l0aCBIeXBlcnRocmVhZGluZyBlbmFibGVkIChtdWx0aXBsZSBsb2dpY2FsCnByb2Nlc3NvcnMgb24gYSBzaW5nbGUgZGllKSBpcyBub3Qgc3VwcG9ydGVkIGluIDIuNCBrZXJuZWxzICh5b3UgY2FuIHVzZSBPUHJvZmlsZSBpZiB5b3UgZGlzYWJsZSBoeXBlci10aHJlYWRpbmcsCnRob3VnaCkuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iaWE2NCI+PC9hPjQuNS6gSW50ZWwgSXRhbml1bSAyIHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIEl0YW5pdW0gMiBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHVuaXQgKFBNVSkgb3JnYW5pemVzIHRoZSBjb3VudGVycyBhcyBmb3VyCnBhaXJzIG9mIHBlcmZvcm1hbmNlIGV2ZW50IG1vbml0b3JpbmcgcmVnaXN0ZXJzLiBFYWNoIHBhaXIgaXMgY29tcG9zZWQgb2YgYQpQZXJmb3JtYW5jZSBNb25pdG9yaW5nIENvbmZpZ3VyYXRpb24gKFBNQykgcmVnaXN0ZXIgYW5kIFBlcmZvcm1hbmNlIE1vbml0b3JpbmcKRGF0YSAoUE1EKSByZWdpc3Rlci4gIFRoZSBQTUMgc2VsZWN0cyB0aGUgcGVyZm9ybWFuY2UgZXZlbnQgYmVpbmcgbW9uaXRvcmVkIGFuZAp0aGUgUE1EIGRldGVybWluZXMgdGhlIHNhbXBsaW5nIGludGVydmFsLiBUaGUgSUE2NCBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQKKFBNVSkgdHJpZ2dlcnMgc2FtcGxpbmcgd2l0aCBtYXNrYWJsZSBpbnRlcnJ1cHRzLiBUaHVzLCBzYW1wbGVzIHdpbGwgbm90IG9jY3VyCmluIHNlY3Rpb25zIG9mIHRoZSBJQTY0IGtlcm5lbCB3aGVyZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZC4KPC9wPgogICAgICAgICAgICA8cD4KTm9uZSBvZiB0aGUgYWR2YW5jZSBmZWF0dXJlcyBvZiB0aGUgSXRhbml1bSAyIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdApzdWNoIGFzIG9wY29kZSBtYXRjaGluZywgYWRkcmVzcyByYW5nZSBtYXRjaGluZywgb3IgcHJlY2lzZSBldmVudCBzYW1wbGluZyBhcmUKc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBPUHJvZmlsZS4gIFRoZSBJdGFuaXVtIDIgc3VwcG9ydCBvbmx5IG1hcHMgT1Byb2ZpbGUncwpleGlzdGluZyBpbnRlcnJ1cHQtYmFzZWQgbW9kZWwgdG8gdGhlIFBNVSBoYXJkd2FyZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwcGM2NCI+PC9hPjQuNi6gUG93ZXJQQzY0IHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgdW5pdCAoUE1VKSBmb3IgdGhlIElCTSBQb3dlclBDIDY0LWJpdCBwcm9jZXNzb3JzIApjb25zaXN0cyBvZiBiZXR3ZWVuIDQgYW5kIDggY291bnRlcnMgKGRlcGVuZGluZyBvbiB0aGUgbW9kZWwpLCBwbHVzIHRocmVlCnNwZWNpYWwgcHVycG9zZSByZWdpc3RlcnMgdXNlZCBmb3IgcHJvZ3JhbW1pbmcgdGhlIGNvdW50ZXJzIC0tIE1NQ1IwLCBNTUNSMSwKYW5kIE1NQ1JBLiAgQWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBpbnN0cnVjdGlvbiBtYXRjaGluZyBhbmQgdGhyZXNob2xkaW5nIGFyZQpub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBPUHJvZmlsZS4KPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+PGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+TGF0ZXIgdmVyc2lvbnMgb2YgdGhlIElCTSBQT1dFUjUrIHByb2Nlc3NvciAoYmVnaW5uaW5nIHdpdGggcmV2aXNpb24gMy4wKQpydW4gdGhlIHBlcmZvcm1hbmNlIG1vbml0b3IgdW5pdCBpbiBQT1dFUjYgbW9kZSwgZWZmZWN0aXZlbHkgcmVtb3ZpbmcgT1Byb2ZpbGUncwphY2Nlc3MgdG8gY291bnRlcnMgNSBhbmQgNi4gIFRoZXNlIHR3byBjb3VudGVycyBhcmUgZGVkaWNhdGVkIHRvIGNvdW50aW5nCmluc3RydWN0aW9ucyBjb21wbGV0ZWQgYW5kIGN5Y2xlcywgcmVzcGVjdGl2ZWx5LiAgSW4gUE9XRVI2IG1vZGUsIGhvd2V2ZXIsIHRoZQpjb3VudGVycyBkbyBub3QgZ2VuZXJhdGUgYW4gaW50ZXJydXB0IG9uIG92ZXJmbG93IGFuZCBzbyBhcmUgdW51c2FibGUgYnkKT1Byb2ZpbGUuICBLZXJuZWwgdmVyc2lvbnMgMi42LjIzIGFuZCBoaWdoZXIgd2lsbCByZWNvZ25pemUgdGhpcyBtb2RlCmFuZCBleHBvcnQgInBwYzY0L3Bvd2VyNSsrIiBhcyB0aGUgY3B1X3R5cGUgdG8gdGhlIG9wcm9maWxlZnMgcHNldWRvIGZpbGVzeXN0ZW0uCk9Qcm9maWxlIHVzZXJzcGFjZSByZXNwb25kcyB0byB0aGlzIGNwdV90eXBlIGJ5IHJlbW92aW5nIHRoZXNlIGNvdW50ZXJzIGZyb20KdGhlIGxpc3Qgb2YgcG90ZW50aWFsIGV2ZW50cyB0byBjb3VudC4gIFdpdGhvdXQgdGhpcyBrZXJuZWwgc3VwcG9ydCwgYXR0ZW1wdHMKdG8gcHJvZmlsZSB1c2luZyBhbiBldmVudCBmcm9tIG9uZSBvZiB0aGVzZSBjb3VudGVycyB3aWxsIHlpZWxkIGluY29ycmVjdApyZXN1bHRzIC0tIHR5cGljYWxseSwgemVybyAob3IgbmVhciB6ZXJvKSBzYW1wbGVzIGluIHRoZSBnZW5lcmF0ZWQgcmVwb3J0Lgo8L2Rpdj4KICAgICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iY2VsbC1iZSI+PC9hPjQuNy6gQ2VsbCBCcm9hZGJhbmQgRW5naW5lIHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhlIENlbGwgQnJvYWRiYW5kIEVuZ2luZSAoQ0JFKSBwcm9jZXNzb3IgY29yZSBjb25zaXN0cyBvZiBhIFBvd2VyUEMgUHJvY2Vzc2luZwpFbGVtZW50IChQUEUpIGFuZCA4IFN5bmVyZ2lzdGljIFByb2Nlc3NpbmcgRWxlbWVudHMgKFNQRSkuICBQUEVzIGFuZCBTUEVzIGVhY2gKY29uc2lzdCBvZiBhIHByb2Nlc3NpbmcgdW5pdCAoUFBVIGFuZCBTUFUsIHJlc3BlY3RpdmVseSkgYW5kIG90aGVyIGhhcmR3YXJlCmNvbXBvbmVudHMsIHN1Y2ggYXMgbWVtb3J5IGNvbnRyb2xsZXJzLgo8L3A+CiAgICAgICAgICAgIDxwPgpBIFBQVSBoYXMgdHdvIGhhcmR3YXJlIHRocmVhZHMgKGFrYSAidmlydHVhbCBDUFVzIikuICBUaGUgcGVyZm9ybWFuY2UgbW9uaXRvcgp1bml0IG9mIHRoZSBDQkUgY29sbGVjdHMgZXZlbnQgaW5mb3JtYXRpb24gb24gb25lIGhhcmR3YXJlIHRocmVhZCBhdCBhIHRpbWUuClRoZXJlZm9yZSwgd2hlbiBwcm9maWxpbmcgUFBFIGV2ZW50cywKT1Byb2ZpbGUgY29sbGVjdHMgdGhlIHByb2ZpbGUgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGV2ZW50cyBieSB0aW1lIHNsaWNpbmcgdGhlCnBlcmZvcm1hbmNlIGNvdW50ZXIgaGFyZHdhcmUgYmV0d2VlbiB0aGUgdHdvIHRocmVhZHMuICAgVGhlIHVzZXIgbXVzdCBlbnN1cmUgdGhlCmNvbGxlY3Rpb24gaW50ZXJ2YWwgaXMgbG9uZyBlbm91Z2ggc28gdGhhdCB0aGUgdGltZSBzcGVudCBjb2xsZWN0aW5nIGRhdGEgZm9yCmVhY2ggUFBVIGlzIHN1ZmZpY2llbnQgdG8gb2J0YWluIGEgZ29vZCBwcm9maWxlLgo8L3A+CiAgICAgICAgICAgIDxwPgpUbyBwcm9maWxlIGFuIFNQVSBhcHBsaWNhdGlvbiwgdGhlIHVzZXIgc2hvdWxkIHNwZWNpZnkgdGhlIFNQVV9DWUNMRVMgZXZlbnQuCldoZW4gc3RhcnRpbmcgT1Byb2ZpbGUgd2l0aCBTUFVfQ1lDTEVTLCB0aGUgb3Bjb250cm9sIHNjcmlwdCBlbmZvcmNlcyBjZXJ0YWluCnNlcGFyYXRpb24gcGFyYW1ldGVycyAoc2VwYXJhdGU9Y3B1LGxpYikgdG8gZW5zdXJlIHRoYXQgc3VmZmljaWVudCBpbmZvcm1hdGlvbgppcyBjb2xsZWN0ZWQgaW4gdGhlIHNhbXBsZSBkYXRhIGluIG9yZGVyIHRvIGdlbmVyYXRlIGEgY29tcGxldGUgcmVwb3J0LiAgVGhlCi0tbWVyZ2U9Y3B1IG9wdGlvbiBjYW4gYmUgdXNlZCB0byBvYnRhaW4gYSBtb3JlIHJlYWRhYmxlIHJlcG9ydCBpZiBhbmFseXppbmcKdGhlIHBlcmZvcm1hbmNlIG9mIGVhY2ggc2VwYXJhdGUgU1BVIGlzIG5vdCBuZWNlc3NhcnkuCjwvcD4KICAgICAgICAgICAgPHA+ClByb2ZpbGluZyB3aXRoIGFuIFNQVSBldmVudCAoZXZlbnRzIDQxMDAgdGhyb3VnaCA0MTYzKSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGFueSBvdGhlcgpldmVudC4gIEZ1cnRoZXIgbW9yZSwgb25seSBvbmUgU1BVIGV2ZW50IGNhbiBiZSBzcGVjaWZpZWQgYXQgYSB0aW1lLiAgVGhlIGhhcmR3YXJlIG9ubHkKc3VwcG9ydHMgcHJvZmlsaW5nIG9uIG9uZSBTUFUgcGVyIG5vZGUgYXQgYSB0aW1lLiAgVGhlIE9Qcm9maWxlIGtlcm5lbCBjb2RlIHRpbWUgc2xpY2VzCmJldHdlZW4gdGhlIGVpZ2h0IFNQVXMgdG8gY29sbGVjdCBkYXRhIG9uIGFsbCBTUFVzLgo8L3A+CiAgICAgICAgICAgIDxwPgpTUFUgcHJvZmlsZSByZXBvcnRzIGhhdmUgc29tZSB1bmlxdWUgY2hhcmFjdGVyaXN0aWNzIGNvbXBhcmVkIHRvIHJlcG9ydHMgZm9yCnN0YW5kYXJkIGFyY2hpdGVjdHVyZXM6CjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgICAgICA8dWwgdHlwZT0iZGlzYyI+CiAgICAgICAgICAgICAgICA8bGk+VHlwaWNhbGx5IG5vICJhcHAgbmFtZSIgY29sdW1uLiAgVGhpcyBpcyByZWFsbHkgc3RhbmRhcmQgT1Byb2ZpbGUgYmVoYXZpb3IKd2hlbiB0aGUgcmVwb3J0IGNvbnRhaW5zIHNhbXBsZXMgZm9yIGp1c3QgYSBzaW5nbGUgYXBwbGljYXRpb24sIHdoaWNoIGlzCmNvbW1vbmx5IHRoZSBjYXNlIHdoZW4gcHJvZmlsaW5nIFNQVXMuPC9saT4KICAgICAgICAgICAgICAgIDxsaT4iQ1BVIiBlcXVhdGVzIHRvICJTUFUiPC9saT4KICAgICAgICAgICAgICAgIDxsaT5TcGVjaWZ5aW5nICctLWxvbmctZmlsZW5hbWVzJyBvbiB0aGUgb3ByZXBvcnQgY29tbWFuZCBkb2VzIG5vdCBhbHdheXMgcmVzdWx0CmluIGxvbmcgZmlsZW5hbWVzLiAgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIFNQVSBhcHBsaWNhdGlvbiBjb2RlIGlzIGVtYmVkZGVkIGluCnRoZSBQUEUgZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS4gIFRoZSBlbWJlZGRlZCBTUFUgRUxGIGRhdGEgY29udGFpbnMgb25seSB0aGUKc2hvcnQgZmlsZW5hbWUgKGkuZS4sIG5vIHBhdGggaW5mb3JtYXRpb24pIGZvciB0aGUgU1BVIGJpbmFyeSBmaWxlIHRoYXQgd2FzIHVzZWQgYXMKdGhlIHNvdXJjZSBmb3IgZW1iZWRkaW5nLiAgIFRoZSByZWFzb24gdGhhdCBqdXN0IHRoZSBzaG9ydCBmaWxlbmFtZSBpcyB1c2VkIGlzIGJlY2F1c2UKdGhlIG9yaWdpbmFsIFNQVSBiaW5hcnkgZmlsZSBtYXkgbm90IGV4aXN0IG9yIGJlIGFjY2Vzc2libGUgYXQgcnVudGltZS4gIFRoZSBwZXJmb3JtYW5jZQphbmFseXN0IG11c3QgaGF2ZSBzdWZmaWNpZW50IGtub3dsZWRnZSBvZiB0aGUgYXBwbGljYXRpb24gdG8gYmUgYWJsZSB0byBjb3JyZWxhdGUgdGhlClNQVSBiaW5hcnkgaW1hZ2UgbmFtZXMgZm91bmQgaW4gdGhlICByZXBvcnQgdG8gdGhlIGFwcGxpY2F0aW9uJ3Mgc291cmNlIGZpbGVzLgo8ZGl2IGNsYXNzPSJub3RlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDAuNWluOyBtYXJnaW4tcmlnaHQ6IDAuNWluOyI+PGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CkNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uIHdpdGggLWcgYW5kIGdlbmVyYXRlIHRoZSBPUHJvZmlsZSByZXBvcnQKd2l0aCAtZyB0byBmYWNpbGl0YXRlIGZpbmRpbmcgdGhlIHJpZ2h0IHNvdXJjZSBmaWxlKHMpIG9uIHdoaWNoIHRvIGZvY3VzLgo8L2Rpdj48L2xpPgogICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJhbWQtaWJzLXN1cHBvcnQiPjwvYT40LjguoEFNRDY0ICh4ODZfNjQpIEluc3RydWN0aW9uLUJhc2VkIFNhbXBsaW5nIChJQlMpIHN1cHBvcnQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KSW5zdHJ1Y3Rpb24tQmFzZWQgU2FtcGxpbmcgKElCUykgaXMgYSBuZXcgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQgdGVjaG5pcXVlCmF2YWlsYWJsZSBvbiBBTUQgRmFtaWx5IDEwaCBwcm9jZXNzb3JzLiBUcmFkaXRpb25hbCBwZXJmb3JtYW5jZSBjb3VudGVyCnNhbXBsaW5nIGlzIG5vdCBwcmVjaXNlIGVub3VnaCB0byBpc29sYXRlIHBlcmZvcm1hbmNlIGlzc3VlcyB0byBpbmRpdmlkdWFsCmluc3RydWN0aW9ucy4gSUJTLCBob3dldmVyLCBwcmVjaXNlbHkgaWRlbnRpZmllcyBpbnN0cnVjdGlvbnMgd2hpY2ggYXJlIG5vdAptYWtpbmcgdGhlIGJlc3QgdXNlIG9mIHRoZSBwcm9jZXNzb3IgcGlwZWxpbmUgYW5kIG1lbW9yeSBoaWVyYXJjaHkuCkZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gdGhlICJJbnN0cnVjdGlvbi1CYXNlZCBTYW1wbGluZzoKQSBOZXcgUGVyZm9ybWFuY2UgQW5hbHlzaXMgVGVjaG5pcXVlIGZvciBBTUQgRmFtaWx5IDEwaCBQcm9jZXNzb3JzIiAoCjxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuYW1kLmNvbS9hc3NldHMvQU1EX0lCU19wYXBlcl9FTi5wZGYiPgpodHRwOi8vZGV2ZWxvcGVyLmFtZC5jb20vYXNzZXRzL0FNRF9JQlNfcGFwZXJfRU4ucGRmPC9hPikuClRoZXJlIGFyZSB0d28gdHlwZXMgb2YgSUJTIHByb2ZpbGUgdHlwZXMsIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgo8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QzIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRpdGxlIj48YSBpZD0iaWJzLWZldGNoIj48L2E+NC44LjEuoElCUyBGZXRjaDwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CklCUyBmZXRjaCBzYW1wbGluZyBpcyBhIHN0YXRpc3RpY2FsIHNhbXBsaW5nIG1ldGhvZCB3aGljaCBjb3VudHMgY29tcGxldGVkCmZldGNoIG9wZXJhdGlvbnMuIFdoZW4gdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgZmV0Y2ggb3BlcmF0aW9ucyByZWFjaGVzIHRoZQptYXhpbXVtIGZldGNoIGNvdW50ICh0aGUgc2FtcGxpbmcgcGVyaW9kKSwgSUJTIHRhZ3MgdGhlIGZldGNoIG9wZXJhdGlvbiBhbmQKbW9uaXRvcnMgdGhhdCBvcGVyYXRpb24gdW50aWwgaXQgZWl0aGVyIGNvbXBsZXRlcyBvciBhYm9ydHMuIFdoZW4gYSB0YWdnZWQKZmV0Y2ggY29tcGxldGVzIG9yIGFib3J0cywgYSBzYW1wbGluZyBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkIGFuZCBhbiBJQlMgZmV0Y2gKc2FtcGxlIGlzIHRha2VuLiBBbiBJQlMgZmV0Y2ggc2FtcGxlIGNvbnRhaW5zIGEgdGltZXN0YW1wLCB0aGUgaWRlbnRpZmllciBvZgp0aGUgaW50ZXJydXB0ZWQgcHJvY2VzcywgdGhlIHZpcnR1YWwgZmV0Y2ggYWRkcmVzcywgYW5kIHNldmVyYWwgZXZlbnQgZmxhZ3MKYW5kIHZhbHVlcyB0aGF0IGRlc2NyaWJlIHdoYXQgaGFwcGVuZWQgZHVyaW5nIHRoZSBmZXRjaCBvcGVyYXRpb24uIAo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MyIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Imlicy1vcCI+PC9hPjQuOC4yLqBJQlMgT3A8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpJQlMgb3Agc2FtcGxpbmcgc2VsZWN0cywgdGFncywgYW5kIG1vbml0b3JzIG1hY3JvLW9wcyBhcyBpc3N1ZWQgZnJvbSBBTUQ2NAppbnN0cnVjdGlvbnMuIFR3byBvcHRpb25zIGFyZSBhdmFpbGFibGUgZm9yIHNlbGVjdGluZyBvcHMgZm9yIHNhbXBsaW5nOgo8L3A+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij4KICAgICAgICAgICAgICAgIDx1bCB0eXBlPSJkaXNjIj4KICAgICAgICAgICAgICAgICAgPGxpPgpDeWNsZXMtYmFzZWQgc2VsZWN0aW9uIGNvdW50cyBDUFUgY2xvY2sgY3ljbGVzLiBUaGUgb3AgaXMgdGFnZ2VkIGFuZCBtb25pdG9yZWQKd2hlbiB0aGUgY291bnQgcmVhY2hlcyBhIHRocmVzaG9sZCAodGhlIHNhbXBsaW5nIHBlcmlvZCkgYW5kIGEgdmFsaWQgb3AgaXMKYXZhaWxhYmxlLiAKPC9saT4KICAgICAgICAgICAgICAgICAgPGxpPgpEaXNwYXRjaGVkIG9wLWJhc2VkIHNlbGVjdGlvbiBjb3VudHMgZGlzcGF0Y2hlZCBtYWNyby1vcHMuCldoZW4gdGhlIGNvdW50IHJlYWNoZXMgYSB0aHJlc2hvbGQsIHRoZSBuZXh0IHZhbGlkIG9wIGlzIHRhZ2dlZCBhbmQgbW9uaXRvcmVkLiAKPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CkluIGJvdGggY2FzZXMsIGFuIElCUyBzYW1wbGUgaXMgZ2VuZXJhdGVkIG9ubHkgaWYgdGhlIHRhZ2dlZCBvcCByZXRpcmVzLgpUaHVzLCBJQlMgb3AgZXZlbnQgaW5mb3JtYXRpb24gZG9lcyBub3QgbWVhc3VyZSBzcGVjdWxhdGl2ZSBleGVjdXRpb24gYWN0aXZpdHkuClRoZSBleGVjdXRpb24gc3RhZ2VzIG9mIHRoZSBwaXBlbGluZSBtb25pdG9yIHRoZSB0YWdnZWQgbWFjcm8tb3AuIFdoZW4gdGhlCnRhZ2dlZCBtYWNyby1vcCByZXRpcmVzLCBhIHNhbXBsaW5nIGludGVycnVwdCBpcyBnZW5lcmF0ZWQgYW5kIGFuIElCUyBvcApzYW1wbGUgaXMgdGFrZW4uIEFuIElCUyBvcCBzYW1wbGUgY29udGFpbnMgYSB0aW1lc3RhbXAsIHRoZSBpZGVudGlmaWVyIG9mCnRoZSBpbnRlcnJ1cHRlZCBwcm9jZXNzLCB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBBTUQ2NCBpbnN0cnVjdGlvbiBmcm9tCndoaWNoIHRoZSBvcCB3YXMgaXNzdWVkLCBhbmQgc2V2ZXJhbCBldmVudCBmbGFncyBhbmQgdmFsdWVzIHRoYXQgZGVzY3JpYmUKd2hhdCBoYXBwZW5lZCB3aGVuIHRoZSBtYWNyby1vcCBleGVjdXRlZC4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CkVuYWJsaW5nIElCUyBwcm9maWxpbmcgaXMgZG9uZSBzaW1wbHkgYnkgc3BlY2lmeWluZyBJQlMgcGVyZm9ybWFuY2UgZXZlbnRzCnRocm91Z2ggdGhlICItLWV2ZW50PSIgb3B0aW9ucy4gVGhlc2UgZXZlbnRzIGFyZSBsaXN0ZWQgaW4gdGhlCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+b3Bjb250cm9sIC0tbGlzdC1ldmVudHM8L2NvZGU+Lgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgpvcGNvbnRyb2wgLS1ldmVudD1JQlNfRkVUQ0hfWFhYOiZsdDtjb3VudCZndDs6Jmx0O3VtJmd0OzombHQ7a2VybmVsJmd0OzombHQ7dXNlciZndDsKb3Bjb250cm9sIC0tZXZlbnQ9SUJTX09QX1hYWDombHQ7Y291bnQmZ3Q7OiZsdDt1bSZndDs6Jmx0O2tlcm5lbCZndDs6Jmx0O3VzZXImZ3Q7CgpOb3RlOiAqIEFsbCBJQlMgZmV0Y2ggZXZlbnQgbXVzdCBoYXZlIHRoZSBzYW1lIGV2ZW50IGNvdW50IGFuZCB1bml0bWFzaywKICAgICAgICBhcyBkbyB0aG9zZSBmb3IgSUJTIG9wLgo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ibWlzdXNlIj48L2E+NC45LqBEYW5nZXJvdXMgY291bnRlciBzZXR0aW5nczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpPUHJvZmlsZSBpcyBhIGxvdy1sZXZlbCBwcm9maWxlciB3aGljaCBhbGxvdyBjb250aW51b3VzIHByb2ZpbGluZyB3aXRoIGEgbG93LW92ZXJoZWFkIGNvc3QuCklmIHRvbyBsb3cgYSBjb3VudCByZXNldCB2YWx1ZSBpcyBzZXQgZm9yIGEgY291bnRlciwgdGhlIHN5c3RlbSBjYW4gYmVjb21lIG92ZXJsb2FkZWQgd2l0aCBjb3VudGVyCmludGVycnVwdHMsIGFuZCBzZWVtIGFzIGlmIHRoZSBzeXN0ZW0gaGFzIGZyb3plbi4gV2hpbHN0IHNvbWUgdmFsaWRhdGlvbiBpcyBkb25lLCBpdAppcyBub3QgZm9vbHByb29mLgo8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij4KICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Ob3RlPC9oMz4KICAgICAgICAgICAgICA8cD4KVGhpcyBjYW4gaGFwcGVuIGFzIGZvbGxvd3M6IFdoZW4gdGhlIHByb2ZpbGVyIGNvdW50CnJlYWNoZXMgemVybyBhbiBOTUkgaGFuZGxlciBpcyBjYWxsZWQgd2hpY2ggc3RvcmVzIHRoZSBzYW1wbGUgdmFsdWVzIGluIGFuIGludGVybmFsIGJ1ZmZlciwgdGhlbiByZXNldHMgdGhlIGNvdW50ZXIKdG8gaXRzIG9yaWdpbmFsIHZhbHVlLiBJZiB0aGUgY291bnQgaXMgdmVyeSBsb3csIGEgcGVuZGluZyBOTUkgY2FuIGJlIHNlbnQgYmVmb3JlIHRoZSBOTUkgaGFuZGxlciBoYXMKY29tcGxldGVkLiBEdWUgdG8gdGhlIHByaW9yaXR5IG9mIHRoZSBOTUksIHRoZSBsb2NhbCBBUElDIGRlbGl2ZXJzIHRoZSBwZW5kaW5nIGludGVycnVwdCBpbW1lZGlhdGVseSBhZnRlcgpjb21wbGV0aW9uIG9mIHRoZSBwcmV2aW91cyBpbnRlcnJ1cHQgaGFuZGxlciwgYW5kIGNvbnRyb2wgbmV2ZXIgcmV0dXJucyB0byBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLgpJbiB0aGlzIHdheSB0aGUgc3lzdGVtIHNlZW1zIHRvIGJlIGZyb3plbi4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+SWYgdGhpcyBoYXBwZW5zLCBpdCB3aWxsIGJlIGltcG9zc2libGUgdG8gYnJpbmcgdGhlIHN5c3RlbSBiYWNrIHRvIGEgd29ya2FibGUgc3RhdGUuClRoZXJlIGlzIG5vIHdheSB0byBwcm92aWRlIHJlYWwgc2VjdXJpdHkgYWdhaW5zdCB0aGlzIGhhcHBlbmluZywgb3RoZXIgdGhhbiBtYWtpbmcgc3VyZSB0byB1c2UgYSByZWFzb25hYmxlIHZhbHVlCmZvciB0aGUgY291bnRlciByZXNldC4gRm9yIGV4YW1wbGUsIHNldHRpbmcgPGNvZGUgY2xhc3M9ImNvbnN0YW50Ij5DUFVfQ0xLX1VOSEFMVEVEPC9jb2RlPiBldmVudCB0eXBlIHdpdGggYSByaWRpY3Vsb3VzbHkgbG93IHJlc2V0IGNvdW50IChlLmcuIDUwMCkKaXMgbGlrZWx5IHRvIGZyZWV6ZSB0aGUgc3lzdGVtLgo8L3A+CiAgICAgICAgICAgIDxwPgpJbiBzaG9ydCA6IDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPkRvbid0IHRyeSBhIGZvb2xpc2ggc2FtcGxlIGNvdW50IHZhbHVlPC9zdHJvbmc+PC9zcGFuPi4gVW5mb3J0dW5hdGVseSB0aGUgZGVmaW5pdGlvbiBvZiBhIGZvb2xpc2ggdmFsdWUKaXMgcmVhbGx5IGRlcGVuZGVudCBvbiB0aGUgZXZlbnQgdHlwZSAtIGlmIGV2ZXIgaW4gZG91YnQsIGUtbWFpbCA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFkZHJlc3MiPgogICAgICAgICAgICAgIDxwPjxjb2RlIGNsYXNzPSJlbWFpbCI+Jmx0OzxhIGhyZWY9Im1haWx0bzpvcHJvZmlsZS1saXN0QGxpc3RzLnNmLm5ldCI+b3Byb2ZpbGUtbGlzdEBsaXN0cy5zZi5uZXQ8L2E+Jmd0OzwvY29kZT4uPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InJlc3VsdHMiPjwvYT5DaGFwdGVyoDQuoE9idGFpbmluZyByZXN1bHRzPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0b2MiPgogICAgICAgICAgPHA+CiAgICAgICAgICAgIDxiPlRhYmxlIG9mIENvbnRlbnRzPC9iPgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWMiPjEuIFByb2ZpbGUgc3BlY2lmaWNhdGlvbnM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9maWxlLXNwZWMtZXhhbXBsZXMiPjEuMS4gRXhhbXBsZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3Byb2ZpbGUtc3BlYy1kZXRhaWxzIj4xLjIuIFByb2ZpbGUgc3BlY2lmaWNhdGlvbiBwYXJhbWV0ZXJzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNsb2NhdGluZy1hbmQtbWFuYWdpbmctYmluYXJ5LWltYWdlcyI+MS4zLiBMb2NhdGluZyBhbmQgbWFuYWdpbmcgYmluYXJ5IGltYWdlczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbm8tcmVzdWx0cyI+MS40LiBXaGF0IHRvIGRvIHdoZW4geW91IGRvbid0IGdldCBhbnkgcmVzdWx0czwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2RkPgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydCI+Mi4gSW1hZ2Ugc3VtbWFyaWVzIGFuZCBzeW1ib2wgc3VtbWFyaWVzICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtbWVyZ2luZyI+Mi4xLiBNZXJnaW5nIHNlcGFyYXRlIHByb2ZpbGVzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1jb21wYXJpc29uIj4yLjIuIFNpZGUtYnktc2lkZSBtdWx0aXBsZSByZXN1bHRzPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcHJlcG9ydC1jYWxsZ3JhcGgiPjIuMy4gQ2FsbGdyYXBoIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtZGlmZiI+Mi40LiBEaWZmZXJlbnRpYWwgcHJvZmlsZXMgd2l0aCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LWFub24iPjIuNS4gQW5vbnltb3VzIGV4ZWN1dGFibGUgbWFwcGluZ3M8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wcmVwb3J0LXhtbCI+Mi42LiBYTUwgZm9ybWF0dGVkIG91dHB1dDwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ByZXBvcnQtb3B0aW9ucyI+Mi43LiBPcHRpb25zIGZvciA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bhbm5vdGF0ZSI+My4gT3V0cHV0dGluZyBhbm5vdGF0ZWQgc291cmNlICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPik8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFubm90YXRlLWZpbmRpbmctc291cmNlIj4zLjEuIExvY2F0aW5nIHNvdXJjZSBmaWxlczwvYT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3Bhbm5vdGF0ZS1kZXRhaWxzIj4zLjIuIFVzYWdlIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYW5ub3RhdGU8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldHRpbmctaml0LXJlcG9ydHMiPjQuIE9Qcm9maWxlIHJlc3VsdHMgd2l0aCBKSVQgc2FtcGxlczwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wZ3Byb2YiPjUuIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmdwcm9mPC9zdHJvbmc+PC9zcGFuPi1jb21wYXRpYmxlIG91dHB1dCAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4pPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3BncHJvZi1kZXRhaWxzIj41LjEuIFVzYWdlIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29wYXJjaGl2ZSI+Ni4gQXJjaGl2aW5nIG1lYXN1cmVtZW50cyAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPik8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNvcGFyY2hpdmUtZGV0YWlscyI+Ni4xLiBVc2FnZSBvZiA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFyY2hpdmU8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI29waW1wb3J0Ij43LiBDb252ZXJ0aW5nIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+KTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI29waW1wb3J0LWRldGFpbHMiPjcuMS4gVXNhZ2Ugb2YgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BpbXBvcnQ8L3N0cm9uZz48L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICA8L2RsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxwPgpPSywgc28gdGhlIHByb2ZpbGVyIGhhcyBiZWVuIHJ1bm5pbmcsIGJ1dCBpdCdzIG5vdCBtdWNoIHVzZSB1bmxlc3Mgd2UgY2FuIGdldCBzb21lIGRhdGEgb3V0LiBGYWlybHkgb2Z0ZW4sCk9Qcm9maWxlIGRvZXMgYSBsaXR0bGUgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dG9vPC9lbT48L3NwYW4+IGdvb2QgYSBqb2Igb2Yga2VlcGluZyBvdmVyaGVhZCBsb3csIGFuZCBubyBkYXRhIHJlYWNoZXMKdGhlIHByb2ZpbGVyLiBUaGlzIGNhbiBoYXBwZW4gb24gbGlnaHRseS1sb2FkZWQgbWFjaGluZXMuIFJlbWVtYmVyIHlvdSBjYW4gZm9yY2UgYSBkdW1wIGF0IGFueSB0aW1lIHdpdGggOgo8L3A+CiAgICAgICAgPHA+CiAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sIC0tZHVtcDwvc3Ryb25nPgogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvcD4KICAgICAgICA8cD5SZW1lbWJlciB0byBkbyB0aGlzIGJlZm9yZSBjb21wbGFpbmluZyB0aGVyZSBpcyBubyBwcm9maWxpbmcgZGF0YSAhCk5vdyB0aGF0IHdlJ3ZlIGdvdCBzb21lIGRhdGEsIGl0IGhhcyB0byBiZSBwcm9jZXNzZWQuIFRoYXQncyB0aGUgam9iIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiwKPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4sIG9yIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+Lgo8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0icHJvZmlsZS1zcGVjIj48L2E+MS6gUHJvZmlsZSBzcGVjaWZpY2F0aW9uczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KQWxsIG9mIHRoZSBhbmFseXNpcyB0b29scyB0YWtlIGEgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+cHJvZmlsZSBzcGVjaWZpY2F0aW9uPC9lbT48L3NwYW4+LgpUaGlzIGlzIGEgc2V0IG9mIGRlZmluaXRpb25zIHRoYXQgZGVzY3JpYmUgd2hpY2ggYWN0dWFsIHByb2ZpbGVzIHNob3VsZCBiZQpleGFtaW5lZC4gVGhlIHNpbXBsZXN0IHByb2ZpbGUgc3BlY2lmaWNhdGlvbiBpcyBlbXB0eTogdGhpcyB3aWxsIG1hdGNoIGFsbAp0aGUgYXZhaWxhYmxlIHByb2ZpbGUgZmlsZXMgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24gKHRoaXMgaXMgd2hhdCBoYXBwZW5zCndoZW4geW91IGRvIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPikuCjwvcD4KICAgICAgICAgIDxwPgpTcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnMgYXJlIG9mIHRoZSBmb3JtIDxjb2RlIGNsYXNzPSJvcHRpb24iPm5hbWU6dmFsdWVbLHZhbHVlXTwvY29kZT4uCkZvciBleGFtcGxlLCBpZiBJIHdhbnRlZCB0byBnZXQgYSBjb21iaW5lZCBzeW1ib2wgc3VtbWFyeSBmb3IKPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj4vYmluL215cHJvZzwvY29kZT4gYW5kIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L2Jpbi9teXByb2cyPC9jb2RlPiwKSSBjb3VsZCBkbyA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydCAtbCBpbWFnZTovYmluL215cHJvZywvYmluL215cHJvZzI8L3N0cm9uZz48L3NwYW4+LgpBcyBhIHNwZWNpYWwgY2FzZSwgeW91IGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc3BlY2lmeSB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+aW1hZ2U6PC9jb2RlPgpwYXJ0IGhlcmU6IGFueXRoaW5nIGxlZnQgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBhc3N1bWVkIHRvIGJlIGFuCjxjb2RlIGNsYXNzPSJvcHRpb24iPmltYWdlOjwvY29kZT4gbmFtZS4gU2ltaWxhcmx5LCBpZiBubyA8Y29kZSBjbGFzcz0ib3B0aW9uIj5zZXNzaW9uOjwvY29kZT4KaXMgc3BlY2lmaWVkLCB0aGVuIDxjb2RlIGNsYXNzPSJvcHRpb24iPnNlc3Npb246Y3VycmVudDwvY29kZT4gaXMgYXNzdW1lZCAoImN1cnJlbnQiCmlzIGEgc3BlY2lhbCBuYW1lIG9mIHRoZSBjdXJyZW50IC8gbGFzdCBwcm9maWxpbmcgc2Vzc2lvbikuCjwvcD4KICAgICAgICAgIDxwPgpJbiBhZGRpdGlvbiB0byB0aGUgY29tbWEtc2VwYXJhdGVkIGxpc3Qgc2hvd24gYWJvdmUsIHNvbWUgb2YgdGhlIApzcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnMgY2FuIHRha2UgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Z2xvYjwvc3Ryb25nPjwvc3Bhbj4tc3R5bGUKdmFsdWVzLiBGb3IgZXhhbXBsZSwgaWYgSSB3YW50IHRvIHNlZSBpbWFnZSBzdW1tYXJpZXMgZm9yIGFsbApiaW5hcmllcyBwcm9maWxlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi91c3IvYmluLzwvY29kZT4sIEkgY291bGQgZG8KPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQgaW1hZ2U6L3Vzci9iaW4vXCo8L3N0cm9uZz48L3NwYW4+LiBOb3RlIHRoZSBuZWNlc3NpdHkKdG8gZXNjYXBlIHRoZSBzcGVjaWFsIGNoYXJhY3RlciBmcm9tIHRoZSBzaGVsbC4KPC9wPgogICAgICAgICAgPHA+CkZvciA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4sIHByb2ZpbGUgc3BlY2lmaWNhdGlvbnMgY2FuIGJlIHVzZWQgdG8KZGVmaW5lIHR3byBwcm9maWxlcywgZ2l2aW5nIGRpZmZlcmVudGlhbCBvdXRwdXQuIFRoaXMgaXMgZG9uZSBieQplbmNsb3NpbmcgZWFjaCBvZiB0aGUgdHdvIHNwZWNpZmljYXRpb25zIHdpdGhpbiBjdXJseSBicmFjZXMsIGFzIHNob3duCmluIHRoZSBleGFtcGxlcyBiZWxvdy4gQW55IHNwZWNpZmljYXRpb25zIG91dHNpZGUgb2YgY3VybHkgYnJhY2VzIGFyZQpzaGFyZWQgYWNyb3NzIGJvdGguCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InByb2ZpbGUtc3BlYy1leGFtcGxlcyI+PC9hPjEuMS6gRXhhbXBsZXM8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KSW1hZ2Ugc3VtbWFyaWVzIGZvciBhbGwgcHJvZmlsZXMgd2l0aCA8Y29kZSBjbGFzcz0iY29uc3RhbnQiPkRBVEFfTUVNX1JFRlM8L2NvZGU+CnNhbXBsZXMgaW4gdGhlIHNhdmVkIHNlc3Npb24gY2FsbGVkICJzdHJlc3N0ZXN0IiA6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3ByZXBvcnQgc2Vzc2lvbjpzdHJlc3N0ZXN0IGV2ZW50OkRBVEFfTUVNX1JFRlMKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpTeW1ib2wgc3VtbWFyeSBmb3IgdGhlIGFwcGxpY2F0aW9uIGNhbGxlZCAidGVzdF9zeW01M2M4eHgsOXh4Ii4gTm90ZSB0aGUKZXNjYXBpbmcgaXMgbmVjZXNzYXJ5IGFzIDxjb2RlIGNsYXNzPSJvcHRpb24iPmltYWdlOjwvY29kZT4gdGFrZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcHJlcG9ydCAtbCAuL3Rlc3QvdGVzdF9zeW01M2M4eHhcLDl4eAo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CkltYWdlIHN1bW1hcmllcyBmb3IgYWxsIGJpbmFyaWVzIGluIHRoZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPnRlc3Q8L2NvZGU+IGRpcmVjdG9yeSwKZXhjZXB0aW5nIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+Ym9yaW5nLXRlc3Q8L2NvZGU+IDoKPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcHJlcG9ydCBpbWFnZTouL3Rlc3QvXCogaW1hZ2UtZXhjbHVkZTouL3Rlc3QvYm9yaW5nLXRlc3QKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpEaWZmZXJlbnRpYWwgcHJvZmlsZSBvZiBhIGJpbmFyeSBzdG9yZWQgaW4gdHdvIGFyY2hpdmVzIDoKPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KIyBvcHJlcG9ydCAtbCAvYmluL2Jhc2ggeyBhcmNoaXZlOi4vb3JpZyB9IHsgYXJjaGl2ZTouL25ldyB9CjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KRGlmZmVyZW50aWFsIHByb2ZpbGUgb2YgYW4gYXJjaGl2ZWQgYmluYXJ5IHdpdGggdGhlIGN1cnJlbnQgc2Vzc2lvbiA6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3ByZXBvcnQgLWwgL2Jpbi9iYXNoIHsgYXJjaGl2ZTouL29yaWcgfSB7IH0KPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9InByb2ZpbGUtc3BlYy1kZXRhaWxzIj48L2E+MS4yLqBQcm9maWxlIHNwZWNpZmljYXRpb24gcGFyYW1ldGVyczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+YXJjaGl2ZTo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5hcmNoaXZlcGF0aDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KCQlBIHBhdGggdG8gYW4gYXJjaGl2ZSBtYWRlIHdpdGggPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPi4KCQlBYnNlbmNlIG9mIHRoaXMgdGFnLCB1bmxpa2Ugb3RoZXJzLCBtZWFucyAidGhlIGN1cnJlbnQgc3lzdGVtIiwKCQllcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgImFyY2hpdmU6Ii4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+c2Vzc2lvbjo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5zZXNzaW9ubGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KCQlBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNlc3Npb24gbmFtZXMgdG8gcmVzb2x2ZSBpbi4gQWJzZW5jZSBvZiB0aGlzCgkJdGFnLCB1bmxpa2Ugb3RoZXJzLCBtZWFucyAidGhlIGN1cnJlbnQgc2Vzc2lvbiIsIGVxdWl2YWxlbnQgdG8KCQlzcGVjaWZ5aW5nICJzZXNzaW9uOmN1cnJlbnQiLgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5zZXNzaW9uLWV4Y2x1ZGU6PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZW0+c2Vzc2lvbmxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNlc3Npb25zIHRvIGV4Y2x1ZGUuCgkJPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmltYWdlOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmltYWdlbGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaW1hZ2UgbmFtZXMgdG8gcmVzb2x2ZS4gRWFjaCBlbnRyeSBtYXkgYmUgcmVsYXRpdmUKICAgICAgICAgICAgICAgIHBhdGgsIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmdsb2I8L3N0cm9uZz48L3NwYW4+LXN0eWxlIG5hbWUsIG9yIGZ1bGwgcGF0aCwgZS5nLjwvcD4KICAgICAgICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+b3ByZXBvcnQgJ2ltYWdlOi91c3IvYmluL29wcm9maWxlZCwqb3AqLC4vb3ByZXBvcnQnPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+aW1hZ2UtZXhjbHVkZTo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5pbWFnZWxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJU2FtZSBhcyA8Y29kZSBjbGFzcz0ib3B0aW9uIj5pbWFnZTo8L2NvZGU+LCBidXQgdGhlIG1hdGNoaW5nIGltYWdlcyBhcmUgZXhjbHVkZWQuCgkJPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmxpYi1pbWFnZTo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5pbWFnZWxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJU2FtZSBhcyA8Y29kZSBjbGFzcz0ib3B0aW9uIj5pbWFnZTo8L2NvZGU+LCBidXQgb25seSBmb3IgaW1hZ2VzIHRoYXQgYXJlIGZvcgoJCWEgcGFydGljdWxhciBwcmltYXJ5IGJpbmFyeSBpbWFnZSAobmFtZWx5LCBhbiBhcHBsaWNhdGlvbikuIFRoaXMgb25seQoJCW1ha2VzIHNlbnNlIHRvIHVzZSBpZiB5b3UncmUgdXNpbmcgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZTwvY29kZT4uCgkJVGhpcyBpbmNsdWRlcyBrZXJuZWwgbW9kdWxlcyBhbmQgdGhlIGtlcm5lbCB3aGVuIHVzaW5nCgkJPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT1rZXJuZWw8L2NvZGU+LgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj5saWItaW1hZ2UtZXhjbHVkZTo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5pbWFnZWxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJU2FtZSBhcyA8Y29kZSBjbGFzcz0ib3B0aW9uIj5saWItaW1hZ2U6PC9jb2RlPiwgYnV0IHRoZSBtYXRjaGluZyBpbWFnZXMKCQlhcmUgZXhjbHVkZWQuCgkJPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmV2ZW50OjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmV2ZW50bGlzdDwvZW0+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KCQlUaGUgc3ltYm9saWMgZXZlbnQgbmFtZSB0byBtYXRjaCBvbiwgZS5nLiA8Y29kZSBjbGFzcz0ib3B0aW9uIj5ldmVudDpEQVRBX01FTV9SRUZTPC9jb2RlPi4KCQlZb3UgY2FuIHBhc3MgYSBsaXN0IG9mIGV2ZW50cyBmb3Igc2lkZS1ieS1zaWRlIGNvbXBhcmlzb24gd2l0aCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4uCgkJV2hlbiB1c2luZyB0aGUgdGltZXIgaW50ZXJydXB0LCB0aGUgZXZlbnQgaXMgYWx3YXlzICJUSU1FUiIuCgkJPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPmNvdW50OjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmV2ZW50Y291bnRsaXN0PC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgoJCVRoZSBldmVudCBjb3VudCB0byBtYXRjaCBvbiwgZS5nLiA8Y29kZSBjbGFzcz0ib3B0aW9uIj5ldmVudDpEQVRBX01FTV9SRUZTIGNvdW50OjMwMDAwPC9jb2RlPi4KCQlOb3RlIHRoYXQgdGhpcyB2YWx1ZSByZWZlcnMgdG8gdGhlIHNldHRpbmcgdXNlZCBmb3IgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bjb250cm9sPC9zdHJvbmc+PC9zcGFuPgoJCW9ubHksIGFuZCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBzYW1wbGUgY291bnRzIGluIHRoZSBwcm9maWxlIGRhdGEKCQlpdHNlbGYuCgkJWW91IGNhbiBwYXNzIGEgbGlzdCBvZiBldmVudHMgZm9yIHNpZGUtYnktc2lkZSBjb21wYXJpc29uIHdpdGggPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+LgoJCVdoZW4gdXNpbmcgdGhlIHRpbWVyIGludGVycnVwdCwgdGhlIGNvdW50IGlzIGFsd2F5cyAwIChpbmRpY2F0aW5nIGl0IGNhbm5vdCBiZSBzZXQpLgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj51bml0LW1hc2s6PC9jb2RlPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+CiAgICAgICAgICAgICAgICAgICAgICA8ZW0+bWFza2xpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJVGhlIHVuaXQgbWFzayB2YWx1ZSBvZiB0aGUgZXZlbnQgdG8gbWF0Y2ggb24sIGUuZy4gPGNvZGUgY2xhc3M9Im9wdGlvbiI+dW5pdC1tYXNrOjE8L2NvZGU+LgoJCVlvdSBjYW4gcGFzcyBhIGxpc3Qgb2YgZXZlbnRzIGZvciBzaWRlLWJ5LXNpZGUgY29tcGFyaXNvbiB3aXRoIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+Y3B1OjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPmNwdWxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJT25seSBjb25zaWRlciBwcm9maWxlcyBmb3IgdGhlIGdpdmVuIG51bWJlcmVkIENQVSAoc3RhcnRpbmcgZnJvbSB6ZXJvKS4KCQlUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdXNpbmcgQ1BVIHByb2ZpbGUgc2VwYXJhdGlvbi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dGdpZDo8L2NvZGU+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj4KICAgICAgICAgICAgICAgICAgICAgIDxlbT5waWRsaXN0PC9lbT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgoJCU9ubHkgY29uc2lkZXIgcHJvZmlsZXMgZm9yIHRoZSBnaXZlbiB0YXNrIGdyb3Vwcy4gVW5sZXNzIHNvbWUgcHJvZ3JhbQoJCWlzIHVzaW5nIHRocmVhZHMsIHRoZSB0YXNrIGdyb3VwIElEIG9mIGEgcHJvY2VzcyBpcyB0aGUgc2FtZQoJCWFzIGl0cyBwcm9jZXNzIElELiBUaGlzIG9wdGlvbiBjb3JyZXNwb25kcyB0byB0aGUgUE9TSVgKCQlub3Rpb24gb2YgYSB0aHJlYWQgZ3JvdXAuCgkJVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHVzaW5nIHBlci1wcm9jZXNzIHByb2ZpbGUgc2VwYXJhdGlvbi4KCQk8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dGlkOjwvY29kZT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPgogICAgICAgICAgICAgICAgICAgICAgPGVtPnRpZGxpc3Q8L2VtPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CgkJT25seSBjb25zaWRlciBwcm9maWxlcyBmb3IgdGhlIGdpdmVuIHRocmVhZHMuIFdoZW4gdXNpbmcKCQlyZWNlbnQgdGhyZWFkIGxpYnJhcmllcywgYWxsIHRocmVhZHMgaW4gYSBwcm9jZXNzIHNoYXJlIHRoZQoJCXNhbWUgdGFzayBncm91cCBJRCwgYnV0IGhhdmUgZGlmZmVyZW50IHRocmVhZCBJRHMuIFlvdSBjYW4KCQl1c2UgdGhpcyBvcHRpb24gaW4gY29tYmluYXRpb24gd2l0aCA8Y29kZSBjbGFzcz0ib3B0aW9uIj50Z2lkOjwvY29kZT4gdG8KCQlyZXN0cmljdCB0aGUgcmVzdWx0cyB0byBwYXJ0aWN1bGFyIHRocmVhZHMgd2l0aGluIGEgcHJvY2Vzcy4KCQlUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdXNpbmcgcGVyLXByb2Nlc3MgcHJvZmlsZSBzZXBhcmF0aW9uLgoJCTwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9ImxvY2F0aW5nLWFuZC1tYW5hZ2luZy1iaW5hcnktaW1hZ2VzIj48L2E+MS4zLqBMb2NhdGluZyBhbmQgbWFuYWdpbmcgYmluYXJ5IGltYWdlczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpFYWNoIHNlc3Npb24ncyBzYW1wbGUgZmlsZXMgY2FuIGJlIGZvdW5kIGluIHRoZSAkU0VTU0lPTl9ESVIvc2FtcGxlcy8gZGlyZWN0b3J5IChkZWZhdWx0OiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi92YXIvbGliL29wcm9maWxlL3NhbXBsZXMvPC9jb2RlPikuClRoZXNlIGFyZSB1c2VkLCBhbG9uZyB3aXRoIHRoZSBiaW5hcnkgaW1hZ2UgZmlsZXMsIHRvIHByb2R1Y2UgaHVtYW4tcmVhZGFibGUgZGF0YS4KSW4gc29tZSBjaXJjdW1zdGFuY2VzIChrZXJuZWwgbW9kdWxlcyBpbiBhbiBpbml0cmQsIG9yIG1vZHVsZXMgb24gMi42IGtlcm5lbHMpLCBPUHJvZmlsZQp3aWxsIG5vdCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJpbmFyeSBpbWFnZXMuIEFsbCB0aGUgdG9vbHMgaGF2ZSBhbiA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWltYWdlLXBhdGg8L2NvZGU+Cm9wdGlvbiB0byB3aGljaCB5b3UgY2FuIHBhc3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhbHRlcm5hdGUgcGF0aHMgdG8gc2VhcmNoLiBGb3IgZXhhbXBsZSwKSSBjYW4gbGV0IE9Qcm9maWxlIGZpbmQgbXkgMi42IG1vZHVsZXMgYnkgdXNpbmcgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+LS1pbWFnZS1wYXRoIC9saWIvbW9kdWxlcy8yLjYuMC9rZXJuZWwvPC9zdHJvbmc+PC9zcGFuPi4KSXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY29ycmVjdCBpbWFnZXMgYXJlIGZvdW5kIHdoZW4gdXNpbmcgdGhpcwpvcHRpb24uCjwvcD4KICAgICAgICAgICAgPHA+Ck5vdGUgdGhhdCBpZiBhIGJpbmFyeSBpbWFnZSBjaGFuZ2VzIGFmdGVyIHRoZSBzYW1wbGUgZmlsZSB3YXMgY3JlYXRlZCwgeW91IHdvbid0IGJlIGFibGUgdG8gZ2V0IHVzZWZ1bApzeW1ib2wtYmFzZWQgZGF0YSBvdXQuIFRoaXMgc2l0dWF0aW9uIGlzIGRldGVjdGVkIGZvciB5b3UuIElmIHlvdSByZXBsYWNlIGEgYmluYXJ5LCB5b3Ugc2hvdWxkCm1ha2Ugc3VyZSB0byBzYXZlIHRoZSBvbGQgYmluYXJ5IGlmIHlvdSBuZWVkIHRvIGRvIGNvbXBhcmF0aXZlIHByb2ZpbGVzLgo8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+PGEgaWQ9Im5vLXJlc3VsdHMiPjwvYT4xLjQuoFdoYXQgdG8gZG8gd2hlbiB5b3UgZG9uJ3QgZ2V0IGFueSByZXN1bHRzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CldoZW4gYXR0ZW1wdGluZyB0byBnZXQgb3V0cHV0LCB5b3UgbWF5IHNlZSB0aGUgZXJyb3IgOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgplcnJvcjogbm8gc2FtcGxlIGZpbGVzIGZvdW5kOiBwcm9maWxlIHNwZWNpZmljYXRpb24gdG9vIHN0cmljdCA/CjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KV2hhdCB0aGlzIGlzIHNheWluZyBpcyB0aGF0IHRoZSBwcm9maWxlIHNwZWNpZmljYXRpb24geW91IHBhc3NlZCBpbiwKd2hlbiBtYXRjaGVkIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBzYW1wbGUgZmlsZXMsIHJlc3VsdGVkIGluIG5vIG1hdGNoZXMuClRoZXJlIGFyZSBhIG51bWJlciBvZiByZWFzb25zIHRoaXMgbWlnaHQgaGFwcGVuOgo8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+c3BlbGxpbmc8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KWW91IHNwZWNpZmllZCBhIGJpbmFyeSBuYW1lLCBidXQgc3BlbHQgaXQgd3JvbmdseS4gQ2hlY2sgeW91ciBzcGVsbGluZyAhCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5wcm9maWxlciB3YXNuJ3QgcnVubmluZzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpNYWtlIHZlcnkgc3VyZSB0aGF0IE9Qcm9maWxlIHdhcyBhY3R1YWxseSB1cCBhbmQgcnVubmluZyB3aGVuIHlvdSByYW4KdGhlIGJpbmFyeS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPmJpbmFyeSBkaWRuJ3QgcnVuIGxvbmcgZW5vdWdoPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClJlbWVtYmVyIE9Qcm9maWxlIGlzIGEgc3RhdGlzdGljYWwgcHJvZmlsZXIgLSB5b3UncmUgbm90IGd1YXJhbnRlZWQgdG8KZ2V0IHNhbXBsZXMgZm9yIHNob3J0LXJ1bm5pbmcgcHJvZ3JhbXMuIFlvdSBjYW4gaGVscCB0aGlzIGJ5IHVzaW5nIGEKbG93ZXIgY291bnQgZm9yIHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyLCBzbyB0aGVyZSBhcmUgYSBsb3QgbW9yZSBzYW1wbGVzCnRha2VuIHBlciBzZWNvbmQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj5iaW5hcnkgc3BlbnQgbW9zdCBvZiBpdHMgdGltZSBpbiBsaWJyYXJpZXM8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2ltaWxhcmx5LCBpZiB0aGUgYmluYXJ5IHNwZW5kcyBsaXR0bGUgdGltZSBpbiB0aGUgbWFpbiBiaW5hcnkgaW1hZ2UKaXRzZWxmLCB3aXRoIG1vc3Qgb2YgaXQgc3BlbnQgaW4gc2hhcmVkIGxpYnJhcmllcyBpdCB1c2VzLCB5b3UgbWlnaHQKbm90IHNlZSBhbnkgc2FtcGxlcyBmb3IgdGhlIGJpbmFyeSBpbWFnZSBpdHNlbGYuIFlvdSBjYW4gY2hlY2sgdGhpcwpieSB1c2luZyA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wgLS1zZXBhcmF0ZT1saWI8L3N0cm9uZz48L3NwYW4+IGJlZm9yZSB0aGUKcHJvZmlsaW5nIHNlc3Npb24sIHNvIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBhbmQgZnJpZW5kcyBzaG93CnRoZSBsaWJyYXJ5IHByb2ZpbGVzIG9uIGEgcGVyLWFwcGxpY2F0aW9uIGJhc2lzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+c3BlY2lmaWNhdGlvbiB3YXMgcmVhbGx5IHRvbyBzdHJpY3Q8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRm9yIGV4YW1wbGUsIHlvdSBzcGVjaWZpZWQgc29tZXRoaW5nIGxpa2UgPGNvZGUgY2xhc3M9Im9wdGlvbiI+dGdpZDozNDMzPC9jb2RlPiwKYnV0IG5vIHRhc2sgd2l0aCB0aGF0IGdyb3VwIElEIGV2ZXIgcmFuIHRoZSBjb2RlLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+YmluYXJ5IGRpZG4ndCBnZW5lcmF0ZSBhbnkgZXZlbnRzPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CklmIHlvdSdyZSB1c2luZyBhIHBhcnRpY3VsYXIgZXZlbnQgY291bnRlciwgZm9yIGV4YW1wbGUgY291bnRpbmcgTU1YCm9wZXJhdGlvbnMsIHRoZSBjb2RlIG1pZ2h0IHNpbXBseSBoYXZlIG5vdCBnZW5lcmF0ZWQgYW55IGV2ZW50cyBpbiB0aGUKZmlyc3QgcGxhY2UuIFZlcmlmeSB0aGUgY29kZSB5b3UncmUgcHJvZmlsaW5nIGRvZXMgd2hhdCB5b3UgZXhwZWN0IGl0CnRvLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+eW91IGRpZG4ndCBzcGVjaWZ5IGtlcm5lbCBtb2R1bGUgbmFtZSBjb3JyZWN0bHk8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KSWYgeW91J3JlIHVzaW5nIDIuNiBrZXJuZWxzLCBhbmQgdHJ5aW5nIHRvIGdldCByZXBvcnRzIGZvciBhIGtlcm5lbAptb2R1bGUsIG1ha2Ugc3VyZSB0byB1c2UgdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1wPC9jb2RlPiBvcHRpb24sIGFuZCBzcGVjaWZ5IHRoZQptb2R1bGUgbmFtZSA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT53aXRoPC9lbT48L3NwYW4+IHRoZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi5rbzwvY29kZT4KZXh0ZW5zaW9uLiBDaGVjayBpZiB0aGUgbW9kdWxlIGlzIG9uZSBsb2FkZWQgZnJvbSBpbml0cmQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvcHJlcG9ydCI+PC9hPjIuoEltYWdlIHN1bW1hcmllcyBhbmQgc3ltYm9sIHN1bW1hcmllcyAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+KTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhlIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiB1dGlsaXR5IGlzIHRoZSBwcmltYXJ5IHV0aWxpdHkgeW91IHdpbGwgdXNlIGZvciAKZ2V0dGluZyBmb3JtYXR0ZWQgZGF0YSBvdXQgb2YgT1Byb2ZpbGUuIEl0IHByb2R1Y2VzIHR3byB0eXBlcyBvZiBkYXRhOiBpbWFnZSBzdW1tYXJpZXMKYW5kIHN5bWJvbCBzdW1tYXJpZXMuIEFuIGltYWdlIHN1bW1hcnkgbGlzdHMgdGhlIG51bWJlciBvZiBzYW1wbGVzIGZvciBpbmRpdmlkdWFsCmJpbmFyeSBpbWFnZXMgc3VjaCBhcyBsaWJyYXJpZXMgb3IgYXBwbGljYXRpb25zLiBTeW1ib2wgc3VtbWFyaWVzIHByb3ZpZGUgcGVyLXN5bWJvbApwcm9maWxlIGRhdGEuIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgd2UncmUgZ2V0dGluZyBhbiBpbWFnZSBzdW1tYXJ5IGZvciB0aGUgd2hvbGUKc3lzdGVtOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcHJlcG9ydCAtLWxvbmctZmlsZW5hbWVzCkNQVTogUElJSSwgc3BlZWQgODYzLjE5NSBNSHogKGVzdGltYXRlZCkKQ291bnRlZCBDUFVfQ0xLX1VOSEFMVEVEIGV2ZW50cyAoY2xvY2tzIHByb2Nlc3NvciBpcyBub3QgaGFsdGVkKSB3aXRoIGEgdW5pdCBtYXNrIG9mIDB4MDAgKE5vIHVuaXQgbWFzaykgY291bnQgMjMxNTAKICAgOTA1ODk4IDU5Ljc0MTUgL3Vzci9saWIvZ2NjLWxpYi9pMzg2LXJlZGhhdC1saW51eC8zLjIvY2MxcGx1cwogICAyMTQzMjAgMTQuMTMzOCAvYm9vdC8yLjYuMC92bWxpbnV4CiAgIDEwMzQ1MCAgNi44MjIyIC9saWIvaTY4Ni9saWJjLTIuMy4yLnNvCiAgICA2MDE2MCAgMy45Njc0IC91c3IvbG9jYWwvYmluL21hZHBsYXkKICAgIDMxNzY5ICAyLjA5NTEgL3Vzci9sb2NhbC9vcHJvZmlsZS1wcC9iaW4vb3Byb2ZpbGVkCiAgICAyNjU1MCAgMS43NTA5IC91c3IvbGliL2xpYmFydHNmbG93LnNvLjEuMC4wCiAgICAyMzkwNiAgMS41NzY1IC91c3IvYmluL2FzCiAgICAxODc3MCAgMS4yMzc4IC9vcHJvZmlsZQogICAgMTU1MjggIDEuMDI0MCAvdXNyL2xpYi9xdC0zLjAuNS9saWIvbGlicXQtbXQuc28uMy4wLjUKICAgIDExOTc5ICAwLjc5MDAgL3Vzci9YMTFSNi9iaW4vWEZyZWU4NgogICAgMTEzMjggIDAuNzQ3MSAvYmluL2Jhc2gKICAgIC4uLgo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpJZiB3ZSBoYWQgc3BlY2lmaWVkIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc3ltYm9sczwvY29kZT4gaW4gdGhlIHByZXZpb3VzIGNvbW1hbmQsIHdlIHdvdWxkIGhhdmUKZ290dGVuIGEgc3ltYm9sIHN1bW1hcnkgb2YgYWxsIHRoZSBpbWFnZXMgYWNyb3NzIHRoZSBlbnRpcmUgc3lzdGVtLiBXZSBjYW4gcmVzdHJpY3QgdGhpcyB0byBvbmx5CnBhcnQgb2YgdGhlIHN5c3RlbSBwcm9maWxlOyBmb3IgZXhhbXBsZSwKYmVsb3cgaXMgYSBzeW1ib2wgc3VtbWFyeSBvZiB0aGUgT1Byb2ZpbGUgZGFlbW9uLiBOb3RlIHRoYXQgYXMgd2UgdXNlZAo8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGNvbnRyb2wgLS1zZXBhcmF0ZT1rZXJuZWw8L3N0cm9uZz48L3NwYW4+LCBzeW1ib2xzIGZyb20gaW1hZ2VzIHRoYXQgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Byb2ZpbGVkPC9zdHJvbmc+PC9zcGFuPgpoYXMgdXNlZCBhcmUgYWxzbyBzaG93bi4KPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3ByZXBvcnQgLWwgYHdoaWNoIG9wcm9maWxlZGAgMiZndDsvZGV2L251bGwgfCBtb3JlCkNQVTogUElJSSwgc3BlZWQgODYzLjE5NSBNSHogKGVzdGltYXRlZCkKQ291bnRlZCBDUFVfQ0xLX1VOSEFMVEVEIGV2ZW50cyAoY2xvY2tzIHByb2Nlc3NvciBpcyBub3QgaGFsdGVkKSB3aXRoIGEgdW5pdCBtYXNrIG9mIDB4MDAgKE5vIHVuaXQgbWFzaykgY291bnQgMjMxNTAKdm1hICAgICAgc2FtcGxlcyAgJSAgICAgICAgICAgaW1hZ2UgbmFtZSAgICAgICAgICAgICAgIHN5bWJvbCBuYW1lCjA4MDRiZTEwIDE0OTcxICAgIDI4LjE5OTMgICAgIG9wcm9maWxlZCAgICAgICAgICAgICAgICBvZGJfaW5zZXJ0CjA4MDRhZmRjIDcxNDQgICAgIDEzLjQ1NjQgICAgIG9wcm9maWxlZCAgICAgICAgICAgICAgICBwb3BfYnVmZmVyX3ZhbHVlCmMwMWRhZWEwIDYxMTMgICAgIDExLjUxNDQgICAgIHZtbGludXggICAgICAgICAgICAgICAgICBfX2NvcHlfdG9fdXNlcl9sbAowODA0YjA2MCAyODE2ICAgICAgNS4zMDQyICAgICBvcHJvZmlsZWQgICAgICAgICAgICAgICAgb3BkX3B1dF9zYW1wbGUKMDgwNGI0YTAgMjE0NyAgICAgIDQuMDQ0MSAgICAgb3Byb2ZpbGVkICAgICAgICAgICAgICAgIG9wZF9wcm9jZXNzX3NhbXBsZXMKMDgwNGFjZjQgMTg1NSAgICAgIDMuNDk0MSAgICAgb3Byb2ZpbGVkICAgICAgICAgICAgICAgIG9wZF9wdXRfaW1hZ2Vfc2FtcGxlCjA4MDRhZDg0IDE3NjYgICAgICAzLjMyNjQgICAgIG9wcm9maWxlZCAgICAgICAgICAgICAgICBvcGRfZmluZF9pbWFnZQowODA0YTVlYyAxMDg0ICAgICAgMi4wNDE4ICAgICBvcHJvZmlsZWQgICAgICAgICAgICAgICAgb3BkX2ZpbmRfbW9kdWxlCjA4MDRiYTVjIDc0MSAgICAgICAxLjM5NTcgICAgIG9wcm9maWxlZCAgICAgICAgICAgICAgICBvZGJfaGFzaF9hZGRfbm9kZQouLi4KPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KVGhlc2UgYXJlIHRoZSB0d28gYmFzaWMgd2F5cyB5b3UgYXJlIG1vc3QgbGlrZWx5IHRvIHVzZSByZWd1bGFybHksIGJ1dCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4KY2FuIGRvIGEgbG90IG1vcmUgdGhhbiB0aGF0LCBhcyBkZXNjcmliZWQgYmVsb3cuCjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3ByZXBvcnQtbWVyZ2luZyI+PC9hPjIuMS6gTWVyZ2luZyBzZXBhcmF0ZSBwcm9maWxlczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CgpJZiB5b3UgaGF2ZSB1c2VkIG9uZSBvZiB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT08L2NvZGU+IG9wdGlvbnMKd2hpbHN0IHByb2ZpbGluZywgdGhlcmUgY2FuIGJlIHNldmVyYWwgc2VwYXJhdGUgcHJvZmlsZXMgZm9yCmEgc2luZ2xlIGJpbmFyeSBpbWFnZSB3aXRoaW4gYSBzZXNzaW9uLiBOb3JtYWxseSB0aGUgb3V0cHV0CndpbGwga2VlcCB0aGVzZSBpbWFnZXMgc2VwYXJhdGVkIChzbywgZm9yIGV4YW1wbGUsIHRoZSBpbWFnZSBzdW1tYXJ5Cm91dHB1dCBzaG93cyBsaWJyYXJ5IGltYWdlIHN1bW1hcmllcyBvbiBhIHBlci1hcHBsaWNhdGlvbiBiYXNpcywKd2hlbiB1c2luZyA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlcGFyYXRlPWxpYjwvY29kZT4pLgpTb21ldGltZXMgaXQgY2FuIGJlIHVzZWZ1bCB0byBtZXJnZSB0aGVzZSByZXN1bHRzIGJhY2sgdG9nZXRoZXIKYmVmb3JlIGdldHRpbmcgcmVzdWx0cy4gVGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbWVyZ2U8L2NvZGU+IG9wdGlvbiBhbGxvd3MKeW91IHRvIGRvIHRoYXQuCjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcHJlcG9ydC1jb21wYXJpc29uIj48L2E+Mi4yLqBTaWRlLWJ5LXNpZGUgbXVsdGlwbGUgcmVzdWx0czwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CklmIHlvdSBoYXZlIHVzZWQgbXVsdGlwbGUgZXZlbnRzIHdoZW4gcHJvZmlsaW5nLCBieSBkZWZhdWx0IHlvdSBnZXQKc2lkZS1ieS1zaWRlIHJlc3VsdHMgb2YgZWFjaCBldmVudCdzIHNhbXBsZSB2YWx1ZXMgZnJvbSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4uCllvdSBjYW4gcmVzdHJpY3Qgd2hpY2ggZXZlbnRzIHRvIGxpc3QgYnkgYXBwcm9wcmlhdGUgdXNlIG9mIHRoZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj5ldmVudDo8L2NvZGU+IHByb2ZpbGUgc3BlY2lmaWNhdGlvbnMsIGV0Yy4KPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcHJlcG9ydC1jYWxsZ3JhcGgiPjwvYT4yLjMuoENhbGxncmFwaCBvdXRwdXQ8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGRldGFpbHMgb24gaG93IHRvIHVzZSB0aGUgT1Byb2ZpbGUgY2FsbGdyYXBoIGZlYXR1cmUuCjwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcC1jZzEiPjwvYT4yLjMuMS6gQ2FsbGdyYXBoIGRldGFpbHM8L2g0PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxwPgpXaGVuIHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj5vcGNvbnRyb2wgLS1jYWxsZ3JhcGg8L2NvZGU+IG9wdGlvbiwgeW91IGNhbiBzZWUgd2hhdApmdW5jdGlvbnMgYXJlIGNhbGxpbmcgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBvdXRwdXQuIENvbnNpZGVyIHRoZQpmb2xsb3dpbmcgcHJvZ3JhbToKPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgojaW5jbHVkZSAmbHQ7c3RyaW5nLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKI2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CgojZGVmaW5lIFNJWkUgNTAwMDAwCgpzdGF0aWMgaW50IGNvbXBhcmUoY29uc3Qgdm9pZCAqczEsIGNvbnN0IHZvaWQgKnMyKQp7CiAgICAgICAgcmV0dXJuIHN0cmNtcChzMSwgczIpOwp9CgpzdGF0aWMgdm9pZCByZXBlYXQodm9pZCkKewogICAgICAgIGludCBpOwogICAgICAgIGNoYXIgKnN0cmluZ3NbU0laRV07CiAgICAgICAgY2hhciBzdHJbXSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CgogICAgICAgIGZvciAoaSA9IDA7IGkgJmx0OyBTSVpFOyArK2kpIHsKICAgICAgICAgICAgICAgIHN0cmluZ3NbaV0gPSBzdHJkdXAoc3RyKTsKICAgICAgICAgICAgICAgIHN0cmZyeShzdHJpbmdzW2ldKTsKICAgICAgICB9CgogICAgICAgIHFzb3J0KHN0cmluZ3MsIFNJWkUsIHNpemVvZihjaGFyICopLCBjb21wYXJlKTsKfQoKaW50IG1haW4oKQp7CiAgICAgICAgd2hpbGUgKDEpCiAgICAgICAgICAgICAgICByZXBlYXQoKTsKfQo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICA8cD4KV2hlbiBydW5uaW5nIHdpdGggdGhlIGNhbGwtZ3JhcGggb3B0aW9uLCBPUHJvZmlsZSB3aWxsCnJlY29yZCB0aGUgZnVuY3Rpb24gc3RhY2sgZXZlcnkgdGltZSBpdCB0YWtlcyBhIHNhbXBsZS4KPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQgLS1jYWxsZ3JhcGg8L3N0cm9uZz48L3NwYW4+IG91dHB1dHMgYW4gZW50cnkgZm9yIGVhY2gKZnVuY3Rpb24sIHdoZXJlIGVhY2ggZW50cnkgbG9va3Mgc2ltaWxhciB0bzoKPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgpzYW1wbGVzICAlICAgICAgICBpbWFnZSBuYW1lICAgICAgICAgICAgICAgc3ltYm9sIG5hbWUKICAxOTcgICAgICAgMC4xNTQ4ICBjZyAgICAgICAgICAgICAgICAgICAgICAgbWFpbgogIDEyNzAzNiAgIDk5Ljg0NTIgIGNnICAgICAgICAgICAgICAgICAgICAgICByZXBlYXQKODQ1OTAgICAgNDIuNTA4NCAgbGliYy0yLjMuMi5zbyAgICAgICAgICAgIHN0cmZyeQogIDg0NTkwICAgIDY2LjQ4MzggIGxpYmMtMi4zLjIuc28gICAgICAgICAgICBzdHJmcnkgW3NlbGZdCiAgMzkxNjkgICAgMzAuNzg1MCAgbGliYy0yLjMuMi5zbyAgICAgICAgICAgIHJhbmRvbV9yCiAgMzQ3NSAgICAgIDIuNzMxMiAgbGliYy0yLjMuMi5zbyAgICAgICAgICAgIF9faTY4Ni5nZXRfcGNfdGh1bmsuYngKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo8L3ByZT4KICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICA8cD4KSGVyZSB0aGUgbm9uLWluZGVudGVkIGxpbmUgaXMgdGhlIGZ1bmN0aW9uIHdlJ3JlIGZvY3Vzc2luZyB1cG9uCig8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnN0cmZyeSgpPC9jb2RlPikuIFRoaXMKbGluZSBpcyB0aGUgc2FtZSBhcyB5b3UnZCBnZXQgZnJvbSBhIG5vcm1hbCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4Kb3V0cHV0Lgo8L3A+CiAgICAgICAgICAgICAgPHA+CkFib3ZlIHRoZSBub24taW5kZW50ZWQgbGluZSB3ZSBmaW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsZWQgdGhpcwpmdW5jdGlvbiAoZm9yIGV4YW1wbGUsIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+cmVwZWF0KCk8L2NvZGU+IGNhbGxzCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RyZnJ5KCk8L2NvZGU+KS4gVGhlIHNhbXBsZXMgYW5kIHBlcmNlbnRhZ2UgdmFsdWVzIGhlcmUKcmVmZXIgdG8gdGhlIG51bWJlciBvZiB0aW1lcyB3ZSB0b29rIGEgc2FtcGxlIHdoZXJlIHRoaXMgY2FsbCB3YXMgZm91bmQKaW4gdGhlIHN0YWNrOyB0aGUgcGVyY2VudGFnZSBpcyByZWxhdGl2ZSB0byBhbGwgb3RoZXIgY2FsbGVycyBvZiB0aGUKZnVuY3Rpb24gd2UncmUgZm9jdXNzaW5nIG9uLiBOb3RlIHRoYXQgdGhlc2UgdmFsdWVzIGFyZQo8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5ub3Q8L2VtPjwvc3Bhbj4gY2FsbCBjb3VudHM7IHRoZXkgb25seSByZWZsZWN0IHRoZSBjYWxsIHN0YWNrCmV2ZXJ5IHRpbWUgYSBzYW1wbGUgaXMgdGFrZW47IHRoYXQgaXMsIGlmIGEgY2FsbCBpcyBmb3VuZCBpbiB0aGUgc3RhY2sKYXQgdGhlIHRpbWUgb2YgYSBzYW1wbGUsIGl0IGlzIHJlY29yZGVkIGluIHRoaXMgY291bnQuCjwvcD4KICAgICAgICAgICAgICA8cD4KQmVsb3cgdGhlIGxpbmUgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgYnkKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdHJmcnkoKTwvY29kZT4gKGNhbGxlZCA8c3BhbiBjbGFzcz0iZW1waGFzaXMiPjxlbT5jYWxsZWVzPC9lbT48L3NwYW4+KS4KSXQncyBjbGVhciBoZXJlIHRoYXQgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdHJmcnkoKTwvY29kZT4gY2FsbHMKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5yYW5kb21fcigpPC9jb2RlPi4gV2UgYWxzbyBzZWUgYSBzcGVjaWFsIGVudHJ5IHdpdGggYQoiW3NlbGZdIiBtYXJrZXIuIFRoaXMgcmVjb3JkcyB0aGUgbm9ybWFsIHNhbXBsZXMgZm9yIHRoZSBmdW5jdGlvbiwgYnV0CnRoZSBwZXJjZW50YWdlIGJlY29tZXMgcmVsYXRpdmUgdG8gYWxsIGNhbGxlZXMuIFRoaXMgYWxsb3dzIHlvdSB0bwpjb21wYXJlIHRpbWUgc3BlbnQgaW4gdGhlIGZ1bmN0aW9uIGl0c2VsZiBjb21wYXJlZCB0byBmdW5jdGlvbnMgaXQKY2FsbHMuIE5vdGUgdGhhdCBpZiBhIGZ1bmN0aW9uIGNhbGxzIGl0c2VsZiwgdGhlbiBpdCB3aWxsIGFwcGVhciBpbiB0aGUKbGlzdCBvZiBjYWxsZWVzIG9mIGl0c2VsZiwgYnV0IHdpdGhvdXQgdGhlICJbc2VsZl0iIG1hcmtlcjsgc28gcmVjdXJzaXZlCmNhbGxzIGFyZSBzdGlsbCBjbGVhcmx5IHNlcGFyYWJsZS4KPC9wPgogICAgICAgICAgICAgIDxwPgpZb3UgbWF5IGhhdmUgbm90aWNlZCB0aGF0IHRoZSBvdXRwdXQgbGlzdHMgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5tYWluKCk8L2NvZGU+CmFzIGNhbGxpbmcgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdHJmcnkoKTwvY29kZT4sIGJ1dCBpdCdzIGNsZWFyIGZyb20gdGhlIHNvdXJjZQp0aGF0IHRoaXMgZG9lc24ndCBhY3R1YWxseSBoYXBwZW4uIFNlZSA8YSBocmVmPSIjaW50ZXJwcmV0aW5nLWNhbGxncmFwaCIgdGl0bGU9IjMuoEludGVycHJldGluZyBjYWxsLWdyYXBoIHByb2ZpbGVzIj5TZWN0aW9uoDMsICYjODIyMDtJbnRlcnByZXRpbmcgY2FsbC1ncmFwaCBwcm9maWxlcyYjODIyMTs8L2E+IGZvciBhbiBleHBsYW5hdGlvbi4KPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDMiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGl0bGUiPjxhIGlkPSJjZy13aXRoLWppdHN1cHBvcnQiPjwvYT4yLjMuMi6gQ2FsbGdyYXBoIGFuZCBKSVQgc3VwcG9ydDwvaDQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPHA+CkNhbGxncmFwaCBvdXRwdXQgd2hlcmUgYW5vbnltb3VzbHkgbWFwcGVkIGNvZGUgaXMgaW4gdGhlIGNhbGxzdGFjayBjYW4gc29tZXRpbWVzIGJlIG1pc2xlYWRpbmcuCkZvciBhbGwgc3VjaCBjb2RlLCB0aGUgc2FtcGxlcyBmb3IgdGhlIGFub255bW91c2x5IG1hcHBlZCBjb2RlIGFyZSBzdG9yZWQgaW4gYSBzYW1wbGVzIHN1YmRpcmVjdG9yeQpuYW1lZCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPnthbm9uOmFub259LyZsdDt0Z2lkJmd0Oy4mbHQ7YmVnaW5fYWRkciZndDsuJmx0O2VuZF9hZGRyJmd0OzwvY29kZT4uCkFzIHN0YXRlZCBlYXJsaWVyLCBpZiB0aGlzIGFub255bW91c2x5IG1hcHBlZCBjb2RlIGlzIEpJVGVkIGNvZGUgZnJvbSBhIHN1cHBvcnRlZCBWTSBsaWtlIEphdmEsCk9Qcm9maWxlIGNyZWF0ZXMgYW4gRUxGIGZpbGUgdG8gcHJvdmlkZSBhIChzb21ld2hhdCkgcGVybWFuZW50IGJhY2tpbmcgZmlsZSBmb3IgdGhlIGNvZGUuCkhvd2V2ZXIsIHdoZW4gdmlld2luZyBjYWxsZ3JhcGggb3V0cHV0LCBhbnkgYW5vbnltb3VzbHkgbWFwcGVkIGNvZGUgaW4gdGhlIGNhbGxzdGFjawp3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hbm9uICgmbHQ7dGdpZCZndDs6IHJhbmdlOiZsdDtiZWdpbl9hZGRyJmd0Oy0mbHQ7ZW5kX2FkZHImZ3Q7PC9jb2RlPiwKZXZlbiBpZiBhIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+LmpvPC9jb2RlPiBFTEYgZmlsZSBoYWQgYmVlbiBjcmVhdGVkIGZvciBpdC4gIFNlZSB0aGUgZXhhbXBsZSBiZWxvdy4KPC9wPgogICAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSAgICAgICAgIDIuMjcyNyAgbGliajl1dGUyMy5zbyAgICAgICAgICAgIGphdmEuYmluICAgICAgICAgICAgICAgICB0cmFjZVYKICAyICAgICAgICAgNC41NDU1ICBsaWJqOXV0ZTIzLnNvICAgICAgICAgICAgamF2YS5iaW4gICAgICAgICAgICAgICAgIHV0c1RyYWNlVgogIDQgICAgICAgICA5LjA5MDkgIGxpYmo5dHJjMjMuc28gICAgICAgICAgICBqYXZhLmJpbiAgICAgICAgICAgICAgICAgZmlsbEluVVRJbnRlcmZhY2VzCiAgMzcgICAgICAgODQuMDkwOSAgbGliajl0cmMyMy5zbyAgICAgICAgICAgIGphdmEuYmluICAgICAgICAgICAgICAgICB0d0dldFNlcXVlbmNlQ291bnRlcgo4ICAgICAgICAgMC4wMTU0ICBsaWJqOXBydDIzLnNvICAgICAgICAgICAgamF2YS5iaW4gICAgICAgICAgICAgICAgIGo5dGltZV9oaXJlc19jbG9jawogIDI3ICAgICAgIDYxLjM2MzYgIGFub24gKHRnaWQ6MTAwMTQgcmFuZ2U6MHgxMDAwMDAtMHgxMDMwMDApIGphdmEuYmluICAgICAgICAgICAgICAgICAobm8gc3ltYm9scykKICA5ICAgICAgICAyMC40NTQ1ICBsaWJjLTIuNC5zbyAgICAgICAgICAgICAgamF2YS5iaW4gICAgICAgICAgICAgICAgIGdldHRpbWVvZmRheQogIDggICAgICAgIDE4LjE4MTggIGxpYmo5cHJ0MjMuc28gICAgICAgICAgICBqYXZhLmJpbiAgICAgICAgICAgICAgICAgajl0aW1lX2hpcmVzX2Nsb2NrIFtzZWxmXQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjwvcHJlPgogICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgIDxwPgpUaGUgb3V0cHV0IHNob3dzIHRoYXQgImFub24gKHRnaWQ6MTAwMTQgcmFuZ2U6MHgxMDAwMDAtMHgxMDMwMDApIiB3YXMgYSBjYWxsZWUgb2YKPGNvZGUgY2xhc3M9ImNvZGUiPmo5dGltZV9oaXJlc19jbG9jazwvY29kZT4sIGV2ZW4gdGhvdWdoIHRoZSBFTEYgZmlsZSA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPjEwMDE0LmpvPC9jb2RlPiB3YXMKY3JlYXRlZCBmb3IgdGhpcyBwcm9maWxlIHJ1bi4gIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gY29ycmVsYXRlCnRoYXQgYW5vbnltb3VzIGNhbGxncmFwaCBlbnRyeSB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+LmpvPC9jb2RlPiBmaWxlLgo8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcHJlcG9ydC1kaWZmIj48L2E+Mi40LqBEaWZmZXJlbnRpYWwgcHJvZmlsZXMgd2l0aCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT2Z0ZW4sIHdlJ2QgbGlrZSB0byBiZSBhYmxlIHRvIGNvbXBhcmUgdHdvIHByb2ZpbGVzLiBGb3IgZXhhbXBsZSwgd2hlbgphbmFseXNpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIGFuIGFwcGxpY2F0aW9uLCB3ZSdkIGxpa2UgdG8gbWFrZSBjb2RlCmNoYW5nZXMgYW5kIGV4YW1pbmUgdGhlIGVmZmVjdCBvZiB0aGUgY2hhbmdlLiBUaGlzIGlzIHN1cHBvcnRlZCBpbgo8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gYnkgZ2l2aW5nIGEgcHJvZmlsZSBzcGVjaWZpY2F0aW9uIHRoYXQKaWRlbnRpZmllcyB0d28gZGlmZmVyZW50IHByb2ZpbGVzLiBUaGUgZ2VuZXJhbCBmb3JtIGlzIG9mOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIG9wcmVwb3J0ICZsdDtzaGFyZWQtc3BlYyZndDsgeyAmbHQ7Zmlyc3QtcHJvZmlsZSZndDsgfSB7ICZsdDtzZWNvbmQtcHJvZmlsZSZndDsgfQo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibm90ZSIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwLjVpbjsgbWFyZ2luLXJpZ2h0OiAwLjVpbjsiPgogICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPk5vdGU8L2gzPgogICAgICAgICAgICAgIDxwPgpXZSBsb3N0IG91ciBEcmFnb24gYm9vayBkb3duIHRoZSBiYWNrIG9mIHRoZSBzb2ZhLCBzbyB5b3UgaGF2ZSB0byBiZQpjYXJlZnVsIHRvIGhhdmUgc3BhY2VzIGFyb3VuZCB0aG9zZSBicmFjZXMsIG9yIHRoaW5ncyB3aWxsIGdldApob3BlbGVzc2x5IGNvbmZ1c2VkLiBXZSBjYW4gb25seSBhcG9sb2dpc2UuCjwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpGb3IgZWFjaCBvZiB0aGUgcHJvZmlsZXMsIHRoZSBzaGFyZWQgc2VjdGlvbiBpcyBwcmVmaXhlZCwgYW5kIHRoZW4gdGhlCnNwZWNpZmljYXRpb24gaXMgYW5hbHlzZWQuIFRoZSB1c3VhbCBwYXJhbWV0ZXJzIHdvcmsgYm90aCB3aXRoaW4gdGhlCnNoYXJlZCBzZWN0aW9uLCBhbmQgaW4gdGhlIHN1Yi1zcGVjaWZpY2F0aW9uIHdpdGhpbiB0aGUgY3VybHkgYnJhY2VzLgo8L3A+CiAgICAgICAgICAgIDxwPgpBIHR5cGljYWwgd2F5IHRvIHVzZSB0aGlzIGZlYXR1cmUgaXMgd2l0aCBhcmNoaXZlcyBjcmVhdGVkIHdpdGgKPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPi4gTGV0J3MgbG9vayBhdCBhbiBleGFtcGxlOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIC4vYQokIG9wYXJjaGl2ZSAtbyBvcmlnIC4vYQokIG9wY29udHJvbCAtLXJlc2V0CiAgIyBlZGl0IGFuZCByZWNvbXBpbGUgYQokIC4vYQogICMgbm93IGNvbXBhcmUgdGhlIGN1cnJlbnQgcHJvZmlsZSBvZiBhIHdpdGggdGhlIGFyY2hpdmVkIHByb2ZpbGUKJCBvcHJlcG9ydCAteGwgLi9hIHsgYXJjaGl2ZTouL29yaWcgfSB7IH0KQ1BVOiBQSUlJLCBzcGVlZCA4NjMuMjMzIE1IeiAoZXN0aW1hdGVkKQpDb3VudGVkIENQVV9DTEtfVU5IQUxURUQgZXZlbnRzIChjbG9ja3MgcHJvY2Vzc29yIGlzIG5vdCBoYWx0ZWQpIHdpdGggYQp1bml0IG1hc2sgb2YgMHgwMCAoTm8gdW5pdCBtYXNrKSBjb3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgZGlmZiAlICAgIHN5bWJvbCBuYW1lCjkyNDM1ICAgIDQ4LjUzNjYgICswLjQ5OTkgICBhCjU0MjI2ICAgIC0tLSAgICAgIC0tLSAgICAgICBjCjQ5MjIyICAgIDI1Ljg0NTkgICsrKyAgICAgICBkCjQ4Nzg3ICAgIDI1LjYxNzUgIC0yLjJlLTAxICBiCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KTm90ZSB0aGF0IHdlIHNwZWNpZmllZCBhbiBlbXB0eSBzZWNvbmQgcHJvZmlsZSBpbiB0aGUgY3VybHkgYnJhY2VzLCBhcwp3ZSB3YW50ZWQgdG8gdXNlIHRoZSBjdXJyZW50IHNlc3Npb247IGFsdGVybmF0aXZlbHksIHdlIGNvdWxkCmhhdmUgc3BlY2lmaWVkIGFub3RoZXIgYXJjaGl2ZSwgb3IgYSB0Z2lkIGV0Yy4gV2Ugc3BlY2lmaWVkIHRoZSBiaW5hcnkKPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+YTwvc3Ryb25nPjwvc3Bhbj4gaW4gdGhlIHNoYXJlZCBzZWN0aW9uLCBzbyB3ZSBtYXRjaGVkIHRoYXQgaW4gYm90aAp0aGUgcHJvZmlsZXMgd2UncmUgZGlmZmluZy4KPC9wPgogICAgICAgICAgICA8cD4KQXMgaW4gdGhlIG5vcm1hbCBvdXRwdXQsIHRoZSByZXN1bHRzIGFyZSBzb3J0ZWQgYnkgdGhlIG51bWJlciBvZgpzYW1wbGVzLCBhbmQgdGhlIHBlcmNlbnRhZ2UgZmllbGQgcmVwcmVzZW50cyB0aGUgcmVsYXRpdmUgcGVyY2VudGFnZSBvZgp0aGUgc3ltYm9sJ3Mgc2FtcGxlcyBpbiB0aGUgc2Vjb25kIHByb2ZpbGUuCjwvcD4KICAgICAgICAgICAgPHA+Ck5vdGljZSB0aGUgbmV3IGNvbHVtbiBpbiB0aGUgb3V0cHV0LiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlCnBlcmNlbnRhZ2UgY2hhbmdlIG9mIHRoZSByZWxhdGl2ZSBwZXJjZW50IGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUKc2Vjb25kIHByb2ZpbGU6IHJvdWdobHksICJob3cgbXVjaCBtb3JlIGltcG9ydGFudCB0aGlzIHN5bWJvbCBpcyIuCkxvb2tpbmcgYXQgdGhlIHN5bWJvbCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmEoKTwvY29kZT4sIHdlIGNhbiBzZWUgdGhhdCBpdCB0b29rCnJvdWdobHkgdGhlIHNhbWUgYW1vdW50IG9mIHRoZSB0b3RhbCBwcm9maWxlIGluIGJvdGggdGhlIGZpcnN0IGFuZCB0aGUKc2Vjb25kIHByb2ZpbGUuIFRoZSBmdW5jdGlvbiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmMoKTwvY29kZT4gd2FzIG5vdCBpbiB0aGUgbmV3CnByb2ZpbGUsIHNvIGhhcyBiZWVuIG1hcmtlZCB3aXRoIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+LS0tPC9jb2RlPi4gTm90ZSB0aGF0IHRoZQpzYW1wbGUgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBzYW1wbGVzIGluIHRoZSBmaXJzdCBwcm9maWxlOyBzaW5jZSB3ZSdyZQpkaXNwbGF5aW5nIHJlc3VsdHMgZm9yIHRoZSBzZWNvbmQgcHJvZmlsZSwgd2UgZG9uJ3QgbGlzdCBhIHBlcmNlbnRhZ2UKdmFsdWUgZm9yIGl0LCBhcyBpdCB3b3VsZCBiZSBtZWFuaW5nbGVzcy4gPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5kKCk8L2NvZGU+IGlzCm5ldyBpbiB0aGUgc2Vjb25kIHByb2ZpbGUsIGFuZCBjb25zZXF1ZW50bHkgbWFya2VkIHdpdGgKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj4rKys8L2NvZGU+Lgo8L3A+CiAgICAgICAgICAgIDxwPgpXaGVuIGNvbXBhcmluZyBwcm9maWxlcyBiZXR3ZWVuIGRpZmZlcmVudCBiaW5hcmllcywgaXQgc2hvdWxkIGJlIGNsZWFyCnRoYXQgZnVuY3Rpb25zIGNhbiBjaGFuZ2UgaW4gdGVybXMgb2YgVk1BIGFuZCBzaXplLiBUbyBhdm9pZCB0aGlzCnByb2JsZW0sIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBjb25zaWRlcnMgYSBzeW1ib2wgdG8gYmUgdGhlIHNhbWUKaWYgdGhlIHN5bWJvbCBuYW1lLCBpbWFnZSBuYW1lLCBhbmQgb3duaW5nIGFwcGxpY2F0aW9uIG5hbWUgYWxsIG1hdGNoOwphbnkgb3RoZXIgZmFjdG9ycyBhcmUgaWdub3JlZC4gTm90ZSB0aGF0IHRoZSBjaGVjayBmb3IgYXBwbGljYXRpb24gbmFtZQptZWFucyB0aGF0IHRyeWluZyB0byBjb21wYXJlIGxpYnJhcnkgcHJvZmlsZXMgYmV0d2VlbiB0d28gZGlmZmVyZW50CmFwcGxpY2F0aW9ucyB3aWxsIG5vdCB3b3JrIGFzIHlvdSBtaWdodCBleHBlY3Q6IGVhY2ggc3ltYm9sIHdpbGwgYmUKY29uc2lkZXJlZCBkaWZmZXJlbnQuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3ByZXBvcnQtYW5vbiI+PC9hPjIuNS6gQW5vbnltb3VzIGV4ZWN1dGFibGUgbWFwcGluZ3M8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KTWFueSBhcHBsaWNhdGlvbnMsIHR5cGljYWxseSBvbmVzIGludm9sdmluZyBkeW5hbWljIGNvbXBpbGF0aW9uIGludG8KbWFjaGluZSBjb2RlIChqdXN0LWluLXRpbWUsIG9yICJKSVQiLCBjb21waWxhdGlvbiksIGhhdmUgZXhlY3V0YWJsZSBtYXBwaW5ncyB0aGF0CmFyZSBub3QgYmFja2VkIGJ5IGFuIEVMRiBmaWxlLiA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcHJlcG9ydDwvc3Ryb25nPjwvc3Bhbj4gaGFzIGJhc2ljIHN1cHBvcnQgZm9yIHNob3dpbmcgdGhlCnNhbXBsZXMgdGFrZW4gaW4gdGhlc2UgcmVnaW9uczsgZm9yIGV4YW1wbGU6CjwvcD4KICAgICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3ByZXBvcnQgL3Vzci9iaW4vbW9ubyAtbApDUFU6IHBwYzY0IFBPV0VSNSwgc3BlZWQgMTY1NC4zNCBNSHogKGVzdGltYXRlZCkKQ291bnRlZCBDWUNMRVMgZXZlbnRzIChQcm9jZXNzb3IgQ3ljbGVzIHVzaW5nIGNvbnRpbnVvdXMgc2FtcGxpbmcpIHdpdGggYSB1bml0IG1hc2sgb2YgMHgwMCAoTm8gdW5pdCBtYXNrKSBjb3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgaW1hZ2UgbmFtZSAgICAJCSAgICAgICAgICAgICAgICBzeW1ib2wgbmFtZQo0NyAgICAgICA1OC43NTAwICBtb25vICAgICAgICAgICAgICAgICAgICAgCQkJKG5vIHN5bWJvbHMpCjE0ICAgICAgIDE3LjUwMDAgIGFub24gKHRnaWQ6MzE4OSByYW5nZToweGY3MmFhMDAwLTB4ZjcyZmEwMDApICAobm8gc3ltYm9scykKOSAgICAgICAgMTEuMjUwMCAgYW5vbiAodGdpZDozMTg5IHJhbmdlOjB4ZjZjY2EwMDAtMHhmNmRkOTAwMCkgIChubyBzeW1ib2xzKQouCSAuCSAgLgkJCQkJCS4KPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgo8L3A+CiAgICAgICAgICAgIDxwPgpOb3RlIHRoYXQsIHNpbmNlIHN1Y2ggbWFwcGluZ3MgYXJlIGRlcGVuZGVudCB1cG9uIGluZGl2aWR1YWwgaW52b2NhdGlvbnMgb2YKYSBiaW5hcnksIHRoZXNlIG1hcHBpbmdzIGFyZSBhbHdheXMgbGlzdGVkIGFzIGEgZGVwZW5kZW50IGltYWdlLApldmVuIHdoZW4gdXNpbmcgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXBhcmF0ZT1ub25lPC9jb2RlPi4KRXF1YWxseSwgdGhlIHJlc3VsdHMgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1tZXJnZTwvY29kZT4Kb3B0aW9uLgo8L3A+CiAgICAgICAgICAgIDxwPgpBcyBzaG93biBpbiB0aGUgb3ByZXBvcnQgb3V0cHV0IGFib3ZlLCBPUHJvZmlsZSBpcyB1bmFibGUgdG8gYXR0cmlidXRlIHRoZSBzYW1wbGVzIHRvIGFueQpzeW1ib2wocykgYmVjYXVzZSB0aGVyZSBpcyBubyBFTEYgZmlsZSBmb3IgdGhpcyBjb2RlLgpFbmhhbmNlZCBzdXBwb3J0IGZvciBKSVRlZCBjb2RlIGlzIG5vdyBhdmFpbGFibGUgZm9yIHNvbWUgdmlydHVhbCBtYWNoaW5lczsgCmUuZy4sIHRoZSBKYXZhIFZpcnR1YWwgTWFjaGluZS4gIEZvciBkZXRhaWxzIGFib3V0IE9Qcm9maWxlIG91dHB1dCBmb3IKSklUZWQgY29kZSwgc2VlIDxhIGhyZWY9IiNnZXR0aW5nLWppdC1yZXBvcnRzIiB0aXRsZT0iNC6gT1Byb2ZpbGUgcmVzdWx0cyB3aXRoIEpJVCBzYW1wbGVzIj5TZWN0aW9uoDQsICYjODIyMDtPUHJvZmlsZSByZXN1bHRzIHdpdGggSklUIHNhbXBsZXMmIzgyMjE7PC9hPi4KPC9wPgogICAgICAgICAgICA8cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBKSVQgc3VwcG9ydCBpbiBPUHJvZmlsZSwgc2VlIDxhIGhyZWY9IiNqaXRzdXBwb3J0IiB0aXRsZT0iMS4xLqBTdXBwb3J0IGZvciBkeW5hbWljYWxseSBjb21waWxlZCAoSklUKSBjb2RlIj5TZWN0aW9uoDEuMSwgJiM4MjIwO1N1cHBvcnQgZm9yIGR5bmFtaWNhbGx5IGNvbXBpbGVkIChKSVQpIGNvZGUmIzgyMjE7PC9hPi4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcHJlcG9ydC14bWwiPjwvYT4yLjYuoFhNTCBmb3JtYXR0ZWQgb3V0cHV0PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+ClRoZSAteG1sIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBYTUwgaW5zdGVhZCBvZiB0aGUgdXN1YWwKdGV4dCBmb3JtYXQuICBUaGlzIGFsbG93cyBvcHJlcG9ydCB0byBlbGltaW5hdGUgc29tZSBvZiB0aGUgY29uc3RyYWludHMKZGljdGF0ZWQgYnkgdGhlIHR3byBkaW1lbnNpb25hbCB0ZXh0IGZvcm1hdC4gIEZvciBleGFtcGxlLCBpdCBpcyBwb3NzaWJsZQp0byBzZXBhcmF0ZSB0aGUgc2FtcGxlIGRhdGEgYWNyb3NzIG11bHRpcGxlIGV2ZW50cywgY3B1cyBhbmQgdGhyZWFkcy4gIFRoZSBYTUwKc2NoZW1hIGltcGxlbWVudGVkIGJ5IG9wcmVwb3J0IGlzIGZvdW5kIGluIGRvYy9vcHJlcG9ydC54c2QuIEl0IGNvbnRhaW5zCm1vcmUgZGV0YWlsZWQgY29tbWVudHMgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgWE1MIGdlbmVyYXRlZCBieSBvcHJlcG9ydC4KPC9wPgogICAgICAgICAgICA8cD4KU2luY2UgWE1MIGlzIGNvbnN1bWVkIGJ5IGEgY2xpZW50IHByb2dyYW0gcmF0aGVyIHRoYW4gYSB1c2VyLCBpdHMgc3RydWN0dXJlCmlzIGZhaXJseSBzdGF0aWMuICBJbiBwYXJ0aWN1bGFyLCB0aGUgLS1zb3J0IG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUKLS14bWwgb3B0aW9uLiAgUGVyY2VudGFnZXMgYXJlIG5vdCBkaXNsYXllZCBpbiB0aGUgWE1MIHNvIHRoZSBvcHRpb25zIHJlbGF0ZWQKdG8gcGVyY2VudGFnZXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4gIEZ1bGwgcGF0aG5hbWVzIGFyZSBhbHdheXMgZGlzcGxheWVkIGluCnRoZSBYTUwgc28gLS1sb25nLWZpbGVuYW1lcyBpcyBub3QgbmVjZXNzYXJ5LiAgVGhlIC0tZGV0YWlscyBvcHRpb24gd2lsbCBjYXVzZQphbGwgb2YgdGhlIGluZGl2aWR1YWwgc2FtcGxlIGRhdGEgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFhNTCBhcyB3ZWxsIGFzIHRoZQppbnN0cnVjdGlvbiBieXRlIHN0cmVhbSBmb3IgZWFjaCBzeW1ib2wgKGZvciBkb2luZyBkaXNhc3NlbWJseSkgYW5kIGNhbiByZXN1bHQKaW4gdmVyeSBsYXJnZSBYTUwgZmlsZXMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3ByZXBvcnQtb3B0aW9ucyI+PC9hPjIuNy6gT3B0aW9ucyBmb3IgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQ8L3N0cm9uZz48L3NwYW4+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWFjY3VtdWxhdGVkIC8gLWE8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpBY2N1bXVsYXRlIHNhbXBsZSBhbmQgcGVyY2VudGFnZSBjb3VudHMgaW4gdGhlIHN5bWJvbCBsaXN0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1jYWxsZ3JhcGggLyAtYzwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgY2FsbGdyYXBoIGluZm9ybWF0aW9uLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1kZWJ1Zy1pbmZvIC8gLWc8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IHNvdXJjZSBmaWxlIGFuZCBsaW5lIGZvciBlYWNoIHN5bWJvbC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZGVtYW5nbGUgLyAtRCBub25lfG5vcm1hbHxzbWFydDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Cm5vbmU6IG5vIGRlbWFuZ2xpbmcuIG5vcm1hbDogdXNlIGRlZmF1bHQgZGVtYW5nbGVyIChkZWZhdWx0KSBzbWFydDogdXNlCnBhdHRlcm4tbWF0Y2hpbmcgdG8gbWFrZSBDKysgc3ltYm9sIGRlbWFuZ2xpbmcgbW9yZSByZWFkYWJsZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZGV0YWlscyAvIC1kPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyBwZXItaW5zdHJ1Y3Rpb24gZGV0YWlscyBmb3IgYWxsIHNlbGVjdGVkIHN5bWJvbHMuIE5vdGUgdGhhdCwgZm9yCmJpbmFyaWVzIHdpdGhvdXQgc3ltYm9sIGluZm9ybWF0aW9uLCB0aGUgVk1BIHZhbHVlcyBzaG93biBhcmUgcmF3IGZpbGUKb2Zmc2V0cyBmb3IgdGhlIGltYWdlIGJpbmFyeS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1kZXBlbmRlbnQgLyAteDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkRvIG5vdCBpbmNsdWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGltYWdlcyBmb3IgbGlicmFyaWVzLCBrZXJuZWwgbW9kdWxlcwphbmQgdGhlIGtlcm5lbC4gVGhpcyBvcHRpb24gb25seSBtYWtlcyBzZW5zZSBpZiB0aGUgcHJvZmlsZSBzZXNzaW9uCnVzZWQgLS1zZXBhcmF0ZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1zeW1ib2xzIC8gLWUgW3N5bWJvbHNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRXhjbHVkZSBhbGwgdGhlIHN5bWJvbHMgaW4gdGhlIGdpdmVuIGNvbW1hLXNlcGFyYXRlZCBsaXN0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1nbG9iYWwtcGVyY2VudCAvIC0lPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KTWFrZSBhbGwgcGVyY2VudGFnZXMgcmVsYXRpdmUgdG8gdGhlIHdob2xlIHByb2ZpbGUuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHAgLyAtPyAvIC0tdXNhZ2U8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IGhlbHAgbWVzc2FnZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW1hZ2UtcGF0aCAvIC1wIFtwYXRoc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIHBhdGhzIHRvIHNlYXJjaCBmb3IgYmluYXJpZXMuClRoaXMgaXMgbmVlZGVkIHRvIGZpbmQgbW9kdWxlcyBpbiBrZXJuZWxzIDIuNiBhbmQgdXB3YXJkcy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tcm9vdCAvIC1SIFtwYXRoXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkEgcGF0aCB0byBhIGZpbGVzeXN0ZW0gdG8gc2VhcmNoIGZvciBhZGRpdGlvbmFsIGJpbmFyaWVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbmNsdWRlLXN5bWJvbHMgLyAtaSBbc3ltYm9sc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPbmx5IGluY2x1ZGUgc3ltYm9scyBpbiB0aGUgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIGxpc3QuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWxvbmctZmlsZW5hbWVzIC8gLWY8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPdXRwdXQgZnVsbCBwYXRocyBpbnN0ZWFkIG9mIGJhc2VuYW1lcy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbWVyZ2UgLyAtbSBbbGliLGNwdSx0aWQsdGdpZCx1bml0bWFzayxhbGxdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KTWVyZ2UgYW55IHByb2ZpbGVzIHNlcGFyYXRlZCBpbiBhIC0tc2VwYXJhdGUgc2Vzc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tbm8taGVhZGVyPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRG9uJ3Qgb3V0cHV0IGEgaGVhZGVyIGRldGFpbGluZyBwcm9maWxpbmcgcGFyYW1ldGVycy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tb3V0cHV0LWZpbGUgLyAtbyBbZmlsZV08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPdXRwdXQgdG8gdGhlIGdpdmVuIGZpbGUgaW5zdGVhZCBvZiBzdGRvdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXJldmVyc2Utc29ydCAvIC1yPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KUmV2ZXJzZSB0aGUgc29ydCBmcm9tIHRoZSBkZWZhdWx0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZXNzaW9uLWRpcj08L2NvZGU+ZGlyX3BhdGg8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KVXNlIHNhbXBsZSBkYXRhYmFzZSBvdXQgb2YgZGlyZWN0b3J5IDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+ZGlyX3BhdGg8L2NvZGU+IAppbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGxvY2F0aW9uICgvdmFyL2xpYi9vcHJvZmlsZSkuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNob3ctYWRkcmVzcyAvIC13PC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyB0aGUgVk1BIGFkZHJlc3Mgb2YgZWFjaCBzeW1ib2wgKG9mZiBieSBkZWZhdWx0KS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc29ydCAvIC1zIFt2bWEsc2FtcGxlLHN5bWJvbCxkZWJ1ZyxpbWFnZV08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTb3J0IHRoZSBsaXN0IG9mIHN5bWJvbHMgYnksIHJlc3BlY3RpdmVseSwgc3ltYm9sIGFkZHJlc3MsCm51bWJlciBvZiBzYW1wbGVzLCBzeW1ib2wgbmFtZSwgZGVidWcgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLApiaW5hcnkgaW1hZ2UgZmlsZW5hbWUuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXN5bWJvbHMgLyAtbDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ckxpc3QgcGVyLXN5bWJvbCBpbmZvcm1hdGlvbiBpbnN0ZWFkIG9mIGEgYmluYXJ5IGltYWdlIHN1bW1hcnkuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVzaG9sZCAvIC10IFtwZXJjZW50YWdlXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgb3V0cHV0IGRhdGEgZm9yIHN5bWJvbHMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUgZ2l2ZW4gcGVyY2VudGFnZQpvZiB0b3RhbCBzYW1wbGVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVYgW29wdGlvbnNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KR2l2ZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gLyAtdjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgdmVyc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0teG1sIC8gLVg8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpHZW5lcmF0ZSBYTUwgb3V0cHV0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3Bhbm5vdGF0ZSI+PC9hPjMuoE91dHB1dHRpbmcgYW5ub3RhdGVkIHNvdXJjZSAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpUaGUgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4gdXRpbGl0eSBnZW5lcmF0ZXMgYW5ub3RhdGVkIHNvdXJjZSBmaWxlcyBvciBhc3NlbWJseSBsaXN0aW5ncywgb3B0aW9uYWxseQptaXhlZCB3aXRoIHNvdXJjZS4KSWYgeW91IHdhbnQgdG8gc2VlIHRoZSBzb3VyY2UgZmlsZSwgdGhlIHByb2ZpbGVkIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGhhdmUgZGVidWcgaW5mb3JtYXRpb24sIGFuZCB0aGUgc291cmNlCm11c3QgYmUgYXZhaWxhYmxlIHRocm91Z2ggdGhpcyBkZWJ1ZyBpbmZvcm1hdGlvbi4gRm9yIEdDQywgeW91IG11c3QgdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tZzwvY29kZT4gb3B0aW9uCndoZW4geW91IGFyZSBjb21waWxpbmcuCklmIHRoZSBiaW5hcnkgZG9lc24ndCBjb250YWluIHN1ZmZpY2llbnQgZGVidWcgaW5mb3JtYXRpb24sIHlvdSBjYW4gc3RpbGwKdXNlIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYW5ub3RhdGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hc3NlbWJseTwvY29kZT48L3N0cm9uZz48L3NwYW4+IHRvIGdldCBhbm5vdGF0ZWQgYXNzZW1ibHkuCjwvcD4KICAgICAgICAgIDxwPgpOb3RlIHRoYXQgZm9yIHRoZSByZWFzb24gZXhwbGFpbmVkIGluIDxhIGhyZWY9IiNoYXJkd2FyZS1jb3VudGVycyIgdGl0bGU9IjQuMS6gSGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMiPlNlY3Rpb26gNC4xLCAmIzgyMjA7SGFyZHdhcmUgcGVyZm9ybWFuY2UgY291bnRlcnMmIzgyMjE7PC9hPiB0aGUgcmVzdWx0cyBjYW4gYmUKaW5hY2N1cmF0ZS4gVGhlIGRlYnVnIGluZm9ybWF0aW9uIGl0c2VsZiBjYW4gYWRkIG90aGVyIHByb2JsZW1zOyBmb3IgZXhhbXBsZSwgdGhlIGxpbmUgbnVtYmVyIGZvciBhIHN5bWJvbCBjYW4gYmUKaW5jb3JyZWN0LiBBc3NlbWJseSBpbnN0cnVjdGlvbnMgY2FuIGJlIHJlLW9yZGVyZWQgYW5kIG1vdmVkIGJ5IHRoZSBjb21waWxlciwgYW5kIHRoaXMgY2FuIGxlYWQgdG8KY3JlZGl0aW5nIHNvdXJjZSBsaW5lcyB3aXRoIHNhbXBsZXMgbm90IHJlYWxseSAib3duZWQiIGJ5IHRoaXMgbGluZS4gQWxzbyBzZWUKPGEgaHJlZj0iI2ludGVycHJldGluZyIgdGl0bGU9IkNoYXB0ZXKgNS6gSW50ZXJwcmV0aW5nIHByb2ZpbGluZyByZXN1bHRzIj5DaGFwdGVyoDUsIDxpPkludGVycHJldGluZyBwcm9maWxpbmcgcmVzdWx0czwvaT48L2E+Lgo8L3A+CiAgICAgICAgICA8cD4KWW91IGNhbiBvdXRwdXQgdGhlIGFubm90YXRpb24gdG8gb25lIHNpbmdsZSBmaWxlLCBjb250YWluaW5nIGFsbCB0aGUgc291cmNlIGZvdW5kIHVzaW5nIHRoZQo8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNvdXJjZTwvY29kZT4uIFlvdSBjYW4gdXNlIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWFzc2VtYmx5PC9jb2RlPgp0byBnZXQgY29tYmluZWQgc291cmNlL2Fzc2VtYmx5IG91dHB1dC4KPC9wPgogICAgICAgICAgPHA+CllvdSBjYW4gYWxzbyBvdXRwdXQgYSBkaXJlY3Rvcnkgb2YgYW5ub3RhdGVkIHNvdXJjZSBmaWxlcyB0aGF0IG1haW50YWlucyB0aGUgc3RydWN0dXJlIG9mCnRoZSBvcmlnaW5hbCBzb3VyY2VzLiBFYWNoIGxpbmUgaW4gdGhlIGFubm90YXRlZCBzb3VyY2UgaXMgcHJlcGVuZGVkIHdpdGggdGhlIHNhbXBsZXMKZm9yIHRoYXQgbGluZS4gQWRkaXRpb25hbGx5LCBlYWNoIHN5bWJvbCBpcyBhbm5vdGF0ZWQgZ2l2aW5nIGRldGFpbHMgZm9yIHRoZSBzeW1ib2wKYXMgYSB3aG9sZS4gQW4gZXhhbXBsZToKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3Bhbm5vdGF0ZSAtLXNvdXJjZSAtLW91dHB1dC1kaXI9YW5ub3RhdGVkIC91c3IvbG9jYWwvb3Byb2ZpbGUtcHAvYmluL29wcm9maWxlZAokIGxzIGFubm90YXRlZC9ob21lL21vei9zcmMvb3Byb2ZpbGUtcHAvZGFlbW9uLwpvcGRfY29va2llLmggIG9wZF9pbWFnZS5jICBvcGRfa2VybmVsLmMgIG9wZF9zYW1wbGVfZmlsZXMuYyAgb3Byb2ZpbGVkLmMKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KTGluZSBudW1iZXJzIGFyZSBtYWludGFpbmVkIGluIHRoZSBzb3VyY2UgZmlsZXMsIGJ1dCBlYWNoIGZpbGUgaGFzCmEgZm9vdGVyIGFwcGVuZGVkIGRlc2NyaWJpbmcgdGhlIHByb2ZpbGluZyBkZXRhaWxzLiBUaGUgYWN0dWFsIGFubm90YXRpb24KbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpcyA6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgouLi4KICAgICAgICAgICAgICAgOnN0YXRpYyB1aW50NjRfdCBwb3BfYnVmZmVyX3ZhbHVlKHN0cnVjdCB0cmFuc2llbnQgKiB0cmFucykKIDExNTEwICAxLjk2NjEgOnsgLyogcG9wX2J1ZmZlcl92YWx1ZSB0b3RhbDogIDg5OTAxIDE1LjM1NjYgKi8KICAgICAgICAgICAgICAgOiAgICAgICAgdWludDY0X3QgdmFsOwogICAgICAgICAgICAgICA6CiAxMDIyNyAgMS43NDY5IDogICAgICAgIGlmICghdHJhbnMtJmd0O3JlbWFpbmluZykgewogICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQlVHOiBwb3BwaW5nIGVtcHR5IGJ1ZmZlciAhXG4iKTsKICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICAgICAgICAgICAgIDogICAgICAgIH0KICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICA6ICAgICAgICB2YWwgPSBnZXRfYnVmZmVyX3ZhbHVlKHRyYW5zLSZndDtidWZmZXIsIDApOwogIDIyODEgIDAuMzg5NiA6ICAgICAgICB0cmFucy0mZ3Q7cmVtYWluaW5nLS07CiAgMjI5NiAgMC4zOTIyIDogICAgICAgIHRyYW5zLSZndDtidWZmZXIgKz0ga2VybmVsX3BvaW50ZXJfc2l6ZTsKICAgICAgICAgICAgICAgOiAgICAgICAgcmV0dXJuIHZhbDsKIDEwNDU0ICAxLjc4NTcgOn0KLi4uCjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+ClRoZSBmaXJzdCBudW1iZXIgb24gZWFjaCBsaW5lIGlzIHRoZSBudW1iZXIgb2Ygc2FtcGxlcywgd2hpbHN0IHRoZSBzZWNvbmQgaXMKdGhlIHJlbGF0aXZlIHBlcmNlbnRhZ2Ugb2YgdG90YWwgc2FtcGxlcy4KPC9wPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3Bhbm5vdGF0ZS1maW5kaW5nLXNvdXJjZSI+PC9hPjMuMS6gTG9jYXRpbmcgc291cmNlIGZpbGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ck9mIGNvdXJzZSwgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4gbmVlZHMgdG8gYmUgYWJsZSB0byBsb2NhdGUgdGhlIHNvdXJjZSBmaWxlcwpmb3IgdGhlIGJpbmFyeSBpbWFnZShzKSBpbiBvcmRlciB0byBwcm9kdWNlIG91dHB1dC4gU29tZSBiaW5hcnkgaW1hZ2VzIGhhdmUgZGVidWcKaW5mb3JtYXRpb24gd2hlcmUgdGhlIGdpdmVuIHNvdXJjZSBmaWxlIHBhdGhzIGFyZSByZWxhdGl2ZSwgbm90IGFic29sdXRlLiBZb3UgY2FuCnNwZWNpZnkgc2VhcmNoIHBhdGhzIHRvIGxvb2sgZm9yIHRoZXNlIGZpbGVzIChzaW1pbGFyIHRvIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmdkYjwvc3Ryb25nPjwvc3Bhbj4ncwo8Y29kZSBjbGFzcz0ib3B0aW9uIj5kaXI8L2NvZGU+IGNvbW1hbmQpIHdpdGggdGhlIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc2VhcmNoLWRpcnM8L2NvZGU+IG9wdGlvbi4KPC9wPgogICAgICAgICAgICA8cD4KU29tZXRpbWVzIHlvdSBtYXkgaGF2ZSBhIGJpbmFyeSBpbWFnZSB3aGljaCBnaXZlcyBhYnNvbHV0ZSBwYXRocyBmb3IgdGhlIHNvdXJjZSBmaWxlcywKYnV0IHlvdSBoYXZlIHRoZSBhY3R1YWwgc291cmNlcyBlbHNld2hlcmUgKGNvbW1vbmx5LCB5b3UndmUgaW5zdGFsbGVkIGFuIFNSUE0gZm9yCmEgYmluYXJ5IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3Ugd2FudCBhbm5vdGF0aW9uIGZyb20gYW4gZXhpc3RpbmcgcHJvZmlsZSkuIFlvdSBjYW4KdXNlIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJhc2UtZGlyczwvY29kZT4gb3B0aW9uIHRvIHJlZGlyZWN0IE9Qcm9maWxlIHRvIGxvb2sgc29tZXdoZXJlCmVsc2UgZm9yIHNvdXJjZSBmaWxlcy4gRm9yIGV4YW1wbGUsIGltYWdpbmUgd2UgaGF2ZSBhIGJpbmFyeSBnZW5lcmF0ZWQgZnJvbSBhIHNvdXJjZQpmaWxlIHRoYXQgaXMgZ2l2ZW4gaW4gdGhlIGRlYnVnIGluZm9ybWF0aW9uIGFzIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+L3RtcC9idWlsZC9saWJmb28vZm9vLmM8L2NvZGU+LAphbmQgeW91IGhhdmUgdGhlIHNvdXJjZSB0cmVlIG1hdGNoaW5nIHRoYXQgYmluYXJ5IGluc3RhbGxlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi9ob21lL3VzZXIvbGliZm9vLzwvY29kZT4uCllvdSBjYW4gcmVkaXJlY3QgT1Byb2ZpbGUgdG8gZmluZCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmZvby5jPC9jb2RlPiBjb3JyZWN0bHkgbGlrZSB0aGlzIDoKPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcGFubm90YXRlIC0tc291cmNlIC0tYmFzZS1kaXJzPS90bXAvYnVpbGQvbGliZm9vLyAtLXNlYXJjaC1kaXJzPS9ob21lL3VzZXIvbGliZm9vLyAtLW91dHB1dC1kaXI9YW5ub3RhdGVkLyAvbGliL2xpYmZvby5zbwo8L3ByZT4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPHA+CllvdSBjYW4gc3BlY2lmeSBtdWx0aXBsZSAoY29tbWEtc2VwYXJhdGVkKSBwYXRocyB0byBib3RoIG9wdGlvbnMuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3Bhbm5vdGF0ZS1kZXRhaWxzIj48L2E+My4yLqBVc2FnZSBvZiA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hc3NlbWJseSAvIC1hPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT3V0cHV0IGFubm90YXRlZCBhc3NlbWJseS4gSWYgdGhpcyBpcyBjb21iaW5lZCB3aXRoIC0tc291cmNlLCB0aGVuIG1peGVkCnNvdXJjZSAvIGFzc2VtYmx5IGFubm90YXRpb25zIGFyZSBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWJhc2UtZGlycyAvIC1iIFtwYXRoc10vPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgcGF0aCBwcmVmaXhlcy4gVGhpcyBjYW4gYmUgdXNlZCB0byBwb2ludCBPUHJvZmlsZSB0byBhCmRpZmZlcmVudCBsb2NhdGlvbiBmb3Igc291cmNlIGZpbGVzIHdoZW4gdGhlIGRlYnVnIGluZm9ybWF0aW9uIHNwZWNpZmllcyBhbgphYnNvbHV0ZSBwYXRoIG9uIHlvdXIgc3lzdGVtIGZvciB0aGUgc291cmNlIHRoYXQgZG9lcyBub3QgZXhpc3QuIFRoZSBwcmVmaXgKaXMgc3RyaXBwZWQgZnJvbSB0aGUgZGVidWcgc291cmNlIGZpbGUgcGF0aHMsIHRoZW4gc2VhcmNoZWQgaW4gdGhlIHNlYXJjaCBkaXJzCnNwZWNpZmllZCBieSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXNlYXJjaC1kaXJzPC9jb2RlPi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZGVtYW5nbGUgLyAtRCBub25lfG5vcm1hbHxzbWFydDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Cm5vbmU6IG5vIGRlbWFuZ2xpbmcuIG5vcm1hbDogdXNlIGRlZmF1bHQgZGVtYW5nbGVyIChkZWZhdWx0KSBzbWFydDogdXNlCnBhdHRlcm4tbWF0Y2hpbmcgdG8gbWFrZSBDKysgc3ltYm9sIGRlbWFuZ2xpbmcgbW9yZSByZWFkYWJsZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1kZXBlbmRlbnQgLyAteDwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkRvIG5vdCBpbmNsdWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGltYWdlcyBmb3IgbGlicmFyaWVzLCBrZXJuZWwgbW9kdWxlcwphbmQgdGhlIGtlcm5lbC4gVGhpcyBvcHRpb24gb25seSBtYWtlcyBzZW5zZSBpZiB0aGUgcHJvZmlsZSBzZXNzaW9uCnVzZWQgLS1zZXBhcmF0ZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1maWxlIFtmaWxlc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpFeGNsdWRlIGFsbCBmaWxlcyBpbiB0aGUgZ2l2ZW4gY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZ2xvYiBwYXR0ZXJucy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tZXhjbHVkZS1zeW1ib2xzIC8gLWUgW3N5bWJvbHNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRXhjbHVkZSBhbGwgdGhlIHN5bWJvbHMgaW4gdGhlIGdpdmVuIGNvbW1hLXNlcGFyYXRlZCBsaXN0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1oZWxwIC8gLT8gLyAtLXVzYWdlPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyBoZWxwIG1lc3NhZ2UuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWltYWdlLXBhdGggLyAtcCBbcGF0aHNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBwYXRocyB0byBzZWFyY2ggZm9yIGJpbmFyaWVzLgpUaGlzIGlzIG5lZWRlZCB0byBmaW5kIG1vZHVsZXMgaW4ga2VybmVscyAyLjYgYW5kIHVwd2FyZHMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXJvb3QgLyAtUiBbcGF0aF08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpBIHBhdGggdG8gYSBmaWxlc3lzdGVtIHRvIHNlYXJjaCBmb3IgYWRkaXRpb25hbCBiaW5hcmllcy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW5jbHVkZS1maWxlIFtmaWxlc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPbmx5IGluY2x1ZGUgZmlsZXMgaW4gdGhlIGdpdmVuIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGdsb2IgcGF0dGVybnMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWluY2x1ZGUtc3ltYm9scyAvIC1pIFtzeW1ib2xzXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgaW5jbHVkZSBzeW1ib2xzIGluIHRoZSBnaXZlbiBjb21tYS1zZXBhcmF0ZWQgbGlzdC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tb2JqZHVtcC1wYXJhbXMgW3BhcmFtc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpQYXNzIHRoZSBnaXZlbiBwYXJhbWV0ZXJzIGFzIGV4dHJhIHZhbHVlcyB3aGVuIGNhbGxpbmcgb2JqZHVtcC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tb3V0cHV0LWRpciAvIC1vIFtkaXJdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT3V0cHV0IGRpcmVjdG9yeS4gVGhpcyBtYWtlcyBvcGFubm90YXRlIG91dHB1dCBvbmUgYW5ub3RhdGVkIGZpbGUgZm9yIGVhY2gKc291cmNlIGZpbGUuIFRoaXMgb3B0aW9uIGNhbid0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAtLWFzc2VtYmx5Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1zZWFyY2gtZGlycyAvIC1kIFtwYXRoc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBwYXRocyB0byBzZWFyY2ggZm9yIHNvdXJjZSBmaWxlcy4gVGhpcyBpcyB1c2VmdWwgdG8gZmluZApzb3VyY2UgZmlsZXMgd2hlbiB0aGUgZGVidWcgaW5mb3JtYXRpb24gb25seSBjb250YWlucyByZWxhdGl2ZSBwYXRocy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tc291cmNlIC8gLXM8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPdXRwdXQgYW5ub3RhdGVkIHNvdXJjZS4gVGhpcyByZXF1aXJlcyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gYmUgYXZhaWxhYmxlCmZvciB0aGUgYmluYXJpZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXRocmVzaG9sZCAvIC10IFtwZXJjZW50YWdlXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck9ubHkgb3V0cHV0IGRhdGEgZm9yIHN5bWJvbHMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUgZ2l2ZW4gcGVyY2VudGFnZQpvZiB0b3RhbCBzYW1wbGVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVYgW29wdGlvbnNdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KR2l2ZSB2ZXJib3NlIGRlYnVnZ2luZyBvdXRwdXQuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcnNpb24gLyAtdjwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgdmVyc2lvbi4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICA8L2RsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImdldHRpbmctaml0LXJlcG9ydHMiPjwvYT40LqBPUHJvZmlsZSByZXN1bHRzIHdpdGggSklUIHNhbXBsZXM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CgkJQWZ0ZXIgcHJvZmlsaW5nIGEgSmF2YSAob3Igb3RoZXIgc3VwcG9ydGVkIFZNKSBhcHBsaWNhdGlvbiwgdGhlIGNvbW1hbmQKCQk8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj48c3BhbiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Im9wY29udHJvbCAtLWR1bXAiPC9zdHJvbmc+PC9zcGFuPiA8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgoJCWZsdXNoZXMgdGhlIHNhbXBsZSBidWZmZXJzIGFuZCBjcmVhdGVzIEVMRiBiaW5hcmllcyBmcm9tIHRoZQoJCWludGVybWVkaWF0ZSBmaWxlcyB0aGF0IHdlcmUgd3JpdHRlbiBieSB0aGUgYWdlbnQgbGlicmFyeS4KCQlUaGUgRUxGIGJpbmFyaWVzIGFyZSBuYW1lZCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiZsdDt0Z2lkJmd0Oy5qbzwvY29kZT4uCgkJV2l0aCB0aGUgc3ltYm9sIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0aGVzZSBFTEYgZmlsZXMsIGl0IGlzCgkJcG9zc2libGUgdG8gbWFwIHNhbXBsZXMgdG8gdGhlIGFwcHJvcHJpYXRlIHN5bWJvbHMuCgk8L3A+CiAgICAgICAgICA8cD4KCQlUaGUgdXN1YWwgYW5hbHlzaXMgdG9vbHMgKDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0PC9zdHJvbmc+PC9zcGFuPiBhbmQvb3IgCgkJPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4pIGNhbiBub3cgYmUgdXNlZAoJCXRvIGdldCBzeW1ib2xzIGFuZCBhc3NlbWJseSBjb2RlIGZvciB0aGUgaW5zdHJ1bWVudGVkIFZNIHByb2Nlc3Nlcy4KCTwvcD4KICAgICAgICAgIDxwPgpCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGEgcHJvZmlsZSByZXBvcnQgb2YgYSBKYXZhIGFwcGxpY2F0aW9uIHRoYXQgaGFzIGJlZW4KaW5zdHJ1bWVudGVkIHdpdGggdGhlIHByb3ZpZGVkIGFnZW50IGxpYnJhcnkuCjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIG9wcmVwb3J0IC1sIC91c3IvbGliL2p2bS9qcmUtMS41LjAtaWJtL2Jpbi9qYXZhCkNQVTogQ29yZSBTb2xvIC8gRHVvLCBzcGVlZCAyMTY3IE1IeiAoZXN0aW1hdGVkKQpDb3VudGVkIENQVV9DTEtfVU5IQUxURUQgZXZlbnRzIChVbmhhbHRlZCBjbG9jayBjeWNsZXMpIHdpdGggYSB1bml0IG1hc2sgb2YgMHgwMCAoVW5oYWx0ZWQgY29yZSBjeWNsZXMpIGNvdW50IDEwMDAwMApzYW1wbGVzICAlICAgICAgICBpbWFnZSBuYW1lICAgICAgICAgICAgICAgc3ltYm9sIG5hbWUKMTg2MDIwICAgNTAuMDUyMyAgbm8tdm1saW51eCAgICAgICAgICAgICAgIG5vLXZtbGludXggICAgICAgICAgICAgICAobm8gc3ltYm9scykKMzQzMzMgICAgIDkuMjM4MCAgNzYzNS5qbyAgICAgICAgICAgICAgICAgIGphdmEgICAgICAgICAgICAgICAgICAgICB2b2lkIHRlc3QuZjEoKQoxOTAyMiAgICAgNS4xMTgyICBsaWJjLTIuNS5zbyAgICAgICAgICAgICAgbGliYy0yLjUuc28gICAgICAgICAgICAgIF9JT19maWxlX3hzcHV0bkBAR0xJQkNfMi4xCjE4NzYyICAgICA1LjA0ODMgIGxpYmMtMi41LnNvICAgICAgICAgICAgICBsaWJjLTIuNS5zbyAgICAgICAgICAgICAgdmZwcmludGYKMTY0MDggICAgIDQuNDE0OSAgNzYzNS5qbyAgICAgICAgICAgICAgICAgIGphdmEgICAgICAgICAgICAgICAgICAgICB2b2lkIHRlc3QkSGVsbG9UaHJlYWQucnVuKCkKMTYyNTAgICAgIDQuMzcyNCAgNzYzNS5qbyAgICAgICAgICAgICAgICAgIGphdmEgICAgICAgICAgICAgICAgICAgICB2b2lkIHRlc3QkdGVzdF8xLmYyKGludCkKMTUzMDMgICAgIDQuMTE3NiAgNzYzNS5qbyAgICAgICAgICAgICAgICAgIGphdmEgICAgICAgICAgICAgICAgICAgICB2b2lkIHRlc3QuZjIoaW50LCBpbnQpCjEzMjUyICAgICAzLjU2NTcgIDc2MzUuam8gICAgICAgICAgICAgICAgICBqYXZhICAgICAgICAgICAgICAgICAgICAgdm9pZCB0ZXN0LmYyKGludCkKNTE2NSAgICAgIDEuMzg5NyAgNzYzNS5qbyAgICAgICAgICAgICAgICAgIGphdmEgICAgICAgICAgICAgICAgICAgICB2b2lkIHRlc3QuZjQoKQo5NTUgICAgICAgMC4yNTcwICA3NjM1LmpvICAgICAgICAgICAgICAgICAgamF2YSAgICAgICAgICAgICAgICAgICAgIHZvaWQgdGVzdCRIZWxsb1RocmVhZC5ydW4oKX4KCjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+CjwvcD4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IG1hcmdpbi1yaWdodDogMC41aW47Ij4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+Tm90ZTwvaDM+CiAgICAgICAgICAgIDxwPgoJICBEZXBlbmRpbmcgb24gdGhlIEpWTSB0aGF0IGlzIHVzZWQsIGNlcnRhaW4gb3B0aW9ucyBvZiBvcHJlcG9ydCBhbmQgb3Bhbm5vdGF0ZQoJICBkbyBOT1Qgd29yayBzaW5jZSB0aGV5IHJlbHkgb24gZGVidWcgaW5mb3JtYXRpb24gKGUuZy4gc291cmNlIGNvZGUgbGluZSBudW1iZXIpCgkgIHRoYXQgaXMgbm90IGFsd2F5cyBhdmFpbGFibGUuIFRoZSBTdW4gSlZNIGRvZXMgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRlYnVnCgkgIGluZm9ybWF0aW9uIHZpYSB0aGUgSlZNVElbUEldIGludGVyZmFjZSwKCSAgYnV0IG90aGVyIEpWTXMgZG8gbm90LgogIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CgkJQXMgeW91IGNhbiBzZWUgaW4gdGhlIG9wcmVwb3J0IG91dHB1dCwgdGhlIEpJVCBzdXBwb3J0IGFnZW50IGZvciBKYXZhCgkJZ2VuZXJhdGVzIHN5bWJvbHMgdG8gaW5jbHVkZSB0aGUgY2xhc3MgYW5kIG1ldGhvZCBzaWduYXR1cmUuCgkJQSBzeW1ib2wgd2l0aCB0aGUgc3VmZml4ICYjNzMyOyZsdDtuJmd0OyAoZS5nLgoJCTxjb2RlIGNsYXNzPSJjb2RlIj52b2lkIHRlc3QkSGVsbG9UaHJlYWQucnVuKCkmIzczMjsxPC9jb2RlPikgbWVhbnMgdGhhdCB0aGlzIGlzCgkJdGhlICZsdDtuJmd0O3RoIG9jY3VycmVuY2Ugb2YgdGhlIGlkZW50aWNhbCBuYW1lLiBUaGlzIGhhcHBlbnMgaWYgYSBtZXRob2QgaXMgcmUtSklUZWQuCgkJQSBzeW1ib2wgd2l0aCB0aGUgc3VmZml4ICUmbHQ7biZndDssIG1lYW5zIHRoYXQgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhpcyBzeW1ib2wKCQl3YXMgcmV1c2VkIGR1cmluZyB0aGUgc2FtcGxlIHNlc3Npb24gKHNlZSA8YSBocmVmPSIjb3ZlcmxhcHBpbmctc3ltYm9scyIgdGl0bGU9IjYuoE92ZXJsYXBwaW5nIHN5bWJvbHMgaW4gSklUZWQgY29kZSI+U2VjdGlvbqA2LCAmIzgyMjA7T3ZlcmxhcHBpbmcgc3ltYm9scyBpbiBKSVRlZCBjb2RlJiM4MjIxOzwvYT4pLgoJCVRoZSB2YWx1ZSAmbHQ7biZndDsgaXMgdGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSB0aGF0IHRoaXMgc3ltYm9sL2NvZGUgd2FzIHByZXNlbnQgaW4KCQlyZWxhdGlvbiB0byB0aGUgdG90YWwgbGlmZXRpbWUgb2YgYWxsIG92ZXJsYXBwaW5nIG90aGVyIHN5bWJvbHMuIEEgc3ltYm9sIG9mIHRoZSBmb3JtCgkJPGNvZGUgY2xhc3M9ImNvZGUiPiZsdDtyZXR1cm5fdmFsJmd0OyAmbHQ7Y2xhc3NfbmFtZSZndDskJmx0O21ldGhvZF9zaWcmZ3Q7PC9jb2RlPiBkZW5vdGVzIGFuCgkJaW5uZXIgY2xhc3MuCgk8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3BncHJvZiI+PC9hPjUuoDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPmdwcm9mPC9zdHJvbmc+PC9zcGFuPi1jb21wYXRpYmxlIG91dHB1dCAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BncHJvZjwvc3Ryb25nPjwvc3Bhbj4pPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpJZiB5b3UncmUgZmFtaWxpYXIgd2l0aCB0aGUgb3V0cHV0IHByb2R1Y2VkIGJ5IDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPkdOVSBncHJvZjwvc3Ryb25nPjwvc3Bhbj4sCnlvdSBtYXkgZmluZCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGdwcm9mPC9zdHJvbmc+PC9zcGFuPiB1c2VmdWwuIEl0IHRha2VzIGEgc2luZ2xlIGJpbmFyeQphcyBhbiBhcmd1bWVudCwgYW5kIHByb2R1Y2VzIGEgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5nbW9uLm91dDwvY29kZT4gZmlsZSBmb3IgdXNlCndpdGggPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Z3Byb2YgLXA8L3N0cm9uZz48L3NwYW4+LiBJZiBjYWxsLWdyYXBoIHByb2ZpbGluZyBpcyBlbmFibGVkLAp0aGVuIHRoaXMgaXMgYWxzbyBpbmNsdWRlZC4KPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiQgb3BncHJvZiBgd2hpY2ggb3Byb2ZpbGVkYCAjIGdlbmVyYXRlcyBnbW9uLm91dCBmaWxlCiQgZ3Byb2YgLXAgYHdoaWNoIG9wcm9maWxlZGAgfCBoZWFkCkZsYXQgcHJvZmlsZToKCkVhY2ggc2FtcGxlIGNvdW50cyBhcyAxIHNhbXBsZXMuCiAgJSAgIGN1bXVsYXRpdmUgICBzZWxmICAgICAgICAgICAgICBzZWxmICAgICB0b3RhbAogdGltZSAgIHNhbXBsZXMgICBzYW1wbGVzICAgIGNhbGxzICBUMS9jYWxsICBUMS9jYWxsICBuYW1lCiAzMy4xMyAyMDYyMzcuMDAgMjA2MjM3LjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZGJfaW5zZXJ0CiAyMi42NyAzNDczODYuMDAgMTQxMTQ5LjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3BfYnVmZmVyX3ZhbHVlCiAgOS41NiA0MDY4ODEuMDAgNTk0OTUuMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZF9wdXRfc2FtcGxlCiAgNy4zNCA0NTI1OTkuMDAgNDU3MTguMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZF9maW5kX2ltYWdlCiAgNy4xOSA0OTczMjcuMDAgNDQ3MjguMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZF9wcm9jZXNzX3NhbXBsZXMKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcGdwcm9mLWRldGFpbHMiPjwvYT41LjEuoFVzYWdlIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wZ3Byb2Y8L3N0cm9uZz48L3NwYW4+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWhlbHAgLyAtPyAvIC0tdXNhZ2U8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IGhlbHAgbWVzc2FnZS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taW1hZ2UtcGF0aCAvIC1wIFtwYXRoc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhZGRpdGlvbmFsIHBhdGhzIHRvIHNlYXJjaCBmb3IgYmluYXJpZXMuClRoaXMgaXMgbmVlZGVkIHRvIGZpbmQgbW9kdWxlcyBpbiBrZXJuZWxzIDIuNiBhbmQgdXB3YXJkcy4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tcm9vdCAvIC1SIFtwYXRoXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkEgcGF0aCB0byBhIGZpbGVzeXN0ZW0gdG8gc2VhcmNoIGZvciBhZGRpdGlvbmFsIGJpbmFyaWVzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1vdXRwdXQtZmlsZW5hbWUgLyAtbyBbZmlsZV08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPdXRwdXQgdG8gdGhlIGdpdmVuIGZpbGUgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCwgZ21vbi5vdXQKPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdGhyZXNob2xkIC8gLXQgW3BlcmNlbnRhZ2VdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KT25seSBvdXRwdXQgZGF0YSBmb3Igc3ltYm9scyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZSBnaXZlbiBwZXJjZW50YWdlCm9mIHRvdGFsIHNhbXBsZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLXZlcmJvc2UgLyAtViBbb3B0aW9uc108L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpHaXZlIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyc2lvbiAvIC12PC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyB2ZXJzaW9uLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0ib3BhcmNoaXZlIj48L2E+Ni6gQXJjaGl2aW5nIG1lYXN1cmVtZW50cyAoPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPik8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CglUaGUgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3BhcmNoaXZlPC9zdHJvbmc+PC9zcGFuPiB1dGlsaXR5IGdlbmVyYXRlcyBhIGRpcmVjdG9yeSBwb3B1bGF0ZWQKCXdpdGggZXhlY3V0YWJsZSwgZGVidWcsIGFuZCBvcHJvZmlsZSBzYW1wbGUgZmlsZXMuIFRoaXMgZGlyZWN0b3J5IGNhbiBiZQoJbW92ZWQgdG8gYW5vdGhlciBtYWNoaW5lIHZpYSA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj50YXI8L3N0cm9uZz48L3NwYW4+IGFuZCBhbmFseXplZCB3aXRob3V0CglmdXJ0aGVyIHVzZSBvZiB0aGUgZGF0YSBjb2xsZWN0aW9uIG1hY2hpbmUuCjwvcD4KICAgICAgICAgIDxwPgoJVGhlIGZvbGxvd2luZyBjb21tYW5kIHdvdWxkIGNvbGxlY3QgdGhlIHNhbXBsZSBmaWxlcywgdGhlIGV4ZWN1dGFibGVzCglhc3NvY2lhdGVkIHdpdGggdGhlIHNhbXBsZSBmaWxlcywgYW5kIHRoZSBkZWJ1Z2luZm8gZmlsZXMgYXNzb2NpYXRlZAoJd2l0aCB0aGUgZXhlY3V0YWJsZXMgYW5kIGNvcHkgdGhlbSBpbnRvCgk8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi90bXAvY3VycmVudF9kYXRhPC9jb2RlPjoKPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3BhcmNoaXZlIC1vIC90bXAvY3VycmVudF9kYXRhCjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0ib3BhcmNoaXZlLWRldGFpbHMiPjwvYT42LjEuoFVzYWdlIG9mIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wYXJjaGl2ZTwvc3Ryb25nPjwvc3Bhbj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taGVscCAvIC0/IC8gLS11c2FnZTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgaGVscCBtZXNzYWdlLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1leGNsdWRlLWRlcGVuZGVudCAvIC14PC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KRG8gbm90IGluY2x1ZGUgYXBwbGljYXRpb24tc3BlY2lmaWMgaW1hZ2VzIGZvciBsaWJyYXJpZXMsIGtlcm5lbCBtb2R1bGVzCmFuZCB0aGUga2VybmVsLiBUaGlzIG9wdGlvbiBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoZSBwcm9maWxlIHNlc3Npb24KdXNlZCAtLXNlcGFyYXRlLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1pbWFnZS1wYXRoIC8gLXAgW3BhdGhzXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgcGF0aHMgdG8gc2VhcmNoIGZvciBiaW5hcmllcy4KVGhpcyBpcyBuZWVkZWQgdG8gZmluZCBtb2R1bGVzIGluIGtlcm5lbHMgMi42IGFuZCB1cHdhcmRzLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1yb290IC8gLVIgW3BhdGhdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KQSBwYXRoIHRvIGEgZmlsZXN5c3RlbSB0byBzZWFyY2ggZm9yIGFkZGl0aW9uYWwgYmluYXJpZXMuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW91dHB1dC1kaXJlY3RvcnkgLyAtbyBbZGlyZWN0b3J5XTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+Ck91dHB1dCB0byB0aGUgZ2l2ZW4gZGlyZWN0b3J5LiBUaGVyZSBpcyBubyBkZWZhdWx0LiBUaGlzIG11c3QgYmUgc3BlY2lmaWVkLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1saXN0LWZpbGVzIC8gLWw8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpPbmx5IGxpc3QgdGhlIGZpbGVzIHRoYXQgd291bGQgYmUgYXJjaGl2ZWQsIGRvbid0IGNvcHkgdGhlbS4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyYm9zZSAvIC1WIFtvcHRpb25zXTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+CkdpdmUgdmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0Lgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJzaW9uIC8gLXY8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTaG93IHZlcnNpb24uCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJvcGltcG9ydCI+PC9hPjcuoENvbnZlcnRpbmcgc2FtcGxlIGRhdGFiYXNlIGZpbGVzICg8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj4pPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgoJVGhpcyB1dGlsaXR5IGNvbnZlcnRzIHNhbXBsZSBkYXRhYmFzZSBmaWxlcyBmcm9tIGEgZm9yZWlnbiBiaW5hcnkgZm9ybWF0IChhYmkpIHRvCgl0aGUgbmF0aXZlIGZvcm1hdC4gVGhpcyBpcyB1c2VmdWwgb25seSB3aGVuIG1vdmluZyBzYW1wbGUgZmlsZXMgYmV0d2VlbiBob3N0cywKCWZvciBhbmFseXNpcyBvbiBwbGF0Zm9ybXMgb3RoZXIgdGhhbiB0aGUgb25lIHVzZWQgZm9yIGNvbGxlY3Rpb24uIFRoZSBhYmkgZm9ybWF0CglvZiB0aGUgZmlsZSB0byBiZSBpbXBvcnRlZCBpcyBkZXNjcmliZWQgaW4gYSB0ZXh0IGZpbGUgbG9jYXRlZCBpbiA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPiRTRVNTSU9OX0RJUi9hYmk8L2NvZGU+Lgo8L3A+CiAgICAgICAgICA8cD4KCVRoZSBmb2xsb3dpbmcgY29tbWFuZCB3b3VsZCBjb252ZXJ0IHRoZSBpbnB1dCBzYW1wbGVzIGZpbGVzIHRvIHRoZQoJb3V0cHV0IHNhbXBsZXMgZmlsZXMgdXNpbmcgdGhlIGdpdmVuIGFiaSBmaWxlIGFzIGEgYmluYXJ5IGRlc2NyaXB0aW9uCglvZiB0aGUgaW5wdXQgZmlsZSBhbmQgdGhlIGN1cmVudCBwbGF0Zm9ybSBhYmkgYXMgYSBiaW5hcnkgZGVzY3JpcHRpb24KCW9mIHRoZSBvdXRwdXQgZmlsZS4KPC9wPgogICAgICAgICAgPHRhYmxlIHhtbG5zPSIiIGJvcmRlcj0iMCIgc3R5bGU9ImJhY2tncm91bmQ6ICNFMEUwRTA7IiB3aWR0aD0iOTAlIj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9InNjcmVlbiI+CiMgb3BpbXBvcnQgLWEgL3Zhci9saWIvb3Byb2ZpbGUvYWJpIC1vIC90bXAvY3VycmVudC8uLi4vR0xPQkFMX1BPV0VSX0VWRU5UUy4yMDAwMDAuMS5hbGwuYWxsLmFsbCAvdmFyL2xpYi8uLi4vbXByaW1lL0dMT0JBTF9QT1dFUl9FVkVOVFMuMjAwMDAwLjEuYWxsLmFsbC5hbGwKPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJvcGltcG9ydC1kZXRhaWxzIj48L2E+Ny4xLqBVc2FnZSBvZiA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGltcG9ydDwvc3Ryb25nPjwvc3Bhbj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0taGVscCAvIC0/IC8gLS11c2FnZTwvY29kZT4KICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgPHA+ClNob3cgaGVscCBtZXNzYWdlLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS1hYmkgLyAtYSBbZmlsZW5hbWVdPC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KSW5wdXQgYWJpIGZpbGUgZGVzY3JpcHRpb24gbG9jYXRpb24uCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLWZvcmNlIC8gLWY8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpGb3JjZSBjb252ZXJzaW9uIGV2ZW4gaWYgdGhlIGlucHV0IGFuZCBvdXRwdXQgYWJpIGFyZSBpZGVudGljYWwuCjwvcD4KICAgICAgICAgICAgICAgIDwvZGQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXJtIj4KICAgICAgICAgICAgICAgICAgICA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tLW91dHB1dCAvIC1vIFtmaWxlbmFtZV08L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpTcGVjaWZ5IHRoZSBvdXRwdXQgZmlsZW5hbWUuIElmIHRoZSBvdXRwdXQgZmlsZSBhbHJlYWR5IGV4aXN0cywgdGhlIGZpbGUgaXMKbm90IG92ZXJ3cml0dGVuIGJ1dCBkYXRhIGFyZSBhY2N1bXVsYXRlZCBpbi4gU2FtcGxlIGZpbGVuYW1lIGFyZSBpbmZvcm1hdGl2ZQpmb3IgcG9zdCBwcm9maWxlIHRvb2xzIGFuZCBtdXN0IGJlIGtlcHQgaWRlbnRpY2FsLCBpbiBvdGhlciB3b3JkIHRoZSBwYXRobmFtZQpmcm9tIHRoZSBmaXJzdCBwYXRoIGNvbXBvbmVudCBjb250YWluaW5nIGEgJ3snIG11c3QgYmUga2VwdCBhcyBpdCBpbiB0aGUKb3V0cHV0IGZpbGVuYW1lLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGVybSI+CiAgICAgICAgICAgICAgICAgICAgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LS12ZXJib3NlIC8gLVY8L2NvZGU+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgIDxwPgpHaXZlIHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dC4KPC9wPgogICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlcm0iPgogICAgICAgICAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJvcHRpb24iPi0tdmVyc2lvbiAvIC12PC9jb2RlPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICA8cD4KU2hvdyB2ZXJzaW9uLgo8L3A+CiAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgIDwvZGw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIj48YSBpZD0iaW50ZXJwcmV0aW5nIj48L2E+Q2hhcHRlcqA1LqBJbnRlcnByZXRpbmcgcHJvZmlsaW5nIHJlc3VsdHM8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InRvYyI+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgPGI+VGFibGUgb2YgQ29udGVudHM8L2I+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8ZGw+CiAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDEiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lycS1sYXRlbmN5Ij4xLiBQcm9maWxpbmcgaW50ZXJydXB0IGxhdGVuY3k8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNrZXJuZWwtcHJvZmlsaW5nIj4yLiBLZXJuZWwgcHJvZmlsaW5nPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgIDxkdD4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QyIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaXJxLW1hc2tpbmciPjIuMS4gSW50ZXJydXB0IG1hc2tpbmc8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lkbGUiPjIuMi4gSWRsZSB0aW1lPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNrZXJuZWwtbW9kdWxlcyI+Mi4zLiBQcm9maWxpbmcga2VybmVsIG1vZHVsZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW50ZXJwcmV0aW5nLWNhbGxncmFwaCI+My4gSW50ZXJwcmV0aW5nIGNhbGwtZ3JhcGggcHJvZmlsZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlY3QxIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNkZWJ1Zy1pbmZvIj40LiBJbmFjY3VyYWNpZXMgaW4gYW5ub3RhdGVkIHNvdXJjZTwvYT4KICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICA8ZGw+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2VmZmVjdC1vZi1vcHRpbWl6YXRpb25zIj40LjEuIFNpZGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb25zPC9hPgogICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2R0PgogICAgICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VjdDIiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNwcm9sb2d1ZXMiPjQuMi4gUHJvbG9ndWVzIGFuZCBlcGlsb2d1ZXM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2lubGluZWQtZnVuY3Rpb24iPjQuMy4gSW5saW5lZCBmdW5jdGlvbnM8L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgICA8ZHQ+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3dyb25nLWxpbmVuci1pbmZvIj40LjQuIEluYWNjdXJhY3kgaW4gbGluZSBudW1iZXIgaW5mb3JtYXRpb248L2E+CiAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZHQ+CiAgICAgICAgICAgICAgPC9kbD4KICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjc3ltYm9sLXdpdGhvdXQtZGVidWctaW5mbyI+NS4gQXNzZW1ibHkgZnVuY3Rpb25zPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3ZlcmxhcHBpbmctc3ltYm9scyI+Ni4gT3ZlcmxhcHBpbmcgc3ltYm9scyBpbiBKSVRlZCBjb2RlPC9hPgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9kdD4KICAgICAgICAgICAgPGR0PgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWN0MSI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjaGlkZGVuLWNvc3QiPjcuIE90aGVyIGRpc2NyZXBhbmNpZXM8L2E+CiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2R0PgogICAgICAgICAgPC9kbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8cD4KVGhlIHN0YW5kYXJkIGNhdmVhdHMgb2YgcHJvZmlsaW5nIGFwcGx5IGluIGludGVycHJldGluZyB0aGUgcmVzdWx0cyBmcm9tIE9Qcm9maWxlOgpwcm9maWxlIHJlYWxpc3RpYyBzaXR1YXRpb25zLCBwcm9maWxlIGRpZmZlcmVudCBzY2VuYXJpb3MsIHByb2ZpbGUKZm9yIGFzIGxvbmcgYXMgYSB0aW1lIGFzIHBvc3NpYmxlLCBhdm9pZCBzeXN0ZW0tc3BlY2lmaWMgYXJ0aWZhY3RzLCBkb24ndCB0cnVzdAp0aGUgcHJvZmlsZSBkYXRhIHRvbyBtdWNoLiBBbHNvIGJlYXIgaW4gbWluZCB0aGUgY29tbWVudHMgb24gdGhlIHBlcmZvcm1hbmNlCmNvdW50ZXJzIGFib3ZlIC0geW91IDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNhbm5vdDwvZW0+PC9zcGFuPiByZWx5IG9uIHRvdGFsbHkgYWNjdXJhdGUKaW5zdHJ1Y3Rpb24tbGV2ZWwgcHJvZmlsaW5nLiAgSG93ZXZlciwgZm9yIGFsbW9zdCBhbGwgY2lyY3Vtc3RhbmNlcyB0aGUgZGF0YQpjYW4gYmUgdXNlZnVsLiBJZGVhbGx5IGEgdXRpbGl0eSBzdWNoIGFzIEludGVsJ3MgVlRVTkUgd291bGQgYmUgYXZhaWxhYmxlIHRvCmFsbG93IGNhcmVmdWwgaW5zdHJ1Y3Rpb24tbGV2ZWwgYW5hbHlzaXM7IGdvIGhhc3NsZSBJbnRlbCBmb3IgdGhpcywgbm90IG1lIDspCjwvcD4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJpcnEtbGF0ZW5jeSI+PC9hPjEuoFByb2ZpbGluZyBpbnRlcnJ1cHQgbGF0ZW5jeTwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KVGhpcyBpcyBhbiBleGFtcGxlIG9mIGhvdyB0aGUgbGF0ZW5jeSBvZiBkZWxpdmVyeSBvZiBwcm9maWxpbmcgaW50ZXJydXB0cwpjYW4gaW1wYWN0IHRoZSByZWxpYWJpbGl0eSBvZiB0aGUgcHJvZmlsaW5nIGRhdGEuIFRoaXMgaXMgcHJldHR5IG11Y2ggYSAKd29yc3QtY2FzZS1zY2VuYXJpbyBleGFtcGxlOiB0aGVzZSBwcm9ibGVtcyBhcmUgZmFpcmx5IHJhcmUuCjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgpkb3VibGUgZnVuKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMpCnsKIGRvdWJsZSByZXN1bHQgPSAwOwogZm9yIChpbnQgaSA9IDAgOyBpICZsdDsgMTAwMDA7ICsraSkgewogIHJlc3VsdCArPSBhOwogIHJlc3VsdCAqPSBiOwogIHJlc3VsdCAvPSBjOwogfQogcmV0dXJuIHJlc3VsdDsKfQo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpIZXJlIHRoZSBsYXN0IGluc3RydWN0aW9uIG9mIHRoZSBsb29wIGlzIHZlcnkgY29zdGx5LCBhbmQgeW91IHdvdWxkIGV4cGVjdCB0aGUgcmVzdWx0CnJlZmxlY3RpbmcgdGhhdCAtIGJ1dCAoY3V0dGluZyB0aGUgaW5zdHJ1Y3Rpb25zIGluc2lkZSB0aGUgbG9vcCk6CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgokIG9wYW5ub3RhdGUgLWEgLXQgMTAgLi9hLm91dAoKICAgICA4OCAxNS4zOCUgOiA4MDQ4MzM3OiAgICAgICBmYWRkICAgJXN0KDMpLCVzdAogICAgIDQ4IDguMzkxJSA6IDgwNDgzMzk6ICAgICAgIGZtdWwgICAlc3QoMiksJXN0CiAgICAgNjggMTEuODglIDogODA0ODMzYjogICAgICAgZmRpdiAgICVzdCgxKSwlc3QKICAgIDM2OCA2NC4zMyUgOiA4MDQ4MzNkOiAgICAgICBpbmMgICAgJWVheAogICAgICAgICAgICAgICA6IDgwNDgzM2U6ICAgICAgIGNtcCAgICAkMHgyNzBmLCVlYXgKICAgICAgICAgICAgICAgOiA4MDQ4MzQzOiAgICAgICBqbGUgICAgODA0ODMzNwo8L3ByZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICAgIDxwPgpUaGUgcHJvYmxlbSBjb21lcyBmcm9tIHRoZSB4ODYgaGFyZHdhcmU7IHdoZW4gdGhlIGNvdW50ZXIgb3ZlcmZsb3dzIHRoZSBJUlEKaXMgYXNzZXJ0ZWQgYnV0IHRoZSBoYXJkd2FyZSBoYXMgZmVhdHVyZXMgdGhhdCBjYW4gZGVsYXkgdGhlIE5NSSBpbnRlcnJ1cHQ6Cng4NiBoYXJkd2FyZSBpcyBzeW5jaHJvbm91cyAoaS5lLiBjYW5ub3QgaW50ZXJydXB0IGR1cmluZyBhbiBpbnN0cnVjdGlvbik7CnRoZXJlIGlzIGFsc28gYSBsYXRlbmN5IHdoZW4gdGhlIElSUSBpcyBhc3NlcnRlZCwgYW5kIHRoZSBtdWx0aXBsZQpleGVjdXRpb24gdW5pdHMgYW5kIHRoZSBvdXQtb2Ytb3JkZXIgbW9kZWwgb2YgbW9kZXJuIHg4NiBDUFVzIGFsc28gY2F1c2VzCnByb2JsZW1zLiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uLCB3aXRoIGFubm90YXRpb24gOgo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KJCBvcGFubm90YXRlIC1zIC10IDEwIC4vYS5vdXQKCiAgICAgICAgICAgICAgIDpkb3VibGUgZnVuKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMpCiAgICAgICAgICAgICAgIDp7IC8qIF9aM2Z1bmRkZCB0b3RhbDogICAgIDU3MiAxMDAuMCUgKi8KICAgICAgICAgICAgICAgOiBkb3VibGUgcmVzdWx0ID0gMDsKICAgIDM2OCA2NC4zMyUgOiBmb3IgKGludCBpID0gMCA7IGkgJmx0OyAxMDAwMDsgKytpKSB7CiAgICAgODggMTUuMzglIDogIHJlc3VsdCArPSBhOwogICAgIDQ4IDguMzkxJSA6ICByZXN1bHQgKj0gYjsKICAgICA2OCAxMS44OCUgOiAgcmVzdWx0IC89IGM7CiAgICAgICAgICAgICAgIDogfQogICAgICAgICAgICAgICA6IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgIDp9CjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+ClRoZSBjb25jbHVzaW9uOiBkb24ndCB0cnVzdCBzYW1wbGVzIGNvbWluZyBhdCB0aGUgZW5kIG9mIGEgbG9vcCwKcGFydGljdWxhcmx5IGlmIHRoZSBsYXN0IGluc3RydWN0aW9uIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgaXMgY29zdGx5LiBUaGlzCmNhc2UgY2FuIGFsc28gb2NjdXIgZm9yIGJyYW5jaGVzLiBBbHdheXMgYmVhciBpbiBtaW5kIHRoYXQgc2FtcGxlcwpjYW4gYmUgZGVsYXllZCBieSBhIGZldyBjeWNsZXMgZnJvbSBpdHMgcmVhbCBwb3NpdGlvbi4gVGhhdCdzIGEgaGFyZHdhcmUKcHJvYmxlbSBhbmQgT1Byb2ZpbGUgY2FuIGRvIG5vdGhpbmcgYWJvdXQgaXQuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJrZXJuZWwtcHJvZmlsaW5nIj48L2E+Mi6gS2VybmVsIHByb2ZpbGluZzwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJpcnEtbWFza2luZyI+PC9hPjIuMS6gSW50ZXJydXB0IG1hc2tpbmc8L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KT1Byb2ZpbGUgdXNlcyBub24tbWFza2FibGUgaW50ZXJydXB0cyAoTk1JKSBvbiB0aGUgUDYgZ2VuZXJhdGlvbiwgUGVudGl1bSA0LApBdGhsb24sIE9wdGVyb24sIFBoZW5vbSwgYW5kIFR1cmlvbiBwcm9jZXNzb3JzLiBUaGVzZSBpbnRlcnJ1cHRzIGNhbiBvY2N1ciBldmVuIGluIHNlY3Rpb24gb2YgdGhlCkxpbnV4IHdoZXJlIGludGVycnVwdHMgYXJlIGRpc2FibGVkLCBhbGxvd2luZyBjb2xsZWN0aW9uIG9mIHNhbXBsZXMgaW4gdmlydHVhbGx5CmFsbCBleGVjdXRhYmxlIGNvZGUuICBUaGUgUlRDLCB0aW1lciBpbnRlcnJ1cHQgbW9kZSwgYW5kIEl0YW5pdW0gMiBjb2xsZWN0aW9uIG1lY2hhbmlzbXMKdXNlIG1hc2thYmxlIGludGVycnVwdHMuIFRodXMsIHRoZSBSVEMgYW5kIEl0YW5pdW0gMiBkYXRhIGNvbGxlY3Rpb24gbWVjaGFuaXNtIGhhdmUgInNhbXBsZQpzaGFkb3dzIiwgb3IgYmxpbmQgc3BvdHM6IHJlZ2lvbnMgd2hlcmUgbm8gc2FtcGxlcyB3aWxsIGJlIGNvbGxlY3RlZC4gVHlwaWNhbGx5LCB0aGUgc2FtcGxlcwp3aWxsIGJlIGF0dHJpYnV0ZWQgdG8gdGhlIGNvZGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGludGVycnVwdHMgYXJlIHJlLWVuYWJsZWQuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iaWRsZSI+PC9hPjIuMi6gSWRsZSB0aW1lPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+CllvdXIga2VybmVsIGlzIGxpa2VseSB0byBzdXBwb3J0IGhhbHRpbmcgdGhlIHByb2Nlc3NvciB3aGVuIGEgQ1BVIGlzIGlkbGUuIEFzCnRoZSB0eXBpY2FsIGhhcmR3YXJlIGV2ZW50cyBsaWtlIDxjb2RlIGNsYXNzPSJjb25zdGFudCI+Q1BVX0NMS19VTkhBTFRFRDwvY29kZT4gZG8gbm90CmNvdW50IHdoZW4gdGhlIENQVSBpcyBoYWx0ZWQsIHRoZSBrZXJuZWwgcHJvZmlsZSB3aWxsIG5vdCByZWZsZWN0IHRoZSBhY3R1YWwKYW1vdW50IG9mIHRpbWUgc3BlbnQgaWRsZS4gWW91IGNhbiBjaGFuZ2UgdGhpcyBiZWhhdmlvdXIgYnkgYm9vdGluZyB3aXRoCnRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj5pZGxlPXBvbGw8L2NvZGU+IG9wdGlvbiwgd2hpY2ggdXNlcyBhIGRpZmZlcmVudCBpZGxlIHJvdXRpbmUuIFRoaXMKd2lsbCBhcHBlYXIgYXMgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5wb2xsX2lkbGUoKTwvY29kZT4gaW4geW91ciBrZXJuZWwgcHJvZmlsZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJrZXJuZWwtbW9kdWxlcyI+PC9hPjIuMy6gUHJvZmlsaW5nIGtlcm5lbCBtb2R1bGVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+Ck9Qcm9maWxlIHByb2ZpbGVzIGtlcm5lbCBtb2R1bGVzIGJ5IGRlZmF1bHQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBwcm9ibGVtcwp5b3UgbWF5IGhhdmUgd2hlbiB0cnlpbmcgdG8gZ2V0IHJlc3VsdHMuIEZpcnN0LCB5b3UgbWF5IGhhdmUgYm9vdGVkIHZpYSBhbiBpbml0cmQ7CnRoaXMgbWVhbnMgdGhhdCB0aGUgYWN0dWFsIHBhdGggZm9yIHRoZSBtb2R1bGUgYmluYXJpZXMgY2Fubm90IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseS4KVG8gZ2V0IGFyb3VuZCB0aGlzLCB5b3UgY2FuIHVzZSB0aGUgPGNvZGUgY2xhc3M9Im9wdGlvbiI+LXA8L2NvZGU+IG9wdGlvbiB0byB0aGUgcHJvZmlsaW5nIHRvb2xzCnRvIHNwZWNpZnkgd2hlcmUgdG8gbG9vayBmb3IgdGhlIGtlcm5lbCBtb2R1bGVzLgo8L3A+CiAgICAgICAgICAgIDxwPgpJbiAyLjYsIHRoZSBpbmZvcm1hdGlvbiBvbiB3aGVyZSBrZXJuZWwgbW9kdWxlIGJpbmFyaWVzIGFyZSBsb2NhdGVkIGhhcyBiZWVuIHJlbW92ZWQuClRoaXMgbWVhbnMgT1Byb2ZpbGUgbmVlZHMgZ3VpZGluZyB3aXRoIHRoZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tcDwvY29kZT4gb3B0aW9uIHRvIGZpbmQgeW91cgptb2R1bGVzLiBOb3JtYWxseSwgeW91IGNhbiBqdXN0IHVzZSB5b3VyIHN0YW5kYXJkIG1vZHVsZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IGZvciB0aGlzLgpOb3RlIHRoYXQgZHVlIHRvIHRoaXMgcHJvYmxlbSwgT1Byb2ZpbGUgY2Fubm90IGNoZWNrIHRoYXQgdGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBtYXRjaDsKaXQgaXMgeW91ciByZXNwb25zaWJpbGl0eSB0byBtYWtlIHN1cmUgeW91IGRvIG5vdCBtb2RpZnkgYSBiaW5hcnkgYWZ0ZXIgYSBwcm9maWxlCmhhcyBiZWVuIGNyZWF0ZWQuCjwvcD4KICAgICAgICAgICAgPHA+CklmIHlvdSBoYXZlIHJ1biA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5pbnNtb2Q8L3N0cm9uZz48L3NwYW4+IG9yIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm1vZHByb2JlPC9zdHJvbmc+PC9zcGFuPiB0byBpbnNlcnQgYSBtb2R1bGUKaW4gYSBwYXJ0aWN1bGFyIGRpcmVjdG9yeSwgaXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IHNwZWNpZnkgdGhpcyBkaXJlY3Rvcnkgd2l0aCB0aGUgCjxjb2RlIGNsYXNzPSJvcHRpb24iPi1wPC9jb2RlPiBvcHRpb24gZmlyc3QsIHNvIHRoYXQgaXQgb3Zlci1yaWRlcyBhbiBvbGRlciBtb2R1bGUgYmluYXJ5IHRoYXQgbWlnaHQKZXhpc3QgaW4gb3RoZXIgZGlyZWN0b3JpZXMgeW91J3ZlIHNwZWNpZmllZCB3aXRoIDxjb2RlIGNsYXNzPSJvcHRpb24iPi1wPC9jb2RlPi4gSXQgaXMgdXAgdG8geW91CnRvIG1ha2Ugc3VyZSB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgY29ycmVjdDogMi42IGtlcm5lbHMgc2ltcGx5IGRvIG5vdCBwcm92aWRlIGVub3VnaAppbmZvcm1hdGlvbiBmb3IgT1Byb2ZpbGUgdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb24uCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9ImludGVycHJldGluZy1jYWxsZ3JhcGgiPjwvYT4zLqBJbnRlcnByZXRpbmcgY2FsbC1ncmFwaCBwcm9maWxlczwvaDI+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cD4KU29tZXRpbWVzIHRoZSByZXN1bHRzIGZyb20gY2FsbC1ncmFwaCBwcm9maWxlcyBtYXkgYmUgZGlmZmVyZW50IHRvIHdoYXQKeW91IGV4cGVjdCB0byBzZWUuIFRoZSBmaXJzdCB0aGluZyB0byBjaGVjayBpcyB3aGV0aGVyIHRoZSB0YXJnZXQKYmluYXJpZXMgd2hlcmUgY29tcGlsZWQgd2l0aCBmcmFtZSBwb2ludGVycyBlbmFibGVkIChpZiB0aGUgYmluYXJ5IHdhcwpjb21waWxlZCB1c2luZyA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5nY2M8L3N0cm9uZz48L3NwYW4+J3MKPGNvZGUgY2xhc3M9Im9wdGlvbiI+LWZvbWl0LWZyYW1lLXBvaW50ZXI8L2NvZGU+IG9wdGlvbiwgeW91IHdpbGwgbm90IGdldAptZWFuaW5nZnVsIHJlc3VsdHMpLiBOb3RlIHRoYXQgYXMgb2YgdGhpcyB3cml0aW5nLCB0aGUgR0NDIGRldmVsb3BlcnMKcGxhbiB0byBkaXNhYmxlIGZyYW1lIHBvaW50ZXJzIGJ5IGRlZmF1bHQuIFRoZSBMaW51eCBrZXJuZWwgaXMgYnVpbHQKd2l0aG91dCBmcmFtZSBwb2ludGVycyBieSBkZWZhdWx0OyB0aGVyZSBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHlvdQpjYW4gdXNlIHRvIHR1cm4gaXQgb24gdW5kZXIgdGhlICJLZXJuZWwgSGFja2luZyIgbWVudS4KPC9wPgogICAgICAgICAgPHA+Ck9mdGVuIHlvdSBtYXkgc2VlIGEgY2FsbGVyIG9mIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBhY3R1YWxseSBkaXJlY3RseQpjYWxsIHRoZSBmdW5jdGlvbiB5b3UncmUgbG9va2luZyBhdCAoZS5nLiBpZiA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmEoKTwvY29kZT4KY2FsbHMgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5iKCk8L2NvZGU+LCB3aGljaCBpbiB0dXJuIGNhbGxzCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YygpPC9jb2RlPiwgeW91IG1heSBzZWUgYW4gZW50cnkgZm9yCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YSgpLSZndDtjKCk8L2NvZGU+KS4gIFdoYXQncyBhY3R1YWxseSBvY2N1cnJpbmcgaXMgdGhhdCB3ZQphcmUgdGFraW5nIHNhbXBsZXMgYXQgdGhlIHZlcnkgc3RhcnQgKG9yIHRoZSB2ZXJ5IGVuZCkgb2YKPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5jKCk8L2NvZGU+OyBhdCB0aGVzZSBmZXcgaW5zdHJ1Y3Rpb25zLCB3ZSBoYXZlbid0IHlldApjcmVhdGVkIHRoZSBuZXcgZnVuY3Rpb24ncyBmcmFtZSwgc28gaXQgYXBwZWFycyBhcyBpZgo8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmEoKTwvY29kZT4gaXMgY2FsbGluZyBkaXJlY3RseSBpbnRvCjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+YygpPC9jb2RlPi4gQmUgY2FyZWZ1bCBub3QgdG8gYmUgbWlzbGVkIGJ5IHRoZXNlCmVudHJpZXMuCjwvcD4KICAgICAgICAgIDxwPgpMaWtlIHRoZSByZXN0IG9mIE9Qcm9maWxlLCBjYWxsLWdyYXBoIHByb2ZpbGluZyB1c2VzIGEgc3RhdGlzdGljYWwKYXBwcm9hY2g7IHRoaXMgbWVhbnMgdGhhdCBzb21ldGltZXMgYSBiYWNrdHJhY2Ugc2FtcGxlIGlzIHRydW5jYXRlZCwgb3IKZXZlbiBwYXJ0aWFsbHkgd3JvbmcuIEJlYXIgdGhpcyBpbiBtaW5kIHdoZW4gZXhhbWluaW5nIHJlc3VsdHMuCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPjxhIGlkPSJkZWJ1Zy1pbmZvIj48L2E+NC6gSW5hY2N1cmFjaWVzIGluIGFubm90YXRlZCBzb3VyY2U8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0iZWZmZWN0LW9mLW9wdGltaXphdGlvbnMiPjwvYT40LjEuoFNpZGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb25zPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+ClRoZSBjb21waWxlciBjYW4gaW50cm9kdWNlIHNvbWUgcGl0ZmFsbHMgaW4gdGhlIGFubm90YXRlZCBzb3VyY2Ugb3V0cHV0LgpUaGUgb3B0aW1pemVyIGNhbiBtb3ZlIHBpZWNlcyBvZiBjb2RlIGluIHN1Y2ggbWFubmVyIHRoYXQgdHdvIGxpbmUgb2YgY29kZXMKYXJlIGludGVybGFjZWQgKGluc3RydWN0aW9uIHNjaGVkdWxpbmcpLiBBbHNvIGRlYnVnIGluZm8gZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciAKY2FuIHNob3cgc3RyYW5nZSBiZWhhdmlvci4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgZm9yIGNvbXBsZXggZXhwcmVzc2lvbnMgZS5nLiBpbnNpZGUKYW4gaWYgc3RhdGVtZW50Ogo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgoJaWYgKGEgJmFtcDsmYW1wOyAuLgoJICAgIGIgJmFtcDsmYW1wOyAuLgoJICAgIGMgJmFtcDsmYW1wOykKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpoZXJlIHRoZSBwcm9ibGVtIGNvbWUgZnJvbSB0aGUgcG9zaXRpb24gb2YgbGluZSBudW1iZXIuIFRoZSBhdmFpbGFibGUgZGVidWcKaW5mbyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkZXRhaWxzIGZvciB0aGUgaWYgY29uZGl0aW9uLCBzbyBhbGwgc2FtcGxlcyBhcmUKYWNjdW11bGF0ZWQgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSByaWdodCBicmFjZSBvZiB0aGUgZXhwcmVzc2lvbi4gVXNpbmcKPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZSA8Y29kZSBjbGFzcz0ib3B0aW9uIj4tYTwvY29kZT48L3N0cm9uZz48L3NwYW4+IGNhbiBoZWxwIHRvIHNob3cgdGhlIHJlYWwKc2FtcGxlcyBhdCBhbiBhc3NlbWJseSBsZXZlbC4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJwcm9sb2d1ZXMiPjwvYT40LjIuoFByb2xvZ3VlcyBhbmQgZXBpbG9ndWVzPC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHA+ClRoZSBjb21waWxlciBnZW5lcmFsbHkgbmVlZHMgdG8gZ2VuZXJhdGUgImdsdWUiIGNvZGUgYWNyb3NzIGZ1bmN0aW9uIGNhbGxzLCBkZXBlbmRlbnQKb24gdGhlIHBhcnRpY3VsYXIgZnVuY3Rpb24gY2FsbCBjb252ZW50aW9ucyB1c2VkLiBBZGRpdGlvbmFsbHkgb3RoZXIgdGhpbmdzCm5lZWQgdG8gaGFwcGVuLCBsaWtlIHN0YWNrIHBvaW50ZXIgYWRqdXN0bWVudCBmb3IgdGhlIGxvY2FsIHZhcmlhYmxlczsgdGhpcwpjb2RlIGlzIGtub3duIGFzIHRoZSBmdW5jdGlvbiBwcm9sb2d1ZS4gU2ltaWxhciBjb2RlIGlzIG5lZWRlZCBhdCBmdW5jdGlvbiByZXR1cm4sCmFuZCBpcyBrbm93biBhcyB0aGUgZnVuY3Rpb24gZXBpbG9ndWUuIFRoaXMgd2lsbCBzaG93IHVwIGluIGFubm90YXRpb25zIGFzCnNhbXBsZXMgYXQgdGhlIHZlcnkgc3RhcnQgYW5kIGVuZCBvZiBhIGZ1bmN0aW9uLCB3aGVyZSB0aGVyZSBpcyBubyBhcHBhcmVudApleGVjdXRhYmxlIGNvZGUgaW4gdGhlIHNvdXJjZS4KPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iIHhtbDpsYW5nPSJlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPjxhIGlkPSJpbmxpbmVkLWZ1bmN0aW9uIj48L2E+NC4zLqBJbmxpbmVkIGZ1bmN0aW9uczwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxwPgpZb3UgbWF5IHNlZSB0aGF0IGEgZnVuY3Rpb24gaXMgY3JlZGl0ZWQgd2l0aCBhIGNlcnRhaW4gbnVtYmVyIG9mIHNhbXBsZXMsIGJ1dAp0aGUgbGlzdGluZyBkb2VzIG5vdCBhZGQgdXAgdG8gdGhlIGNvcnJlY3QgdG90YWwuIFRvIHBpY2sgYSByZWFsIGV4YW1wbGUgOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgogICAgICAgICAgICAgICA6aW50ZXJuYWxfc2tfYnVmZl9hbGxvY19zZWN1cml0eShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogMzUzIDIuMzQyJSAgICA6eyAvKiBpbnRlcm5hbF9za19idWZmX2FsbG9jX3NlY3VyaXR5IHRvdGFsOiAxODgyIDEyLjQ4JSAqLwogICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgIDogICAgICAgIHNrX2J1ZmZfc2VjdXJpdHlfdCAqc2tzZWM7CiAgMTUgMC4wOTk1JSAgIDogICAgICAgIGludCByYyA9IDA7CiAgICAgICAgICAgICAgIDoKICAxMCAwLjA2NjMzJSAgOiAgICAgICAgc2tzZWMgPSBza2ItJmd0O2xzbV9zZWN1cml0eTsKIDQ2OCAzLjEwNCUgICAgOiAgICAgICAgaWYgKHNrc2VjICZhbXA7JmFtcDsgc2tzZWMtJmd0O21hZ2ljID09IERTSV9NQUdJQykgewogICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICA6ICAgICAgICB9CiAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgOiAgICAgICAgc2tzZWMgPSAoc2tfYnVmZl9zZWN1cml0eV90ICopIGdldF9za19idWZmX21lbW9yeShza2IpOwogICAzIDAuMDE5OSUgICA6ICAgICAgICBpZiAoIXNrc2VjKSB7CiAgMzggMC4yNTIxJSAgIDogICAgICAgICAgICAgICAgcmMgPSAtRU5PTUVNOwogICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogIDEwIDAuMDY2MzMlICA6ICAgICAgICB9CiAgICAgICAgICAgICAgIDogICAgICAgIG1lbXNldChza3NlYywgMCwgc2l6ZW9mIChza19idWZmX3NlY3VyaXR5X3QpKTsKICA0NCAwLjI5MTklICAgOiAgICAgICAgc2tzZWMtJmd0O21hZ2ljID0gRFNJX01BR0lDOwogIDMyIDAuMjEyMyUgICA6ICAgICAgICBza3NlYy0mZ3Q7c2tiID0gc2tiOwogIDQ1IDAuMjk4NSUgICA6ICAgICAgICBza3NlYy0mZ3Q7c2lkID0gRFNJX1NJRF9OT1JNQUw7CiAgMzEgMC4yMDU2JSAgIDogICAgICAgIHNrYi0mZ3Q7bHNtX3NlY3VyaXR5ID0gc2tzZWM7CiAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgOiAgICAgIG91dDoKICAgICAgICAgICAgICAgOgogMTQ2IDAuOTY4NSUgICA6ICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgICAgICAgIDoKICA5OCAwLjY1MDElICAgOn0KPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpIZXJlLCB0aGUgZnVuY3Rpb24gaXMgY3JlZGl0ZWQgd2l0aCAxLDg4MiBzYW1wbGVzLCBidXQgdGhlIGFubm90YXRpb25zCmJlbG93IGRvIG5vdCBhY2NvdW50IGZvciB0aGlzLiBUaGlzIGlzIHVzdWFsbHkgYmVjYXVzZSBvZiBpbmxpbmUgZnVuY3Rpb25zIC0KdGhlIGNvbXBpbGVyIG1hcmtzIHN1Y2ggY29kZSB3aXRoIGRlYnVnIGVudHJpZXMgZm9yIHRoZSBpbmxpbmUgZnVuY3Rpb24KZGVmaW5pdGlvbiwgYW5kIHRoaXMgaXMgd2hlcmUgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3Bhbm5vdGF0ZTwvc3Ryb25nPjwvc3Bhbj4gYW5ub3RhdGVzCnN1Y2ggc2FtcGxlcy4gSW4gdGhlIGNhc2UgYWJvdmUsIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+bWVtc2V0PC9jb2RlPiBpcyB0aGUgbW9zdApsaWtlbHkgY2FuZGlkYXRlIGZvciB0aGlzIHByb2JsZW0uIEV4YW1pbmluZyB0aGUgbWl4ZWQgc291cmNlL2Fzc2VtYmx5Cm91dHB1dCBjYW4gaGVscCBpZGVudGlmeSBzdWNoIHJlc3VsdHMuCjwvcD4KICAgICAgICAgICAgPHA+ClRoaXMgcHJvYmxlbSBpcyBtb3JlIHZpc2libGUgd2hlbiB0aGVyZSBpcyBubyBzb3VyY2UgZmlsZSBhdmFpbGFibGUsIGluIHRoZQpmb2xsb3dpbmcgZXhhbXBsZSBpdCdzIHRyaXZpYWxseSB2aXNpYmxlIHRoZSBzdW1zIG9mIHN5bWJvbHMgc2FtcGxlcyBpcyBsZXNzCnRoYW4gdGhlIG51bWJlciBvZiB0aGUgc2FtcGxlcyBmb3IgdGhpcyBmaWxlLiBUaGUgZGlmZmVyZW5jZSBtdXN0IGJlIGFjY291bnRlZAp0byBpbmxpbmUgZnVuY3Rpb25zLgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgovKgogKiBUb3RhbCBzYW1wbGVzIGZvciBmaWxlIDogImFyY2gvaTM4Ni9rZXJuZWwvcHJvY2Vzcy5jIgogKgogKiAgICAxMDkgIDIuNDYxNgogKi8KCiAvKiBkZWZhdWx0X2lkbGUgdG90YWw6ICAgICA4NCAgMS44OTcwICovCiAvKiBjcHVfaWRsZSB0b3RhbDogICAgICAgICAyMSAgMC40NzQzICovCiAvKiBmbHVzaF90aHJlYWQgdG90YWw6ICAgICAgMSAgMC4wMjI2ICovCiAvKiBwcmVwYXJlX3RvX2NvcHkgdG90YWw6ICAgMSAgMC4wMjI2ICovCiAvKiBfX3N3aXRjaF90byB0b3RhbDogICAgICAxOCAgMC40MDY1ICovCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KVGhlIG1pc3Npbmcgc2FtcGxlcyBhcmUgbm90IGxvc3QsIHRoZXkgd2lsbCBiZSBjcmVkaXRlZCB0byBhbm90aGVyIHNvdXJjZQpsb2NhdGlvbiB3aGVyZSB0aGUgaW5saW5lZCBmdW5jdGlvbiBpcyBkZWZpbmVkLiBUaGUgaW5saW5lZCBmdW5jdGlvbiB3aWxsIGJlCmNyZWRpdGVkIGZyb20gbXVsdGlwbGUgY2FsbCBzaXRlIGFuZCBtZXJnZWQgaW4gb25lIHBsYWNlIGluIHRoZSBhbm5vdGF0ZWQKc291cmNlIGZpbGUgc28gdGhlcmUgaXMgbm8gd2F5IHRvIHNlZSBmcm9tIHdoYXQgY2FsbCBzaXRlIGFyZSBjb21pbmcgdGhlCnNhbXBsZXMgZm9yIGFuIGlubGluZWQgZnVuY3Rpb24uCjwvcD4KICAgICAgICAgICAgPHA+CldoZW4gcnVubmluZyA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFubm90YXRlPC9zdHJvbmc+PC9zcGFuPiwgeW91IG1heSBnZXQgYSB3YXJuaW5nCiJzb21lIGZ1bmN0aW9ucyBjb21waWxlZCB3aXRob3V0IGRlYnVnIGluZm9ybWF0aW9uIG1heSBoYXZlIGluY29ycmVjdCBzb3VyY2UgbGluZSBhdHRyaWJ1dGlvbnMiLgpJbiBzb21lIHJhcmUgY2FzZXMsIE9Qcm9maWxlIGlzIG5vdCBhYmxlIHRvIHZlcmlmeSB0aGF0IHRoZSBkZXJpdmVkIHNvdXJjZSBsaW5lCmlzIGNvcnJlY3QgKHdoZW4gc29tZSBwYXJ0cyBvZiB0aGUgYmluYXJ5IGltYWdlIGFyZSBjb21waWxlZCB3aXRob3V0IGRlYnVnZ2luZwppbmZvcm1hdGlvbikuIEJlIHdhcnkgb2YgcmVzdWx0cyBpZiB0aGlzIHdhcm5pbmcgYXBwZWFycy4KPC9wPgogICAgICAgICAgICA8cD4KRnVydGhlcm1vcmUsIGZvciBzb21lIGxhbmd1YWdlcyB0aGUgY29tcGlsZXIgY2FuIGltcGxpY2l0bHkgZ2VuZXJhdGUgZnVuY3Rpb25zLApzdWNoIGFzIGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvcnMuIFN1Y2ggZnVuY3Rpb25zIGFyZSBsYWJlbGxlZCBieSB0aGUgY29tcGlsZXIKYXMgaGF2aW5nIGEgbGluZSBudW1iZXIgb2YgMCwgd2hpY2ggbWVhbnMgdGhlIHNvdXJjZSBhbm5vdGF0aW9uIGNhbiBiZSBjb25mdXNpbmcuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj48YSBpZD0id3JvbmctbGluZW5yLWluZm8iPjwvYT40LjQuoEluYWNjdXJhY3kgaW4gbGluZSBudW1iZXIgaW5mb3JtYXRpb248L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cD4KRGVwZW5kaW5nIG9uIHlvdXIgY29tcGlsZXIgeW91IGNhbiBmYWxsIGludG8gdGhlIGZvbGxvd2luZyBwcm9ibGVtOgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgpzdHJ1Y3QgYmlnX29iamVjdCB7IGludCBhWzUwMF07IH07CgppbnQgbWFpbigpCnsKCWJpZ19vYmplY3QgYSwgYjsKCWZvciAoaW50IGkgPSAwIDsgaSAhPSAxMDAwICogMTAwMDsgKytpKQoJCWIgPSBhOwoJcmV0dXJuIDA7Cn0KCjwvcHJlPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8cD4KQ29tcGlsZWQgd2l0aCA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5nY2M8L3N0cm9uZz48L3NwYW4+IDMuMC40IHRoZSBhbm5vdGF0ZWQgc291cmNlIGlzIGNsZWFybHkgaW5hY2N1cmF0ZToKPC9wPgogICAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KICAgICAgICAgICAgICAgOmludCBtYWluKCkKICAgICAgICAgICAgICAgOnsgIC8qIG1haW4gdG90YWw6IDc4NzEgMTAwJSAqLwogICAgICAgICAgICAgICA6ICAgICAgICBiaWdfb2JqZWN0IGEsIGI7CiAgICAgICAgICAgICAgIDogICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSAhPSAxMDAwICogMTAwMDsgKytpKQogICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgIGIgPSBhOwogNzg3MSAxMDAlICAgICA6ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgOn0KPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpUaGUgcHJvYmxlbSBoZXJlIGlzIGRpc3RpbmN0IGZyb20gdGhlIElSUSBsYXRlbmN5IHByb2JsZW07IHRoZSBkZWJ1ZyBsaW5lIG51bWJlcgppbmZvcm1hdGlvbiBpcyBub3QgcHJlY2lzZSBlbm91Z2g7IGFnYWluLCBsb29raW5nIGF0IG91dHB1dCBvZiA8c3Bhbj48c3Ryb25nIGNsYXNzPSJjb21tYW5kIj5vcGFubm9hdGF0ZSAtYXM8L3N0cm9uZz48L3NwYW4+IGNhbiBoZWxwLgo8L3A+CiAgICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgogICAgICAgICAgICAgICA6aW50IG1haW4oKQogICAgICAgICAgICAgICA6ewogICAgICAgICAgICAgICA6ICAgICAgICBiaWdfb2JqZWN0IGEsIGI7CiAgICAgICAgICAgICAgIDogICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSAhPSAxMDAwICogMTAwMDsgKytpKQogICAgICAgICAgICAgICA6IDgwNDg0YzA6ICAgICAgIHB1c2ggICAlZWJwCiAgICAgICAgICAgICAgIDogODA0ODRjMTogICAgICAgbW92ICAgICVlc3AsJWVicAogICAgICAgICAgICAgICA6IDgwNDg0YzM6ICAgICAgIHN1YiAgICAkMHhmYWMsJWVzcAogICAgICAgICAgICAgICA6IDgwNDg0Yzk6ICAgICAgIHB1c2ggICAlZWRpCiAgICAgICAgICAgICAgIDogODA0ODRjYTogICAgICAgcHVzaCAgICVlc2kKICAgICAgICAgICAgICAgOiA4MDQ4NGNiOiAgICAgICBwdXNoICAgJWVieAogICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgIGIgPSBhOwogICAgICAgICAgICAgICA6IDgwNDg0Y2M6ICAgICAgIGxlYSAgICAweGZmZmZmMDYwKCVlYnApLCVlZHgKICAgICAgICAgICAgICAgOiA4MDQ4NGQyOiAgICAgICBsZWEgICAgMHhmZmZmZjgzMCglZWJwKSwlZWF4CiAgICAgICAgICAgICAgIDogODA0ODRkODogICAgICAgbW92ICAgICQweGY0MjNmLCVlYngKICAgICAgICAgICAgICAgOiA4MDQ4NGRkOiAgICAgICBsZWEgICAgMHgwKCVlc2kpLCVlc2kKICAgICAgICAgICAgICAgOiAgICAgICAgcmV0dXJuIDA7CiAgICAzIDAuMDM4MTElIDogODA0ODRlMDogICAgICAgbW92ICAgICVlZHgsJWVkaQogICAgICAgICAgICAgICA6IDgwNDg0ZTI6ICAgICAgIG1vdiAgICAlZWF4LCVlc2kKICAgIDEgMC4wMTI3JSAgOiA4MDQ4NGU0OiAgICAgICBjbGQKICAgIDggMC4xMDE2JSAgOiA4MDQ4NGU1OiAgICAgICBtb3YgICAgJDB4MWY0LCVlY3gKIDc4NTAgOTkuNzMlICAgOiA4MDQ4NGVhOiAgICAgICByZXB6IG1vdnNsICVkczooJWVzaSksJWVzOiglZWRpKQogICAgOSAwLjExNDMlICA6IDgwNDg0ZWM6ICAgICAgIGRlYyAgICAlZWJ4CiAgICAgICAgICAgICAgIDogODA0ODRlZDogICAgICAgam5zICAgIDgwNDg0ZTAKICAgICAgICAgICAgICAgOiA4MDQ4NGVmOiAgICAgICB4b3IgICAgJWVheCwlZWF4CiAgICAgICAgICAgICAgIDogODA0ODRmMTogICAgICAgcG9wICAgICVlYngKICAgICAgICAgICAgICAgOiA4MDQ4NGYyOiAgICAgICBwb3AgICAgJWVzaQogICAgICAgICAgICAgICA6IDgwNDg0ZjM6ICAgICAgIHBvcCAgICAlZWRpCiAgICAgICAgICAgICAgIDogODA0ODRmNDogICAgICAgbGVhdmUKICAgICAgICAgICAgICAgOiA4MDQ4NGY1OiAgICAgICByZXQKPC9wcmU+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDxwPgpTbyBoZXJlIGl0J3MgY2xlYXIgdGhhdCBjb3B5aW5nIGlzIGNvcnJlY3RseSBjcmVkaXRlZCB3aXRoIG9mIGFsbCB0aGUgc2FtcGxlcywgYnV0IHRoZQpsaW5lIG51bWJlciBpbmZvcm1hdGlvbiBpcyBtaXNwbGFjZWQuIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9iamR1bXAgLWRTPC9zdHJvbmc+PC9zcGFuPiBleHBvc2VzIHRoZQpzYW1lIHByb2JsZW0uIE5vdGUgdGhhdCBtYWludGFpbmluZyBhY2N1cmF0ZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgY29tcGlsZXJzIHdoZW4gb3B0aW1pemluZyBpcyBkaWZmaWN1bHQsIHNvIHRoaXMgcHJvYmxlbSBpcyBub3Qgc3VwcmlzaW5nLgpUaGUgcHJvYmxlbSBvZiBkZWJ1ZyBpbmZvcm1hdGlvbgphY2N1cmFjeSBpcyBhbHNvIGRlcGVuZGVudCBvbiB0aGUgYmludXRpbHMgdmVyc2lvbiB1c2VkOyBzb21lIEJGRCBsaWJyYXJ5IHZlcnNpb25zCmNvbnRhaW4gYSB3b3JrLWFyb3VuZCBmb3Iga25vd24gcHJvYmxlbXMgb2YgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Z2NjPC9zdHJvbmc+PC9zcGFuPiwgc29tZSBvdGhlcnMgZG8gbm90LiBUaGlzIGlzIHVuZm9ydHVuYXRlIGJ1dCB3ZSBtdXN0IGxpdmUgd2l0aCB0aGF0LApzaW5jZSBwcm9maWxpbmcgaXMgcG9pbnRsZXNzIHdoZW4geW91IGRpc2FibGUgb3B0aW1pc2F0aW9uICh3aGljaCB3b3VsZCBnaXZlIGJldHRlciBkZWJ1Z2dpbmcgZW50cmllcykuCjwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9InN5bWJvbC13aXRob3V0LWRlYnVnLWluZm8iPjwvYT41LqBBc3NlbWJseSBmdW5jdGlvbnM8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+Ck9mdGVuIHRoZSBhc3NlbWJsZXIgY2Fubm90IGdlbmVyYXRlIGRlYnVnIGluZm9ybWF0aW9uIGF1dG9tYXRpY2FsbHkuClRoaXMgbWVhbnMgdGhhdCB5b3UgY2Fubm90IGdldCBhIHNvdXJjZSByZXBvcnQgdW5sZXNzIAp5b3UgbWFudWFsbHkgZGVmaW5lIHRoZSBuZWNjZXNzYXJ5IGRlYnVnIGluZm9ybWF0aW9uOyByZWFkIHlvdXIgYXNzZW1ibGVyIGRvY3VtZW50YXRpb24gZm9yIGhvdyB5b3UgbWlnaHQKZG8gdGhhdC4gVGhlIG9ubHkKZGVidWdnaW5nIGluZm8gbmVlZGVkIGN1cnJlbnRseSBieSBPUHJvZmlsZSBpcyB0aGUgbGluZS1udW1iZXIvZmlsZW5hbWUtVk1BIGFzc29jaWF0aW9uLiBXaGVuIHByb2ZpbGluZyBhc3NlbWJseQp3aXRob3V0IGRlYnVnZ2luZyBpbmZvIHlvdSBjYW4gYWx3YXlzIGdldCByZXBvcnQgZm9yIHN5bWJvbHMsIGFuZCBvcHRpb25hbGx5IGZvciBWTUEsIHRocm91Z2ggPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+b3ByZXBvcnQgLWw8L3N0cm9uZz48L3NwYW4+Cm9yIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm9wcmVwb3J0IC1kPC9zdHJvbmc+PC9zcGFuPiwgYnV0IHRoaXMgd29ya3Mgb25seSBmb3Igc3ltYm9scyB3aXRoIHRoZSByaWdodCBhdHRyaWJ1dGVzLgpGb3IgPHNwYW4+PHN0cm9uZyBjbGFzcz0iY29tbWFuZCI+Z2FzPC9zdHJvbmc+PC9zcGFuPiB5b3UgY2FuIGdldCB0aGlzIGJ5CjwvcD4KICAgICAgICAgIDx0YWJsZSB4bWxucz0iIiBib3JkZXI9IjAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjRTBFMEUwOyIgd2lkdGg9IjkwJSI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPSJzY3JlZW4iPgouZ2xvYmwgZm9vCgkudHlwZQlmb28sQGZ1bmN0aW9uCjwvcHJlPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgPHA+IAp3aGlsc3QgZm9yIDxzcGFuPjxzdHJvbmcgY2xhc3M9ImNvbW1hbmQiPm5hc208L3N0cm9uZz48L3NwYW4+IHlvdSBtdXN0IHVzZQo8L3A+CiAgICAgICAgICA8dGFibGUgeG1sbnM9IiIgYm9yZGVyPSIwIiBzdHlsZT0iYmFja2dyb3VuZDogI0UwRTBFMDsiIHdpZHRoPSI5MCUiPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHByZSBjbGFzcz0ic2NyZWVuIj4KCSAgR0xPQkFMIGZvbzpmdW5jdGlvbgkJOyBbMV0KPC9wcmU+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICA8cD4KTm90ZSB0aGF0IE9Qcm9maWxlIGRvZXMgbm90IG5lZWQgdGhlIGdsb2JhbCBhdHRyaWJ1dGUsIG9ubHkgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZS4KPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiIgeG1sOmxhbmc9ImVuIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgaWQ9Im92ZXJsYXBwaW5nLXN5bWJvbHMiPjwvYT42LqBPdmVybGFwcGluZyBzeW1ib2xzIGluIEpJVGVkIGNvZGU8L2gyPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHA+CglTb21lIHZpcnR1YWwgbWFjaGluZXMgKGUuZy4sIEphdmEpIG1heSByZS1KSVQgYSBtZXRob2QsIHJlc3VsdGluZyBpbiBwcmV2aW91c2x5CglhbGxvY2F0ZWQgc3BhY2UgZm9yIGEgcGllY2Ugb2YgY29tcGlsZWQgY29kZSB0byBiZSByZXVzZWQuIFRoaXMgbWVhbnMgdGhhdCwgYXQgb25lIGRpc3RpbmN0Cgljb2RlIGFkZHJlc3MsIG11bHRpcGxlIHN5bWJvbHMvbWV0aG9kcyBtYXkgYmUgcHJlc2VudCBkdXJpbmcgdGhlIHJ1biB0aW1lIG9mIHRoZSBhcHBsaWNhdGlvbi4KCTwvcD4KICAgICAgICAgIDxwPgoJU2luY2UgT1Byb2ZpbGUgc2FtcGxlcyBhcmUgYnVmZmVyZWQgYW5kIGRvbiYjODI0Mjt0IGhhdmUgdGltaW5nIGluZm9ybWF0aW9uLCB0aGVyZSBpcyBubyB3YXkKCXRvIGNvcnJlbGF0ZSBzYW1wbGVzIHdpdGggdGhlIChwb3NzaWJseSkgdmFyeWluZyBhZGRyZXNzIHJhbmdlcyBpbiB3aGljaCB0aGUgY29kZSBmb3IgYSBzeW1ib2wKCW1heSByZXNpZGUuCglBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSBmbHVzaGluZyB0aGUgT1Byb2ZpbGUgc2FtcGxpbmcgYnVmZmVyIHdoZW4gd2UgZ2V0IGFuIHVubG9hZCBldmVudCwKCWJ1dCB0aGlzIGNvdWxkIHJlc3VsdCBpbiBoaWdoIG92ZXJoZWFkLgoJPC9wPgogICAgICAgICAgPHA+CglUbyBtb2RlcmF0ZSB0aGUgcHJvYmxlbSBvZiBvdmVybGFwcGluZyBzeW1ib2xzLCBPUHJvZmlsZSB0cmllcyB0byBzZWxlY3QgdGhlIHN5bWJvbCB0aGF0IHdhcwoJcHJlc2VudCBhdCB0aGlzIGFkZHJlc3MgcmFuZ2UgbW9zdCBvZiB0aGUgdGltZS4gQWRkaXRpb25hbGx5LCBvdGhlciBvdmVybGFwcGluZyBzeW1ib2xzCglhcmUgdHJ1bmNhdGVkIGluIHRoZSBvdmVybGFwcGluZyBhcmVhLgoJVGhpcyBnaXZlcyByZWFzb25hYmxlIHJlc3VsdHMsIGJlY2F1c2UgaW4gcmVhbGl0eSwgYWRkcmVzcyByZXVzZSB0eXBpY2FsbHkgdGFrZXMgcGxhY2UKCWR1cmluZyBwaGFzZSBjaGFuZ2VzIG9mIHRoZSBhcHBsaWNhdGlvbiAtLSBpbiBwYXJ0aWN1bGFyLCBkdXJpbmcgYXBwbGljYXRpb24gIHN0YXJ0dXAuCglUaHVzLCBmb3Igb3B0aW11bSBwcm9maWxpbmcgcmVzdWx0cywgc3RhcnQgdGhlIHNhbXBsaW5nIHNlc3Npb24gYWZ0ZXIgYXBwbGljYXRpb24gc3RhcnR1cAoJYW5kIGJ1cm4gaW4uCgk8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGVwYWdlIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBpZD0iaGlkZGVuLWNvc3QiPjwvYT43LqBPdGhlciBkaXNjcmVwYW5jaWVzPC9oMj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwPgpBbm90aGVyIGNhdXNlIG9mIGFwcGFyZW50IHByb2JsZW1zIGlzIHRoZSBoaWRkZW4gY29zdCBvZiBpbnN0cnVjdGlvbnMuIEEgdmVyeQpjb21tb24gZXhhbXBsZSBpcyB0d28gbWVtb3J5IHJlYWRzOiBvbmUgZnJvbSBMMSBjYWNoZSBhbmQgdGhlIG90aGVyIGZyb20gbWVtb3J5Ogp0aGUgc2Vjb25kIG1lbW9yeSByZWFkIGlzIGxpa2VseSB0byBoYXZlIG1vcmUgc2FtcGxlcy4KVGhlcmUgYXJlIG1hbnkgb3RoZXIgY2F1c2VzIG9mIGhpZGRlbiBjb3N0IG9mIGluc3RydWN0aW9ucy4gQSBub24tZXhoYXVzdGl2ZQpsaXN0OiBtaXMtcHJlZGljdGVkIGJyYW5jaCwgVExCIGNhY2hlIG1pc3MsIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGwsCnBhcnRpYWwgcmVnaXN0ZXIgZGVwZW5kZW5jaWVzLCBtZW1vcnkgbWlzbWF0Y2ggc3RhbGwsIHJlLWV4ZWN1dGVkILVvcHMuIElmIHlvdSB3YW50IHRvIHdyaXRlCnByb2dyYW1zIGF0IHRoZSBhc3NlbWJseSBsZXZlbCwgYmUgc3VyZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgSW50ZWwgYW5kCkFNRCBkb2N1bWVudGF0aW9uIGF0IDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tLyI+aHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vPC9hPgphbmQgPGEgaHJlZj0iaHR0cDovL2RldmVsb3Blci5hbWQuY29tL2Rldmd1aWRlcy5qc3AvIj5odHRwOi8vZGV2ZWxvcGVyLmFtZC5jb20vZGV2Z3VpZGVzLmpzcDwvYT4uCjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNoYXB0ZXIiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+CiAgICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDxoMiBjbGFzcz0idGl0bGUiPjxhIGlkPSJhY2siPjwvYT5DaGFwdGVyoDYuoEFja25vd2xlZGdtZW50czwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHA+ClRoYW5rcyB0byAoaW4gbm8gcGFydGljdWxhciBvcmRlcikgOiBBcmphbiB2YW4gZGUgVmVuLCBSaWsgdmFuIFJpZWwsIEp1YW4gUXVpbnRlbGEsIFBoaWxpcHBlIEVsaWUsClBoaWxsaXBwIFJ1bXBmLCBUaWdyYW4gQWl2YXppYW4sIEFsZXggQnJvd24sIEFsaXNkYWlyIFJhd3N0aG9ybmUsIEJvYiBNb250Z29tZXJ5LCBSYXkgQnJ5YW50LCBILkouIEx1LApKZWZmIEVzcGVyLCBXaWxsIENvaGVuLCBHcmF5ZG9uIEhvYXJlLCBDbGlmZiBXb29sbGV5LCBBbGV4IFRzYXJpb3Vub3YsIEFsIFN0b25lLCBKYXNvbiBZZWgsClJhbmRvbHBoIENodW5nLCBBbnRvbiBCbGFuY2hhcmQsIFJpY2hhcmQgSGVuZGVyc29uLCBBbmRyaWVzIEJyb3V3ZXIsIEJyeWFuIFJpdHRtZXllciwKTWF5bmFyZCBQLiBKb2huc29uLApSaWNoYXJkIFJlaWNoIChycmVpY2hAcmRydGVjaC5jb20pLCBad2FuZSBNd2Fpa2FtYm8sIERhdmUgSm9uZXMsIENoYXJsZXMgRmlsdG5lc3M7IGFuZCBmaW5hbGx5IFB1bHAsIGZvciAiSW50cm8iLgo8L3A+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==