PGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIiPgo8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBGcm9udFBhZ2UgNS4wIj4KPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KPHRpdGxlPkJvb3N0IFRpbWVyIERvY3VtZW50YXRpb248L3RpdGxlPgo8L2hlYWQ+Cgo8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIiB0ZXh0PSIjMDAwMDAwIj4KCjxoMT4KPGltZyBzcmM9Ii4uLy4uL2Jvb3N0LnBuZyIgYWx0PSJib29zdC5wbmcgKDY4OTcgYnl0ZXMpIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMjc3IiBoZWlnaHQ9Ijg2Ij4KIFRpbWVyIExpYnJhcnk8L2gxPgo8cD5UaGUgdGltZXIgbGlicmFyeSBwcm92aWRlcyB0d28gaGVhZGVycyBhbmQgdGhyZWUgY2xhc3NlczogPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiPgogICAgPHRyPgogICAgICA8dGQ+PGI+SGVhZGVyPC9iPjwvdGQ+CiAgICAgIDx0ZD48Yj5DbGFzczwvYj48L3RkPgogICAgICA8dGQ+PGI+RnVuY3Rpb25hbGl0eTwvYj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkPjxhIGhyZWY9Ii4uLy4uL2Jvb3N0L3RpbWVyLmhwcCI+dGltZXIuaHBwPC9hPjwvdGQ+CiAgICAgIDx0ZD48YSBocmVmPSIjQ2xhc3MgdGltZXIiPnRpbWVyPC9hPjwvdGQ+CiAgICAgIDx0ZD5NZWFzdXJlIGVsYXBzZWQgdGltZS48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkPjxhIGhyZWY9Ii4uLy4uL2Jvb3N0L3Byb2dyZXNzLmhwcCI+cHJvZ3Jlc3MuaHBwPC9hPjwvdGQ+CiAgICAgIDx0ZD48YSBocmVmPSIjQ2xhc3MgcHJvZ3Jlc3NfdGltZXIiPnByb2dyZXNzX3RpbWVyPC9hPjwvdGQ+CiAgICAgIDx0ZD5NZWFzdXJlIGVsYXBzZWQgdGltZSAodXNpbmcgdGltZXIpLCBkaXNwbGF5IG9uIGRlc3RydWN0aW9uLjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQ+PGEgaHJlZj0iLi4vLi4vYm9vc3QvcHJvZ3Jlc3MuaHBwIj5wcm9ncmVzcy5ocHA8L2E+PC90ZD4KICAgICAgPHRkPjxhIGhyZWY9IiNDbGFzcyBwcm9ncmVzc19kaXNwbGF5Ij5wcm9ncmVzc19kaXNwbGF5PC9hPjwvdGQ+CiAgICAgIDx0ZD5EaXNwbGF5IGFuIGluZGljYXRpb24gb2YgcHJvZ3Jlc3MgdG93YXJkIGEga25vd24gZ29hbC48L3RkPgogICAgPC90cj4KICA8L3RhYmxlPgo8L2Jsb2NrcXVvdGU+CjxwPlRoZSBvYmplY3RpdmUgaW4gZGVzaWduaW5nIHRoZXNlIGNsYXNzZXMgd2FzIGZhaXJseSBsaW1pdGVkIC0gdGhleSBhcmUKaW50ZW5kZWQgZm9yIHNpbXBsZSB1c2VzIGxpa2UgdGltaW5nIGFuZCByZXBvcnRpbmcgcHJvZ3Jlc3MgZm9yIHByb2dyYW1tZXIncwp0ZXN0cyBvciBiYXRjaCBqb2Igc3RyZWFtcy4gVGhlIHNwZWNpZmljYXRpb25zIG9mIHRoZSBwcm9ncmVzcyBjbGFzc2VzIGFyZQp3b3JkZWQgaW4gdmVyeSBnZW5lcmFsIHRlcm1zIHRvIHBlcm1pdCBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgZm9yCmdyYXBoaWNhbCB1c2VyIGludGVyZmFjZXMuPC9wPgo8aDI+PGEgbmFtZT0iQ2xhc3MgdGltZXIiPkNsYXNzIHRpbWVyPC9hPjwvaDI+CjxwPkNsYXNzIHRpbWVyIG1lYXN1cmVzIGVsYXBzZWQgdGltZS4mbmJzcDsgSXQgaXMgZ2VuZXJhbGx5IHVzZWZ1bCBmb3IgbWlub3IKdGltaW5nIHRhc2tzLiZuYnNwOyBJdHMgc3VwcGxpZWQgaW1wbGVtZW50YXRpb24gb2ZmZXJzIG1vZGVyYXRlIHBvcnRhYmlsaXR5IGF0CnRoZSBjb3N0IG9mIGRlcGVuZGluZyBvbiB0aGUgdW5rbm93biBhY2N1cmFjeSBhbmQgcHJlY2lzaW9uIG9mIHRoZSBDIFN0YW5kYXJkCkxpYnJhcnkgY2xvY2soKSBmdW5jdGlvbi4mbmJzcDsgVGhlIG1heGltdW0gbWVhc3VyYWJsZSBlbGFwc2VkIHRpbWUgbWF5IGJlIGFzCmxvdyBhcyA1OTYuNSBob3VycyAob3IgZXZlbiBsZXNzKSBmb3IgdGhlIHN1cHBsaWVkIGltcGxlbWVudGF0aW9uLiBCZWNhdXNlIG9mCnRoZXNlIGxpbWl0YXRpb25zLCB0aGlzIHRpbWVyIGNhbm5vdCBiZSBkZXBlbmRlZCB1cG9uIHRvCmJlIHJvYnVzdCwgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpZiB0aGF0IGlzIG9mIGFueSBjb25jZXJuLjwvcD4KPGgzPlN5bm9wc2lzPC9oMz4KPHByZT4jaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vLi4vYm9vc3QvdGltZXIuaHBwIj5ib29zdC90aW1lci5ocHA8L2E+Jmd0OwpuYW1lc3BhY2UgYm9vc3QgewpjbGFzcyB0aW1lciB7CiBwdWJsaWM6CiAgICAgICAgIHRpbWVyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zdGNvbmRpdGlvbjogZWxhcHNlZCgpPT0wCiAgLy8gY29tcGlsZXIgZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IsIGNvcHkgYXNzaWdubWVudCwgYW5kIGR0b3IgYXBwbHkKICB2b2lkICAgcmVzdGFydCgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBwb3N0OiBlbGFwc2VkKCk9PTAKICBkb3VibGUgZWxhcHNlZCgpIGNvbnN0OyAgICAgICAgICAgICAgICAvLyByZXR1cm4gZWxhcHNlZCB0aW1lIGluIHNlY29uZHMKCiAgZG91YmxlIGVsYXBzZWRfbWF4KCkgY29uc3Q7ICAvLyByZXR1cm4gZXN0aW1hdGVkIG1heGltdW0gdmFsdWUgZm9yIGVsYXBzZWQoKQogIC8vIFBvcnRhYmlsaXR5IHdhcm5pbmc6IGVsYXBzZWRfbWF4KCkgbWF5IHJldHVybiB0b28gaGlnaCBhIHZhbHVlIG9uIHN5c3RlbXMKICAvLyB3aGVyZSBzdGQ6OmNsb2NrX3Qgb3ZlcmZsb3dzIG9yIHJlc2V0cyBhdCBzdXJwcmlzaW5nIHZhbHVlcy4KCiAgZG91YmxlIGVsYXBzZWRfbWluKCkgY29uc3Q7ICAgICAgICAgICAgLy8gcmV0dXJuIG1pbmltdW0gdmFsdWUgZm9yIGVsYXBzZWQoKQogIH07IC8vIHRpbWVyCn0gLy8gbmFtZXNwYWNlIGJvb3N0PC9wcmU+CjxoMz5FeGNlcHRpb24gc2FmZXR5PC9oMz4KPHA+VGhlIGNvbnN0cnVjdG9ycyBtYXkgdGhyb3cgPGNvZGU+c3RkOjpiYWRfYWxsb2M8L2NvZGU+LiZuYnNwOyBObyBvdGhlciBtZW1iZXIKZnVuY3Rpb25zIHRocm93IGV4Y2VwdGlvbnMuPC9wPgo8aDM+RnV0dXJlIGRpcmVjdGlvbnM8L2gzPgo8cD5UaGVyZSB3YXMgYSB2ZXJ5IHJlYXNvbmFibGUgcmVxdWVzdCBmcm9tIEVkIEJyZXkgZm9yIGEgbWV0aG9kIG9mIGRldGVybWluaW5nCnRoZSBtYXhpbXVtIHZhbHVlIHdoaWNoIG1heSBiZSByZXR1cm5lZCBieSBlbGFwc2VkKCksIGJ1dCB0aGVyZSBpc24ndCBhIHdheSB0byBkbyBzbwpwb3J0YWJseS4gIFRoZSBpc3N1ZSBoYXMgYmVlbiByYWlzZWQgd2l0aCB0aGUgZ3JvdXAgd29ya2luZyBvbiBleHRlbmRlZCB0aW1lIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBDIGxhbmd1YWdlLiAgQSBzb2x1dGlvbgptYXkgYmUgeWVhcnMgaW4gdGhlIGZ1dHVyZS4gSW4gdGhlIG1lYW50aW1lLCBlbGFwc2VkX21heCgpIHByb3ZpZGVzIGFuCmFwcHJveGltYXRpb24uPC9wPgo8aDI+PGEgbmFtZT0iQ2xhc3MgcHJvZ3Jlc3NfdGltZXIiPkNsYXNzIHByb2dyZXNzX3RpbWVyPC9hPjwvaDI+CjxwPkNsYXNzIHByb2dyZXNzX3RpbWVyIGF1dG9tYXRpY2FsbHkgbWVhc3VyZXMgZWxhcHNlZCB0aW1lLCBhbmQgdGhlbiBvbgpkZXN0cnVjdGlvbiBkaXNwbGF5cyBhbiBlbGFwc2VkIHRpbWUgbWVzc2FnZSBhdCBhbiBhcHByb3ByaWF0ZSBwbGFjZSBpbiBhbiBhcHByb3ByaWF0ZSBmb3JtLiZuYnNwOwpUaGUgc3VwcGxpZWQgaW1wbGVtZW50YXRpb24gZGVmYXVsdHMgdG8gYSBjaGFyYWN0ZXIgZGlzcGxheSBvbiBzdGQ6OmNvdXQuPC9wPgo8cD5DbGFzcyBwcm9ncmVzc190aW1lciBpcyBvZnRlbiB1c2VkIHRvIHRpbWUgcHJvZ3JhbSBleGVjdXRpb24uJm5ic3A7IEl0cyB1c2UgaXMgYXMgc2ltcGxlIGFzOjwvcD4KPGJsb2NrcXVvdGU+CiAgPHByZT4jaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vLi4vYm9vc3QvcHJvZ3Jlc3MuaHBwIj5ib29zdC9wcm9ncmVzcy5ocHA8L2E+Jmd0OwppbnQgbWFpbigpCnsKICAgcHJvZ3Jlc3NfdGltZXIgdDsgIC8vIHN0YXJ0IHRpbWluZwogICAvLyBkbyBzb21ldGhpbmcgLi4uCiAgIHJldHVybiAwOwp9PC9wcmU+CjwvYmxvY2txdW90ZT4KPHA+V2hpY2ggd2lsbCBwcm9kdWNlIHNvbWUgYXBwcm9wcmlhdGUgb3V0cHV0LCBmb3IgZXhhbXBsZTo8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+MS4yMyBzPC9wcmU+CjwvYmxvY2txdW90ZT4KPHA+Tm90ZSB0aGF0ICZxdW90O3MmcXVvdDsgaXMgdGhlIG9mZmljaWFsIFN5c3RlbSBJbnRlcm5hdGlvbmFsIGQnVW5pdOlzCmFiYnJldmlhdGlvbiBmb3Igc2Vjb25kcy48L3A+CjxoMz5TeW5vcHNpczwvaDM+CjxwcmU+I2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uLy4uL2Jvb3N0L3Byb2dyZXNzLmhwcCI+Ym9vc3QvcHJvZ3Jlc3MuaHBwPC9hPiZndDsKbmFtZXNwYWNlIGJvb3N0IHsKY2xhc3MgcHJvZ3Jlc3NfdGltZXIgOiBwdWJsaWMgPGEgaHJlZj0iI0NsYXNzIHRpbWVyIj50aW1lcjwvYT4sIDxhIGhyZWY9Ii4uL3V0aWxpdHkvdXRpbGl0eS5odG0jQ2xhc3Nfbm9uY29weWFibGUiPm5vbmNvcHlhYmxlPC9hPiAgewogcHVibGljOgogICBwcm9ncmVzc190aW1lcigpOwogICBwcm9ncmVzc190aW1lciggc3RkOjpvc3RyZWFtJmFtcDsgb3MgKTsgLy8gb3MgaXMgaGludDsgaW1wbGVtZW50YXRpb24gbWF5IGlnbm9yZQogICB+cHJvZ3Jlc3NfdGltZXIoKTsKICAgfTsgLy8gcHJvZ3Jlc3NfZGlzcGxheQp9IC8vIG5hbWVzcGFjZSBib29zdDwvcHJlPgo8aDM+RXhjZXB0aW9uIHNhZmV0eTwvaDM+CjxwPlRoZSBjb25zdHJ1Y3RvcnMgbWF5IHRocm93IDxjb2RlPnN0ZDo6YmFkX2FsbG9jPC9jb2RlPi4mbmJzcDsgTm8gb3RoZXIgbWVtYmVyCmZ1bmN0aW9ucyB0aHJvdyBleGNlcHRpb25zLjwvcD4KPGgyPjxhIG5hbWU9IkNsYXNzIHByb2dyZXNzX2Rpc3BsYXkiPkNsYXNzIHByb2dyZXNzX2Rpc3BsYXk8L2E+PC9oMj4KPHA+Q2xhc3MgcHJvZ3Jlc3NfZGlzcGxheSBkaXNwbGF5cyBhbiBhcHByb3ByaWF0ZSBpbmRpY2F0aW9uIG9mIHByb2dyZXNzIHRvd2FyZAphIHByZWRlZmluZWQgZ29hbCBhdCBhbiBhcHByb3ByaWF0ZSBwbGFjZSBpbiBhbiBhcHByb3ByaWF0ZSBmb3JtLiZuYnNwOyBUaGlzCm1lZXRzIGEgaHVtYW4gbmVlZCB0byBrbm93IGlmIGEgcHJvZ3JhbSBpcyBwcm9ncmVzc2luZy48L3A+CjxwPkZvciBleGFtcGxlLCBpZiBhIGxlbmd0aHkgY29tcHV0YXRpb24gbXVzdCBiZSBkb25lIG9uIGEgc3RkOjptYXAmbHQ7Jmd0OwpuYW1lZCBiaWdfbWFwLCB0aGUgZm9sbG93IGNvZGUgd291bGQgZGlzcGxheSBhbiBpbmRpY2F0aW9uIG9mIHByb2dyZXNzOjwvcD4KPHByZT4gIHByb2dyZXNzX2Rpc3BsYXkgc2hvd19wcm9ncmVzcyggYmlnX21hcC5zaXplKCkgKTsKICBmb3IgKCBiaWdfbWFwX3Q6Oml0ZXJhdG9yIGl0ciA9IGJpZ19tYXA6YmVnaW4oKTsKICAgICAgICBpdHIgIT0gYmlnX21hcC5lbmQoKTsgKytpdHIgKQogIHsKICAgICAvLyBkbyB0aGUgY29tcHV0YXRpb24KICAgICAuLi4KICAgICArK3Nob3dfcHJvZ3Jlc3M7CiAgfTwvcHJlPgo8cD5BZnRlciA3MCUgb2YgdGhlIGVsZW1lbnRzIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHRoZSBkaXNwbGF5IG1pZ2h0IGxvb2sKc29tZXRoaW5nIGxpa2UgdGhpczo8L3A+CjxibG9ja3F1b3RlPgogIDxwcmU+MCUgICAxMCAgIDIwICAgMzAgICA0MCAgIDUwICAgNjAgICA3MCAgIDgwICAgOTAgICAxMDAlCnwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio8L3ByZT4KPC9ibG9ja3F1b3RlPgoKPGgyPlN5bm9wc2lzPC9oMj4KPHByZT4jaW5jbHVkZSAmbHQ7Ym9vc3QvcHJvZ3Jlc3MuaHBwJmd0OwpuYW1lc3BhY2UgYm9vc3QgewpjbGFzcyBwcm9ncmVzc19kaXNwbGF5IDogPGEgaHJlZj0iLi4vdXRpbGl0eS91dGlsaXR5Lmh0bSNDbGFzc19ub25jb3B5YWJsZSI+bm9uY29weWFibGU8L2E+IHsKIHB1YmxpYzoKICAgcHJvZ3Jlc3NfZGlzcGxheSggdW5zaWduZWQgbG9uZyBleHBlY3RlZF9jb3VudCApOwogICAvLyBFZmZlY3RzOiByZXN0YXJ0KGV4cGVjdGVkX2NvdW50KQoKICAgcHJvZ3Jlc3NfZGlzcGxheSggdW5zaWduZWQgbG9uZyBleHBlY3RlZF9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtJmFtcDsgb3MsICAvLyBvcyBpcyBoaW50OyBpbXBsZW1lbnRhdGlvbiBtYXkgaWdub3JlCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7IHMxID0gJnF1b3Q7XG4mcXVvdDssIC8vbGVhZGluZyBzdHJpbmdzCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZhbXA7IHMyID0gJnF1b3Q7JnF1b3Q7LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmYW1wOyBzMyA9ICZxdW90OyZxdW90OyApCiAgIC8vIEVmZmVjdHM6IHNhdmUgY29weSBvZiBsZWFkaW5nIHN0cmluZ3MsIHJlc3RhcnQoZXhwZWN0ZWRfY291bnQpCgogICB2b2lkICAgICAgICAgICByZXN0YXJ0KCB1bnNpZ25lZCBsb25nIGV4cGVjdGVkX2NvdW50ICk7CiAgIC8vICBFZmZlY3RzOiBkaXNwbGF5IGFwcHJvcHJpYXRlIHNjYWxlIG9uIHRocmVlIGxpbmVzLAogICAvLyAgcHJlZmFjZWQgYnkgc3RvcmVkIGNvcHkgb2YgczEsIHMyLCBzMywgcmVzcGVjdGl2ZWx5LCBmcm9tIGNvbnN0cnVjdG9yCiAgIC8vICBQb3N0Y29uZGl0aW9uczogY291bnQoKT09MCwgZXhwZWN0ZWRfY291bnQoKT09ZXhwZWN0ZWRfY291bnQKCiAgIHVuc2lnbmVkIGxvbmcgIG9wZXJhdG9yKz0oIHVuc2lnbmVkIGxvbmcgaW5jcmVtZW50ICkKICAgLy8gIEVmZmVjdHM6IERpc3BsYXkgYXBwcm9wcmlhdGUgcHJvZ3Jlc3MgdGljIGlmIG5lZWRlZC4KICAgLy8gIFBvc3Rjb25kaXRpb25zOiBjb3VudCgpPT0gb3JpZ2luYWwgY291bnQoKSArIGluY3JlbWVudAogICAvLyAgUmV0dXJuczogY291bnQoKS4KCiAgIHVuc2lnbmVkIGxvbmcgIG9wZXJhdG9yKysoKQogICAvLyAgUmV0dXJuczogb3BlcmF0b3IrPSggMSApLgoKICAgdW5zaWduZWQgbG9uZyAgY291bnQoKSBjb25zdAogICAvLyAgUmV0dXJuczogVGhlIGludGVybmFsIGNvdW50LgoKICAgdW5zaWduZWQgbG9uZyAgZXhwZWN0ZWRfY291bnQoKSBjb25zdAogICAvLyAgUmV0dXJuczogVGhlIGV4cGVjdGVkX2NvdW50IGZyb20gdGhlIGNvbnN0cnVjdG9yLgoKICAgfTsgLy8gcHJvZ3Jlc3NfZGlzcGxheQp9IC8vIG5hbWVzcGFjZSBib29zdDwvcHJlPgo8aDM+RXhjZXB0aW9uIHNhZmV0eTwvaDM+CjxwPkFsbCBtZW1iZXIgZnVuY3Rpb25zIGV4Y2VwdCBjb3VudCgpIGFuZCBleHBlY3RlZF9jb3VudCgpIGRvIG91dHB1dCwgYW5kIHNvIGluCnRoZW9yeSBtYXkgdGhyb3cgZXhjZXB0aW9ucy4mbmJzcDsgSW4gcHJhY3RpY2UgaXQgc2VlbXMgYW4gZXhjZXB0aW9uIGJlaW5nCnRocm93biBpcyBwcmV0dHkgdW5saWtlbHksIGFuZCBwcm9iYWJseSBpbXBsaWVzIHN1Y2ggc2VyaW91cyBwcm9ibGVtcyB0aGF0IGFuCmV4Y2VwdGlvbiBpcyB3YXJyYW50ZWQuJm5ic3A7IE5vdGUgdGhhdCB0aGVyZSBpcyBubyBleHBsaWNpdCBkZXN0cnVjdG9yLCBzbyB0aGUKZGVzdHJ1Y3RvciB0aHJvd2luZyBpcyBub3QgYW4gaXNzdWUuPC9wPgo8aDI+SGlzdG9yeTwvaDI+CjxwPlRoZXNlIGNsYXNzZXMgYXJlIGRlc2NlbmRlZCBmcm9tIG9sZGVyIEMrKyBhbmQgQyBmdW5jdGlvbmFsaXR5IGZvdW5kIHVzZWZ1bApieSBwcm9ncmFtbWVycyBmb3IgbWFueSB5ZWFycy4gVmlhIHRoZSBCb29zdCBtYWlsaW5nIGxpc3QsIFJlaWQgU3dlYXRtYW4Kc3VnZ2VzdGVkIHNlcGFyYXRpbmcgdGhlIG1vcmUgd2lkZWx5IHVzZWZ1bCB0aW1lciBjbGFzcyBmcm9tIHRoZSBtb3JlIHRhcmdldGVkCnByb2dyZXNzIGNsYXNzZXMuIFNlYW4gQ29yZmllbGQgc3VnZ2VzdGVkIGFsbG93aW5nIG91dHB1dCB0byBhbnkgb3N0cmVhbS4mbmJzcDsKRGF2ZSBBYnJhaGFtcywgVmFsZW50aW4gQm9ubmFyZCwgRWQgQnJleSwgQW5keSBHbGV3LCBhbmQgRGlldG1hciBL/GhsIGFsc28KcHJvdmlkZWQgdXNlZnVsIGNvbW1lbnRzLiZuYnNwOyBFZCBCcmV5IHN1Z2dlc3RlZCB0aW1lcjo6ZWxhcHNlZF9tYXgoKS4gSm9obgpNYWRkb2NrIHN1Z2dlc3RlZCB0aW1lcjo6ZWxhcHNlZF9taW4oKS4gVG9vbiBLbmFwZW4gc3VnZ2VzdGVkIHRoZSBvcHRpb25hbCAKbGVhZGluZyBzdHJpbmdzLCB0byBhbGxvdyBmb3IgbGFiZWxpbmcgdGhlIHByb2dyZXNzIGRpc3BsYXk8L3A+CjxoMj5SYXRpb25hbGU8L2gyPgo8cD5UaGUgZWFybHkgdmVyc2lvbnMgb2YgdGhlIHRpbWVyIGNsYXNzZXMgaGFkIHNlcGFyYXRlIGltcGxlbWVudGF0aW9uCmZpbGVzLiZuYnNwOyBUaGlzIGNhdXNlZCBwcm9ibGVtcyBmb3IgdXNlcnMgbm90IHdpc2hpbmcgdG8gYnVpbGQgbGlicmFyaWVzLApjYXVzZWQgZGlmZmljdWx0aWVzIGJ1aWxkaW5nIERMTCdzIChiZWNhdXNlIG9mIGNhc2NhZGVkIHVzZSBvZiBvdGhlciBsaWJyYXJpZXMKd2hpY2ggaW4gdHVybiBicm91Z2h0IGlsbHVtaW5hdGVkIGNvbXBpbGVyIGRlZmljaWVuY2llcyksIGFuZCBjYXVzZWQgdGhlIGNsYXNzZXMKbm90IHRvIGJlIHVzZWQgZXZlbiB3aGVuIGNsZWFybHkgYXBwbGljYWJsZS4mbmJzcDsgVGh1cyB0aGUgaW1wbGVtZW50YXRpb24gd2FzCmNoYW5nZWQgdG8gYWxsIGlubGluZSBjb2RlLjwvcD4KPHA+VGhlcmUgaGF2ZSBiZWVuIHNldmVyYWwgcmVxdWVzdHMgZm9yIHBsYXRmb3JtIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyB0byB1c2UKc3VwcG9zZWRseSBoaWdoLXBlcmZvcm1hbmNlIHRpbWVycyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIEFQSS4mbmJzcDsgSm9obgpNYWRkb2NrIHN1Ym1pdHRlZCBhbiBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgV2luMzIgQVBJLiZuYnNwOyBUZXN0cyBzaG93ZWQgdGhhdAp3aGlsZSB0aGUgcHJlY2lzaW9uIG9mIHRoZXNlIHRpbWVycyB3YXMgaGlnaCwgdGhlIGxhdGVuY3kgd2FzIHNvbWV0aW1lcyB2ZXJ5Cm11Y2ggaGlnaGVyIHRoYW4gZm9yIHRoZSBzdGQ6OmNsb2NrKCkgZnVuY3Rpb24sIGFuZCB0aGF0IGlzIHZlcnkgYmFkLiZuYnNwOwpGdXJ0aGVybW9yZSwgcmVzdWx0cyB1c2luZyB0aGUgV2luMzIgQVBJIHdlcmUgdmVyeSBkZXBlbmRlbnQgb24gYm90aCB0aGUKY29tcGlsZXIgKE1pY3Jvc29mdCBhbmQgQm9ybGFuZCB3ZXJlIHRlc3RlZCkgYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24KKFdpbmRvd3MgTlQsIFdpbmRvd3MgOTUsIGV0Yy4pJm5ic3A7IFRodXMgdGhlIHN0ZDo6Y2xvY2soKSBmdW5jdGlvbiB3YXMgbXVjaAptb3JlIHJlbGlhYmxlLCBhbmQgc28gd2FzIHJldGFpbmVkIGV2ZW4gb24gdGhpcyBwbGF0Zm9ybSB3aXRoIGl0cyBvd24gdGltZXIgQVBJLjwvcD4KPGhyPgo8cD6pIENvcHlyaWdodCBCZW1hbiBEYXdlcyAxOTk5Ljxicj4KRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiBTZWUKPGEgaHJlZj0iaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT48L3A+Cgo8cD5SZXZpc2VkIDwhLS13ZWJib3QgYm90PSJUaW1lc3RhbXAiIFMtVHlwZT0iRURJVEVEIiBTLUZvcm1hdD0iJUIgJWQsICVZIiBzdGFydHNwYW4gLS0+Tm92ZW1iZXIgMDcsIDIwMDc8IS0td2ViYm90IGJvdD0iVGltZXN0YW1wIiBpLWNoZWNrc3VtPSIzOTU5OSIgZW5kc3BhbiAtLT4KPC9wPgoKPC9ib2R5PgoKPC9odG1sPg==