ICA8Y2hhcHRlciBpZD0iY29uZmlndXJpbmciPgogICAgPHRpdGxlPkNvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgPHBhcmE+U2V0dGluZyB1cCBjb25maWcgZmlsZXMsIGV0Yy48L3BhcmE+CgogICAgPHNlY3QxIGlkPSJjb25maWciPgogICAgICA8dGl0bGU+R2VuZXJhbCBDb25maWd1cmF0aW9uPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgQ29weXJpZ2h0IDE5OTkgJm5hbWUtYWRhbS1zYWNhcm55OyA8ZW1haWw+JmVtYWlsLWFkYW0tc2FjYXJueTs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbmZpZzwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBXaW5lIENvbmZpZyBGaWxlPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGNvbmZpZyBmaWxlIHN0b3JlcyB2YXJpb3VzIHNldHRpbmdzIGZvciBXaW5lLiBUaGVzZSBpbmNsdWRlOgogICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgRHJpdmVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aGVtCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3Rvcnkgc2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFBvcnQgc2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBXaW5lIGxvb2sgYW5kIGZlZWwKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBETEwgdXNhZ2UKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBtdWx0aW1lZGlhIGRyaXZlcnMgYW5kIERMTCBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Ib3cgRG8gSSBNYWtlIE9uZT88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyBzZWN0aW9uIHdpbGwgZ3VpZGUgeW91IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgbWFraW5nIGEKICAgICAgICAgIGNvbmZpZyBmaWxlLiBUYWtlIGEgbG9vayBhdCB0aGUgZmlsZSA8ZmlsZW5hbWU+Jmx0O2RpcnMgdG8KICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L2ZpbGVuYW1lPi4gSXQgaXMgb3JnYW5pemVkIGJ5IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlNlY3Rpb24gTmFtZTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TmVlZGVkPzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCBpdCBEb2VzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RyaXZlIFhdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNldHMgdXAgZHJpdmVzIHJlY29nbml6ZWQgYnkgd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bd2luZV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U2V0dGluZ3MgZm9yIHdpbmUgZGlyZWN0b3JpZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RsbERlZmF1bHRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRlZmF1bHRzIGZvciBsb2FkaW5nIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxQYWlyc108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlY21kPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TYW5pdHkgY2hlY2tlcnMgZm9yIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxPdmVycmlkZXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcmlkZXMgZGVmYXVsdHMgZm9yIERMTCBsb2FkaW5nPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Plt4MTFkcnZdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+R3JhcGhpYyBkcml2ZXIgc2V0dGluZ3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W2ZvbnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Gb250IGFwcGVhcmFuY2UgYW5kIHJlY29nbml0aW9uPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltzZXJpYWxwb3J0c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5DT00gcG9ydHMgc2VlbiBieSB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltwYXJhbGxlbHBvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkxQVCBwb3J0cyBzZWVuIGJ5IHdpbmU8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BwZGV2XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlBhcmFsbGVscG9ydCBlbXVsYXRpb248L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3Nwb29sZXJdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJpbnQgc3Bvb2xpbmc8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRpcmVjdCBwb3J0IGFjY2VzczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bRGVidWddPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCB0byBkbyB3aXRoIGNlcnRhaW4gZGVidWcgbWVzc2FnZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W1JlZ2lzdHJ5XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNwZWNpZmllcyBsb2NhdGlvbnMgb2Ygd2luZG93cyByZWdpc3RyeSBmaWxlczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bdHdlYWsubGF5b3V0XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkFwcGVhcmFuY2Ugb2Ygd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bcHJvZ3JhbXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJvZ3JhbXMgdG8gYmUgcnVuIGF1dG9tYXRpY2FsbHk8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0NvbnNvbGVdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q29uc29sZSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQ2xpcGJvYXJkXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkludGVyYWN0aW9uIGZvciB3aW5lIGFuZCBYMTEgY2xpcGJvYXJkPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlthZm1kaXJzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlBvc3RzY3JpcHQgZHJpdmVyIHNldHRpbmdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltXaW5NTV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TXVsdGltZWRpYSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQXBwRGVmYXVsdHNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcndyaXRlIHRoZSBzZXR0aW5ncyBvZiBwcmV2aW91cyBzZWN0aW9ucyBmb3Igc3BlY2lhbCBwcm9ncmFtczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3Rncm91cD4KICAgICAgICA8L2luZm9ybWFsdGFibGU+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RyaXZlIFhdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CgkgICAgVGhlc2Ugc2VjdGlvbnMgYXJlIHN1cHBvc2VkIHRvIG1ha2UgY2VydGFpbiBVbml4CgkgICAgZGlyZWN0b3J5IGxvY2F0aW9ucyBhY2Nlc3NpYmxlIHRvIFdpbmUgYXMgYSBET1MvV2luZG93cyBkcml2ZQoJICAgIChkcml2ZSAnWDonKSBhbmQgdGh1cyBhY2Nlc3NpYmxlIHRvIFdpbmRvd3MgcHJvZ3JhbXMKCSAgICB1bmRlciB0aGUgZHJpdmUgbmFtZSB5b3Ugc3BlY2lmaWVkLgoJICAgIEV2ZXJ5IERPUy9XaW5kb3dzIHByb2dyYW0gc29ydCBvZiBleHBlY3RzIGF0IGxlYXN0IGEgQzogZHJpdmUgKGFuZAoJICAgIHNvbWV0aW1lcyBhbHNvIGFuIEE6IGZsb3BweSBkcml2ZSksIHNvIHlvdXIgY29uZmlnIGZpbGUgc2hvdWxkCgkgICAgYXQgbGVhc3QgY29udGFpbiB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9ucywgW0RyaXZlIENdIGFuZAoJICAgIFtEcml2ZSBBXS4KCSAgICBZb3UgbmVlZCB0byBkZWNpZGUgb24gd2hldGhlciB5b3Ugd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgV2luZG93cwoJICAgIHBhcnRpdGlvbiBhcyB0aGUgQyBkcml2ZSBvciB3aGV0aGVyIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIG93bgoJICAgIFdpbmUgZHJpdmUgQyBkaXJlY3RvcnkgdHJlZSBzb21ld2hlcmUgKHRha2UgY2FyZSBhYm91dAoJICAgIHBlcm1pc3Npb25zICEpLgogICAgICAgICAgICBFYWNoIGRyaXZlIHNlY3Rpb24gbWF5IHNwZWNpZnkgdXAgdG8gNiBkaWZmZXJlbnQgc2V0dGluZ3MKCSAgICBhcyBleHBsYWluZWQgYmVsb3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPltEcml2ZSBYXTwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoZSBhYm92ZSBsaW5lIGJlZ2lucyB0aGUgc2VjdGlvbiBmb3IgYSBkcml2ZSB3aG9zZSBsZXR0ZXIgaXMgWAoJICAgIChET1Mgbm90YXRpb246IGRyaXZlICdYOicpLgoJICAgIFlvdSBjb3VsZCBlLmcuIGNyZWF0ZSBhbiBlcXVpdmFsZW50IHRvIGEgZHJpdmUgJ0M6JwoJICAgIHVuZGVyIERPUy9XaW5kb3dzIGJ5IHVzaW5nIGEgW0RyaXZlIENdIHNlY3Rpb24gbmFtZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlBhdGgiID0gIi9kaXIvdG8vcGF0aCI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFRoaXMgc3BlY2lmaWVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRyaXZlIHdpbGwgYmVnaW4uCgkgICAgV2hlbiBXaW5lIGlzIGJyb3dzaW5nIGluIGRyaXZlIFgsIGl0IHdpbGwgYmUgYWJsZQoJICAgIHRvIHNlZSB0aGUgZmlsZXMgdGhhdCBhcmUgaW4gdGhlIGRpcmVjdG9yeQoJICAgIDxmaWxlbmFtZT4vZGlyL3RvL3BhdGg8L2ZpbGVuYW1lPiBhbmQgYmVsb3cuCgkgICAgKG5vdGUgdGhhdCBzeW1saW5rcyB0byBkaXJlY3RvcmllcyB3b24ndCBnZXQgaW5jbHVkZWQgIQoJICAgIHNlZSAiPGxpbmsgbGlua2VuZD0iZGlyc3ltbGlua3MiPlNob3dEaXJTeW1saW5rczwvbGluaz4iCgkgICAgY29uZmlnIHNldHRpbmcpCgkgICAgWW91IGNhbiBhbHNvIG1ha2UgdXNlIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyBsaWtlICRIT01FIGhlcmUsCgkgICAgYW4gZXhhbXBsZSBmb3IgdXNpbmcgYSBteXdpbmVkcml2ZSBkaXJlY3RvcnkgaW4geW91ciBob21lIGRpcgoJICAgIHdvdWxkIGJlCgkgICAgIlBhdGgiID0gIiR7SE9NRX0vbXl3aW5lZHJpdmUiCgkgICAgRG9uJ3QgZm9yZ2V0IHRvIGxlYXZlIG9mZiB0aGUgdHJhaWxpbmcgc2xhc2ghCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJUeXBlIiA9ICJoZHxjZHJvbXxuZXR3b3JrfGZsb3BweSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHVwIHRoZSB0eXBlIG9mIGRyaXZlIFdpbmUgd2lsbCBzZWUgaXQgYXMuIFR5cGUgbXVzdAogICAgICAgICAgICBlcXVhbCBvbmUgb2YgdGhlIGZvdXIgPGxpdGVyYWw+ZmxvcHB5PC9saXRlcmFsPiwKICAgICAgICAgICAgPGxpdGVyYWw+aGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jZHJvbTwvbGl0ZXJhbD4sIG9yCiAgICAgICAgICAgIDxsaXRlcmFsPm5ldHdvcms8L2xpdGVyYWw+LiBUaGV5IGFyZSBzZWxmLWV4cGxhbmF0b3J5LgogICAgICAgICAgICAoVGhlIHwncyBtZWFuICJUeXBlID0gJyZsdDtvbmUgb2YgdGhlIG9wdGlvbnMmZ3Q7JyIuKQoJICAgIFVzdWFsbHksIHlvdSBjaG9vc2UgImhkIiBmb3IgYSBkcml2ZSAoImhkIiBpcyBkZWZhdWx0IGFueXdheSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMYWJlbCIgPSAiYmxhaCI8L3Byb2dyYW1saXN0aW5nPgoJICAgIERlZmluZXMgdGhlIGRyaXZlIGxhYmVsLiBHZW5lcmFsbHkgb25seSBuZWVkZWQKCSAgICBmb3IgcHJvZ3JhbXMgdGhhdCBsb29rIGZvciBhIHNwZWNpYWwgQ0QtUk9NLgogICAgICAgICAgICBUaGUgbGFiZWwgbWF5IGJlIHVwIHRvIDExIGNoYXJhY3RlcnMuCgkgICAgTm90ZSB0aGF0IHRoZSBwcmVmZXJyZWQgd2F5IG9mIG1hbmFnaW5nIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnMKCSAgICBvZiBDRC1ST01zIGFuZCBmbG9wcGllcyBpcyB0byBnaXZlIFdpbmUgcmF3IGRldmljZSBhY2Nlc3MgZm9yCgkgICAgcmVhZGluZyB0aGVzZSBvbiBhIHBlci1DRCBjYXNlIChzZWUgIkRldmljZSIgYmVsb3cpIGluc3RlYWQgb2YKCSAgICBoYXJkY29kaW5nIG9uZSBzcGVjaWZpYyAiTGFiZWwiLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU2VyaWFsIiA9ICJkZWFkYmVlZiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUZWxscyBXaW5lIHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBkcml2ZS4gQSBmZXcgcHJvZ3JhbXMgd2l0aAogICAgICAgICAgICBpbnRlbnNlIHByb3RlY3Rpb24gZm9yIHBpcmF0aW5nIG1pZ2h0IG5lZWQgdGhpcywgYnV0IG90aGVyd2lzZQogICAgICAgICAgICBpdCdzIG5vdCBuZWVkZWQuIFVwIHRvIDggY2hhcmFjdGVycyBhbmQgaGV4YWRlY2ltYWwuCgkgICAgVXNpbmcgYSAiRGV2aWNlIiBlbnRyeSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlICJTZXJpYWwiIHByb2JhYmx5CgkgICAgaXMgYSBzbWFydGVyIGNob2ljZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkZpbGVzeXN0ZW0iID0gIndpbjk1fHVuaXh8bXNkb3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgd2F5IFdpbmUgbG9va3MgYXQgZmlsZXMgb24gdGhlIGRyaXZlLgogICAgICAgICAgPC9wYXJhPgoKICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+d2luOTU8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICBDYXNlIGluc2Vuc2l0aXZlLiBBbGlrZSB0byBXaW5kb3dzIDl4L05UIDQuIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgdGhlIGxvbmcgZmlsZW5hbWUgZmlsZXN5c3RlbSB5b3UgYXJlIHByb2JhYmx5IHVzZWQKICAgICAgICAgICAgICAgICAgdG8gd29ya2luZyB3aXRoLiBUaGUgZmlsZXN5c3RlbSBvZiBjaG9pY2UgZm9yIG1vc3QKICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIHRvIGJlIHJ1biB1bmRlciB3aW5lLiAgUFJPQkFCTFkgVEhFIE9ORQogICAgICAgICAgICAgICAgICBZT1UgV0FOVCEKICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD51bml4PC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgQ2FzZSBzZW5zaXRpdmUuIFRoaXMgZmlsZXN5c3RlbSBoYXMgYWxtb3N0IG5vIHVzZQogICAgICAgICAgICAgICAgICAoV2luZG93cyBhcHBzIGV4cGVjdCBjYXNlIGluc2Vuc2l0aXZlIGZpbGVuYW1lcykuCiAgICAgICAgICAgICAgICAgIFRyeSBpdCBpZiB5b3UgZGFyZSwgYnV0IHdpbjk1IGlzIGEgIG11Y2ggYmV0dGVyCiAgICAgICAgICAgICAgICAgIGNob2ljZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5tc2RvczwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbS4gQWxpa2UgdG8gRE9TIGFuZAogICAgICAgICAgICAgICAgICBXaW5kb3dzIDMueC4gPGxpdGVyYWw+OC4zPC9saXRlcmFsPiBpcyB0aGUgbWF4aW11bQogICAgICAgICAgICAgICAgICBsZW5ndGggb2YgZmlsZXMgKGVpZ2h0ZG90LjEyMykgLSBsb25nZXIgb25lcyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIHRydW5jYXRlZC4gKE5PVEU6IHRoaXMgaXMgYSB2ZXJ5IGJhZCBjaG9pY2UgaWYgeW91CiAgICAgICAgICAgICAgICAgIHBsYW4gb24gcnVubmluZyBhcHBzIHRoYXQgdXNlIGxvbmcgZmlsZW5hbWVzLiB3aW45NQogICAgICAgICAgICAgICAgICBzaG91bGQgd29yayBmaW5lIHdpdGggYXBwcyB0aGF0IHdlcmUgZGVzaWduZWQgdG8gcnVuCiAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZSBtc2RvcyBzeXN0ZW0uIEluIG90aGVyIHdvcmRzLCB5b3UgbWlnaHQKICAgICAgICAgICAgICAgICAgbm90IHdhbnQgdG8gdXNlIHRoaXMuKQogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CgogICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZXZpY2UiID0gIi9kZXYveHgiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDxwYXJhPgoJICAgIE5lZWRlZCBmb3IgcmF3IGRldmljZSBhY2Nlc3MgYW5kIGxhYmVsIGFuZCBzZXJpYWwgbnVtYmVyIHJlYWRpbmcuCiAgICAgICAgICAgIFVzZSB0aGlzIE9OTFkgZm9yIGZsb3BweSBhbmQgY2Ryb20gZGV2aWNlcy4gVXNpbmcgaXQgb24KICAgICAgICAgICAgRXh0ZW5kZWQyIG9yIG90aGVyIFVuaXggZmlsZSBzeXN0ZW1zIGNhbiBoYXZlIGRpcmUgcmVzdWx0cwoJICAgICh3aGVuIGEgd2luZG93cyBhcHAgdHJpZXMgdG8gZG8gYSBsb3dsZXZlbCB3cml0ZSwKCSAgICB0aGV5IGRvIGl0IGluIGEgRkFUIHdheSAtLSBGQVQgZm9ybWF0IGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20KCSAgICBhbnkgVW5peCBmaWxlIHN5c3RlbSkuCgkgICAgQWxzbywgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgcHJvcGVyIHBlcm1pc3Npb25zIHRvIHRoaXMgZGV2aWNlCgkgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxub3RlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgbm90IHJlYWxseSBpbXBvcnRhbnQ7IGFsbW9zdCBhbGwgYXBwcwogICAgICAgICAgICAgIHdpbGwgaGF2ZSBubyBwcm9ibGVtIGlmIGl0IHJlbWFpbnMgdW5zcGVjaWZpZWQuIEZvcgogICAgICAgICAgICAgIENELVJPTXMgaXQncyBxdWl0ZSB1c2VmdWwgaW4gb3JkZXIgdG8gZ2V0IGF1dG9tYXRpYyBsYWJlbAogICAgICAgICAgICAgIGRldGVjdGlvbiwgdGhvdWdoLiBJZiB5b3UgYXJlIHVuc3VyZSBhYm91dCBzcGVjaWZ5aW5nCiAgICAgICAgICAgICAgZGV2aWNlIG5hbWVzLCBqdXN0IGxlYXZlIG91dCB0aGlzIHNldHRpbmcgZm9yIHlvdXIKICAgICAgICAgICAgICBkcml2ZXMuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgIDxwYXJhPgoJICAgIEhlcmUgYXJlIGEgZmV3IHNhbXBsZSBlbnRyaWVzOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CkhlcmUgaXMgYSBzZXR1cCBmb3IgRHJpdmUgQywgYSBnZW5lcmljIGhhcmQgZHJpdmU6CltEcml2ZSBDXQoiUGF0aCIgPSAiL2Rvc2MiCiJUeXBlIiA9ICJoZCIKIkxhYmVsIiA9ICJIYXJkIERyaXZlIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiClRoaXMgaXMgYSBzZXR1cCBmb3IgRHJpdmUgRSwgYSBnZW5lcmljIENELVJPTSBkcml2ZToKW0RyaXZlIEVdCiJQYXRoIiA9ICIvbW50L2Nkcm9tIgoiVHlwZSIgPSAiY2Ryb20iCiJMYWJlbCIgPSAiVG90YWwgQW5uaWhpbGF0aW9uIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiCiJEZXZpY2UiID0gIi9kZXYvY2Ryb20iCkFuZCBoZXJlIGlzIGEgc2V0dXAgZm9yIERyaXZlIEEsIGEgZ2VuZXJpYyBmbG9wcHkgZHJpdmU6CltEcml2ZSBBXQoiVHlwZSIgPSAiZmxvcHB5IgoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJMYWJlbCIgPSAiRmxvcHB5IERyaXZlIgoiU2VyaWFsIiA9ICI4NzY1NDMyMSIKIkZpbGVzeXN0ZW0iID0gIndpbjk1IgoiRGV2aWNlIiA9ICIvZGV2L2ZkMCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDMgaWQ9ImNvbmZpZy13aW5lIj4KICAgICAgICAgIDx0aXRsZT5UaGUgW3dpbmVdIFNlY3Rpb24gPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3dpbmVdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWlucyBhbGwga2luZHMKICAgICAgICAgICAgb2YgZ2VuZXJhbCBzZXR0aW5ncyBmb3IgV2luZS4KCSAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iV2luZG93cyIgPSAiYzpcXHdpbmRvd3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhpcyB0ZWxscyBXaW5lIGFuZCBXaW5kb3dzIHByb2dyYW1zIHdoZXJlIHRoZQogICAgICAgICAgICA8ZmlsZW5hbWU+V2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcy4gIEl0IGlzCiAgICAgICAgICAgIHJlY29tbWVuZGVkIHRvIGhhdmUgdGhpcyBkaXJlY3Rvcnkgc29tZXdoZXJlIG9uIHlvdXIKICAgICAgICAgICAgY29uZmlndXJlZCA8bWVkaWFsYWJlbD5DPC9tZWRpYWxhYmVsPiBkcml2ZSwgYW5kIGl0J3MgYWxzbwogICAgICAgICAgICByZWNvbW1lbmRlZCB0byBqdXN0IGNhbGwgdGhlIGRpcmVjdG9yeSAid2luZG93cyIgKHRoaXMgaXMKICAgICAgICAgICAgdGhlIGRlZmF1bHQgc2V0dXAgb24gV2luZG93cywgYW5kIHNvbWUgc3R1cGlkIGFwcGxpY2F0aW9ucwogICAgICAgICAgICBtaWdodCByZWx5IG9uIHRoaXMpLiAgU28gaW4gY2FzZSB5b3UgY2hvc2UgYSAiV2luZG93cyIKICAgICAgICAgICAgc2V0dGluZyBvZiAiYzpcXHdpbmRvd3MiIGFuZCB5b3UgY2hvc2UgdG8gc2V0IHVwIGEgZHJpdmUgQwogICAgICAgICAgICBlLmcuIGF0IDxmaWxlbmFtZT4vdXNyL2xvY2FsL3dpbmVfYzwvZmlsZW5hbWU+LCB0aGUKICAgICAgICAgICAgY29ycmVzcG9uZGluZyBkaXJlY3Rvcnkgd291bGQgYmUKICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvd2luZV9jL3dpbmRvd3M8L2ZpbGVuYW1lPi4gIE1ha2Ugb25lCiAgICAgICAgICAgIGlmIHlvdSBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiBOTyBUUkFJTElORyBTTEFTSCAoTk9UCiAgICAgICAgICAgIDxmaWxlbmFtZT5DOlxcd2luZG93c1w8L2ZpbGVuYW1lPikhIFdyaXRlIGFjY2VzcyBzdHJvbmdseQogICAgICAgICAgICByZWNvbW1lbmRlZCEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5c3RlbSIgPSAiYzpcXHdpbmRvd3NcXHN5c3RlbSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGlzIHNldHMgdXAgd2hlcmUgdGhlIHdpbmRvd3Mgc3lzdGVtIGZpbGVzIGFyZS4gVGhlIFdpbmRvd3MKCSAgICBzeXN0ZW0gZGlyZWN0b3J5IHNob3VsZCByZXNpZGUgYmVsb3cgdGhlIGRpcmVjdG9yeSB1c2VkIGZvciB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+V2luZG93czwvbGl0ZXJhbD4gc2V0dGluZy4KCSAgICBUaHVzIHdoZW4gdXNpbmcgdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBzeXN0ZW0gZGlyZWN0b3J5IHdvdWxkIGJlCgkgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvd2luZV9jL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4uCiAgICAgICAgICAgIEFnYWluLCBubyB0cmFpbGluZyBzbGFzaCwgYW5kIHdyaXRlIGFjY2VzcyEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlRlbXAiID0gImM6XFx0ZW1wIjwvcHJvZ3JhbWxpc3Rpbmc+IFRoaXMgc2hvdWxkCiAgICAgICAgICAgIGJlIHRoZSBkaXJlY3RvcnkgeW91IHdhbnQgeW91ciB0ZW1wIGZpbGVzIHN0b3JlZCBpbiwKCSAgICAvdXNyL2xvY2FsL3dpbmVfYy90ZW1wIGluIG91ciBleGFtcGxlLgogICAgICAgICAgICBBZ2Fpbiwgbm8gdHJhaWxpbmcgc2xhc2gsIGFuZCBXUklURSBBQ0NFU1MhIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIlBhdGgiID0gImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW07YzpcXGJsYW5jbyIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBCZWhhdmVzIGxpa2UgdGhlIDxlbnZhcj5QQVRIPC9lbnZhcj4gc2V0dGluZyBvbiBVTklYCiAgICAgICAgICAgIGJveGVzLiBXaGVuIHdpbmUgaXMgcnVuIGxpa2UgPHVzZXJpbnB1dD53aW5lCiAgICAgICAgICAgICAgc29sLmV4ZTwvdXNlcmlucHV0PiwgaWYgPGZpbGVuYW1lPnNvbC5leGU8L2ZpbGVuYW1lPgogICAgICAgICAgICByZXNpZGVzIGluIGEgZGlyZWN0b3J5IHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+UGF0aDwvbGl0ZXJhbD4gc2V0dGluZywgd2luZSB3aWxsIHJ1biBpdCAoT2YKICAgICAgICAgICAgY291cnNlLCBpZiA8ZmlsZW5hbWU+c29sLmV4ZTwvZmlsZW5hbWU+IHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgIGN1cnJlbnQgZGlyZWN0b3J5LCB3aW5lIHdpbGwgcnVuIHRoYXQgb25lKS4gTWFrZSBzdXJlIGl0CiAgICAgICAgICAgIGFsd2F5cyBoYXMgeW91ciA8ZmlsZW5hbWU+d2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQKICAgICAgICAgICAgc3lzdGVtIGRpcmVjdG9yeSAoRm9yIHRoaXMgc2V0dXAsIGl0IG11c3QgaGF2ZQogICAgICAgICAgICA8ZmlsZW5hbWU+ImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW0iPC9maWxlbmFtZT4pLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iR3JhcGhpY3NEcml2ZXIiID0gIngxMWRydnx0dHlkcnYiPC9wcm9ncmFtbGlzdGluZz4KCSAgICBTZXRzIHRoZSBncmFwaGljcyBkcml2ZXIgdG8gdXNlIGZvciBXaW5lIG91dHB1dC4KCSAgICB4MTFkcnYgaXMgZm9yIFgxMSBvdXRwdXQsIHR0eWRydiBpcyBmb3IgdGV4dCBjb25zb2xlIG91dHB1dC4KCSAgICBXQVJOSU5HOiBpZiB5b3UgdXNlIHR0eWRydiBoZXJlLCB0aGVuIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1bgoJICAgIGFueSBXaW5kb3dzIEdVSSBwcm9ncmFtcy4gVGh1cyB0aGlzIG9wdGlvbiBpcyBtYWlubHkgaW50ZXJlc3RpbmcKCSAgICBmb3IgZS5nLiBlbWJlZGRlZCB1c2Ugb2YgV2luZSBpbiB3ZWIgc2VydmVyIHNjcmlwdHMuCgkgICAgTm90ZSB0aGF0IHR0eWRydiBpcyBzdGlsbCB2ZXJ5IGxhY2tpbmcsIHNvIGlmIGl0IGRvZXNuJ3Qgd29yaywKCSAgICByZXNvcnQgdG8gdXNpbmcgInh2ZmIiLCBhIHZpcnR1YWwgWDExIHNlcnZlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJQcmludGVyIiA9ICJvZmZ8b24iPC9wcm9ncmFtbGlzdGluZz4gVGVsbHMgd2luZQogICAgICAgICAgICB3aGV0aGVyIHRvIGFsbG93IHByaW50aW5nIHZpYSBwcmludGVyIGRyaXZlcnMgdG8gd29yay4KCSAgICBUaGlzIG9wdGlvbiBpc24ndCBuZWVkZWQgZm9yIG91ciBidWlsdGluIHBzZHJ2IHByaW50ZXIgZHJpdmVyCgkgICAgYXQgYWxsLgogICAgICAgICAgICBVc2luZyB0aGVzZSB0aGluZ3MgYXJlIHByZXR0eSBhbHBoYSwgc28geW91IG1pZ2h0IHdhbnQgdG8KICAgICAgICAgICAgd2F0Y2ggb3V0LiBTb21lIHBlb3BsZSBtaWdodCBmaW5kIGl0IHVzZWZ1bCwgaG93ZXZlci4gSWYKICAgICAgICAgICAgeW91J3JlIG5vdCBwbGFubmluZyB0byB3b3JrIG9uIHByaW50aW5nIHZpYSB3aW5kb3dzIHByaW50ZXIKCSAgICBkcml2ZXJzLCBkb24ndCBldmVuIGFkZCB0aGlzIHRvIHlvdXIgd2luZSBjb25maWcgZmlsZQoJICAgIChJdCBwcm9iYWJseSBpc24ndCBhbHJlYWR5IGluIGl0KS4KCSAgICBDaGVjayBvdXQgdGhlIFtzcG9vbGVyXSBhbmQgW3BhcmFsbGVscG9ydHNdIHNlY3Rpb25zIHRvby4KICAgICAgICAgIDwvcGFyYT4KCSAgPHBhcmE+CgkgICAgPHByb2dyYW1saXN0aW5nPiJTaGVsbExpbmtlciIgPSAid2luZXNoZWxsbGluayI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFRoaXMgc2V0dGluZyBzcGVjaWZpZXMgdGhlIHNoZWxsIGxpbmtlciBzY3JpcHQgdG8gdXNlIGZvciBzZXR0aW5nCgkgICAgdXAgV2luZG93cyBpY29ucyBpbiBlLmcuIEtERSBvciBHbm9tZSB0aGF0IGFyZSBnaXZlbiBieSBwcm9ncmFtcwoJICAgIG1ha2luZyB1c2Ugb2YgYXBwcm9wcmlhdGUgc2hlbGwzMi5kbGwgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUKCSAgICBpY29ucyBvbiB0aGUgZGVza3RvcC9zdGFydCBtZW51IGR1cmluZyBpbnN0YWxsYXRpb24uCgkgIDwvcGFyYT4KCSAgPHBhcmEgaWQ9ImRpcnN5bWxpbmtzIj4KCSAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNob3dEaXJTeW1saW5rcyIgPSAiMSI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFdpbmUgZG9lc24ndCBwYXNzIGRpcmVjdG9yeSBzeW1saW5rcyB0byBXaW5kb3dzIHByb2dyYW1zIGJ5CgkgICAgZGVmYXVsdCwgYXMgZG9pbmcgc28gbWF5IGNyYXNoIHNvbWUgcHJvZ3JhbXMgdGhhdCBkbwoJICAgIHJlY3Vyc2l2ZSBsb29rdXBzIG9mIHdob2xlIHN1YmRpcmVjdG9yeSB0cmVlcwoJICAgIHdoZW5ldmVyIGEgZGlyZWN0b3J5IHN5bWxpbmsgcG9pbnRzIGJhY2sgdG8gaXRzZWxmIG9yIG9uZSBvZiBpdHMKCSAgICBwYXJlbnQgZGlyZWN0b3JpZXMuCgkgICAgVGhhdCdzIHdoeSB3ZSBkaXNhbGxvd2VkIHRoZSB1c2Ugb2YgZGlyZWN0b3J5IHN5bWxpbmtzCgkgICAgYW5kIGFkZGVkIHRoaXMgc2V0dGluZyB0byByZWVuYWJsZSAoIjEiKSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgkgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5bWJvbFRhYmxlRmlsZSIgPSAid2luZS5zeW0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgZm9yIHRoZSB3aW5lIGRlYnVnZ2VyLiBZb3UKICAgICAgICAgICAgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBmaWRkbGUgd2l0aCB0aGlzLiBNYXkgYmUgdXNlZnVsIGlmCiAgICAgICAgICAgIHlvdXIgd2luZSBpcyBzdHJpcHBlZC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uIFRvIERMTCBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB5b3Ugd2lsbCBuZWVkIHRvIGtub3cgYmVmb3JlCiAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHRoZSBETEwgc2VjdGlvbnMgaW4geW91ciB3aW5lIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxzZWN0ND4KICAgICAgICAgICAgPHRpdGxlPldpbmRvd3MgRExMIFBhaXJzPC90aXRsZT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgTW9zdCB3aW5kb3dzIERMTCdzIGhhdmUgYSB3aW4xNiAoV2luZG93cyAzLngpIGFuZCB3aW4zMgogICAgICAgICAgICAgIChXaW5kb3dzIDl4L05UKSBmb3JtLiAgVGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB3aW4xNiBhbmQKICAgICAgICAgICAgICB3aW4zMiBETEwgdmVyc2lvbnMgYXJlIGNhbGxlZCB0aGUgIkRMTCBwYWlyIi4gVGhpcyBpcyBhCiAgICAgICAgICAgICAgbGlzdCBvZiB0aGUgbW9zdCBjb21tb24gcGFpcnM6CiAgICAgICAgICAgIDwvcGFyYT4KCiAgICAgICAgICAgIDxpbmZvcm1hbHRhYmxlPgogICAgICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PldpbjE2PC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+V2luMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgPGZvb3Rub3RlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICBJcyBpdCBwb3NzaWJsZSB0byB1c2UgbmF0aXZlIGRsbCB3aXRoIHdpbmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNlZSBuZXh0IHNlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgIDwvZm9vdG5vdGU+CiAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUw8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5VU0VSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VVNFUjMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Tm8hPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlNIRUxMPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+U0hFTEwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREk8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREkzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5DT01NRExHPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Q09NRExHMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSU0lPTjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3Rncm91cD4KICAgICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAgICAgICAgPC9zZWN0ND4KCiAgICAgICAgICA8c2VjdDQ+CiAgICAgICAgICAgIDx0aXRsZT5EaWZmZXJlbnQgRm9ybXMgT2YgRExMJ3M8L3RpdGxlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IGZvcm1zIG9mIERMTCdzIHdpbmUgY2FuIGxvYWQ6CiAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPm5hdGl2ZTwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgVGhlIERMTCdzIHRoYXQgYXJlIGluY2x1ZGVkIHdpdGggd2luZG93cy4gTWFueQogICAgICAgICAgICAgICAgICAgICAgd2luZG93cyBETEwncyBjYW4gYmUgbG9hZGVkIGluIHRoZWlyIG5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgZm9ybS4gTWFueSB0aW1lcyB0aGVzZSBuYXRpdmUgdmVyc2lvbnMgd29yawogICAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHRoYW4gdGhlaXIgbm9uLU1pY3Jvc29mdCBlcXVpdmFsZW50IC0tCiAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aW1lcyB0aGV5IGRvbid0LgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5idWlsdGluPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gZm9ybSBvZiBETEwgbG9hZGluZy4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgd2hhdCB5b3Ugd2lsbCB1c2UgaWYgdGhlIERMTCBpcyB0byBzeXN0ZW0tc3BlY2lmaWMKCQkgICAgICBvciBlcnJvci1wcm9uZSBpbiBuYXRpdmUgZm9ybSAoS0VSTkVMIGZvciBleGFtcGxlKSwKCQkgICAgICB5b3UgZG9uJ3QgaGF2ZSB0aGUgbmF0aXZlIERMTCwgb3IgeW91IGp1c3Qgd2FudCB0byBiZQogICAgICAgICAgICAgICAgICAgICAgTWljcm9zb2Z0LWZyZWUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPnNvPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBOYXRpdmUgRUxGIGxpYnJhcmllcy4gV2lsbCBub3Qgd29yayB5ZXQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPmVsZmRsbDwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgRUxGIGVuY2Fwc3VsYXRlZCB3aW5kb3dzIERMTCdzLgoJCSAgICAgIE5vIGxvbmdlciB1c2VkLCBpZ25vcmVkLgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvc2VjdDQ+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsRGVmYXVsdHNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZXNlIHNldHRpbmdzIHByb3ZpZGUgd2luZSdzIGRlZmF1bHQgaGFuZGxpbmcgb2YgRExMIGxvYWRpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZWZhdWx0TG9hZE9yZGVyIiA9IiBuYXRpdmUsIHNvLCBidWlsdGluIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZXR0aW5nIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgdGhlIG9yZGVyIGluCiAgICAgICAgICAgIHdoaWNoIHRvIGF0dGVtcHQgbG9hZGluZyBETExzLiBJZiB0aGUgZmlyc3Qgb3B0aW9uIGZhaWxzLAogICAgICAgICAgICBpdCB3aWxsIHRyeSB0aGUgc2Vjb25kLCBhbmQgc28gb24uIFRoZSBvcmRlciBzcGVjaWZpZWQKICAgICAgICAgICAgYWJvdmUgaXMgcHJvYmFibHkgdGhlIGJlc3QgaW4gbW9zdCBjb25kaXRpb25zLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbFBhaXJzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgQXQgb25lIHRpbWUsIHRoZXJlIHdhcyBhIHNlY3Rpb24gY2FsbGVkIFtEbGxQYWlyc10gaW4gdGhlCiAgICAgICAgICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoaXMgaGFzIGJlZW4gb2Jzb2xldGVkCiAgICAgICAgICBiZWNhdXNlIHRoZSBwYWlyaW5nIGluZm9ybWF0aW9uIGhhcyBub3cgYmVlbiBlbWJlZGRlZCBpbnRvCiAgICAgICAgICBXaW5lIGl0c2VsZi4gKFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB3YXMgbWVyZWx5IHRvIGJlCiAgICAgICAgICBhYmxlIHRvIGlzc3VlIHdhcm5pbmdzIGlmIHRoZSB1c2VyIGF0dGVtcHRlZCB0byBwYWlyCiAgICAgICAgICBjb2RlcGVuZGVudCAxNi1iaXQvMzItYml0IERMTHMgb2YgZGlmZmVyZW50IHR5cGVzLikgSWYgeW91CiAgICAgICAgICBzdGlsbCBoYXZlIHRoaXMgaW4geW91ciA8ZmlsZW5hbWU+fi8ud2luZS8uY29uZmlnPC9maWxlbmFtZT4gb3IKICAgICAgICAgIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiwgeW91IG1heSBzYWZlbHkgZGVsZXRlIGl0LgogICAgICAgICAgPC9wYXJhPgoJPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsT3ZlcnJpZGVzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgZm9ybWF0IGZvciB0aGlzIHNlY3Rpb24gaXMgdGhlIHNhbWUgZm9yIGVhY2ggbGluZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgombHQ7RExMPnssJmx0O0RMTD4sJmx0O0RMTD4uLi59ID0gJmx0O0ZPUk0+eywmbHQ7Rk9STT4sJmx0O0ZPUk0+Li4ufQogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEZvciBleGFtcGxlLCB0byBsb2FkIGJ1aWx0aW4gS0VSTkVMIHBhaXIgKGNhc2UgZG9lc24ndAogICAgICAgICAgICBtYXR0ZXIgaGVyZSk6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImtlcm5lbCxrZXJuZWwzMiIgPSAiYnVpbHRpbiIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUbyBsb2FkIHRoZSBuYXRpdmUgQ09NTURMRyBwYWlyLCBidXQgaWYgdGhhdCBkb2Vzbid0IHdvcmsKICAgICAgICAgICAgdHJ5IGJ1aWx0aW46CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KImNvbW1kbGcsY29tZGxnMzIiID0gIm5hdGl2ZSxidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRvIGxvYWQgdGhlIG5hdGl2ZSBDT01DVEwzMjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiY29tY3RsMzIiID0gIm5hdGl2ZSIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGEgZ29vZCBnZW5lcmljIHNldHVwIChBcyBpdCBpcyBkZWZpbmVkIGluIGNvbmZpZwogICAgICAgICAgICB0aGF0IHdhcyBpbmNsdWRlZCB3aXRoIHlvdXIgd2luZSBwYWNrYWdlKToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgpbRGxsT3ZlcnJpZGVzXQoicnBjcnQ0IiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJvbGVhdXQzMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm9sZTMyIiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tbWRsZyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJjb21kbGczMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInZlciIgICAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoidmVyc2lvbiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGVsbCIgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZWxsMzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoic2hmb2xkZXIiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGx3YXBpIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZG9jdnciICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibHpleHBhbmQiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJsejMyIiAgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNvbWN0bDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tbWN0cmwiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJhZHZhcGkzMiIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNydGRsbCIgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXByIiAgICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ3aW5zcG9vbC5kcnYiID0gImJ1aWx0aW4sIG5hdGl2ZSIKImRkcmF3IiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiZGlucHV0IiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJkc291bmQiICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm9wZW5nbDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXN2Y3J0IiAgICAgICA9ICJuYXRpdmUsIGJ1aWx0aW4iCiJtc3ZpZGVvIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1zdmZ3MzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpY2RhLmRydiIgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtY2lzZXEuZHJ2IiAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaXdhdmUuZHJ2IiAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpYXZpLmRydiIgICA9ICJuYXRpdmUsIGJ1aWx0aW4iCiJtY2lhbmltLmRydiIgID0gIm5hdGl2ZSwgYnVpbHRpbiIKIm1zYWNtLmRydiIgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXNhY20iICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtc2FjbTMyIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1pZGltYXAuZHJ2IiAgPSAiYnVpbHRpbiwgbmF0aXZlIgo7IHlvdSBjYW4gc3BlY2lmeSBhcHBsaWNhdGlvbnMgdG9vCiJub3RlcGFkLmV4ZSIgID0gIm5hdGl2ZSwgYnVpbHRpbiIKOyBkZWZhdWx0IGZvciBhbGwgb3RoZXIgZGxscwoiKiIgPSAibmF0aXZlLCBidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIElmIGxvYWRpbmcgb2YgdGhlIGxpYnJhcmllcyB0aGF0IGFyZSBsaXN0ZWQgZmlyc3QgZmFpbHMsCiAgICAgICAgICAgICAgd2luZSB3aWxsIGp1c3QgZ28gb24gYnkgdXNpbmcgdGhlIHNlY29uZCBvciB0aGlyZCBvcHRpb24uCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtmb250c10gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNldHMgdXAgd2luZSdzIGZvbnQgaGFuZGxpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJSZXNvbHV0aW9uIiA9ICI5NiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFNpbmNlIHRoZSB3YXkgWCBoYW5kbGVzIGZvbnRzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB3YXkKICAgICAgICAgICAgV2luZG93cyBkb2VzLCB3aW5lIHVzZXMgYSBzcGVjaWFsIG1lY2hhbmlzbSB0byBkZWFsIHdpdGgKICAgICAgICAgICAgdGhlbS4gSXQgbXVzdCBzY2FsZSB0aGVtIHVzaW5nIHRoZSBudW1iZXIgZGVmaW5lZCBpbiB0aGUKICAgICAgICAgICAgIlJlc29sdXRpb24iIHNldHRpbmcuIDYwLTEyMCBhcmUgcmVhc29uYWJsZSB2YWx1ZXMsIDk2IGlzCiAgICAgICAgICAgIGEgbmljZSBpbiB0aGUgbWlkZGxlIG9uZS4gSWYgeW91IGhhdmUgdGhlIHJlYWwgd2luZG93cwogICAgICAgICAgICBmb250cyBhdmFpbGFibGUgKDxmaWxlbmFtZT4mbHQ7ZGlycyB0bwogICAgICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vdHRmc2VydmVyPC9maWxlbmFtZT4gYW5kCiAgICAgICAgICAgIDxmaWxlbmFtZT5mb250czwvZmlsZW5hbWU+KSwgdGhpcyBwYXJhbWV0ZXIgd2lsbCBub3QgYmUgYXMKICAgICAgICAgICAgaW1wb3J0YW50LiBPZiBjb3Vyc2UsIGl0J3MgYWx3YXlzIGdvb2QgdG8gZ2V0IHlvdXIgWCBmb250cwogICAgICAgICAgICB3b3JraW5nIGFjY2VwdGFibHkgaW4gd2luZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkRlZmF1bHQiID0gIi1hZG9iZS10aW1lcy0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhlIGRlZmF1bHQgZm9udCB3aW5lIHVzZXMuIEZvb2wgYXJvdW5kIHdpdGggaXQgaWYgeW91J2QgbGlrZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgpPUFRJT05BTDoKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgPGxpdGVyYWw+QWxpYXM8L2xpdGVyYWw+IHNldHRpbmcgYWxsb3dzIHlvdSB0byBtYXAgYW4gWCBmb250IHRvIGEgZm9udAogICAgICAgICAgICB1c2VkIGluIHdpbmUuIFRoaXMgaXMgZ29vZCBmb3IgYXBwcyB0aGF0IG5lZWQgYSBzcGVjaWFsIGZvbnQgeW91IGRvbid0IGhhdmUsCiAgICAgICAgICAgIGJ1dCBhIGdvb2QgcmVwbGFjZW1lbnQgZXhpc3RzLiBUaGUgc3ludGF4IGlzIGxpa2Ugc286CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzWCIgPSAiW0Zha2Ugd2luZG93cyBuYW1lXSxbUmVhbCBYIG5hbWVdIiZsdDssb3B0aW9uYWwgIm1hc2tpbmciIHNlY3Rpb24+CiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgUHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gUmVwbGFjZSAiQWxpYXNYIiB3aXRoICJBbGlhczAiLAogICAgICAgICAgICB0aGVuICJBbGlhczEiIGFuZCBzbyBvbi4gVGhlIGZha2Ugd2luZG93cyBuYW1lIGlzIHRoZSBuYW1lCiAgICAgICAgICAgIHRoYXQgdGhlIGZvbnQgd2lsbCBiZSB1bmRlciBhIHdpbmRvd3MgYXBwIGluIHdpbmUuIFRoZQogICAgICAgICAgICByZWFsIFggbmFtZSBpcyB0aGUgZm9udCBuYW1lIGFzIHNlZW4gYnkgWCAoUnVuCiAgICAgICAgICAgICJ4Zm9udHNlbCIpLiBUaGUgb3B0aW9uYWwgIm1hc2tpbmciIHNlY3Rpb24gYWxsb3dzIHlvdSB0bwogICAgICAgICAgICB1dGlsaXplIHRoZSBmYWtlIHdpbmRvd3MgbmFtZSB5b3UgZGVmaW5lLiBJZiBpdCBpcyBub3QKICAgICAgICAgICAgdXNlZCwgdGhlbiB3aW5lIHdpbGwganVzdCB0cnkgdG8gZXh0cmFjdCB0aGUgZmFrZSB3aW5kb3dzCiAgICAgICAgICAgIG5hbWUgaXRzZWxmIGFuZCBub3QgdXNlIHRoZSB2YWx1ZSB5b3UgZW50ZXIuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGFuIGFsaWFzIHdpdGhvdXQgbWFza2luZy4gVGhlIGZvbnQgd2lsbCBzaG93IHVwIGluIHdpbmRvd3MKICAgICAgICAgICAgYXBwcyBhcyAiR29vZ2xlIi4KCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzMCIgPSAiRm9vLC0tZ29vZ2xlLSIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2l0aCBtYXNraW5nIGVuYWJsZWQuIFRoZSBmb250IHdpbGwgc2hvdyB1cCBhcyAiRm9vIiBpbgogICAgICAgICAgICB3aW5kb3dzIGFwcHMuCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIkFsaWFzMSIgPSAiRm9vLC0tZ29vZ2xlLSxzdWJzdCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBGb3IgbW9yZSBpbmZvIGNoZWNrIG91dCB0aGUgPGxpbmsgbGlua2VuZD0iZm9udHMiPkZvbnRzPC9saW5rPgoJICAgIGNoYXB0ZXIuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbc2VyaWFscG9ydHNdLCBbcGFyYWxsZWxwb3J0c10sIFtzcG9vbGVyXSwgYW5kIFtwb3J0c10gU2VjdGlvbnM8L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEV2ZW4gdGhvdWdoIGl0IHNvdW5kcyBsaWtlIGEgbG90IG9mIHNlY3Rpb25zLCB0aGVzZSBhcmUKICAgICAgICAgICAgYWxsIGNsb3NlbHkgcmVsYXRlZC4gVGhleSBhcmUgYWxsIGZvciBjb21tdW5pY2F0aW9ucyBhbmQKICAgICAgICAgICAgcGFyYWxsZWwgcG9ydHMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtzZXJpYWxwb3J0c10gc2VjdGlvbiB0ZWxscyB3aW5lIHdoYXQgc2VyaWFsIHBvcnRzIGl0CiAgICAgICAgICAgIGlzIGFsbG93ZWQgdG8gdXNlLgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkNvbVgiID0gIi9kZXYvdHR5U1kiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBSZXBsYWNlIDxsaXRlcmFsPlg8L2xpdGVyYWw+IHdpdGggdGhlIG51bWJlciBvZiB0aGUgQ09NCiAgICAgICAgICAgIHBvcnQgaW4gV2luZG93cyAoMS04KSBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCB0aGUKICAgICAgICAgICAgbnVtYmVyIG9mIGl0IGluIDxsaXRlcmFsPlg8L2xpdGVyYWw+IChVc3VhbGx5IHRoZSBudW1iZXIKICAgICAgICAgICAgb2YgdGhlIHBvcnQgaW4gV2luZG93cyBtaW51cyAxKS4gPGxpdGVyYWw+Q29tWDwvbGl0ZXJhbD4KICAgICAgICAgICAgY2FuIGFjdHVhbGx5IGVxdWFsIGFueSBkZXZpY2UKICAgICAgICAgICAgKDxtZWRpYWxhYmVsPi9kZXYvbW9kZW08L21lZGlhbGFiZWw+IGlzIGFjY2VwdGFibGUpLiBJdCBpcwogICAgICAgICAgICBub3QgYWx3YXlzIG5lY2Vzc2FyeSB0byBkZWZpbmUgYW55IENPTSBwb3J0cyAoQW4gb3B0aW9uYWwKICAgICAgICAgICAgc2V0dGluZykuIEhlcmUgaXMgYW4gZXhhbXBsZToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJDb20xIiA9ICIvZGV2L3R0eVMwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVXNlIGFzIG1hbnkgb2YgdGhlc2UgYXMgeW91IGxpa2UgaW4gdGhlIHNlY3Rpb24gdG8gZGVmaW5lCiAgICAgICAgICAgIGFsbCBvZiB0aGUgQ09NIHBvcnRzIHlvdSBuZWVkLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbcGFyYWxsZWxwb3J0c10gc2VjdGlvbiBzZXRzIHVwIGFueSBwYXJhbGxlbCBwb3J0cwogICAgICAgICAgICB0aGF0IHdpbGwgYmUgYWxsb3dlZCBhY2Nlc3MgdW5kZXIgd2luZS4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMcHRYIiA9ICIvZGV2L2xwWSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFNvdW5kcyBmYW1pbGlhcj8gU3ludGF4IGlzIGp1c3QgbGlrZSB0aGUgQ09NIHBvcnQgc2V0dGluZy4KICAgICAgICAgICAgUmVwbGFjZSA8bGl0ZXJhbD5YPC9saXRlcmFsPiB3aXRoIGEgdmFsdWUgZnJvbSAxLTQgYXMgaXQKICAgICAgICAgICAgaXMgaW4gV2luZG93cyBhbmQgPGxpdGVyYWw+WTwvbGl0ZXJhbD4gd2l0aCBhIHZhbHVlIGZyb20KICAgICAgICAgICAgMC0zICg8bGl0ZXJhbD5ZPC9saXRlcmFsPiBpcyB1c3VhbGx5IHRoZSB2YWx1ZSBpbiB3aW5kb3dzCiAgICAgICAgICAgIG1pbnVzIDEsIGp1c3QgbGlrZSBmb3IgQ09NIHBvcnRzKS4gWW91IGRvbid0IGFsd2F5cyBuZWVkCiAgICAgICAgICAgIHRvIGRlZmluZSBhIHBhcmFsbGVsIHBvcnQgKEFLQSwgaXQncyBvcHRpb25hbCkuIEFzIHdpdGgKICAgICAgICAgICAgdGhlIG90aGVyIHNlY3Rpb24sIExwdFggY2FuIGVxdWFsIGFueSBkZXZpY2UgKE1heWJlCiAgICAgICAgICAgIDxtZWRpYWxhYmVsPi9kZXYvcHJpbnRlcjwvbWVkaWFsYWJlbD4pLiBIZXJlIGlzIGFuCiAgICAgICAgICAgIGV4YW1wbGU6ICA8cHJvZ3JhbWxpc3Rpbmc+IkxwdDEiID0gIi9kZXYvbHAwIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtzcG9vbGVyXSBzZWN0aW9uIHdpbGwgaW5mb3JtIHdpbmUgd2hlcmUgdG8gc3Bvb2wKICAgICAgICAgICAgcHJpbnQgam9icy4gVXNlIHRoaXMgaWYgeW91IHdhbnQgdG8gdHJ5IHByaW50aW5nLiBXaW5lCiAgICAgICAgICAgIGRvY3MgY2xhaW0gdGhhdCBzcG9vbGluZyBpcyAicmF0aGVyIHByaW1pdGl2ZSIgYXQgdGhpcwogICAgICAgICAgICB0aW1lLCBzbyBpdCB3b24ndCB3b3JrIHBlcmZlY3RseS4gSVQgSVMgT1BUSU9OQUwuIFRoZSBvbmx5CiAgICAgICAgICAgIHNldHRpbmcgeW91IHVzZSBpbiB0aGlzIHNlY3Rpb24gd29ya3MgdG8gbWFwIGEgcG9ydCAoTFBUMSwKICAgICAgICAgICAgZm9yIGV4YW1wbGUpIHRvIGEgZmlsZSBvciBhIGNvbW1hbmQuIEhlcmUgaXMgYW4gZXhhbXBsZSwKICAgICAgICAgICAgbWFwcGluZyBMUFQxIHRvIHRoZSBmaWxlIDxmaWxlbmFtZT5vdXQucHM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMUFQxOiIgPSAib3V0LnBzIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIG1hcHMgcHJpbnRpbmcgam9icyB0byBMUFQxIHRvIHRoZQogICAgICAgICAgICBjb21tYW5kIDxjb21tYW5kPmxwcjwvY29tbWFuZD4uIE5vdGljZSAgdGhlIHw6CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iTFBUMToiID0gInxscHIiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3BvcnRzXSBzZWN0aW9uIGlzIHVzdWFsbHkgdXNlZnVsIG9ubHkgZm9yIHBlb3BsZSB3aG8KICAgICAgICAgICAgbmVlZCBkaXJlY3QgcG9ydCBhY2Nlc3MgZm9yIHByb2dyYW1zIHJlcXVpcmluZyBkb25nbGVzIG9yCiAgICAgICAgICAgIHNjYW5uZXJzLiBJRiBZT1UgRE9OJ1QgTkVFRCBJVCwgRE9OJ1QgVVNFIElUIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4icmVhZCIgPSAiMHg3NzksMHgzNzksMHgyODAtMHgyYTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHJlYWQgYWNjZXNzIHRvIHRob3NlIElPJ3MuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJ3cml0ZSIgPSAiMHg3NzksMHgzNzksMHgyODAtMHgyYTAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgR2l2ZXMgZGlyZWN0IHdyaXRlIGFjY2VzcyB0byB0aG9zZSBJTydzLiBJdCdzIHByb2JhYmx5IGEKICAgICAgICAgICAgZ29vZCBpZGVhIHRvIGtlZXAgdGhlIHZhbHVlcyBvZiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+cmVhZDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPndyaXRlPC9saXRlcmFsPgogICAgICAgICAgICBzZXR0aW5ncyB0aGUgc2FtZS4gVGhpcyBzdHVmZiB3aWxsIG9ubHkgd29yayB3aGVuIHlvdSdyZQogICAgICAgICAgICByb290LgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0MyBpZD0iY29uZmlnLWRlYnVnLWV0YyI+CiAgICAgICAgICA8dGl0bGU+VGhlIFtEZWJ1Z10sIFtSZWdpc3RyeV0sIFt0d2Vhay5sYXlvdXRdLCBhbmQgW3Byb2dyYW1zXSBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW0RlYnVnXSBpcyB1c2VkIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSBkZWJ1ZyBtZXNzYWdlcywgYW5kIHRvCiAgICAgICAgICAgIG91dHB1dCB0aGVtIHRvIGEgZmlsZS4gVGhlIGxhdHRlciBpcyByYXJlbHkgdXNlZC4gVEhFU0UKICAgICAgICAgICAgQVJFIEFMTCBPUFRJT05BTCBBTkQgWU9VIFBST0JBQkxZIERPTidUIE5FRUQgVE8gQUREIE9SCiAgICAgICAgICAgIFJFTU9WRSBBTllUSElORyBJTiBUSElTIFNFQ1RJT04gVE8gWU9VUiBDT05GSUcuIChJbiBleHRyZW1lCiAgICAgICAgICAgIGNhc2VzIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlc2Ugb3B0aW9ucyB0byBtYW5hZ2UgdGhlIGFtb3VudAogICAgICAgICAgICBvZiBpbmZvcm1hdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIDxwYXJhbWV0ZXI+LS1kZWJ1Z21zZyArcmVsYXkKICAgICAgICAgICAgPC9wYXJhbWV0ZXI+IG9wdGlvbi4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJGaWxlIiA9ICIvYmxhbmNvIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFNldHMgdGhlIGxvZ2ZpbGUgZm9yIHdpbmUuIFNldCB0byBDT04gdG8gbG9nIHRvIHN0YW5kYXJkIG91dC4KICAgICAgICAgICAgVEhJUyBJUyBSQVJFTFkgVVNFRC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNweUV4Y2x1ZGUiID0gIldNX1NJWkU7V01fVElNRVI7IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIEV4Y2x1ZGVzIGRlYnVnIG1lc3NhZ2VzIGFib3V0IDxjb25zdGFudD5XTV9TSVpFPC9jb25zdGFudD4KICAgICAgICAgICAgYW5kIDxjb25zdGFudD5XTV9USU1FUjwvY29uc3RhbnQ+IGluIHRoZSBsb2dmaWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3B5SW5jbHVkZSIgPSAiV01fU0laRTtXTV9USU1FUjsiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgSW5jbHVkZXMgZGVidWcgbWVzc2FnZXMgYWJvdXQgPGNvbnN0YW50PldNX1NJWkU8L2NvbnN0YW50PgogICAgICAgICAgICBhbmQgPGNvbnN0YW50PldNX1RJTUVSPC9jb25zdGFudD4gaW4gdGhlIGxvZ2ZpbGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJSZWxheUluY2x1ZGUiID0gInVzZXIzMi5DcmVhdGVXaW5kb3dBO2NvbWN0bDMyLioiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgSW5jbHVkZSBvbmx5IHRoZSBsaXN0ZWQgZnVuY3Rpb25zIGluIGEKICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRlYnVnbXNnICtyZWxheTwvcGFyYW1ldGVyPiB0cmFjZS4gIFRoaXMgZW50cnkgaXMKICAgICAgICAgICAgaWdub3JlZCBpZiB0aGVyZSBpcyBhIDxwYXJhbWV0ZXI+UmVsYXlFeGNsdWRlPC9wYXJhbWV0ZXI+IGVudHJ5LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iUmVsYXlFeGNsdWRlIiA9ICJSdGxFbnRlckNyaXRpY2FsU2VjdGlvbjtSdGxMZWF2ZUNyaXRpY2FsU2VjdGlvbiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBFeGNsdWRlIHRoZSBsaXN0ZWQgZnVuY3Rpb25zIGluIGEgCiAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZWJ1Z21zZyArcmVsYXk8L3BhcmFtZXRlcj4gdHJhY2UuICBUaGlzIGVudHJ5CiAgICAgICAgICAgIG92ZXJyaWRlcyBhbnkgc2V0dGluZ3MgaW4gYSA8cGFyYW1ldGVyPlJlbGF5SW5jbHVkZTwvcGFyYW1ldGVyPgogICAgICAgICAgICBlbnRyeS4gIElmIG5laXRoZXIgZW50cnkgaXMgcHJlc2VudCB0aGVuIHRoZSB0cmFjZSBpbmNsdWRlcwogICAgICAgICAgICBldmVyeXRoaW5nLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEluIGJvdGggZW50cmllcyB0aGUgZnVuY3Rpb25zIG1heSBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgCiAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWUgb3IgYXMgYSBtb2R1bGUgYW5kIGZ1bmN0aW9uLiAgSW4gdGhpcyBsYXR0ZXIKICAgICAgICAgICAgY2FzZSBzcGVjaWZ5IGFuIGFzdGVyaXNrIGZvciB0aGUgZnVuY3Rpb24gbmFtZSB0byBpbmNsdWRlL2V4Y2x1ZGUKICAgICAgICAgICAgYWxsIGZ1bmN0aW9ucyBpbiB0aGUgbW9kdWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtSZWdpc3RyeV0gY2FuIGJlIHVzZWQgdG8gdGVsbCB3aW5lIHdoZXJlIHlvdXIgb2xkIHdpbmRvd3MKICAgICAgICAgICAgcmVnaXN0cnkgZmlsZXMgZXhpc3QuIFRoaXMgc2VjdGlvbiBpcyBjb21wbGV0ZWx5IG9wdGlvbmFsCiAgICAgICAgICAgIGFuZCB1c2VsZXNzIHRvIHBlb3BsZSB1c2luZyB3aW5lIHdpdGhvdXQgYW4gZXhpc3RpbmcKICAgICAgICAgICAgd2luZG93cyBpbnN0YWxsYXRpb24uCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJVc2VyRmlsZU5hbWUiID0gIi9kaXJzL3RvL3VzZXIucmVnIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBvZiB5b3VyIG9sZCA8ZmlsZW5hbWU+dXNlci5yZWc8L2ZpbGVuYW1lPiBmaWxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFt0d2Vhay5sYXlvdXRdIGlzIGRldm90ZWQgdG8gd2luZSdzIGxvb2suIFRoZXJlIGlzIG9ubHkKICAgICAgICAgICAgb25lIHNldHRpbmcgZm9yIGl0LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iV2luZUxvb2siID0gIndpbjMxfHdpbjk1fHdpbjk4IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFdpbGwgY2hhbmdlIHRoZSBsb29rIG9mIHdpbmUgZnJvbSBXaW5kb3dzIDMuMSB0byBXaW5kb3dzIDk1LgogICAgICAgICAgICBUaGUgPGxpdGVyYWw+d2luOTg8L2xpdGVyYWw+IHNldHRpbmcgYmVoYXZlcwogICAgICAgICAgICBqdXN0IGxpa2UgPGxpdGVyYWw+d2luOTU8L2xpdGVyYWw+IG1vc3Qgb2YgdGhlIHRpbWUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW3Byb2dyYW1zXSBjYW4gYmUgdXNlZCB0byBzYXkgd2hhdCBwcm9ncmFtcyBydW4gdW5kZXIKICAgICAgICAgICAgc3BlY2lhbCBjb25kaXRpb25zLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRGVmYXVsdCIgPSAiL3Byb2dyYW0vdG8vZXhlY3V0ZS5leGUiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB0aGUgcHJvZ3JhbSB0byBiZSBydW4gaWYgd2luZSBpcyBzdGFydGVkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHByb2dyYW0uCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJTdGFydHVwIiA9ICIvcHJvZ3JhbS90by9leGVjdXRlLmV4ZSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHRoZSBwcm9ncmFtIHRvIGF1dG9tYXRpY2FsbHkgYmUgcnVuIGF0IHN0YXJ0dXAgZXZlcnkgdGltZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtXaW5NTV0gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW1dpbk1NXSBpcyB1c2VkIHRvIGRlZmluZSB3aGljaCBtdWx0aW1lZGlhIGRyaXZlcnMgaGF2ZSB0byBiZSBsb2FkZWQuIFNpbmNlCgkgICAgdGhvc2UgZHJpdmVycyBtYXkgZGVwZW5kIG9uIHRoZSBtdWx0aW1lZGlhIGludGVyZmFjZXMgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtCgkgICAgKE9TUywgQUxTQS4uLiB0byBuYW1lIGEgZmV3KSwgaXQncyBuZWVkZWQgdG8gYmUgYWJsZSB0byBjb25maWd1cmUgd2hpY2ggZHJpdmVyCgkgICAgaGFzIHRvIGJlIGxvYWRlZC4KICAgICAgICAgIDwvcGFyYT4KCiAgICAgICAgICA8cGFyYT4KCSAgICBUaGUgY29udGVudCBvZiB0aGUgc2VjdGlvbiBsb29rcyBsaWtlOgoJICAgIDxwcm9ncmFtbGlzdGluZz4KW1dpbk1NXQoiRHJpdmVycyIgPSAid2luZW9zcy5kcnYiCiJXYXZlTWFwcGVyIiA9ICJtc2FjbS5kcnYiCiJNaWRpTWFwcGVyIiA9ICJtaWRpbWFwLmRydiIKCSAgICA8L3Byb2dyYW1saXN0aW5nPgoJICAgIEFsbCB0aGUga2V5cyBtdXN0IGJlIGRlZmluZWQ6CgkgICAgPGl0ZW1pemVkbGlzdD4KCSAgICAgIDxsaXN0aXRlbT4KCSAgICAgICAgPHBhcmE+CgkJICBUaGUgIkRyaXZlcnMiIGtleSBpcyBhICc7JyBzZXBhcmF0ZWQgbGlzdCBvZiBtb2R1bGVzIG5hbWUsIGVhY2ggb2YKCQkgIHRoZW0gY29udGFpbmluZyBhIGxvdyBsZXZlbCBkcml2ZXIuIEFsbCB0aG9zZSBkcml2ZXJzIHdpbGwgYmUgbG9hZGVkCgkJICB3aGVuIE1NU1lTVEVNL1dJTk1NIGlzIHN0YXJ0ZWQgYW5kIHdpbGwgcHJvdmlkZSB0aGVpciBpbm5lciBmZWF0dXJlcy4KCSAgICAgICAgPC9wYXJhPgoJICAgICAgPC9saXN0aXRlbT4KCSAgICAgIDxsaXN0aXRlbT4KCSAgICAgICAgPHBhcmE+CgkJICBUaGUgIldhdmVNYXBwZXIiIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBjb250YWluaW5nIHRoZSBXYXZlCgkJICBNYXBwZXIgZHJpdmVyLiBPbmx5IG9uZSB3YXZlIG1hcHBlciBjYW4gYmUgZGVmaW5lZCBpbiB0aGUgc3lzdGVtLgoJICAgICAgICA8L3BhcmE+CgkgICAgICA8L2xpc3RpdGVtPgoJICAgICAgPGxpc3RpdGVtPgoJICAgICAgICA8cGFyYT4KCQkgIFRoZSAiTWlkaU1hcHBlciIgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIE1JREkKCQkgIE1hcHBlciBkcml2ZXIuIE9ubHkgb25lIE1JREkgbWFwcGVyIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzeXN0ZW0uCgkgICAgICAgIDwvcGFyYT4KCSAgICAgIDwvbGlzdGl0ZW0+CgkgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICA8L3BhcmE+Cgk8L3NlY3QzPgoKICAgICAgICA8c2VjdDMgaWQ9Im5ldHdvcmstc2VjdGlvbiI+CiAgICAgICAgICA8dGl0bGU+VGhlIFtOZXR3b3JrXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbTmV0d29ya10gY29udGFpbnMgc2V0dGluZ3MgcmVsYXRlZCB0bwogICAgICAgICAgICBuZXR3b3JraW5nLiBDdXJyZW50bHkgdGhlcmUgaXMgb25seSBvbmUgdmFsdWUgdGhhdCBjYW4gYmUgc2V0LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5Vc2VEbnNDb21wdXRlck5hbWU8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIEEgYm9vbGVhbiBzZXR0aW5nIChkZWZhdWx0OiA8bGl0ZXJhbD5ZPC9saXRlcmFsPikgCiAgICAgICAgICAgICAgICAgIHRoYXQgYWZmZWN0cyB0aGUgd2F5IFdpbmUgc2V0cyB0aGUgY29tcHV0ZXIgbmFtZS4gVGhlIGNvbXB1dGVyCiAgICAgICAgICAgICAgICAgIG5hbWUgaW4gdGhlIFdpbmRvd3Mgd29ybGQgaXMgdGhlIHNvLWNhbGxlZCA8ZW1waGFzaXM+TmV0QklPUyBuYW1lPC9lbXBoYXNpcz4uCiAgICAgICAgICAgICAgICAgIEl0IGlzIGNvbnRhaW5lZCBpbiB0aGUgPHZhcm5hbWU+Q29tcHV0ZXJOYW1lPC92YXJuYW1lPiBpbiB0aGUgcmVnaXN0cnkgZW50cnkKICAgICAgICAgICAgICAgICAgPHZhcm5hbWU+SEtFWV9MT0NBTF9NQUNISU5FXFN5c3RlbVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXENvbXB1dGVyTmFtZVxDb21wdXRlck5hbWU8L3Zhcm5hbWU+LgogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byAiWSIgb3IgbWlzc2luZywgV2luZSB3aWxsIHNldCB0aGUKICAgICAgICAgICAgICAgICAgTmV0QklPUyBuYW1lIHRvIHRoZSBVbml4IGhvc3QgbmFtZSBvZiB5b3VyIGNvbXB1dGVyLCBpZiAKICAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IHRydW5jYXRlZCB0byAzMSBjaGFyYWN0ZXJzLiBUaGUgVW5peCBob3N0bmFtZSBpcyB0aGUgb3V0cHV0CiAgICAgICAgICAgICAgICAgIG9mIHRoZSBzaGVsbCBjb21tYW5kIDxjb21tYW5kPmhvc3RuYW1lPC9jb21tYW5kPiwgdXAgdG8gYnV0IG5vdAogICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgdGhlIGZpcnN0IGRvdCAoJy4nKS4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIG1lYW5zIHRoYXQKICAgICAgICAgICAgICAgICAgV2luZG93cyBwcm9ncmFtcyBydW5uaW5nIHVuZGVyIFdpbmUgY2Fubm90IGNoYW5nZSB0aGUgTmV0QklPUyBjb21wdXRlciBuYW1lLgogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byAiTiIsIFdpbmUgd2lsbCB1c2UgdGhlIHJlZ2lzdHJ5IHZhbHVlIGFib3ZlCiAgICAgICAgICAgICAgICAgIHRvIHNldCB0aGUgTmV0QklPUyBuYW1lLiBPbmx5IGlmIHRoZSByZWdpc3RyeSBlbnRyeSBkb2Vzbid0IGV4aXN0ICh1c3VhbGx5CiAgICAgICAgICAgICAgICAgIG9ubHkgZHVyaW5nIHRoZSBmaXJzdCB3aW5lIHN0YXJ0dXApIGl0IHdpbGwgdXNlIHRoZSBVbml4IGhvc3RuYW1lIGFzCiAgICAgICAgICAgICAgICAgIHVzdWFsLiBXaW5kb3dzIGFwcGxpY2F0aW9ucyBjYW4gY2hhbmdlIHRoZSBOZXRCSU9TIG5hbWUuIFRoZSBjaGFuZ2UKICAgICAgICAgICAgICAgICAgd2lsbCBiZSBlZmZlY3RpdmUgYWZ0ZXIgYSAicmVib290IiwgaS5lLiBhZnRlciByZXN0YXJ0aW5nIFdpbmUuCiAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDMgaWQ9ImFwcGRlZmF1bHRzLXNlY3Rpb24iPgogICAgICAgICAgPHRpdGxlPlRoZSBbQXBwRGVmYXVsdHNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBzZWN0aW9uIGlzIHVzZWQgdG8gb3ZlcndyaXRlIGNlcnRhaW4gc2V0dGluZ3Mgb2YgdGhpcyBmaWxlIGZvciBhCiAgICAgICAgICAgIHNwZWNpYWwgcHJvZ3JhbSB3aXRoIGRpZmZlcmVudCBzZXR0aW5ncy4KICAgICAgICAgICAgW0FwcERlZmF1bHRzXSBpcyBub3QgdGhlIHJlYWwgbmFtZSBvZiB0aGUgc2VjdGlvbi4gVGhlIHJlYWwgbmFtZQogICAgICAgICAgICBjb25zaXN0cyBvZiB0aGUgbGVhZGluZyB3b3JkIEFwcERlZmF1bHRzIGZvbGxvd2VkIGJ5IHRoZSBuYW1lCiAgICAgICAgICAgIG9mIHRoZSBleGVjdXRhYmxlIHRoZSBzZWN0aW9uIGlzIHZhbGlkIGZvci4KCSAgICBUaGUgZW5kIG9mIHRoZSBzZWN0aW9uIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlCgkgICAgY29ycmVzcG9uZGluZyAic3RhbmRhcmQiIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQoJICAgIHRoYXQgc2hvdWxkIGhhdmUgc29tZSBvZiBpdHMgc2V0dGluZ3Mgb3ZlcndyaXR0ZW4gd2l0aCB0aGUKCSAgICBhcHBsaWNhdGlvbiBzcGVjaWZpYyBzZXR0aW5ncyB5b3UgZGVmaW5lLgoJICAgIFRoZSB0aHJlZSBwYXJ0cyBvZiB0aGUgc2VjdGlvbiBuYW1lIGFyZSBzZXBhcmF0ZWQgYnkgdHdvIGJhY2tzbGFzaGVzLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEN1cnJlbnRseSB3aW5lIHN1cHBvcnRzIG92ZXJyaWRpbmcgc2VsZWN0ZWQgc2V0dGluZ3Mgd2l0aGluCgkgICAgdGhlIHNlY3Rpb25zIFtEbGxPdmVycmlkZXNdLCBbeDExZHJ2XSwgW3ZlcnNpb25dIGFuZCBbZHNvdW5kXSBvbmx5LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IG92ZXJyaWRlcyB0aGUgbm9ybWFsIHNldHRpbmdzIGZvciBhCiAgICAgICAgICAgIHByb2dyYW06CgkgICAgPHByb2dyYW1saXN0aW5nPgo7OyBkZWZhdWx0IHNldHRpbmdzClt4MTFkcnZdCiJNYW5hZ2VkIiA9ICJZIgoiRGVza3RvcCIgPSAiTiIKCjs7IHJ1biBpbnN0YWxsIGluIGRlc2t0b3AgbW9kZQpbQXBwRGVmYXVsdHNcXGluc3RhbGwuZXhlXFx4MTFkcnZdCiJNYW5hZ2VkIiA9ICJOIgoiRGVza3RvcCIgPSAiODAweDYwMCIKCSAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPldoZXJlIERvIEkgUHV0IEl0PzwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgd2luZSBjb25maWcgZmlsZSBjYW4gZ28gaW4gdHdvIHBsYWNlcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPjxmaWxlbmFtZT4vdXNyL2xvY2FsL2V0Yy93aW5lLmNvbmY8L2ZpbGVuYW1lPjwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgQSBzeXN0ZW13aWRlIGNvbmZpZyBmaWxlLCB1c2VkIGZvciBhbnlvbmUgd2hvIGRvZXNuJ3QKICAgICAgICAgICAgICAgIGhhdmUgdGhlaXIgb3duLiBOT1RFOiB0aGlzIGZpbGUgaXMgY3VycmVudGx5IHVudXNlZCBhcyBhCiAgICAgICAgICAgICAgICBuZXcgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtIGlzIG5vdCBpbiBwbGFjZSBhdCB0aGlzCiAgICAgICAgICAgICAgICB0aW1lLgogICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+PGZpbGVuYW1lPiRIT01FLy53aW5lL2NvbmZpZzwvZmlsZW5hbWU+PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICBZb3VyIG93biBjb25maWcgZmlsZSAod2hpY2ggb25seSBpcyB1c2VkIGZvciB5b3VyIHVzZXIpLgogICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDxwYXJhPgogICAgICAgICAgU28gY29weSB5b3VyIHZlcnNpb24gb2YgdGhlIHdpbmUgY29uZmlnIGZpbGUgdG8KICAgICAgICAgIDxmaWxlbmFtZT4kSE9NRS8ud2luZS9jb25maWc8L2ZpbGVuYW1lPgoJICBvciA8ZmlsZW5hbWU+L3Vzci9sb2NhbC9ldGMvd2luZS5jb25mPC9maWxlbmFtZT4KCSAgZm9yIHdpbmUgdG8gcmVjb2duaXplIGl0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+V2hhdCBJZiBJdCBEb2Vzbid0IFdvcms/PC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZXJlIGlzIGFsd2F5cyBhIGNoYW5jZSB0aGF0IHRoaW5ncyB3aWxsIGdvIHdyb25nLiBJZiB0aGUKICAgICAgICAgIHVudGhpbmthYmxlIGhhcHBlbnMsIHJlcG9ydCB0aGUgcHJvYmxlbSB0bwoJICA8dWxpbmsgdXJsPSJodHRwOi8vYnVncy53aW5laHEuY29tLyI+V2luZSBCdWd6aWxsYTwvdWxpbms+LAoJICB0cnkgdGhlIG5ld3Nncm91cAogICAgICAgICAgPHN5c3RlbWl0ZW0+Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lPC9zeXN0ZW1pdGVtPiwKCSAgb3IgdGhlIElSQyBjaGFubmVsIDxzeXN0ZW1pdGVtPiNXaW5lSFE8L3N5c3RlbWl0ZW0+IGZvdW5kIG9uCiAgICAgICAgICBpcmMub3BlbnByb2plY3RzLm5ldCwgb3IgY29ubmVjdGVkIHNlcnZlcnMuCgkgIE1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIGxvb2tlZCBvdmVyIHRoaXMgZG9jdW1lbnQgdGhvcm91Z2hseSwKCSAgYW5kIGhhdmUgYWxzbyByZWFkOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT48ZmlsZW5hbWU+UkVBRE1FPC9maWxlbmFtZT48L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8ZmlsZW5hbWU+aHR0cDovL3d3dy53aW5laHEub3JnL3Ryb3VibGUvPC9maWxlbmFtZT4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIGluZGVlZCBpdCBsb29rcyBsaWtlIHlvdSd2ZSBkb25lIHlvdXIgcmVzZWFyY2gsIGJlCiAgICAgICAgICBwcmVwYXJlZCBmb3IgaGVscGZ1bCBzdWdnZXN0aW9ucy4gSWYgeW91IGhhdmVuJ3QsIGJyYWNlCiAgICAgICAgICB5b3Vyc2VsZiBmb3IgaGVhdmluZyBmbGFtaW5nLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJ4MTFkcnYiPgogICAgICA8dGl0bGU+Q29uZmlndXJpbmcgdGhlIHgxMWRydiBEcml2ZXI8L3RpdGxlPgoKICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1vdmUta2FhdmVuOyA8ZW1haWw+JmVtYWlsLW92ZS1rYWF2ZW47PC9lbWFpbD4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi94MTFkcnY8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgoKICAgICAgPHBhcmE+CiAgICAgICAgTW9zdCBXaW5lIHVzZXJzIHJ1biBXaW5lIHVuZGVyIHRoZSB3aW5kb3dpbmcgc3lzdGVtIGtub3duIGFzCiAgICAgICAgWDExLiBEdXJpbmcgbW9zdCBvZiBXaW5lJ3MgaGlzdG9yeSwgdGhpcyB3YXMgdGhlIG9ubHkgZGlzcGxheQogICAgICAgIGRyaXZlciBhdmFpbGFibGUsIGJ1dCBpbiByZWNlbnQgeWVhcnMsIHBhcnRzIG9mIFdpbmUgaGF2ZSBiZWVuCiAgICAgICAgcmVvcmdhbml6ZWQgdG8gYWxsb3cgZm9yIG90aGVyIGRpc3BsYXkgZHJpdmVycyAoYWx0aG91Z2ggdGhlCiAgICAgICAgb25seSBhbHRlcm5hdGl2ZSBjdXJyZW50bHkgYXZhaWxhYmxlIGlzIFBhdHJpayBTdHJpZHZhbGwncwogICAgICAgIG5jdXJzZXMtYmFzZWQgdHR5ZHJ2LCB3aGljaCBoZSBjbGFpbXMgd29ya3MgZm9yIGRpc3BsYXlpbmcKICAgICAgICBjYWxjLmV4ZSkuIFRoZSBkaXNwbGF5IGRyaXZlciBpcyBjaG9zZW4gd2l0aCB0aGUKICAgICAgICA8bGl0ZXJhbD5HcmFwaGljc0RyaXZlcjwvbGl0ZXJhbD4gb3B0aW9uIGluIHRoZSBbd2luZV0gc2VjdGlvbgogICAgICAgIG9mIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+LCBidXQgSSB3aWxsIG9ubHkgY292ZXIgdGhlCiAgICAgICAgeDExZHJ2IGRyaXZlciBpbiB0aGlzIGFydGljbGUuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+eDExZHJ2IG1vZGVzIG9mIG9wZXJhdGlvbjwvdGl0bGU+CgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIHgxMWRydiBkcml2ZXIgY29uc2lzdHMgb2YgdHdvIGNvbmNlcHR1YWxseSBkaXN0aW5jdAogICAgICAgICAgcGllY2VzLCB0aGUgZ3JhcGhpY3MgZHJpdmVyIChHREkgcGFydCksIGFuZCB0aGUgd2luZG93aW5nCiAgICAgICAgICBkcml2ZXIgKFVTRVIgcGFydCkuIEJvdGggb2YgdGhlc2UgYXJlIGxpbmtlZCBpbnRvIHRoZQogICAgICAgICAgPGZpbGVuYW1lPmxpYngxMWRydi5zbzwvZmlsZW5hbWU+IG1vZHVsZSwgdGhvdWdoICh3aGljaCB5b3UKICAgICAgICAgIGxvYWQgd2l0aCB0aGUgPGxpdGVyYWw+R3JhcGhpY3NEcml2ZXI8L2xpdGVyYWw+IG9wdGlvbikuIEluCiAgICAgICAgICBXaW5lLCBydW5uaW5nIG9uIFgxMSwgdGhlIGdyYXBoaWNzIGRyaXZlciBtdXN0IGRyYXcgb24KICAgICAgICAgIGRyYXdhYmxlcyAod2luZG93IGludGVyaW9ycykgcHJvdmlkZWQgYnkgdGhlIHdpbmRvd2luZwogICAgICAgICAgZHJpdmVyLiBUaGlzIGRpZmZlcnMgYSBiaXQgZnJvbSB0aGUgV2luZG93cyBtb2RlbCwgd2hlcmUgdGhlCiAgICAgICAgICB3aW5kb3dpbmcgc3lzdGVtIGNyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgZGV2aWNlIGNvbnRleHRzCiAgICAgICAgICBjb250cm9sbGVkIGJ5IHRoZSBncmFwaGljcyBkcml2ZXIsIGFuZCBhcHBsaWNhdGlvbnMgYXJlCiAgICAgICAgICBhbGxvd2VkIHRvIGhvb2sgaW50byB0aGlzIHJlbGF0aW9uc2hpcCBhbnl3aGVyZSB0aGV5IGxpa2UuCiAgICAgICAgICBUaHVzLCB0byBwcm92aWRlIGFueSByZWFzb25hYmxlIHRyYWRlb2ZmIGJldHdlZW4KICAgICAgICAgIGNvbXBhdGliaWxpdHkgYW5kIHVzYWJpbGl0eSwgdGhlIHgxMWRydiBoYXMgdGhyZWUgZGlmZmVyZW50CiAgICAgICAgICBtb2RlcyBvZiBvcGVyYXRpb24uCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+TWFuYWdlZDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQuIFNwZWNpZmllZCBieSB1c2luZyB0aGUgPGxpdGVyYWw+TWFuYWdlZDwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgIHdpbmUgY29uZmlnIGZpbGUgb3B0aW9uIChzZWUgYmVsb3cpLgogICAgICAgICAgICAgICAgT3JkaW5hcnkgdG9wLWxldmVsIGZyYW1lIHdpbmRvd3Mgd2l0aCB0aGljayBib3JkZXJzLAogICAgICAgICAgICAgICAgdGl0bGUgYmFycywgYW5kIHN5c3RlbSBtZW51cyB3aWxsIGJlIG1hbmFnZWQgYnkgeW91cgogICAgICAgICAgICAgICAgd2luZG93IG1hbmFnZXIuIFRoaXMgbGV0cyB0aGVzZSBhcHBsaWNhdGlvbnMgaW50ZWdyYXRlCiAgICAgICAgICAgICAgICBiZXR0ZXIgd2l0aCB0aGUgcmVzdCBvZiB5b3VyIGRlc2t0b3AsIGJ1dCBtYXkgbm90CiAgICAgICAgICAgICAgICBhbHdheXMgd29yayBwZXJmZWN0bHkgKGEgcmV3cml0ZSBvZiB0aGlzIG1vZGUgb2YKICAgICAgICAgICAgICAgIG9wZXJhdGlvbiwgdG8gbWFrZSBpdCBtb3JlIHJvYnVzdCBhbmQgbGVzcyBwYXRjaHksIGlzCiAgICAgICAgICAgICAgICBjdXJyZW50bHkgYmVpbmcgZG9uZSwgdGhvdWdoLCBhbmQgaXQncyBwbGFubmVkIHRvIGJlCiAgICAgICAgICAgICAgICBmaW5pc2hlZCBiZWZvcmUgdGhlIFdpbmUgMS4wIHJlbGVhc2UpLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+VW5tYW5hZ2VkL05vcm1hbDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgV2luZG93IG1hbmFnZXIgaW5kZXBlbmRlbnQgKGFueSBydW5uaW5nCiAgICAgICAgICAgICAgICB3aW5kb3cgbWFuYWdlciBpcyBpZ25vcmVkIGNvbXBsZXRlbHkpLiBXaW5kb3cKICAgICAgICAgICAgICAgIGRlY29yYXRpb25zICh0aXRsZSBiYXJzLCBib3JkZXJzLCBldGMpIGFyZSBkcmF3biBieQogICAgICAgICAgICAgICAgV2luZSB0byBsb29rIGFuZCBmZWVsIGxpa2UgdGhlIHJlYWwgV2luZG93cy4gVGhpcyBpcwogICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIGFwcGxpY2F0aW9ucyB0aGF0IGRlcGVuZCBvbiBiZWluZyBhYmxlCiAgICAgICAgICAgICAgICB0byBjb21wdXRlIHRoZSBleGFjdCBzaXplcyBvZiBhbnkgc3VjaCBkZWNvcmF0aW9ucywgb3IKICAgICAgICAgICAgICAgIHRoYXQgd2FudCB0byBkcmF3IHRoZWlyIG93bi4KICAgICAgICAgICAgICAgIFVubWFuYWdlZCBtb2RlIGlzIG9ubHkgdXNlZCBpZiBib3RoIE1hbmFnZWQgYW5kIERlc2t0b3AKICAgICAgICAgICAgICAgIGFyZSBzZXQgdG8gZGlzYWJsZWQuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EZXNrdG9wLWluLWEtQm94PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBTcGVjaWZpZWQgYnkgdXNpbmcgdGhlIDxsaXRlcmFsPkRlc2t0b3A8L2xpdGVyYWw+CgkJd2luZSBjb25maWcgZmlsZSBvcHRpb24gKHNlZSBiZWxvdykuCiAgICAgICAgICAgICAgICAoYWRkaW5nIGEgZ2VvbWV0cnksIGUuZy4gPGxpdGVyYWw+ODAweDYwMDwvbGl0ZXJhbD4KCQlmb3IgYSBzdWNoLXNpemVkIGRlc2t0b3AsIG9yCiAgICAgICAgICAgICAgICBldmVuIDxsaXRlcmFsPjgwMHg2MDArMCswPC9saXRlcmFsPiB0bwogICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBwb3NpdGlvbiB0aGUgZGVza3RvcCBhdCB0aGUgdXBwZXItbGVmdAogICAgICAgICAgICAgICAgY29ybmVyIG9mIHRoZSBkaXNwbGF5KS4gVGhpcyBpcyB0aGUgbW9kZSBtb3N0CiAgICAgICAgICAgICAgICBjb21wYXRpYmxlIHdpdGggdGhlIFdpbmRvd3MgbW9kZWwuIEFsbCBhcHBsaWNhdGlvbgogICAgICAgICAgICAgICAgd2luZG93cyB3aWxsIGp1c3QgYmUgV2luZS1kcmF3biB3aW5kb3dzIGluc2lkZSB0aGUKICAgICAgICAgICAgICAgIFdpbmUtcHJvdmlkZWQgZGVza3RvcCB3aW5kb3cgKHdoaWNoIHdpbGwgaXRzZWxmIGJlCiAgICAgICAgICAgICAgICBtYW5hZ2VkIGJ5IHlvdXIgd2luZG93IG1hbmFnZXIpLCBhbmQgV2luZG93cwogICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIGNhbiByb2FtIGZyZWVseSB3aXRoaW4gdGhpcyB2aXJ0dWFsCiAgICAgICAgICAgICAgICB3b3Jrc3BhY2UgYW5kIHRoaW5rIHRoZXkgb3duIGl0IGFsbCwgd2l0aG91dAogICAgICAgICAgICAgICAgZGlzdHVyYmluZyB5b3VyIG90aGVyIFggYXBwcy4KCQlOb3RlOiBjdXJyZW50bHkgdGhlcmUncyBvbmUgZGVza3RvcCB3aW5kb3cgZm9yIGV2ZXJ5CgkJYXBwbGljYXRpb247IHRoaXMgd2lsbCBiZSBmaXhlZCBhdCBzb21lIHRpbWUuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBbeDExZHJ2XSBzZWN0aW9uPC90aXRsZT4KCiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPk1hbmFnZWQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUgY2FuIGxldCBmcmFtZSB3aW5kb3dzIGJlIG1hbmFnZWQgYnkgeW91ciB3aW5kb3cKICAgICAgICAgICAgICAgIG1hbmFnZXIuIFRoaXMgb3B0aW9uIHNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRoYXQKICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EZXNrdG9wPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBDcmVhdGVzIGEgbWFpbiBkZXNrdG9wIHdpbmRvdyBvZiBhIHNwZWNpZmllZCBzaXplCgkJdG8gZGlzcGxheSBhbGwgV2luZG93cyBhcHBsaWNhdGlvbnMgaW4uCgkJVGhlIHNpemUgYXJndW1lbnQgY291bGQgZS5nLiBiZSAiODAweDYwMCIuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EWEdyYWI8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIElmIHlvdSBkb24ndCB1c2UgREdBLCB5b3UgbWF5IHdhbnQgYW4gYWx0ZXJuYXRpdmUKICAgICAgICAgICAgICAgIG1lYW5zIHRvIGNvbnZpbmNlIHRoZSBtb3VzZSBjdXJzb3IgdG8gc3RheSB3aXRoaW4gdGhlCiAgICAgICAgICAgICAgICBnYW1lIHdpbmRvdy4gVGhpcyBvcHRpb24gZG9lcyB0aGF0LiBPZiBjb3Vyc2UsIGFzIHdpdGgKICAgICAgICAgICAgICAgIERHQSwgaWYgV2luZSBjcmFzaGVzLCB5b3UncmUgaW4gdHJvdWJsZSAoYWx0aG91Z2ggbm90CiAgICAgICAgICAgICAgICBhcyBiYWRseSBhcyBpbiB0aGUgREdBIGNhc2UsIHNpbmNlIHlvdSBjYW4gc3RpbGwgdXNlCiAgICAgICAgICAgICAgICB0aGUga2V5Ym9hcmQgdG8gZ2V0IG91dCBvZiBYKS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlVzZURHQTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgVGhpcyBzcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCBEaXJlY3REcmF3IHRvIHVzZQogICAgICAgICAgICAgICAgWEZyZWU4NidzIDxmaXJzdHRlcm0+RGlyZWN0IEdyYXBoaWNzCiAgICAgICAgICAgICAgICAgIEFyY2hpdGVjdHVyZTwvZmlyc3R0ZXJtPiAoREdBKSwgd2hpY2ggaXMgYWJsZSB0bwogICAgICAgICAgICAgICAgdGFrZSBvdmVyIHRoZSBlbnRpcmUgZGlzcGxheSBhbmQgcnVuIHRoZSBnYW1lCiAgICAgICAgICAgICAgICBmdWxsLXNjcmVlbiBhdCBtYXhpbXVtIHNwZWVkLiAoV2l0aCBER0ExIChYRnJlZTg2CiAgICAgICAgICAgICAgICAzLngpLCB5b3Ugc3RpbGwgaGF2ZSB0byBjb25maWd1cmUgdGhlIFggc2VydmVyIHRvIHRoZQogICAgICAgICAgICAgICAgZ2FtZSdzIHJlcXVlc3RlZCBicHAgZmlyc3QsIGJ1dCB3aXRoIERHQTIgKFhGcmVlODYKICAgICAgICAgICAgICAgIDQueCksIHJ1bnRpbWUgZGVwdGgtc3dpdGNoaW5nIG1heSBiZSBwb3NzaWJsZSwKICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB5b3VyIGRyaXZlcidzIGNhcGFiaWxpdGllcy4pIEJ1dCBiZSBhd2FyZQogICAgICAgICAgICAgICAgdGhhdCBpZiBXaW5lIGNyYXNoZXMgd2hpbGUgaW4gREdBIG1vZGUsIGl0IG1heSBub3QgYmUKICAgICAgICAgICAgICAgIHBvc3NpYmxlIHRvIHJlZ2FpbiBjb250cm9sIG92ZXIgeW91ciBjb21wdXRlciB3aXRob3V0CiAgICAgICAgICAgICAgICByZWJvb3RpbmcuIERHQSBub3JtYWxseSByZXF1aXJlcyBlaXRoZXIgcm9vdAogICAgICAgICAgICAgICAgcHJpdmlsZWdlcyBvciByZWFkL3dyaXRlIGFjY2VzcyB0bwogICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9kZXYvbWVtPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Vc2VYU2htPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBJZiB5b3UgZG9uJ3Qgd2FudCBEaXJlY3RYIHRvIHVzZSBER0EsIHlvdSBjYW4gYXQgbGVhc3QKICAgICAgICAgICAgICAgIHVzZSBYIFNoYXJlZCBNZW1vcnkgZXh0ZW5zaW9ucyAoWFNobSkuIEl0IGlzIG11Y2gKICAgICAgICAgICAgICAgIHNsb3dlciB0aGFuIERHQSwgc2luY2UgdGhlIGFwcCBkb2Vzbid0IGhhdmUgZGlyZWN0CiAgICAgICAgICAgICAgICBhY2Nlc3MgdG8gdGhlIHBoeXNpY2FsIGZyYW1lIGJ1ZmZlciwgYnV0IHVzaW5nIHNoYXJlZAogICAgICAgICAgICAgICAgbWVtb3J5IHRvIGRyYXcgdGhlIGZyYW1lIGlzIGF0IGxlYXN0IGZhc3RlciB0aGFuCiAgICAgICAgICAgICAgICBzZW5kaW5nIHRoZSBkYXRhIHRocm91Z2ggdGhlIHN0YW5kYXJkIFgxMSBzb2NrZXQsIGV2ZW4KICAgICAgICAgICAgICAgIHRob3VnaCBXaW5lJ3MgWFNobSBzdXBwb3J0IGlzIHN0aWxsIGtub3duIHRvIGNyYXNoCiAgICAgICAgICAgICAgICBzb21ldGltZXMuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5EZXNrdG9wRG91YmxlQnVmZmVyZWQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgdXNlIHRoZQogICAgICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRlc2t0b3A8L3BhcmFtZXRlcj4gY29tbWFuZC1saW5lIG9wdGlvbgogICAgICAgICAgICAgICAgdG8gcnVuIGluIGEgZGVza3RvcCB3aW5kb3cuIFNwZWNpZmllcyB3aGV0aGVyIHRvCiAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIGRlc2t0b3Agd2luZG93IHdpdGggYSBkb3VibGUtYnVmZmVyZWQKICAgICAgICAgICAgICAgIHZpc3VhbCwgc29tZXRoaW5nIG1vc3QgT3BlbkdMIGdhbWVzIG5lZWQgdG8gcnVuCiAgICAgICAgICAgICAgICBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5BbGxvY1N5c3RlbUNvbG9yczwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQXBwbGllcyBvbmx5IGlmIHlvdSBoYXZlIGEgcGFsZXR0ZS1iYXNlZCBkaXNwbGF5LCBpLmUuCiAgICAgICAgICAgICAgICBpZiB5b3VyIFggc2VydmVyIGlzIHNldCB0byBhIGRlcHRoIG9mIDhicHAsIGFuZCBpZiB5b3UKICAgICAgICAgICAgICAgIGhhdmVuJ3QgcmVxdWVzdGVkIGEgcHJpdmF0ZSBjb2xvciBtYXAuIEl0IHNwZWNpZmllcwogICAgICAgICAgICAgICAgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNoYXJlZCBjb2xvcm1hcCBjZWxscyAocGFsZXR0ZQogICAgICAgICAgICAgICAgZW50cmllcykgV2luZSBzaG91bGQgb2NjdXB5LiBUaGUgaGlnaGVyIHRoaXMgdmFsdWUsCiAgICAgICAgICAgICAgICB0aGUgbGVzcyBjb2xvcnMgd2lsbCBiZSBhdmFpbGFibGUgdG8gb3RoZXIKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlByaXZhdGVDb2xvck1hcDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQXBwbGllcyBvbmx5IGlmIHlvdSBoYXZlIGEgcGFsZXR0ZS1iYXNlZCBkaXNwbGF5LCBpLmUuCiAgICAgICAgICAgICAgICBpZiB5b3VyIFggc2VydmVyIGlzIHNldCB0byBhIGRlcHRoIG9mIDhicHAuIEl0CiAgICAgICAgICAgICAgICBzcGVjaWZpZXMgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIHNoYXJlZCBjb2xvcgogICAgICAgICAgICAgICAgbWFwLCBidXQgYSBwcml2YXRlIGNvbG9yIG1hcCwgd2hlcmUgYWxsIDI1NiBjb2xvcnMgYXJlCiAgICAgICAgICAgICAgICBhdmFpbGFibGUuIFRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBXaW5lJ3MgcHJpdmF0ZQogICAgICAgICAgICAgICAgY29sb3IgbWFwIGlzIG9ubHkgc2VlbiB3aGlsZSB0aGUgbW91c2UgcG9pbnRlciBpcwogICAgICAgICAgICAgICAgaW5zaWRlIGEgV2luZSB3aW5kb3csIHNvIHBzeWNoZWRlbGljIGZsYXNoaW5nIGFuZAogICAgICAgICAgICAgICAgZnVua3kgY29sb3JzIHdpbGwgYmVjb21lIHJvdXRpbmUgaWYgeW91IHVzZSB0aGUgbW91c2UKICAgICAgICAgICAgICAgIGEgbG90LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+U3luY2hyb25vdXM8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRvIGJlIHVzZWQgZm9yIGRlYnVnZ2luZyBYMTEgb3BlcmF0aW9ucy4KCQlJZiBXaW5lIGNyYXNoZXMgd2l0aCBhbiBYMTEgZXJyb3IsIHRoZW4geW91IHNob3VsZCBlbmFibGUKCQlTeW5jaHJvbm91cyBtb2RlIHRvIGRpc2FibGUgWDExIHJlcXVlc3QgY2FjaGluZyBpbiBvcmRlcgoJCXRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBYMTEgZXJyb3IgaGFwcGVucyBkaXJlY3RseSBhZnRlcgoJCXRoZSBjb3JyZXNwb25kaW5nIFgxMSBjYWxsIGluIHRoZSBsb2cgZmlsZSBhcHBlYXJzLgoJCVdpbGwgc2xvdyBkb3duIFgxMSBvdXRwdXQgIQogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+U2NyZWVuRGVwdGg8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSB0byBtdWx0aS1kZXB0aCBkaXNwbGF5cy4gSXQgc3BlY2lmaWVzCiAgICAgICAgICAgICAgICB3aGljaCBvZiB0aGUgYXZhaWxhYmxlIGRlcHRocyBXaW5lIHNob3VsZCB1c2UgKGFuZAogICAgICAgICAgICAgICAgdGVsbCBXaW5kb3dzIGFwcHMgYWJvdXQpLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGlzcGxheTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgVGhpcyBzcGVjaWZpZXMgd2hpY2ggWDExIGRpc3BsYXkgdG8gdXNlLCBhbmQgaWYKICAgICAgICAgICAgICAgIHNwZWNpZmllZCwgd2lsbCBvdmVycmlkZSB0aGUKICAgICAgICAgICAgICAgIDxlbnZhcj5ESVNQTEFZPC9lbnZhcj4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5QZXJmZWN0R3JhcGhpY3M8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIG9ubHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGZhc3QgWDExIHJvdXRpbmVzCiAgICAgICAgICAgICAgICBvciBleGFjdCBXaW5lIHJvdXRpbmVzIHdpbGwgYmUgdXNlZCBmb3IgY2VydGFpbiBST1AKICAgICAgICAgICAgICAgIGNvZGVzIGluIGJsaXQgb3BlcmF0aW9ucy4gTW9zdCB1c2VycyB3b24ndCBub3RpY2UgYW55CiAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+VGV4dENQPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CgkgICAgICAgIENvZGVwYWdlIHRvIGJlIHVzZWQgZm9yIHJlbmRlcmluZyB0aGUgdGV4dCBpbiBYMTEKCQlvdXRwdXQuIFNvbWUgc2FtcGxlIHZhbHVlcyB3b3VsZCBiZSA0MzcgKFVTQSwgQ2FuYWRhKSwKCQk4NTAgKEV1cm9wZSksIDg1MiAoQ2VudHJhbC9FYXN0ZXJuIEV1cm9wZSksIDg1NQoJCShDeXJpbGxpYykuIEZvciBhZGRpdGlvbmFsIHN1aXRhYmxlIHZhbHVlcywgc2VlIGUuZy4gdGhlIExpbnV4CgkJa2VybmVsJ3MgY29kZXBhZ2UgY29uZmlndXJhdGlvbiBwYWdlLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgogICAgPC9zZWN0MT4KCiAgICAmcmVnaXN0cnk7CgogICAgPHNlY3QxIGlkPSJ3aW5kb3dzLXZlcnNpb25zIj4KCiAgICAgIDx0aXRsZT5TZXR0aW5nIHRoZSB3aW5kb3dzIGFuZCBET1MgdmVyc2lvbiB2YWx1ZSB0aGF0J3MgcGFzc2VkIHRvCiAgICAgIHByb2dyYW1zPC90aXRsZT4KICAgICAgCiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgIE9jdCAxOCAyMDAyCiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIFRoZSB3aW5kb3dzIGFuZCBET1MgdmVyc2lvbiB2YWx1ZSBhIHByb2dyYW0gZ2V0cyBlLmcuIGJ5IGNhbGxpbmcgdGhlCglXaW5kb3dzIGZ1bmN0aW9uIEdldFZlcnNpb24oKSBwbGF5cyBhIHZlcnkgaW1wb3J0YW50IHJvbGU6CglJZiB5b3VyIFdpbmUgaW5zdGFsbGF0aW9uIGZvciB3aGF0ZXZlciByZWFzb24gZmFpbHMgdG8gcHJvdmlkZQoJdG8geW91ciBwcm9ncmFtIHRoZSBjb3JyZWN0IHZlcnNpb24gdmFsdWUgdGhhdCBpdCBleHBlY3RzLAoJdGhlbiB0aGUgcHJvZ3JhbSBtaWdodCBhc3N1bWUgc29tZSB2ZXJ5IGJhZCB0aGluZ3MgYW5kIGZhaWwgKGluCgl0aGUgd29yc3QgY2FzZSBldmVuIHNpbGVudGx5ICEpLgogICAgCiAgICAgICAgRm9ydHVuYXRlbHkgV2luZSBjb250YWlucyBzb21lIG1vcmUgb3IgbGVzcyBpbnRlbGxpZ2VudCBXaW5kb3dzCgl2ZXJzaW9uIGd1ZXNzaW5nIGFsZ29yaXRobSB0aGF0IHdpbGwgdHJ5IHRvIGd1ZXNzIHRoZSBXaW5kb3dzCgl2ZXJzaW9uIGEgcHJvZ3JhbSBtaWdodCBleHBlY3QgYW5kIHBhc3MgdGhhdCBvbmUgb24gdG8gdGhlCglwcm9ncmFtLgoKCVRodXMgeW91IHNob3VsZCA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gbGlnaHRseSBjb25maWd1cmUgYSB2ZXJzaW9uIHZhbHVlLCBhcyB0aGlzIHdpbGwgYmUgYSAiZm9yY2VkIiB2YWx1ZSBhbmQgdGh1cyB0dXJuIG91dCB0byBiZSByYXRoZXIgaGFybWZ1bCB0byBwcm9wZXIgb3BlcmF0aW9uLiBJbiBvdGhlciB3b3Jkczogb25seSBleHBsaWNpdGx5IHNldCBhIFdpbmRvd3MgdmVyc2lvbiB2YWx1ZSBpbiBjYXNlIFdpbmUncyBvd24gdmVyc2lvbiBkZXRlY3Rpb24gd2FzIHVuYWJsZSB0byBwcm92aWRlIHRoZSBjb3JyZWN0IFdpbmRvd3MgdmVyc2lvbiBhbmQgdGhlIHByb2dyYW0gZmFpbHMuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+SG93IHRvIGNvbmZpZ3VyZSB0aGUgV2luZG93cyBhbmQgRE9TIHZlcnNpb24gdmFsdWUgV2luZQoJc2hvdWxkIHJldHVybjwvdGl0bGU+CgkKCTxwYXJhPgoJVGhlIHZlcnNpb24gdmFsdWVzIGNhbiBiZSBjb25maWd1cmVkIGluIHRoZSB3aW5lIGNvbmZpZyBmaWxlIGluCgl0aGUgW1ZlcnNpb25dIHNlY3Rpb24uCgk8L3BhcmE+CgoJPHZhcmlhYmxlbGlzdD4KCSAgPHZhcmxpc3RlbnRyeT4KCSAgICA8dGVybT4iV2luZG93cyIgPSAiJmx0O3ZlcnNpb24gc3RyaW5nJmd0OyI8L3Rlcm0+CgkgICAgPGxpc3RpdGVtPgoJICAgICAgPHBhcmE+CgkgICAgICAgIGRlZmF1bHQ6IG5vbmU7IGNob3NlbiBieSBzZW1pLWludGVsbGlnZW50IGRldGVjdGlvbgoJICAgICAgICBtZWNoYW5pc20gYmFzZWQgb24gRExMIGVudmlyb25tZW50LgoJICAgICAgICBVc2VkIHRvIHNwZWNpZnkgd2hpY2ggV2luZG93cyB2ZXJzaW9uIHRvIHJldHVybiB0bwoJICAgICAgICBwcm9ncmFtcyAgKGZvcmNlZCAgdmFsdWUsIG92ZXJyaWRlcyBzdGFuZGFyZCBkZXRlY3Rpb24KCSAgICAgICAgbWVjaGFuaXNtICAhKS4gVmFsaWQgIHNldHRpbmdzIGFyZSBlLmcuICJ3aW4zMSIsICJ3aW45NSIsCgkgICAgICAgICJ3aW45OCIsICAid2luMmsiLCAgIndpbnhwIi4KCQlBbHNvIHZhbGlkIGFzIGFuCgkJPGxpbmsgbGlua2VuZD0iYXBwZGVmYXVsdHMtc2VjdGlvbiI+QXBwRGVmYXVsdHM8L2xpbms+CgkgICAgICAgIHNldHRpbmcgKHJlY29tbWVuZGVkL3ByZWZlcnJlZCB1c2UpLgoJICAgICAgPC9wYXJhPgoJICAgIDwvbGlzdGl0ZW0+CgkgIDwvdmFybGlzdGVudHJ5PgoJICA8dmFybGlzdGVudHJ5PgoJICAgIDx0ZXJtPiJET1MiPSImbHQ7dmVyc2lvbiBzdHJpbmcmZ3Q7IjwvdGVybT4KCSAgICA8bGlzdGl0ZW0+CgkgICAgICA8cGFyYT4KCSAgICAgICAgVXNlZCB0byBzcGVjaWZ5IHRoZSBET1MgdmVyc2lvbiB0aGF0IHNob3VsZCBiZSByZXR1cm5lZAoJCXRvIHByb2dyYW1zLiBPbmx5IHRha2VzIGVmZmVjdCBpbiBjYXNlIFdpbmUgYWN0cyBhcwoJCSJ3aW4zMSIgV2luZG93cyB2ZXJzaW9uICEgQ29tbW9uIERPUyB2ZXJzaW9uIHNldHRpbmdzCgkJaW5jbHVkZSA2LjIyLCA2LjIwLCA2LjAwLCA1LjAwLCA0LjAwLCAzLjMwLCAzLjEwLgoJCUFsc28gdmFsaWQgYXMgYW4KCQk8bGluayBsaW5rZW5kPSJhcHBkZWZhdWx0cy1zZWN0aW9uIj5BcHBEZWZhdWx0czwvbGluaz4KCSAgICAgICAgc2V0dGluZyAocmVjb21tZW5kZWQvcHJlZmVycmVkIHVzZSkuCgkgICAgICA8L3BhcmE+CgkgICAgPC9saXN0aXRlbT4KCSAgPC92YXJsaXN0ZW50cnk+Cgk8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CiAgICAKICAgIDxzZWN0MSBpZD0iY2Ryb20tbGFiZWxzIj4KICAgICAgPHNlY3QxaW5mbz4KICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICA8YXV0aG9yPgogICAgICAgICAgICA8Zmlyc3RuYW1lPlBldHI8L2ZpcnN0bmFtZT4KICAgICAgICAgICAgPHN1cm5hbWU+VG9tYXNlazwvc3VybmFtZT4KICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgogICAgICAgICAgICAgIDxhZGRyZXNzPjxlbWFpbD4mZW1haWwtcGV0ci10b21hc2VrOzwvZW1haWw+PC9hZGRyZXNzPgogICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgogICAgICAgICAgICA8Y29udHJpYj5Ob3YgMTQgMTk5OTwvY29udHJpYj4KICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICAgPGF1dGhvcj4KICAgICAgICAgICAgPGZpcnN0bmFtZT5BbmRyZWFzPC9maXJzdG5hbWU+CiAgICAgICAgICAgIDxzdXJuYW1lPk1vaHI8L3N1cm5hbWU+CiAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICAgICAgICA8YWRkcmVzcz48ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPjwvYWRkcmVzcz4KICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgPGNvbnRyaWI+SmFuIDI1IDIwMDA8L2NvbnRyaWI+CiAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICA8L2F1dGhvcmdyb3VwPgogICAgICA8L3NlY3QxaW5mbz4KCiAgICAgIDx0aXRsZT5Ecml2ZSBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIHdpdGggd2luZTwvdGl0bGU+CiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtcGV0ci10b21hc2VrOyA8ZW1haWw+JmVtYWlsLXBldHItdG9tYXNlazs8L2VtYWlsPgogICAgICAgIE5vdiAxNCAxOTk5CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgQ2hhbmdlcyBieSAmbmFtZS1hbmRyZWFzLW1vaHI7IDxlbWFpbD4mZW1haWwtYW5kcmVhcy1tb2hyOzwvZW1haWw+CiAgICAgICAgSmFuIDI1IDIwMDAKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9jZHJvbS1sYWJlbHM8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBVbnRpbCBub3csIHlvdXIgb25seSBwb3NzaWJpbGl0eSBvZiBzcGVjaWZ5aW5nIGRyaXZlIHZvbHVtZQogICAgICAgIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnMgd2FzIHRvIHNldCB0aGVtIG1hbnVhbGx5IGluIHRoZSB3aW5lCiAgICAgICAgY29uZmlnIGZpbGUuIEJ5IG5vdywgd2luZSBjYW4gcmVhZCB0aGVtIGRpcmVjdGx5IGZyb20gdGhlCiAgICAgICAgZGV2aWNlIGFzIHdlbGwuIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3IgbWFueSBXaW4gOXggZ2FtZXMgb3IKICAgICAgICBmb3Igc2V0dXAgcHJvZ3JhbXMgZGlzdHJpYnV0ZWQgb24gQ0QtUk9NcyB0aGF0IGNoZWNrIGZvcgogICAgICAgIHZvbHVtZSBsYWJlbC4KICAgICAgPC9wYXJhPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5XaGF0J3MgU3VwcG9ydGVkPzwvdGl0bGU+CgogICAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJhbGwiPgogICAgICAgICAgPHRncm91cCBjb2xzPSIzIj4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+RmlsZSBTeXN0ZW08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlR5cGVzPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Db21tZW50PC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+RkFUIHN5c3RlbXM8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PmhkLCBmbG9wcHk8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlYWRzIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+SVNPOTY2MDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Y2Ryb208L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlYWRzIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnMgKG5vdCBtaXhlZC1tb2RlIENEcyB5ZXQgISk8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgPC90Z3JvdXA+CiAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgoKICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+SG93IFRvIFNldCBVcD88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUmVhZGluZyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIGp1c3Qgd29ya3MgYXV0b21hZ2ljYWxseQogICAgICAgICAgaWYgeW91IHNwZWNpZnkgYSA8bGl0ZXJhbD5EZXZpY2U9PC9saXRlcmFsPiBsaW5lIGluIHRoZQogICAgICAgICAgW0RyaXZlIFhdIHNlY3Rpb24gaW4geW91ciA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPi4KICAgICAgICAgIE5vdGUgdGhhdCB0aGUgZGV2aWNlIGhhcyB0byBleGlzdCBhbmQgbXVzdCBiZSBhY2Nlc3NpYmxlIGlmCiAgICAgICAgICB5b3UgZG8gdGhpcywgdGhvdWdoLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBkb24ndCBkbyB0aGF0LCB0aGVuIHlvdSBzaG91bGQgZ2l2ZSBmaXhlZAogICAgICAgICAgPGxpdGVyYWw+IkxhYmVsIiA9PC9saXRlcmFsPiBvciA8bGl0ZXJhbD4iU2VyaWFsIiA9PC9saXRlcmFsPgogICAgICAgICAgZW50cmllcyBpbiA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiwgYXMgV2luZSByZXR1cm5zCiAgICAgICAgICB0aGVzZSBlbnRyaWVzIGluc3RlYWQgaWYgbm8gZGV2aWNlIGlzIGdpdmVuLiBJZiB0aGV5IGRvbid0CiAgICAgICAgICBleGlzdCwgdGhlbiBXaW5lIHdpbGwgcmV0dXJuIGRlZmF1bHQgdmFsdWVzIChsYWJlbAogICAgICAgICAgPGxpdGVyYWw+RHJpdmUgWDwvbGl0ZXJhbD4gYW5kIHNlcmlhbAogICAgICAgICAgPGxpdGVyYWw+MTIzNDU2Nzg8L2xpdGVyYWw+KS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3Ugd2FudCB0byBnaXZlIGEgPGxpdGVyYWw+IkRldmljZSIgPTwvbGl0ZXJhbD4gZW50cnkKICAgICAgICAgIDxlbXBoYXNpcz5vbmx5PC9lbXBoYXNpcz4gZm9yIGRyaXZlIHJhdyBzZWN0b3IgYWNjZXNzZXMsCgkgIGJ1dCBub3QgZm9yIHJlYWRpbmcgdGhlIHZvbHVtZSBpbmZvIGZyb20gdGhlIGRldmljZSAoaS5lLiB5b3Ugd2FudAoJICBhIDxlbXBoYXNpcz5maXhlZDwvZW1waGFzaXM+LCBwcmVjb25maWd1cmVkIGxhYmVsKSwgeW91IG5lZWQKICAgICAgICAgIHRvIHNwZWNpZnkgPGxpdGVyYWw+IlJlYWRWb2xJbmZvIiA9ICIwIjwvbGl0ZXJhbD4gdG8gdGVsbCBXaW5lCiAgICAgICAgICB0byBza2lwIHRoZSB2b2x1bWUgcmVhZGluZy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkVYQU1QTEVTPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhIHNpbXBsZSBleGFtcGxlIG9mIGNkcm9tIGFuZCBmbG9wcHk7IGxhYmVscyB3aWxsIGJlCiAgICAgICAgICByZWFkIGZyb20gdGhlIGRldmljZSBvbiBib3RoIGNkcm9tIGFuZCBmbG9wcHk7IHNlcmlhbAogICAgICAgICAgbnVtYmVycyBvbiBmbG9wcHkgb25seToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KW0RyaXZlIEFdCiJQYXRoIiA9ICIvbW50L2Zsb3BweSIKIlR5cGUiID0gImZsb3BweSIKIkRldmljZSIgPSAiL2Rldi9mZDAiCiJGaWxlc3lzdGVtIiA9ICJtc2RvcyIKCltEcml2ZSBSXQoiUGF0aCIgPSAiL21udC9jZHJvbSIKIlR5cGUiID0gImNkcm9tIgoiRGV2aWNlIiA9ICIvZGV2L2hkYTEiCiJGaWxlc3lzdGVtIiA9ICJ3aW45NSIKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIG92ZXJyaWRpbmcgdGhlIENELVJPTSBsYWJlbDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KW0RyaXZlIEpdCiJQYXRoIiA9ICIvbW50L2Nkcm9tIgoiVHlwZSIgPSAiY2Ryb20iCiJMYWJlbCIgPSAiWDIzNEdDRFNFIgo7IG5vdGUgdGhhdCB0aGUgZGV2aWNlIGlzbid0IHJlYWxseSBuZWVkZWQgaGVyZSBhcyB3ZSBoYXZlIGEgZml4ZWQgbGFiZWwKIkRldmljZSIgPSAiL2Rldi9jZHJvbSIKIkZpbGVzeXN0ZW0iID0gIm1zZG9zIgogICAgICAgIDwvc2NyZWVuPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Ub2RvIC8gT3BlbiBJc3N1ZXM8L3RpdGxlPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIFRoZSBjZHJvbSBsYWJlbCBjYW4gYmUgcmVhZCBvbmx5IGlmIHRoZSBkYXRhIHRyYWNrIG9mCiAgICAgICAgICAgICAgdGhlIGRpc2sgcmVzaWRlcyBpbiB0aGUgZmlyc3QgdHJhY2sgYW5kIHRoZSBjZHJvbSBpcwogICAgICAgICAgICAgIGlzbzk2NjAuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgQmV0dGVyIGNoZWNraW5nIGZvciBGQVQgc3VwZXJibG9jayAoaXQgbm93IGNoZWNrcyBvbmx5CiAgICAgICAgICAgICAgb25lIGJ5dGUpLiA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBTdXBwb3J0IGZvciBsYWJlbHMvc2VyaWFsIG51bXMgV1JJVElORy4KICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBDYW4gdGhlIGxhYmVsIGJlIGxvbmdlciB0aGFuIDExIGNoYXJzPyAoaXNvOTY2MCBoYXMgMzIKICAgICAgICAgICAgICBjaGFycykuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgV2hhdCBhYm91dCByZWFkaW5nIGV4dDIgdm9sdW1lIGxhYmVsPyAuLi4uCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJkbGwtY29uZmlnIj4KICAgICAgPHRpdGxlPkRMTCBjb25maWd1cmF0aW9uPC90aXRsZT4KICAgICAgPHNlY3QyIGlkPSJkbGwtb3ZlcnJpZGVzIj4KICAgICAgICA8dGl0bGU+RExMIE92ZXJyaWRlczwvdGl0bGU+CgogICAgICAgIDxwYXJhPgogICAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1vdmUta2FhdmVuOyA8ZW1haWw+JmVtYWlsLW92ZS1rYWF2ZW47PC9lbWFpbD4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAoRXh0cmFjdGVkIGZyb20gPGZpbGVuYW1lPndpbmUvZG9jdW1lbnRhdGlvbi9kbGwtb3ZlcnJpZGVzPC9maWxlbmFtZT4pCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSB3aW5lIGNvbmZpZyBmaWxlIGRpcmVjdGl2ZXMgW0RsbERlZmF1bHRzXQogICAgICAgICAgYW5kIFtEbGxPdmVycmlkZXNdIGFyZSB0aGUgc3ViamVjdCBvZiBzb21lIGNvbmZ1c2lvbi4gVGhlCiAgICAgICAgICBvdmVyYWxsIHB1cnBvc2Ugb2YgbW9zdCBvZiB0aGVzZSBkaXJlY3RpdmVzIGFyZSBjbGVhciBlbm91Z2gsCiAgICAgICAgICB0aG91Z2ggLSBnaXZlbiBhIGNob2ljZSwgc2hvdWxkIFdpbmUgdXNlIGl0cyBvd24gYnVpbHQtaW4KICAgICAgICAgIERMTHMsIG9yIHNob3VsZCBpdCB1c2UgPGZpbGVuYW1lPi5ETEw8L2ZpbGVuYW1lPiBmaWxlcyBmb3VuZAogICAgICAgICAgaW4gYW4gZXhpc3RpbmcgV2luZG93cyBpbnN0YWxsYXRpb24/IFRoaXMgZG9jdW1lbnQgZXhwbGFpbnMKICAgICAgICAgIGhvdyB0aGlzIGZlYXR1cmUgd29ya3MuCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+RExMIHR5cGVzPC90aXRsZT4KICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bmF0aXZlPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEEgIm5hdGl2ZSIgRExMIGlzIGEgPGZpbGVuYW1lPi5ETEw8L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gZm9yIHRoZSByZWFsIE1pY3Jvc29mdCBXaW5kb3dzLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5idWlsdGluPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEEgImJ1aWx0aW4iIERMTCBpcyBhIFdpbmUgRExMLiBUaGVzZSBjYW4gZWl0aGVyIGJlIGEKICAgICAgICAgICAgICAgICAgcGFydCBvZiA8ZmlsZW5hbWU+bGlid2luZS5zbzwvZmlsZW5hbWU+LCBvciBtb3JlCiAgICAgICAgICAgICAgICAgIHJlY2VudGx5LCBpbiBhIHNwZWNpYWwgPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgICAgdGhhdCBXaW5lIGlzIGFibGUgdG8gbG9hZCBvbiBkZW1hbmQuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPnNvPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEEgbmF0aXZlIFVuaXggPGZpbGVuYW1lPi5zbzwvZmlsZW5hbWU+IGZpbGUsIHdpdGgKICAgICAgICAgICAgICAgICAgY2FsbGluZyBjb252ZW50aW9uIGNvbnZlcnNpb24gdGh1bmtzIGdlbmVyYXRlZCBvbiB0aGUKICAgICAgICAgICAgICAgICAgZmx5IGFzIHRoZSBsaWJyYXJ5IGlzIGxvYWRlZC4gVGhpcyBpcyBtb3N0bHkgdXNlZnVsCiAgICAgICAgICAgICAgICAgIGZvciBsaWJyYXJpZXMgc3VjaCBhcyAiZ2xpZGUiIHRoYXQgaGF2ZSBleGFjdGx5IHRoZQogICAgICAgICAgICAgICAgICBzYW1lIEFQSSBvbiBib3RoIFdpbmRvd3MgYW5kIFVuaXguCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsRGVmYXVsdHNdIHNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5EZWZhdWx0TG9hZE9yZGVyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIGluIHdoYXQgb3JkZXIgV2luZSBzaG91bGQgc2VhcmNoIGZvcgogICAgICAgICAgICAgICAgICBhdmFpbGFibGUgRExMIHR5cGVzLCBpZiB0aGUgRExMIGluIHF1ZXN0aW9uIHdhcyBub3QKICAgICAgICAgICAgICAgICAgZm91bmQgaW4gdGhlIFtEbGxPdmVycmlkZXNdIHNlY3Rpb24uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsUGFpcnNdIHNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEF0IG9uZSB0aW1lLCB0aGVyZSB3YXMgYSBzZWN0aW9uIGNhbGxlZCBbRGxsUGFpcnNdIGluIHRoZQogICAgICAgICAgICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoaXMgaGFzIGJlZW4gb2Jzb2xldGVkCiAgICAgICAgICAgIGJlY2F1c2UgdGhlIHBhaXJpbmcgaW5mb3JtYXRpb24gaGFzIG5vdyBiZWVuIGVtYmVkZGVkIGludG8KICAgICAgICAgICAgV2luZSBpdHNlbGYuIChUaGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gd2FzIG1lcmVseSB0byBiZQogICAgICAgICAgICBhYmxlIHRvIGlzc3VlIHdhcm5pbmdzIGlmIHRoZSB1c2VyIGF0dGVtcHRlZCB0byBwYWlyCiAgICAgICAgICAgIGNvZGVwZW5kZW50IDE2LWJpdC8zMi1iaXQgRExMcyBvZiBkaWZmZXJlbnQgdHlwZXMuKSBJZiB5b3UKICAgICAgICAgICAgc3RpbGwgaGF2ZSB0aGlzIGluIHlvdXIgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+LCB5b3UgbWF5IHNhZmVseSBkZWxldGUgaXQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsT3ZlcnJpZGVzXSBzZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGlzIHNlY3Rpb24gc3BlY2lmaWVzIGhvdyB5b3Ugd2FudCBzcGVjaWZpYyBETExzIHRvIGJlCiAgICAgICAgICAgIGhhbmRsZWQsIGluIHBhcnRpY3VsYXIgd2hldGhlciB5b3Ugd2FudCB0byB1c2UgIm5hdGl2ZSIgRExMcwogICAgICAgICAgICBvciBub3QsIGlmIHlvdSBoYXZlIHNvbWUgZnJvbSBhIHJlYWwgV2luZG93cyBjb25maWd1cmF0aW9uLgogICAgICAgICAgICBCZWNhdXNlIGJ1aWx0aW5zIGRvIG5vdCBtaXggc2VhbWxlc3NseSB3aXRoIG5hdGl2ZSBETExzIHlldCwKICAgICAgICAgICAgY2VydGFpbiBETEwgZGVwZW5kZW5jaWVzIG1heSBiZSBwcm9ibGVtYXRpYywgYnV0IHdvcmthcm91bmRzCiAgICAgICAgICAgIGV4aXN0IGluIFdpbmUgZm9yIG1hbnkgcG9wdWxhciBETEwgY29uZmlndXJhdGlvbnMuIEFsc28gc2VlCiAgICAgICAgICAgIFdXTidzIFsxNl1TdGF0dXMgUGFnZSB0byBmaWd1cmUgb3V0IGhvdyB3ZWxsIHlvdXIgZmF2b3JpdGUKICAgICAgICAgICAgRExMIGlzIGltcGxlbWVudGVkIGluIFdpbmUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSXQgaXMgb2YgY291cnNlIGFsc28gcG9zc2libGUgdG8gb3ZlcnJpZGUgdGhlc2Ugc2V0dGluZ3MgYnkKICAgICAgICAgICAgZXhwbGljdGx5IHVzaW5nIFdpbmUncyA8cGFyYW1ldGVyPi0tZGxsPC9wYXJhbWV0ZXI+CiAgICAgICAgICAgIGNvbW1hbmQtbGluZSBvcHRpb24gKHNlZSB0aGUgbWFuIHBhZ2UgZm9yIGRldGFpbHMpLiAgU29tZQogICAgICAgICAgICBoaW50cyBmb3IgY2hvb3NpbmcgeW91ciBvcHRpbWFsIGNvbmZpZ3VyYXRpb24gKGxpc3RlZCBieQogICAgICAgICAgICAxNi8zMi1iaXQgRExMIHBhaXIpOgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5rcm5sMzg2LCBrZXJuZWwzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBOYXRpdmUgdmVyc2lvbnMgb2YgdGhlc2Ugd2lsbCBuZXZlciB3b3JrLCBzbyBkb24ndCB0cnkuIExlYXZlCiAgICAgICAgICAgICAgICAgIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5nZGksIGdkaTMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEdyYXBoaWNzIERldmljZSBJbnRlcmZhY2UuIE5vIGVmZm9ydCBoYXMgYmVlbiBtYWRlIGF0IHRyeWluZyB0bwogICAgICAgICAgICAgICAgICBydW4gbmF0aXZlIEdESS4gTGVhdmUgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPnVzZXIsIHVzZXIzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW5kb3cgbWFuYWdlbWVudCBhbmQgc3RhbmRhcmQgY29udHJvbHMuIEl0IHdhcwogICAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byB1c2UgV2luOTUncyA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICAgIHZlcnNpb25zIGF0IHNvbWUgcG9pbnQgKGlmIGFsbCBvdGhlciBETExzIHRoYXQgZGVwZW5kCiAgICAgICAgICAgICAgICAgIG9uIGl0LCBzdWNoIGFzIGNvbWN0bDMyIGFuZCBjb21kbGczMiwgd2VyZSBhbHNvIHJ1bgogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+KS4gSG93ZXZlciwgdGhpcyBpcyBubyBsb25nZXIKICAgICAgICAgICAgICAgICAgcG9zc2libGUgYWZ0ZXIgdGhlIEFkZHJlc3MgU3BhY2UgU2VwYXJhdGlvbiwgc28gbGVhdmUKICAgICAgICAgICAgICAgICAgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm50ZGxsPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIE5UIGtlcm5lbCBBUEkuIEFsdGhvdWdoIGJhZGx5IGRvY3VtZW50ZWQsIHRoZQogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gb2YgdGhpcyB3aWxsIG5ldmVyCiAgICAgICAgICAgICAgICAgIHdvcmsuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT53MzJza3JubDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW4zMnMgKGZvciBXaW4zLngpLiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgICB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIgd29yay4gTGVhdmUgYXQKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPndvdzMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFdpbjE2IHN1cHBvcnQgbGlicmFyeSBmb3IgTlQuIFRoZQogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gd2lsbCBwcm9iYWJseSBuZXZlcgogICAgICAgICAgICAgICAgICB3b3JrLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+c3lzdGVtPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFdpbjE2IGtlcm5lbCBzdHVmZi4gV2lsbCBuZXZlciB3b3JrCiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5kaXNwbGF5PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIERpc3BsYXkgZHJpdmVyLiBEZWZpbml0ZWx5IGxlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT50b29saGVscDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBUb29sIGhlbHBlciByb3V0aW5lcy4gVGhpcyBpcyByYXJlbHkgYSBzb3VyY2Ugb2YgcHJvYmxlbXMuCiAgICAgICAgICAgICAgICAgIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT52ZXIsIHZlcnNpb248L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgVmVyc2lvbmluZy4gU2VsZG9tIHVzZWZ1bCB0byBtZXNzIHdpdGguCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmFkdmFwaTMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFJlZ2lzdHJ5IGFuZCBzZWN1cml0eSBmZWF0dXJlcy4gVHJ5aW5nIHRoZQogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gb2YgdGhpcyBtYXkgb3IgbWF5CiAgICAgICAgICAgICAgICAgIG5vdCB3b3JrLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5jb21tZGxnLCBjb21kbGczMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBDb21tb24gRGlhbG9ncywgc3VjaCBhcyBjb2xvciBwaWNrZXIsIGZvbnQgZGlhbG9nLAogICAgICAgICAgICAgICAgICBwcmludCBkaWFsb2csIG9wZW4vc2F2ZSBkaWFsb2csIGV0Yy4gSXQgaXMgc2FmZSB0byB0cnkKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+Y29tbWN0cmwsIGNvbWN0bDMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIENvbW1vbiBDb250cm9scy4gVGhpcyBpcyB0b29sYmFycywgc3RhdHVzIGJhcnMsIGxpc3QgY29udHJvbHMsCiAgICAgICAgICAgICAgICAgIHRoZSB3b3Jrcy4gSXQgaXMgc2FmZSB0byB0cnkgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+c2hlbGwsIHNoZWxsMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgU2hlbGwgaW50ZXJmYWNlIChkZXNrdG9wLCBmaWxlc3lzdGVtLCBldGMpLiBCZWluZyBvbmUgb2YgdGhlCiAgICAgICAgICAgICAgICAgIG1vc3QgdW5kb2N1bWVudGVkIHBpZWNlcyBvZiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgbHVjayB3aXRoIHRoZQogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24sIHNob3VsZCB5b3UgbmVlZCBpdC4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+d2luc29jaywgd3NvY2szMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW5kb3dzIFNvY2tldHMuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24KICAgICAgICAgICAgICAgICAgd2lsbCBub3Qgd29yayB1bmRlciBXaW5lLCBzbyBsZWF2ZSBhdAogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+aWNtcDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBJQ01QIHJvdXRpbmVzIGZvciB3c29jazMyLiBBcyB3aXRoIHdzb2NrMzIsIGxlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tcHI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiBtYXkgbm90IHdvcmsgZHVlCiAgICAgICAgICAgICAgICAgIHRvIHRodW5raW5nIGlzc3Vlcy4gTGVhdmUgYXQKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmx6ZXhwYW5kLCBsejMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIExlbXBlbC1aaXYgZGVjb21wcmVzc2lvbi4gV2luZSdzCiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+IHZlcnNpb24gb3VnaHQgdG8gd29yayBmaW5lLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT53aW5hc3BpLCB3bmFzcGkzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBZHZhbmNlZCBTQ1NJIFBlcmlwaGVyYWwgSW50ZXJmYWNlLiBUaGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIKICAgICAgICAgICAgICAgICAgd29yay4gTGVhdmUgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmNydGRsbDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBDIFJ1bnRpbWUgbGlicmFyeS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgICAgdmVyc2lvbiB3aWxsIGVhc2lseSB3b3JrIGJldHRlciB0aGFuIFdpbmUncyBvbiB0aGlzCiAgICAgICAgICAgICAgICAgIG9uZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+d2luc3Bvb2wuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFByaW50ZXIgc3Bvb2xlci4gWW91IGFyZSBub3QgbGlrZWx5IHRvIGhhdmUgbW9yZSBsdWNrCiAgICAgICAgICAgICAgICAgIHdpdGggdGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+ZGRyYXc8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgRGlyZWN0RHJhdy9EaXJlY3QzRC4gU2luY2UgV2luZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlCiAgICAgICAgICAgICAgICAgIERpcmVjdFggSEFMLCB0aGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgIHdpbGwgbm90IHdvcmsgYXQgdGhpcyB0aW1lLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5kaW5wdXQ8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgRGlyZWN0SW5wdXQuIFJ1bm5pbmcgdGhpcyA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICAgIG1heSBvciBtYXkgbm90IHdvcmsuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmRzb3VuZDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBEaXJlY3RTb3VuZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJ1biB0aGlzCiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4sIGJ1dCBkb24ndCBjb3VudCBvbiBpdC4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+ZHBsYXkvZHBsYXl4PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIERpcmVjdFBsYXkuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24KICAgICAgICAgICAgICAgICAgb3VnaHQgdG8gd29yayBiZXN0IG9uIHRoaXMsIGlmIGF0IGFsbC4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bW1zeXN0ZW0sIHdpbm1tPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIE11bHRpbWVkaWEgc3lzdGVtLiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgICB2ZXJzaW9uIGlzIG5vdCBsaWtlbHkgdG8gd29yay4gTGVhdmUgYXQKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1zYWNtLCBtc2FjbTMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEF1ZGlvIENvbXByZXNzaW9uIE1hbmFnZXIuIFRoZQogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPiB2ZXJzaW9uIHdvcmtzIGJlc3QsIGlmIHlvdQogICAgICAgICAgICAgICAgICBzZXQgbXNhY20uZHJ2IHRvIHRoZSBzYW1lLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tc3ZpZGVvLCBtc3ZmdzMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFZpZGVvIGZvciBXaW5kb3dzLiBJdCBpcyBzYWZlIChhbmQgcmVjb21tZW5kZWQpIHRvIHRyeQogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2ljZGEuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIENEIEF1ZGlvIE1DSSBkcml2ZXIuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1jaXNlcS5kcnY8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgTUlESSBTZXF1ZW5jZXIgTUNJIGRyaXZlciAoPGZpbGVuYW1lPi5NSUQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICBwbGF5YmFjaykuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1jaXdhdmUuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFdhdmUgYXVkaW8gTUNJIGRyaXZlciAoPGZpbGVuYW1lPi5XQVY8L2ZpbGVuYW1lPiBwbGF5YmFjaykuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1jaWF2aS5kcnY8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQVZJIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uQVZJPC9maWxlbmFtZT4gdmlkZW8KICAgICAgICAgICAgICAgICAgcGxheWJhY2spLiBCZXN0IHRvIHVzZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2lhbmltLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBbmltYXRpb24gTUNJIGRyaXZlci4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bXNhY20uZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEF1ZGlvIENvbXByZXNzaW9uIE1hbmFnZXIuIFNldCB0byBzYW1lIGFzIG1zYWNtMzIuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1pZGltYXAuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIE1JREkgTWFwcGVyLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT53cHJvY3M8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHBzZXVkby1ETEwgdXNlZCBieSBXaW5lIGZvciB0aHVua2luZwogICAgICAgICAgICAgICAgICBwdXJwb3Nlcy4gQSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gb2YgdGhpcwogICAgICAgICAgICAgICAgICBkb2Vzbid0IGV4aXN0LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDwvc2VjdDM+CiAgICAgIDwvc2VjdDI+CiAgICAgIDxzZWN0MiBpZD0iZGxsLW1pc3NpbmciPgogICAgICAgIDx0aXRsZT5NaXNzaW5nIERMTHM8L3RpdGxlPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHBhcmE+CgkgIEluIGNhc2UgV2luZSBjb21wbGFpbnMgYWJvdXQgYSBtaXNzaW5nIERMTCwgeW91IHNob3VsZCBjaGVjayB3aGV0aGVyCgkgIHRoaXMgZmlsZSBpcyBhIHB1YmxpY2x5IGF2YWlsYWJsZSBETEwgb3IgYSBjdXN0b20gRExMIGJlbG9uZ2luZwoJICB0byB5b3VyIHByb2dyYW0gKGJ5IHNlYXJjaGluZyBmb3IgaXRzIG5hbWUgb24gdGhlIGludGVybmV0KS4KCSAgSWYgeW91IG1hbmFnZWQgdG8gZ2V0IGhvbGQgb2YgdGhlIERMTCwgdGhlbiB5b3Ugc2hvdWxkIG1ha2Ugc3VyZQoJICB0aGF0IFdpbmUgaXMgYWJsZSB0byBmaW5kIGFuZCBsb2FkIGl0LgoJICBETExzIHVzdWFsbHkgZ2V0IGxvYWRlZCBhY2NvcmRpbmcgdG8gdGhlIG1lY2hhbmlzbSBvZiB0aGUKCSAgU2VhcmNoUGF0aCgpIGZ1bmN0aW9uLgoJICBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIGRpcmVjdG9yaWVzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CgogICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CgkgICAgICAgIFRoZSBkaXJlY3RvcnkgdGhlIHByb2dyYW0gd2FzIHN0YXJ0ZWQgZnJvbS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KCSAgICAgICAgVGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBUaGUgV2luZG93cyBzeXN0ZW0gZGlyZWN0b3J5LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBUaGUgV2luZG93cyBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CgkgICAgICAgIFRoZSBQQVRIIHZhcmlhYmxlIGRpcmVjdG9yaWVzLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CgoJICBJbiBzaG9ydDogZWl0aGVyIHB1dCB0aGUgcmVxdWlyZWQgRExMIGludG8geW91ciBhcHBsaWNhdGlvbgoJICBkaXJlY3RvcnkgKG1pZ2h0IGJlIHVnbHkpLCBvciB1c3VhbGx5IHB1dCBpdCBpbnRvIHRoZSBXaW5kb3dzIHN5c3RlbQoJICBkaXJlY3RvcnkuIEp1c3QgZmluZCBvdXQgaXRzIGRpcmVjdG9yeSBieSBoYXZpbmcgYSBsb29rIGF0IHRoZSBXaW5lCgkgIGNvbmZpZyBGaWxlIHZhcmlhYmxlICJTeXN0ZW0iICh3aGljaCBpbmRpY2F0ZXMgdGhlIGxvY2F0aW9uIG9mIHRoZQoJICBXaW5kb3dzIHN5c3RlbSBkaXJlY3RvcnkpIGFuZCB0aGUgYXNzb2NpYXRlZCBkcml2ZSBlbnRyeS4KCSAgTm90ZSB0aGF0IHlvdSBwcm9iYWJseSBzaG91bGRuJ3QgdXNlIE5ULWJhc2VkIG5hdGl2ZSBETExzLAoJICBzaW5jZSBXaW5lJ3MgTlQgQVBJIHN1cHBvcnQgaXMgc29tZXdoYXQgd2Vha2VyIHRoYW4gaXRzIFdpbjl4CgkgIEFQSSBzdXBwb3J0ICh0aHVzIGxlYWRpbmcgdG8gZXZlbiB3b3JzZSBjb21wYXRpYmlsaXR5IHdpdGggTlQgRExMcwoJICB0aGFuIHdpdGggYSBuby13aW5kb3dzIHNldHVwICEpLCBzbyBiZXR0ZXIgdXNlIFdpbjl4IG5hdGl2ZSBETExzCgkgIGluc3RlYWQgb3Igbm8gbmF0aXZlIERMTHMgYXQgYWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgICAgPHNlY3QyIGlkPSJkbGwtd2luZG93cyI+CiAgICAgICAgPHRpdGxlPkZldGNoaW5nIG5hdGl2ZSBETExzIGZyb20gYSBXaW5kb3dzIENEPC90aXRsZT4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KICAgICAgICA8L3BhcmE+CgogICAgICAgIDxwYXJhPgoJVGhlIExpbnV4IDxjb21tYW5kPmNhYmV4dHJhY3Q8L2NvbW1hbmQ+IHV0aWxpdHkgY2FuIGJlIHVzZWQgdG8KCWV4dHJhY3QgbmF0aXZlIFdpbmRvd3MgLmRsbCBmaWxlcyBmcm9tIC5jYWIgZmlsZXMgdGhhdCBhcmUgdG8gYmUKCWZvdW5kIG9uIG1hbnkgV2luZG93cyBpbnN0YWxsYXRpb24gQ0RzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogICAgJmZvbnRzOwogICAgJnByaW50aW5nOwoKICAgIDxzZWN0MSBpZD0id2luOTVsb29rIj4KICAgICAgPHRpdGxlPldpbjk1Lzk4IExvb2s8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWRhdmlkLWN1dGhiZXJ0OyA8ZW1haWw+JmVtYWlsLWRhdmlkLWN1dGhiZXJ0OzwvZW1haWw+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vd2luOTVsb29rPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgV2luOTUvV2luOTggaW50ZXJmYWNlIGNvZGUgaXMgYmVpbmcgaW50cm9kdWNlZC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBJbnN0ZWFkIG9mIGNvbXBpbGluZyBXaW5lIGZvciBXaW4zLjEgdnMuIFdpbjk1IHVzaW5nCiAgICAgICAgPGNvbnN0YW50PiNkZWZpbmU8L2NvbnN0YW50PiBzd2l0Y2hlcywgdGhlIGNvZGUgbm93IGxvb2tzIGluIGEKICAgICAgICBzcGVjaWFsIFtUd2Vhay5MYXlvdXRdIHNlY3Rpb24gb2YKICAgICAgICA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiBmb3IgYQogICAgICAgIDxsaXRlcmFsPiJXaW5lTG9vayIgPSAiV2luOTUiPC9saXRlcmFsPiBvcgogICAgICAgIDxsaXRlcmFsPiJXaW5lTG9vayIgPSAiV2luOTgiPC9saXRlcmFsPiBlbnRyeS4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBBIGZldyBuZXcgc2VjdGlvbnMgYW5kIGEgbnVtYmVyIG9mIGVudHJpZXMgaGF2ZSBiZWVuIGFkZGVkIHRvCiAgICAgICAgdGhlIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+IGZpbGUgLS0gdGhlc2UgYXJlIGZvcgogICAgICAgIGRlYnVnZ2luZyB0aGUgV2luOTUgdHdlYWtzIG9ubHkgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlCiAgICAgICAgcmVsZWFzZSEgIFRoZXNlIGVudHJpZXMvc2VjdGlvbnMgYXJlOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4KW1R3ZWFrLkZvbnRzXQoiU3lzdGVtLkhlaWdodCIgPSAiJmx0O3BvaW50IHNpemU+IiAgICAjIFNldHMgdGhlIGhlaWdodCBvZiB0aGUgc3lzdGVtIHR5cGVmYWNlCiJTeXN0ZW0uQm9sZCIgPSAiW3RydWV8ZmFsc2VdIiAgICAgICMgV2hldGhlciB0aGUgc3lzdGVtIGZvbnQgc2hvdWxkIGJlIGJvbGRmYWNlZAoiU3lzdGVtLkl0YWxpYyIgPSAiW3RydWV8ZmFsc2VdIiAgICAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSBpdGFsaWNpemVkCiJTeXN0ZW0uVW5kZXJsaW5lIiA9ICJbdHJ1ZXxmYWxzZV0iICMgV2hldGhlciB0aGUgc3lzdGVtIGZvbnQgc2hvdWxkIGJlIHVuZGVybGluZWQKIlN5c3RlbS5TdHJpa2VPdXQiID0gIlt0cnVlfGZhbHNlXSIgIyBXaGV0aGVyIHRoZSBzeXN0ZW0gZm9udCBzaG91bGQgYmUgc3RydWNrIG91dAoiT0VNRml4ZWQueHh4IiAgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgT0VNIGZpeGVkIHR5cGVmYWNlCiJBbnNpRml4ZWQueHh4IiAgICAgICAgICAgICAgICAgIyBTYW1lIHBhcmFtZXRlcnMgZm9yIHRoZSBBbnNpIGZpeGVkIHR5cGVmYWNlCiJBbnNpVmFyLnh4eCIgICAgICAgICAgICAgICAgICAgIyBTYW1lIHBhcmFtZXRlcnMgZm9yIHRoZSBBbnNpIHZhcmlhYmxlIHR5cGVmYWNlCiJTeXN0ZW1GaXhlZC54eHgiICAgICAgICAgICAgICAgIyBTYW1lIHBhcmFtZXRlcnMgZm9yIHRoZSBTeXN0ZW0gZml4ZWQgdHlwZWZhY2UKCltUd2Vhay5MYXlvdXRdCiJXaW5lTG9vayIgPSAiW1dpbjMxfFdpbjk1fFdpbjk4XSIgICMgQ2hhbmdlcyBXaW5lJ3MgbG9vayBhbmQgZmVlbAogICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9ImtleWJvYXJkIj4KICAgICAgPHRpdGxlPktleWJvYXJkPC90aXRsZT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24va2V5Ym9hcmQ8L2ZpbGVuYW1lPikKICAgICAgPC9wYXJhPgoKICAgICAgPHBhcmE+CiAgICAgICAgV2luZSBub3cgbmVlZHMgdG8ga25vdyBhYm91dCB5b3VyIGtleWJvYXJkIGxheW91dC4gVGhpcwogICAgICAgIHJlcXVpcmVtZW50IGNvbWVzIGZyb20gYSBuZWVkIGZyb20gbWFueSBhcHBzIHRvIGhhdmUgdGhlCiAgICAgICAgY29ycmVjdCBzY2FuY29kZXMgYXZhaWxhYmxlLCBzaW5jZSB0aGV5IHJlYWQgdGhlc2UgZGlyZWN0bHksCiAgICAgICAgaW5zdGVhZCBvZiBqdXN0IHRha2luZyB0aGUgY2hhcmFjdGVycyByZXR1cm5lZCBieSB0aGUgWAogICAgICAgIHNlcnZlci4gVGhpcyBtZWFucyB0aGF0IFdpbmUgbm93IG5lZWRzIHRvIGhhdmUgYSBtYXBwaW5nIGZyb20KICAgICAgICBYIGtleXMgdG8gdGhlIHNjYW5jb2RlcyB0aGVzZSBhcHBsaWNhdGlvbnMgZXhwZWN0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIE9uIHN0YXJ0dXAsIFdpbmUgd2lsbCB0cnkgdG8gcmVjb2duaXplIHRoZSBhY3RpdmUgWCBsYXlvdXQgYnkKICAgICAgICBzZWVpbmcgaWYgaXQgbWF0Y2hlcyBhbnkgb2YgdGhlIGRlZmluZWQgdGFibGVzLiBJZiBpdCBkb2VzLAogICAgICAgIGV2ZXJ5dGhpbmcgaXMgYWxyaWdodC4gSWYgbm90LCB5b3UgbmVlZCB0byBkZWZpbmUgaXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVG8gZG8gdGhpcywgb3BlbiB0aGUgZmlsZQogICAgICAgIDxmaWxlbmFtZT5kbGxzL3gxMWRydi9rZXlib2FyZC5jPC9maWxlbmFtZT4gYW5kIHRha2UgYSBsb29rCiAgICAgICAgYXQgdGhlIGV4aXN0aW5nIHRhYmxlcy4gTWFrZSBhIGJhY2t1cCBjb3B5IG9mIGl0LCBlc3BlY2lhbGx5CiAgICAgICAgaWYgeW91IGRvbid0IHVzZSBDVlMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgV2hhdCB5b3UgcmVhbGx5IHdvdWxkIG5lZWQgdG8gZG8sIGlzIGZpbmQgb3V0IHdoaWNoIHNjYW5jb2RlCiAgICAgICAgZWFjaCBrZXkgbmVlZHMgdG8gZ2VuZXJhdGUuICBGaW5kIGl0IGluIHRoZQogICAgICAgIDxmdW5jdGlvbj5tYWluX2tleV9zY2FuPC9mdW5jdGlvbj4gdGFibGUsIHdoaWNoIGxvb2tzIGxpa2UKICAgICAgICB0aGlzOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4Kc3RhdGljIGNvbnN0IGludCBtYWluX2tleV9zY2FuW01BSU5fTEVOXSA9CnsKLyogdGhpcyBpcyBteSAoMTAyLWtleSkga2V5Ym9hcmQgbGF5b3V0LCBzb3JyeSBpZiBpdCBkb2Vzbid0IHF1aXRlIG1hdGNoIHlvdXJzICovCiAgIDB4MjksMHgwMiwweDAzLDB4MDQsMHgwNSwweDA2LDB4MDcsMHgwOCwweDA5LDB4MEEsMHgwQiwweDBDLDB4MEQsCiAgIDB4MTAsMHgxMSwweDEyLDB4MTMsMHgxNCwweDE1LDB4MTYsMHgxNywweDE4LDB4MTksMHgxQSwweDFCLAogICAweDFFLDB4MUYsMHgyMCwweDIxLDB4MjIsMHgyMywweDI0LDB4MjUsMHgyNiwweDI3LDB4MjgsMHgyQiwKICAgMHgyQywweDJELDB4MkUsMHgyRiwweDMwLDB4MzEsMHgzMiwweDMzLDB4MzQsMHgzNSwKICAgMHg1NiAvKiB0aGUgMTAybmQga2V5IChhY3R1YWxseSB0byB0aGUgcmlnaHQgb2YgbC1zaGlmdCkgKi8KfTsKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgTmV4dCwgYXNzaWduIGVhY2ggc2NhbmNvZGUgdGhlIGNoYXJhY3RlcnMgaW1wcmludGVkIG9uIHRoZQogICAgICAgIGtleWNhcHMuIFRoaXMgd2FzIGRvbmUgKHNvcnQgb2YpIGZvciB0aGUgVVMgMTAxLWtleSBrZXlib2FyZCwKICAgICAgICB3aGljaCB5b3UgY2FuIGZpbmQgbmVhciB0aGUgdG9wIGluCiAgICAgICAgPGZpbGVuYW1lPmtleWJvYXJkLmM8L2ZpbGVuYW1lPi4gSXQgYWxzbyBzaG93cyB0aGF0IGlmIHRoZXJlCiAgICAgICAgaXMgbm8gMTAybmQga2V5LCB5b3UgY2FuIHNraXAgdGhhdC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBIb3dldmVyLCBmb3IgbW9zdCBpbnRlcm5hdGlvbmFsIDEwMi1rZXkga2V5Ym9hcmRzLCB3ZSBoYXZlCiAgICAgICAgZG9uZSBpdCBlYXN5IGZvciB5b3UuIFRoZSBzY2FuY29kZSBsYXlvdXQgZm9yIHRoZXNlIGFscmVhZHkKICAgICAgICBwcmV0dHkgbXVjaCBtYXRjaGVzIHRoZSBwaHlzaWNhbCBsYXlvdXQgaW4gdGhlCiAgICAgICAgPGZ1bmN0aW9uPm1haW5fa2V5X3NjYW48L2Z1bmN0aW9uPiwgc28gYWxsIHlvdSBuZWVkIHRvIGRvIGlzCiAgICAgICAgdG8gZ28gdGhyb3VnaCBhbGwgdGhlIGtleXMgdGhhdCBnZW5lcmF0ZSBjaGFyYWN0ZXJzIG9uIHlvdXIKICAgICAgICBtYWluIGtleWJvYXJkIChleGNlcHQgc3BhY2ViYXIpLCBhbmQgc3R1ZmYgdGhvc2UgaW50byBhbgogICAgICAgIGFwcHJvcHJpYXRlIHRhYmxlLiBUaGUgb25seSBleGNlcHRpb24gaXMgdGhhdCB0aGUgMTAybmQga2V5LAogICAgICAgIHdoaWNoIGlzIHVzdWFsbHkgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IGtleSBvZiB0aGUgbGFzdCBsaW5lCiAgICAgICAgKHVzdWFsbHkgPGtleWNhcD5aPC9rZXljYXA+KSwgbXVzdCBiZSBwbGFjZWQgb24gYSBzZXBhcmF0ZQogICAgICAgIGxpbmUgYWZ0ZXIgdGhlIGxhc3QgbGluZS4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBGb3IgZXhhbXBsZSwgbXkgTm9yd2VnaWFuIGtleWJvYXJkIGxvb2tzIGxpa2UgdGhpcwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CqcgICEgICIgICMgIKQgICUgICYgIC8gICggICkgID0gID8gIGAgIEJhY2stCnwgIDEgIDJAIDOjIDQkIDUgIDYgIDd7IDhbIDldIDB9ICsgIFy0IHNwYWNlCgpUYWIgUSAgVyAgRSAgUiAgVCAgWSAgVSAgSSAgTyAgUCAgxSAgXgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgqH4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVyCkNhcHMgQSAgUyAgRCAgRiAgRyAgSCAgSiAgSyAgTCAg2CAgxiAgKgpMb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKClNoLSA+IFogIFggIEMgIFYgIEIgIE4gIE0gIDsgIDogIF8gIFNoaWZ0CmlmdCAmbHQ7ICAgICAgICAgICAgICAgICAgICAgICwgIC4gIC0KCkN0cmwgIEFsdCAgICAgICBTcGFjZWJhciAgICAgICBBbHRHciAgQ3RybAogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgTm90ZSB0aGUgMTAybmQga2V5LCB3aGljaCBpcyB0aGUgPGtleWNhcD4mbHQ7Pjwva2V5Y2FwPiBrZXksIHRvCiAgICAgICAgdGhlIGxlZnQgb2YgPGtleWNhcD5aPC9rZXljYXA+LiBUaGUgY2hhcmFjdGVyIHRvIHRoZSByaWdodCBvZgogICAgICAgIHRoZSBtYWluIGNoYXJhY3RlciBpcyB0aGUgY2hhcmFjdGVyIGdlbmVyYXRlZCBieQogICAgICAgIDxrZXljYXA+QWx0R3I8L2tleWNhcD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVGhpcyBrZXlib2FyZCBpcyBkZWZpbmVkIGFzIGZvbGxvd3M6CiAgICAgIDwvcGFyYT4KICAgICAgPHByb2dyYW1saXN0aW5nPgpzdGF0aWMgY29uc3QgY2hhciBtYWluX2tleV9OT1tNQUlOX0xFTl1bNF0gPQp7CiAifKciLCIxISIsIjJcIkAiLCIzI6MiLCI0pCQiLCI1JSIsIjYmIiwiNy97IiwiOChbIiwiOSldIiwiMD19IiwiKz8iLCJcXLQiLAogInFRIiwid1ciLCJlRSIsInJSIiwidFQiLCJ5WSIsInVVIiwiaUkiLCJvTyIsInBQIiwi5cUiLCKoXn4iLAogImFBIiwic1MiLCJkRCIsImZGIiwiZ0ciLCJoSCIsImpKIiwia0siLCJsTCIsIvjYIiwi5sYiLCInKiIsCiAieloiLCJ4WCIsImNDIiwidlYiLCJiQiIsIm5OIiwibU0iLCIsOyIsIi46IiwiLV8iLAogIiZsdDs+Igp9OwogICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICA8cGFyYT4KICAgICAgICBFeGNlcHQgdGhhdCAiIGFuZCBcIG5lZWRzIHRvIGJlIHF1b3RlZCB3aXRoIGEgYmFja3NsYXNoLCBhbmQKICAgICAgICB0aGF0IHRoZSAxMDJuZCBrZXkgaXMgb24gYSBzZXBhcmF0ZSBsaW5lLCBpdCdzIHByZXR0eQogICAgICAgIHN0cmFpZ2h0Zm9yd2FyZC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBBZnRlciB5b3UgaGF2ZSB3cml0dGVuIHN1Y2ggYSB0YWJsZSwgeW91IG5lZWQgdG8gYWRkIGl0IHRvIHRoZQogICAgICAgIDxmdW5jdGlvbj5tYWluX2tleV90YWJbXTwvZnVuY3Rpb24+IGxheW91dCBpbmRleCB0YWJsZS4gVGhpcwogICAgICAgIHdpbGwgbG9vayBsaWtlIHRoaXM6CiAgICAgIDwvcGFyYT4KICAgICAgPHByb2dyYW1saXN0aW5nPgpzdGF0aWMgc3RydWN0IHsKIFdPUkQgbGFuZywgYW5zaV9jb2RlcGFnZSwgb2VtX2NvZGVwYWdlOwogY29uc3QgY2hhciAoKmtleSlbTUFJTl9MRU5dWzRdOwp9IG1haW5fa2V5X3RhYltdPXsKLi4uCi4uLgoge01BS0VMQU5HSUQoTEFOR19OT1JXRUdJQU4sU1VCTEFOR19ERUZBVUxUKSwgIDEyNTIsIDg2NSwgJmFtcDttYWluX2tleV9OT30sCi4uLgogICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICA8cGFyYT4KICAgICAgICBBZnRlciB5b3UgaGF2ZSBhZGRlZCB5b3VyIHRhYmxlLCByZWNvbXBpbGUgV2luZSBhbmQgdGVzdCB0aGF0CiAgICAgICAgaXQgd29ya3MuIElmIGl0IGZhaWxzIHRvIGRldGVjdCB5b3VyIHRhYmxlLCB0cnkgcnVubmluZwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CndpbmUgLS1kZWJ1Z21zZyAra2V5LCtrZXlib2FyZCA+JiBrZXkubG9nCiAgICAgIDwvc2NyZWVuPgogICAgICA8cGFyYT4KICAgICAgICBhbmQgbG9vayBpbiB0aGUgcmVzdWx0aW5nIDxmaWxlbmFtZT5rZXkubG9nPC9maWxlbmFtZT4gZmlsZSB0bwogICAgICAgIGZpbmQgdGhlIGVycm9yIG1lc3NhZ2VzIGl0IGdpdmVzIGZvciB5b3VyIGxheW91dC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBOb3RlIHRoYXQgdGhlIDxjb25zdGFudD5MQU5HXyo8L2NvbnN0YW50PiBhbmQKICAgICAgICA8Y29uc3RhbnQ+U1VCTEFOR18qPC9jb25zdGFudD4gZGVmaW5pdGlvbnMgYXJlIGluCiAgICAgICAgPGZpbGVuYW1lPmluY2x1ZGUvd2lubmxzLmg8L2ZpbGVuYW1lPiwgd2hpY2ggeW91IG1pZ2h0IG5lZWQgdG8KICAgICAgICBrbm93IHRvIGZpbmQgb3V0IHdoaWNoIG51bWJlcnMgeW91ciBsYW5ndWFnZSBpcyBhc3NpZ25lZCwgYW5kCiAgICAgICAgZmluZCBpdCBpbiB0aGUgZGVidWdtc2cgb3V0cHV0LiBUaGUgbnVtYmVycyB3aWxsIGJlCiAgICAgICAgPGxpdGVyYWw+KFNVQkxBTkcgKiAweDQwMCArIExBTkcpPC9saXRlcmFsPiwgc28sIGZvciBleGFtcGxlCiAgICAgICAgdGhlIGNvbWJpbmF0aW9uIDxsaXRlcmFsPkxBTkdfTk9SV0VHSUFOICgweDE0KTwvbGl0ZXJhbD4gYW5kCiAgICAgICAgPGxpdGVyYWw+U1VCTEFOR19ERUZBVUxUICgweDEpPC9saXRlcmFsPiB3aWxsIGJlIChpbiBoZXgpCiAgICAgICAgPGxpdGVyYWw+MTQgKyAxKjQwMCA9IDQxNDwvbGl0ZXJhbD4sIHNvIHNpbmNlIEknbSBOb3J3ZWdpYW4sIEkKICAgICAgICBjb3VsZCBsb29rIGZvciA8bGl0ZXJhbD4wNDE0PC9saXRlcmFsPiBpbiB0aGUgZGVidWdtc2cgb3V0cHV0CiAgICAgICAgdG8gZmluZCBvdXQgd2h5IG15IGtleWJvYXJkIHdvbid0IGRldGVjdC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBPbmNlIGl0IHdvcmtzLCBzdWJtaXQgaXQgdG8gdGhlIFdpbmUgcHJvamVjdC4gSWYgeW91IHVzZSBDVlMsCiAgICAgICAgeW91IHdpbGwganVzdCBoYXZlIHRvIGRvCiAgICAgIDwvcGFyYT4KICAgICAgPHNjcmVlbj4KY3ZzIC16MyBkaWZmIC11IGRsbHMveDExZHJ2L2tleWJvYXJkLmMgPiBsYXlvdXQuZGlmZgogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgZnJvbSB5b3VyIG1haW4gV2luZSBkaXJlY3RvcnksIHRoZW4gc3VibWl0CiAgICAgICAgPGZpbGVuYW1lPmxheW91dC5kaWZmPC9maWxlbmFtZT4gdG8KICAgICAgICA8ZW1haWw+d2luZS1wYXRjaGVzQHdpbmVocS5jb208L2VtYWlsPiBhbG9uZyB3aXRoIGEgYnJpZWYgbm90ZQogICAgICAgIG9mIHdoYXQgaXQgaXMuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSWYgeW91IGRvbid0IHVzZSBDVlMsIHlvdSBuZWVkIHRvIGRvCiAgICAgIDwvcGFyYT4KICAgICAgPHNjcmVlbj4KZGlmZiAtdSB0aGVfYmFja3VwX2ZpbGVfeW91X21hZGUgZGxscy94MTFkcnYva2V5Ym9hcmQuYyA+IGxheW91dC5kaWZmCiAgICAgIDwvc2NyZWVuPgogICAgICA8cGFyYT4KICAgICAgICBhbmQgc3VibWl0IGl0IGFzIGV4cGxhaW5lZCBhYm92ZS4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBJZiB5b3UgZGlkIGl0IHJpZ2h0LCBpdCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBuZXh0IFdpbmUKICAgICAgICByZWxlYXNlLCBhbmQgYWxsIHRoZSB0cm91Ymxlc29tZSBhcHBsaWNhdGlvbnMgKGVzcGVjaWFsbHkKICAgICAgICByZW1vdGUtY29udHJvbCBhcHBsaWNhdGlvbnMpIGFuZCBnYW1lcyB0aGF0IHVzZSBzY2FuY29kZXMgd2lsbAogICAgICAgIGJlIGhhcHBpbHkgdXNpbmcgeW91ciBrZXlib2FyZCBsYXlvdXQsIGFuZCB5b3Ugd29uJ3QgZ2V0IHRob3NlCiAgICAgICAgYW5ub3lpbmcgZml4bWUgbWVzc2FnZXMgZWl0aGVyLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIEdvb2QgbHVjay4KICAgICAgPC9wYXJhPgogICAgPC9zZWN0MT4KCiAgICA8c2VjdDEgaWQ9Im9kYmMiPgogICAgICA8dGl0bGU+VXNpbmcgT0RCQzwvdGl0bGU+CiAgICAgIDxwYXJhPgogICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IE9EQkMgd29ya3Mgd2l0aGluIFdpbmUgYW5kIGhvdyB0byBjb25maWd1cmUKICAgICAgICBpdCB0byBkbyB3aGF0IHlvdSB3YW50IChpZiBpdCBjYW4gZG8gd2hhdCB5b3Ugd2FudCkuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVGhlIE9EQkMgc3lzdGVtIHdpdGhpbiB3aW5lLCBhcyB3aXRoIHRoZSBwcmludGluZyBzeXN0ZW0sIGlzIGRlc2lnbmVkCiAgICAgICAgdG8gaG9vayBhY3Jvc3MgdG8gdGhlIFVuaXggc3lzdGVtIGF0IGEgaGlnaCBsZXZlbC4gIFJhdGhlciB0aGFuIAogICAgICAgIGVuc3VyaW5nIHRoYXQgYWxsIHRoZSB3aW5kb3dzIGNvZGUgd29ya3MgdW5kZXIgd2luZSBpdCB1c2VzIGEgc3VpdGFibGUKICAgICAgICBVbml4IE9EQkMgcHJvdmlkZXIsIHN1Y2ggYXMgVW5peE9EQkMuICBUaHVzIGlmIHlvdSBjb25maWd1cmUgV2luZSB0byAKICAgICAgICB1c2UgdGhlIGJ1aWx0aW4gb2RiYzMyLmRsbCB0aGF0IHdpbmUgZGxsIHdpbGwgaW50ZXJmYWNlIHRvIHlvdXIgCiAgICAgICAgVW5peCBPREJDIHBhY2thZ2UgYW5kIGxldCB0aGF0IGRvIHRoZSB3b3JrLCB3aGVyZWFzIGlmIHlvdSBjb25maWd1cmUgCiAgICAgICAgV2luZSB0byB1c2UgdGhlIG5hdGl2ZSBvZGJjMzIuZGxsIGl0IHdpbGwgdHJ5IHRvIHVzZSB0aGUgbmF0aXZlCiAgICAgICAgT0RCQzMyIGRyaXZlcnMgZXRjLgogICAgICA8L3BhcmE+CiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+VXNpbmcgYSBVbml4IE9EQkMgc3lzdGVtIHdpdGggV2luZTwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgZmlyc3Qgc3RlcCBpbiB1c2luZyBhIFVuaXggT0RCQyBzeXN0ZW0gd2l0aCBXaW5lIGlzLCBvZiBjb3Vyc2UsCiAgICAgICAgICB0byBnZXQgdGhlIFVuaXggT0RCQyBzeXN0ZW0gd29ya2luZyBpdHNlbGYuICBUaGlzIG1heSBpbnZvbHZlIAogICAgICAgICAgZG93bmxvYWRpbmcgY29kZSBvciBycG1zIGV0Yy4gIFRoZXJlIGFyZSBzZXZlcmFsIFVuaXggT0RCQyBzeXN0ZW1zCiAgICAgICAgICBhdmFpbGFibGU7IHRoZSBvbmUgdGhlIGF1dGhvciBpcyB1c2VkIHRvIGlzIHVuaXhPREJDICh3aXRoIHRoZQogICAgICAgICAgSUJNIERCMiBkcml2ZXIpLiBUeXBpY2FsbHkgc3VjaCBzeXN0ZW1zIHdpbGwgaW5jbHVkZSBhIHRvb2wsIHN1Y2ggCiAgICAgICAgICBhcyBpc3FsLCB3aGljaCB3aWxsIGFsbG93IHlvdSB0byBhY2Nlc3MgdGhlIGRhdGEgZnJvbSB0aGUgY29tbWFuZAogICAgICAgICAgbGluZSBzbyB0aGF0IHlvdSBjYW4gY2hlY2sgdGhhdCB0aGUgc3lzdGVtIGlzIHdvcmtpbmcuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc3RlcCBpcyB0byBob29rIHRoZSBVbml4IE9EQkMgbGlicmFyeSB0byB0aGUgd2luZSBidWlsdGluIAogICAgICAgICAgb2RiYzMyIGRsbC4gIFRoZSBidWlsdGluIG9kYmMzMiAoY3VycmVudGx5KSBsb29rcyB0byB0aGUKICAgICAgICAgIGVudmlyb25tZW50YWwgdmFyaWFibGUgPGVtcGhhc2lzPkxJQl9PREJDX0RSSVZFUl9NQU5BR0VSPC9lbXBoYXNpcz4KICAgICAgICAgIGZvciB0aGUgbmFtZSBvZiB0aGUgb2RiYyBsaWJyYXJ5LiAgRm9yIGV4YW1wbGUgaW4gdGhlIGF1dGhvcidzCiAgICAgICAgICAuYmFzaHJjIGZpbGUgaXMgdGhlIGxpbmU6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwcm9ncmFtbGlzdGluZz4KZXhwb3J0IExJQl9PREJDX0RSSVZFUl9NQU5BR0VSPS91c3IvbGliL2xpYm9kYmMuc28uMS4wLjAKICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgdGhhdCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGlzIG5vdCBzZXQgdGhlbiBpdCBsb29rcyBmb3IgYSAKICAgICAgICAgIGxpYnJhcnkgY2FsbGVkIGxpYm9kYmMuc28gYW5kIHNvIHlvdSBjYW4gYWRkIGEgc3ltYm9saWMgbGluayB0bwogICAgICAgICAgZXF1YXRlIHRoYXQgdG8geW91ciBvd24gbGlicmFyeS4gIEZvciBleGFtcGxlIGFzIHJvb3QgeW91IGNvdWxkCiAgICAgICAgICBydW4gdGhlIGNvbW1hbmRzOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CmxuIC1zIGxpYm9kYmMuc28uMS4wLjAgL3Vzci9saWIvbGlib2RiYy5zbwovc2Jpbi9sZGNvbmZpZwogICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgbGFzdCBzdGVwIGluIGNvbmZpZ3VyaW5nIHRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgV2luZSBpcyBzZXQgdXAKICAgICAgICAgIHRvIHJ1biB0aGUgYnVpbHRpbiB2ZXJzaW9uIG9mIG9kYmMzMi5kbGwsIGJ5IG1vZGlmeWluZyB0aGUgRExMCiAgICAgICAgICBjb25maWd1cmF0aW9uLiAgVGhpcyBidWlsdGluIGRsbCBtZXJlbHkgYWN0cyBhcyBhIHN0dWIgYmV0d2VlbiB0aGUKICAgICAgICAgIGNhbGxpbmcgY29kZSBhbmQgdGhlIFVuaXggT0RCQyBsaWJyYXJ5LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGFueSBwcm9ibGVtcyB0aGVuIHlvdSBjYW4gdXNlIHRoZSBkZWJ1Z21zZyBjaGFubmVsCiAgICAgICAgICBvZGJjMzIgdG8gdHJhY2Ugd2hhdCBpcyBoYXBwZW5pbmcuICBPbmUgd29yZCBvZiB3YXJuaW5nLiAgU29tZQogICAgICAgICAgcHJvZ3JhbXMgYWN0dWFsbHkgY2hlYXQgYSBsaXR0bGUgYW5kIGJ5cGFzcyB0aGUgb2RiYyBsaWJyYXJ5LiAgRm9yCiAgICAgICAgICBleGFtcGxlIHRoZSBDcnlzdGFsIFJlcG9ydHMgZW5naW5lIGdvZXMgdG8gdGhlIHJlZ2lzdHJ5IHRvIGNoZWNrIG9uCiAgICAgICAgICB0aGUgRFNOLiAgVGhlIGZpeCBmb3IgdGhpcyBpcyBkb2N1bWVudGVkIGF0IHVuaXhPREJDJ3Mgc2l0ZSB3aGVyZSAKICAgICAgICAgIHRoZXJlIGlzIGEgc2VjdGlvbiBvbiB1c2luZyB1bml4T0RCQyB3aXRoIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlVzaW5nIFdpbmRvd3MgT0RCQyBkcml2ZXJzPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERvZXMgYW55b25lIGFjdHVhbGx5IGhhdmUgYW55IGV4cGVyaWVuY2Ugb2YgdGhpcyBhbmQgYW55dGhpbmcgdG8gCiAgICAgICAgICBhZGQ/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgogICAgPC9zZWN0MT4KCiAgPC9jaGFwdGVyPgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZG9jLnNnbWwiICJzZXQiICJib29rIiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==