This lecture provides an overview of 161.251.

This course is all about using regression models.

Prescription

(as updated for the 2022 offering)

Common data analysis and regression techniques for application in science, business and social science. Topics include simple and multiple regression; linear models with categorical explanatory variables; model diagnostics; inference for linear models; polynomial regression; models for time dependence; methods for variable selection; non-linear and weighted regression.

Learning Outcomes

Students who successfully complete this course should be able to:

N.B. For this course the “suitable statistical software” is R. Even if you have used R before, you may wish to review some introductory material to refresh yourself. If you have not used R before, then there is some extra work to do, but we won’t use this software in the first three lectures so there is still time to allow you a decent chance to catch up. Look for links on Stream, including how to get R and RStudio set up for this semester.

Some of the new Stuff You’ll Learn

Polynomial Regression

unlabelled

Model Diagnostic Plots

unlabelled

Regression for Grouped Data

unlabelled

Ozone vs temperature for each of five months (May to September)

Computer Practicals

In practice, statistical methods are implemented on computers.

Doing statistical analyses helps you to understand underlying theory.

Computer practicals are therefore an essential element of 161.251.

Practical sessions will be held each week during semester. The more you put into the practical exercises, the more you will benefit from the opportunity to interact with staff.

Even if you miss the contact session, you should still work through the material on your own. You are most welcome to email for help.

161.251 Stream site

Check the Stream site for 161.251 on a regular basis for:

  • links to lecture content and recordings
  • Announcements and news. These will automatically be emailed to you so do make sure the correct email address is on your Massey profile.
  • All study material. There is no set text to purchase. links to practical exercises; these are highly recommended
  • Assignments and other assessment exercises, including the submission portal
  • links to files for download.
  • a record of interactions with staff and classmates

Assessment for 161.251

You will use R for all assessment exercises. Each of them is worth 25% towards your final grade.

The dates for Assessments 1-3 are on Stream; the fourth assessment date is determined by the Examinations Section and is conducted in the standard examination period.

We strongly recommend that you make use of R via RStudio to complete as much work for the course as you can so that you are well versed in its use for the second and fourth assessment exercises.

R markdown ?

If you have not used R markdown before, then you will need to gain some skill using it. The course lectures and other material were written using R markdown so we (indirectly) demonstrate its use. To help get you increasingly comfortable with R markdown, there are template files for all practical exercises.

You will soon find that R markdown is a huge time saver, especially for anyone who isn’t perfect (probably all of us).

Useful reference material

We believe we’ve provided everything you need within the provided course material. We do understand that you might want more, or to see different language used to discuss a particular topic. This is normal, and it is what many experienced academics do all the time. Referring to two sources really is a great way to confirm your understanding.

While we are keen for you to ask questions on Stream, sometimes people just want to look things up for themselves. Using Google might be what you prefer, but if you want a head start on looking for help in good quality references, take a look at the following options.

Linear Models with R by Julian J. Faraway presents some very nice examples and is a fairly easy read. Even though the second edition was released in 2014, the R code remains as useful today as it was at the time of writing. The data used in Faraway’s books are in the faraway package.

Introduction to Linear Regression Analysis (now in a sixth edition) by Montgomery, Peck, and Vining (often referred to as MPV) is a classic text. Its earlier editions were not aligned to any software, but the most recent editions are aligned to the two most widely used software options (R and SAS). There is an R package that includes a number of the datasets used in the (third edition of the) text, called MPV.

R for Data Science by Hadley Wickham and Garrett Grolemund, is a great resource. It has so much useful content that it could be used as a textbook for practically every undergraduate course in statistics and probably a few postgraduate courses as well.

If you’re wanting to take a deeper look at how and why different types of graphs are used, and why some are better than others, then read Fundamentals of Data Visualisation by Claus Wilke . Warning: this book goes well beyond what we expect you to think about in this course, but it is easy to read. It has great examples of using ggplot2 and provides discussions about how to choose appropriate graphs. Think of it as complementary to the course, not as recommended reading for the course. It might open your eyes to a greater range of graphics than you’ve used before.

The Graphics Cookbook by Winston Chang, has plenty of examples that can help you create presentation quality graphs of many types using the ggplot2 package. It might prove a slightly better option to consult if you already know what you are trying to achieve, but can’t recall how to do it. Everyone needs this sort of reference from time to time.

The R Markdown Cookbook by Yihui Xie, Christophe Dervieux, and Emily Riederer, should be one of the first refernces you seek when things aren’t going right with your R markdown documents. It will help you go from novice to power R markdown user if that’s what you want. Watch though that you don’t spend too much time making your R markdown documents more awesome than the situation deserves.

Any Questions About the Course Structure or Direction?

Questions?
Questions?

Ask now, on Stream, or by e-mail later… but always ask. We are here to help.

LS0tDQp0aXRsZTogIkxlY3R1cmUgMTogUGFwZXIgT3ZlcnZpZXciDQpzdWJ0aXRsZTogMTYxLjI1MSBSZWdyZXNzaW9uIE1vZGVsbGluZw0KYXV0aG9yOiAiUHJlc2VudGVkIGJ5IE1hdHRoZXcgUGF3bGV5IDxNLlBhd2xleUBtYXNzZXkuYWMubno+IiAgDQpkYXRlOiAiV2VlayAxIG9mIFNlbWVzdGVyIDIsIGByIGx1YnJpZGF0ZTo6eWVhcihsdWJyaWRhdGU6Om5vdygpKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgIHRoZW1lOiB5ZXRpDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KICBodG1sX25vdGVib29rOg0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICB0aGVtZTogeWV0aQ0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgaW9zbGlkZXNfcHJlc2VudGF0aW9uOg0KICAgIHdpZGVzY3JlZW46IHRydWUNCiAgICBzbWFsbGVyOiB0cnVlDQogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQNCiAgc2xpZHlfcHJlc2VudGF0aW9uOiANCiAgICB0aGVtZTogeWV0aQ0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KDQoNCg0KPCEtLS0gRGF0YSBpcyBvbg0KaHR0cHM6Ly9yLXJlc291cmNlcy5tYXNzZXkuYWMubnovZGF0YS8xNjEyNTEvDQotLS0+DQoNCmBgYHtyIHNldHVwLCBwdXJsPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0KbGlicmFyeShrbml0cikNCm9wdHNfY2h1bmskc2V0KGRldj1jKCJwbmciLCAicGRmIikpDQpvcHRzX2NodW5rJHNldChmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD03LCBmaWcucGF0aD0iRmlndXJlcy8iLCBmaWcuYWx0PSJ1bmxhYmVsbGVkIikNCm9wdHNfY2h1bmskc2V0KGNvbW1lbnQ9IiIsIGZpZy5hbGlnbj0iY2VudGVyIiwgdGlkeT1UUlVFKQ0Kb3B0aW9ucyhrbml0ci5rYWJsZS5OQSA9ICcnKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGJyb29tKQ0KYGBgDQoNCg0KPCEtLS0gRG8gbm90IGVkaXQgYW55dGhpbmcgYWJvdmUgdGhpcyBsaW5lLiAtLS0+DQoNCg0KVGhpcyBsZWN0dXJlIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIDE2MS4yNTEuDQoNCg0KVGhpcyBjb3Vyc2UgaXMgYWxsIGFib3V0IHVzaW5nIHJlZ3Jlc3Npb24gbW9kZWxzLg0KDQotIFRoZXNlIG1vZGVscyBzZWVrIHRvIGRlc2NyaWJlIHRoZSB2YXJpYXRpb24gb2Ygb25lIHZhcmlhYmxlIGluIHRlcm1zIG9mIG9uZSBvciBtb3JlIG90aGVycywgc28gZmFyIGFzIHRoaXMgaXMgcG9zc2libGUuDQoNCi0gVGhlc2UgbW9kZWxzIGFyZSBhIHZpdGFsIHRvb2wgaW4gdGhlIGFwcGxpY2F0aW9uIG9mIHN0YXRpc3RpY3MuDQoNCiMjIFByZXNjcmlwdGlvbiANCg0KKGFzIHVwZGF0ZWQgZm9yIHRoZSAyMDIyIG9mZmVyaW5nKQ0KDQpDb21tb24gZGF0YSBhbmFseXNpcyBhbmQgcmVncmVzc2lvbiB0ZWNobmlxdWVzIGZvciBhcHBsaWNhdGlvbiBpbiBzY2llbmNlLCBidXNpbmVzcyBhbmQgc29jaWFsIHNjaWVuY2UuIFRvcGljcyBpbmNsdWRlIHNpbXBsZSBhbmQgbXVsdGlwbGUgcmVncmVzc2lvbjsgbGluZWFyIG1vZGVscyB3aXRoIGNhdGVnb3JpY2FsIGV4cGxhbmF0b3J5IHZhcmlhYmxlczsgbW9kZWwgZGlhZ25vc3RpY3M7IGluZmVyZW5jZSBmb3IgbGluZWFyIG1vZGVsczsgcG9seW5vbWlhbCByZWdyZXNzaW9uOyBtb2RlbHMgZm9yIHRpbWUgZGVwZW5kZW5jZTsgbWV0aG9kcyBmb3IgdmFyaWFibGUgc2VsZWN0aW9uOyBub24tbGluZWFyIGFuZCB3ZWlnaHRlZCByZWdyZXNzaW9uLg0KDQoNCiMjIExlYXJuaW5nIE91dGNvbWVzDQoNCg0KU3R1ZGVudHMgd2hvIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZSB0aGlzIGNvdXJzZSBzaG91bGQgYmUgYWJsZSB0bzoNCg0KLSBFeHBsb3JlIGFuZCBkZXNjcmliZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgcXVhbnRpdGF0aXZlIGFuZCBjYXRlZ29yaWNhbCBkYXRhIGFuZCBpbnRlcnJlbGF0aW9uc2hpcHMgYW1vbmcgdmFyaWFibGVzLg0KLSBEZXZlbG9wIGFwcHJvcHJpYXRlIHJlZ3Jlc3Npb24gbW9kZWxzIGZvciBkYXRhIGFuYWx5c2lzLCBtYWtlIGluZmVyZW5jZXMgYWJvdXQgdGhlIG1vZGVsIHBhcmFtZXRlcnMsIGFuZCBpbnRlcnByZXQgdGhlc2UgaW4gY29udGV4dC4NCi0gQ3JpdGljYWxseSBhc3Nlc3Mgd2hldGhlciBhIHJlZ3Jlc3Npb24gbW9kZWwgYWRlcXVhdGVseSBkZXNjcmliZXMgaG93IG9uZSBvciBtb3JlIGV4cGxhbmF0b3J5IHZhcmlhYmxlcyBhZmZlY3QgYSByZXNwb25zZSB2YXJpYWJsZSwgYW5kIHByb3Bvc2UgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcy4NCi0gQ3JlYXRlIGFuZCBleHBsYWluIGFuYWx5c2lzIG9mIHZhcmlhbmNlIHRhYmxlcywgYW5kIHVzZSB0aGVtIHRvIHRlc3QgaHlwb3RoZXNlcyBhYm91dCBtb2RlbCBwYXJhbWV0ZXJzLg0KLSBDb21wYXJlIHJlZ3Jlc3Npb24gbW9kZWxzIGFuZCBzZWxlY3QgYSBzdWJzZXQgb2YgZXhwbGFuYXRvcnkgdmFyaWFibGVzIHRoYXQgZXhwbGFpbiB2YXJpYXRpb24gaW4gYSByZXNwb25zZS4NCi0gVXNlIHN1aXRhYmxlIHN0YXRpc3RpY2FsIHNvZnR3YXJlIHRvIGV4cGxvcmUgZGF0YSBhbmQgYXBwbHkgcmVncmVzc2lvbiBtb2RlbHMuDQoNCk4uQi4gRm9yIHRoaXMgY291cnNlIHRoZSAic3VpdGFibGUgc3RhdGlzdGljYWwgc29mdHdhcmUiIGlzIFIuIEV2ZW4gaWYgeW91IGhhdmUgdXNlZCBSIGJlZm9yZSwgeW91IG1heSB3aXNoIHRvIHJldmlldyBzb21lIGludHJvZHVjdG9yeSBtYXRlcmlhbCB0byByZWZyZXNoIHlvdXJzZWxmLiBJZiB5b3UgaGF2ZSBub3QgdXNlZCBSIGJlZm9yZSwgdGhlbiB0aGVyZSBpcyBzb21lIGV4dHJhIHdvcmsgdG8gZG8sIGJ1dCB3ZSB3b24ndCB1c2UgdGhpcyBzb2Z0d2FyZSBpbiB0aGUgZmlyc3QgdGhyZWUgbGVjdHVyZXMgc28gdGhlcmUgaXMgc3RpbGwgdGltZSB0byBhbGxvdyB5b3UgYSBkZWNlbnQgY2hhbmNlIHRvIGNhdGNoIHVwLiBMb29rIGZvciBsaW5rcyBvbiBTdHJlYW0sIGluY2x1ZGluZyBob3cgdG8gW2dldCBSIGFuZCBSU3R1ZGlvIHNldCB1cCBmb3IgdGhpcyBzZW1lc3Rlci5dKGh0dHBzOi8vUi1SZXNvdXJjZXMubWFzc2V5LmFjLm56L2hlbHAvdXNpbmdyaW4xNjEuMjIxLmh0bWwpDQoNCg0KIyMgU29tZSBvZiB0aGUgbmV3IFN0dWZmIFlvdSdsbCBMZWFybg0KDQpQb2x5bm9taWFsIFJlZ3Jlc3Npb24NCg0KDQpgYGB7ciBGZXZQb2x5cGxvdCwgZWNobz1GLCBldmFsPVR9DQpGZXYgPC0gcmVhZC5jc3YoZmlsZT0iLi4vLi4vZGF0YS9mZXYuY3N2IiwgaGVhZGVyPVRSVUUpDQpDb2VmZnMgPSBjb2VmKGxtKEZFVn5wb2x5KEFnZSwgNCwgcmF3PVRSVUUpLCBkYXRhPUZldikpDQpGZXYgfD4gZ2dwbG90KGFlcyh5PUZFViwgeD1BZ2UpKSArIGdlb21fcG9pbnQocGNoPTE5KSArDQpnZW9tX2Z1bmN0aW9uKGZ1biA9IGZ1bmN0aW9uKHgpIENvZWZmc1sxXSArIENvZWZmc1syXSp4ICsgQ29lZmZzWzNdKnheMiArIENvZWZmc1s0XSp4XjMgKyBDb2VmZnNbNV0qeF40LCBsaW5ld2lkdGg9MiwgY29sPSJibHVlIikNCmBgYA0KDQoNCg0KTW9kZWwgRGlhZ25vc3RpYyBQbG90cw0KDQpgYGB7ciBIaWxsc0RpYWdQbG90cywgZWNobz1GQUxTRX0NCkhpbGxzIDwtIHJlYWQuY3N2KGZpbGU9Ii4uLy4uL2RhdGEvaGlsbHMuY3N2IixoZWFkZXI9VFJVRSxyb3cubmFtZXM9MSkNCkhpbGxzLmxtIDwtIGxtKHRpbWV+ZGlzdCwgZGF0YT1IaWxscykgDQpwYXIobWZyb3c9YygyLDIpKQ0KcGxvdChIaWxscy5sbSkNCmBgYA0KDQoNCg0KDQpSZWdyZXNzaW9uIGZvciBHcm91cGVkIERhdGENCg0KYGBge3IgT3pvbmVQbG90LCBlY2hvPUZBTFNFLCBmaWcuY2FwPSJPem9uZSB2cyB0ZW1wZXJhdHVyZSBmb3IgZWFjaCBvZiBmaXZlIG1vbnRocyAoTWF5IHRvIFNlcHRlbWJlcikifQ0KcGxvdChPem9uZX5UZW1wLCBjb2w9TW9udGgsIHBjaD1Nb250aCwgZGF0YT1haXJxdWFsaXR5KQ0KYGBgDQoNCiMjIENvbXB1dGVyIFByYWN0aWNhbHMNCg0KSW4gcHJhY3RpY2UsIHN0YXRpc3RpY2FsIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIG9uIGNvbXB1dGVycy4NCg0KRG9pbmcgc3RhdGlzdGljYWwgYW5hbHlzZXMgaGVscHMgeW91IHRvIHVuZGVyc3RhbmQgdW5kZXJseWluZyB0aGVvcnkuDQoNCkNvbXB1dGVyIHByYWN0aWNhbHMgYXJlIHRoZXJlZm9yZSBhbiBlc3NlbnRpYWwgZWxlbWVudCBvZiAxNjEuMjUxLg0KDQpQcmFjdGljYWwgc2Vzc2lvbnMgd2lsbCBiZSBoZWxkIGVhY2ggd2VlayBkdXJpbmcgc2VtZXN0ZXIuIFRoZSBtb3JlIHlvdSBwdXQgaW50byB0aGUgcHJhY3RpY2FsIGV4ZXJjaXNlcywgdGhlIG1vcmUgeW91IHdpbGwgYmVuZWZpdCBmcm9tIHRoZSBvcHBvcnR1bml0eSB0byBpbnRlcmFjdCB3aXRoIHN0YWZmLg0KDQpFdmVuIGlmIHlvdSBtaXNzIHRoZSBjb250YWN0IHNlc3Npb24sIHlvdSBzaG91bGQgc3RpbGwgd29yayB0aHJvdWdoIHRoZSBtYXRlcmlhbCBvbiB5b3VyIG93bi4gWW91IGFyZSBtb3N0IHdlbGNvbWUgdG8gZW1haWwgZm9yIGhlbHAuDQoNCg0KDQojIyMgMTYxLjI1MSBTdHJlYW0gc2l0ZQ0KDQpDaGVjayB0aGUgU3RyZWFtIHNpdGUgZm9yIDE2MS4yNTEgb24gYSByZWd1bGFyIGJhc2lzIGZvcjoNCg0KLSBsaW5rcyB0byBsZWN0dXJlIGNvbnRlbnQgYW5kIHJlY29yZGluZ3MNCi0gQW5ub3VuY2VtZW50cyBhbmQgbmV3cy4gVGhlc2Ugd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGVtYWlsZWQgdG8geW91IHNvIGRvIG1ha2Ugc3VyZSB0aGUgY29ycmVjdCBlbWFpbCBhZGRyZXNzIGlzIG9uIHlvdXIgTWFzc2V5IHByb2ZpbGUuDQotIEFsbCBzdHVkeSBtYXRlcmlhbC4gVGhlcmUgaXMgbm8gc2V0IHRleHQgdG8gcHVyY2hhc2UuDQogbGlua3MgdG8gcHJhY3RpY2FsIGV4ZXJjaXNlczsgdGhlc2UgYXJlICoqKmhpZ2hseSByZWNvbW1lbmRlZCoqKg0KLSBBc3NpZ25tZW50cyBhbmQgb3RoZXIgYXNzZXNzbWVudCBleGVyY2lzZXMsIGluY2x1ZGluZyB0aGUgc3VibWlzc2lvbiBwb3J0YWwNCi0gbGlua3MgdG8gZmlsZXMgZm9yIGRvd25sb2FkLg0KLSBhIHJlY29yZCBvZiBpbnRlcmFjdGlvbnMgd2l0aCBzdGFmZiBhbmQgY2xhc3NtYXRlcw0KDQoNCiMjIEFzc2Vzc21lbnQgZm9yIDE2MS4yNTENCg0KDQpZb3Ugd2lsbCB1c2UgUiBmb3IgYWxsIGFzc2Vzc21lbnQgZXhlcmNpc2VzLiBFYWNoIG9mIHRoZW0gaXMgd29ydGggMjUlIHRvd2FyZHMgeW91ciBmaW5hbCBncmFkZS4NCg0KLSBBc3Nlc3NtZW50cyAxJjM6IFRoZXNlIGFyZSB0cmFkaXRpb25hbCBhc3NpZ25tZW50cy4gWW91IHdpbGwgd3JpdGUgdGhlbSB1c2luZyBSIG1hcmtkb3duLg0KLSBBc3Nlc3NtZW50cyAyJjQ6IFRoZXNlIGhhdmUgYSB0aW1lLWNvbnN0cmFpbmVkIGNvbXBvbmVudCBsaWtlIGEgdHJhZGl0aW9uYWwgdGVzdCwgYnV0IHRoZXkgcmVxdWlyZSBwcmVwYXJhdGlvbiBsaWtlIHlvdSB3b3VsZCBkbyBmb3IgYW4gYXNzaWdubWVudC4gVGhlcmUgbWF5IGJlIHdyaXR0ZW4gcXVlc3Rpb25zIHdoZXJlIHlvdSB3aWxsIHVzZSBvdXRwdXQgZnJvbSB3b3JrIGRvbmUgcHJpb3IgdG8gdGhlIHRlc3QgdGltZS4gVGhlIGZvY3VzIGlzIG9uIHNob3dpbmcgdW5kZXJzdGFuZGluZy4gWW91IG1heSBiZSBhc2tlZCB0byBkZWFsIHdpdGggcHJhY3RpY2FsIGlzc3VlczsgZm9yIHRoZXNlIHF1ZXN0aW9ucyB5b3Ugd2lsbCBkZW1vbnN0cmF0ZSB5b3VyIGFiaWxpdHkgdG8gYXVnbWVudCB5b3VyIGFuYWx5c2VzIHVzaW5nIFIgLyBSbWFya2Rvd24gICAgICAgIA0KDQpUaGUgZGF0ZXMgZm9yIEFzc2Vzc21lbnRzIDEtMyBhcmUgb24gU3RyZWFtOyB0aGUgZm91cnRoIGFzc2Vzc21lbnQgZGF0ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBFeGFtaW5hdGlvbnMgU2VjdGlvbiBhbmQgaXMgY29uZHVjdGVkIGluIHRoZSBzdGFuZGFyZCBleGFtaW5hdGlvbiBwZXJpb2QuDQoNCldlIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBtYWtlIHVzZSBvZiBSIHZpYSBSU3R1ZGlvIHRvIGNvbXBsZXRlIGFzIG11Y2ggd29yayBmb3IgdGhlIGNvdXJzZSBhcyB5b3UgY2FuIHNvIHRoYXQgeW91IGFyZSB3ZWxsIHZlcnNlZCBpbiBpdHMgdXNlIGZvciB0aGUgc2Vjb25kIGFuZCBmb3VydGggYXNzZXNzbWVudCBleGVyY2lzZXMuDQoNCg0KIyMgUiBtYXJrZG93biA/DQoNCg0KSWYgeW91IGhhdmUgbm90IHVzZWQgUiBtYXJrZG93biBiZWZvcmUsIHRoZW4geW91IHdpbGwgbmVlZCB0byBnYWluIHNvbWUgc2tpbGwgdXNpbmcgaXQuIFRoZSBjb3Vyc2UgbGVjdHVyZXMgYW5kIG90aGVyIG1hdGVyaWFsIHdlcmUgd3JpdHRlbiB1c2luZyBSIG1hcmtkb3duIHNvIHdlIChpbmRpcmVjdGx5KSBkZW1vbnN0cmF0ZSBpdHMgdXNlLiAgVG8gaGVscCBnZXQgeW91IGluY3JlYXNpbmdseSBjb21mb3J0YWJsZSB3aXRoIFIgbWFya2Rvd24sIHRoZXJlIGFyZSB0ZW1wbGF0ZSBmaWxlcyBmb3IgYWxsICBwcmFjdGljYWwgZXhlcmNpc2VzLiANCg0KWW91IHdpbGwgc29vbiBmaW5kIHRoYXQgUiBtYXJrZG93biBpcyBhIGh1Z2UgdGltZSBzYXZlciwgZXNwZWNpYWxseSBmb3IgYW55b25lIHdobyBpc24ndCBwZXJmZWN0IChwcm9iYWJseSBhbGwgb2YgdXMpLg0KDQoNCg0KIyMgVXNlZnVsIHJlZmVyZW5jZSBtYXRlcmlhbA0KDQoNCldlIGJlbGlldmUgd2UndmUgcHJvdmlkZWQgZXZlcnl0aGluZyB5b3UgKioqbmVlZCoqKiB3aXRoaW4gdGhlIHByb3ZpZGVkIGNvdXJzZSBtYXRlcmlhbC4gV2UgZG8gdW5kZXJzdGFuZCB0aGF0IHlvdSBtaWdodCAqKip3YW50KioqIG1vcmUsIG9yIHRvIHNlZSBkaWZmZXJlbnQgbGFuZ3VhZ2UgdXNlZCB0byBkaXNjdXNzIGEgcGFydGljdWxhciB0b3BpYy4gVGhpcyBpcyBub3JtYWwsIGFuZCBpdCBpcyB3aGF0IG1hbnkgZXhwZXJpZW5jZWQgYWNhZGVtaWNzIGRvIGFsbCB0aGUgdGltZS4gUmVmZXJyaW5nIHRvIHR3byBzb3VyY2VzIHJlYWxseSBpcyBhIGdyZWF0IHdheSB0byBjb25maXJtIHlvdXIgdW5kZXJzdGFuZGluZy4NCg0KV2hpbGUgd2UgYXJlIGtlZW4gZm9yIHlvdSB0byBhc2sgcXVlc3Rpb25zIG9uIFN0cmVhbSwgc29tZXRpbWVzIHBlb3BsZSBqdXN0IHdhbnQgdG8gbG9vayB0aGluZ3MgdXAgZm9yIHRoZW1zZWx2ZXMuICBVc2luZyBHb29nbGUgbWlnaHQgYmUgd2hhdCB5b3UgcHJlZmVyLCBidXQgaWYgeW91IHdhbnQgYSBoZWFkIHN0YXJ0IG9uIGxvb2tpbmcgZm9yIGhlbHAgaW4gZ29vZCBxdWFsaXR5IHJlZmVyZW5jZXMsIHRha2UgYSBsb29rIGF0IHRoZSBmb2xsb3dpbmcgb3B0aW9ucy4NCg0KW0xpbmVhciBNb2RlbHMgd2l0aCBSXSgpIGJ5IEp1bGlhbiBKLiBGYXJhd2F5IHByZXNlbnRzIHNvbWUgdmVyeSBuaWNlIGV4YW1wbGVzIGFuZCBpcyBhIGZhaXJseSBlYXN5IHJlYWQuIEV2ZW4gdGhvdWdoIHRoZSBzZWNvbmQgZWRpdGlvbiB3YXMgcmVsZWFzZWQgaW4gMjAxNCwgdGhlIFIgY29kZSByZW1haW5zIGFzIHVzZWZ1bCB0b2RheSBhcyBpdCB3YXMgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZy4gVGhlIGRhdGEgdXNlZCBpbiBGYXJhd2F5J3MgYm9va3MgYXJlIGluIHRoZSBgZmFyYXdheWAgcGFja2FnZS4NCg0KDQpbSW50cm9kdWN0aW9uIHRvIExpbmVhciBSZWdyZXNzaW9uIEFuYWx5c2lzXSgpIChub3cgaW4gYSBzaXh0aCBlZGl0aW9uKSBieSBNb250Z29tZXJ5LCBQZWNrLCBhbmQgVmluaW5nIChvZnRlbiByZWZlcnJlZCB0byBhcyBNUFYpIGlzIGEgY2xhc3NpYyB0ZXh0LiBJdHMgZWFybGllciBlZGl0aW9ucyB3ZXJlIG5vdCBhbGlnbmVkIHRvIGFueSBzb2Z0d2FyZSwgYnV0IHRoZSBtb3N0IHJlY2VudCBlZGl0aW9ucyBhcmUgYWxpZ25lZCB0byB0aGUgdHdvIG1vc3Qgd2lkZWx5IHVzZWQgc29mdHdhcmUgb3B0aW9ucyAoUiBhbmQgU0FTKS4gVGhlcmUgaXMgYW4gUiBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgYSBudW1iZXIgb2YgdGhlIGRhdGFzZXRzIHVzZWQgaW4gdGhlICh0aGlyZCBlZGl0aW9uIG9mIHRoZSkgdGV4dCwgY2FsbGVkIGBNUFZgLg0KDQoNCg0KW1IgZm9yIERhdGEgU2NpZW5jZV0oaHR0cHM6Ly9yNGRzLmhhZC5jby5uei8pIGJ5IEhhZGxleSBXaWNraGFtIGFuZCBHYXJyZXR0IEdyb2xlbXVuZCwgaXMgYSBncmVhdCByZXNvdXJjZS4gSXQgaGFzIHNvIG11Y2ggdXNlZnVsIGNvbnRlbnQgdGhhdCBpdCBjb3VsZCBiZSB1c2VkIGFzIGEgdGV4dGJvb2sgZm9yIHByYWN0aWNhbGx5IGV2ZXJ5IHVuZGVyZ3JhZHVhdGUgY291cnNlIGluIHN0YXRpc3RpY3MgYW5kIHByb2JhYmx5IGEgZmV3IHBvc3RncmFkdWF0ZSBjb3Vyc2VzIGFzIHdlbGwuDQoNCklmIHlvdSdyZSB3YW50aW5nIHRvIHRha2UgYSBkZWVwZXIgbG9vayBhdCBob3cgYW5kIHdoeSBkaWZmZXJlbnQgdHlwZXMgb2YgZ3JhcGhzIGFyZSB1c2VkLCBhbmQgd2h5IHNvbWUgYXJlICBiZXR0ZXIgdGhhbiBvdGhlcnMsIHRoZW4gcmVhZCBbRnVuZGFtZW50YWxzIG9mIERhdGEgVmlzdWFsaXNhdGlvbl0oaHR0cHM6Ly9jbGF1c3dpbGtlLmNvbS9kYXRhdml6LykgYnkgQ2xhdXMgV2lsa2UgLiBXYXJuaW5nOiB0aGlzIGJvb2sgZ29lcyB3ZWxsIGJleW9uZCB3aGF0IHdlIGV4cGVjdCB5b3UgdG8gdGhpbmsgYWJvdXQgaW4gdGhpcyBjb3Vyc2UsIGJ1dCBpdCBpcyBlYXN5IHRvIHJlYWQuIEl0IGhhcyBncmVhdCBleGFtcGxlcyBvZiB1c2luZyBnZ3Bsb3QyIGFuZCBwcm92aWRlcyBkaXNjdXNzaW9ucyBhYm91dCBob3cgdG8gY2hvb3NlIGFwcHJvcHJpYXRlIGdyYXBocy4gVGhpbmsgb2YgaXQgYXMgY29tcGxlbWVudGFyeSB0byB0aGUgY291cnNlLCBub3QgYXMgcmVjb21tZW5kZWQgcmVhZGluZyBmb3IgdGhlIGNvdXJzZS4gSXQgbWlnaHQgb3BlbiB5b3VyIGV5ZXMgdG8gYSBncmVhdGVyIHJhbmdlIG9mIGdyYXBoaWNzIHRoYW4geW91J3ZlIHVzZWQgYmVmb3JlLg0KDQoNClRoZSBbR3JhcGhpY3MgQ29va2Jvb2tdKGh0dHBzOi8vci1ncmFwaGljcy5vcmcvKSBieSBXaW5zdG9uIENoYW5nLCBoYXMgcGxlbnR5IG9mIGV4YW1wbGVzIHRoYXQgY2FuIGhlbHAgeW91IGNyZWF0ZSBwcmVzZW50YXRpb24gcXVhbGl0eSBncmFwaHMgb2YgbWFueSB0eXBlcyB1c2luZyB0aGUgYGdncGxvdDJgIHBhY2thZ2UuIEl0IG1pZ2h0IHByb3ZlIGEgc2xpZ2h0bHkgYmV0dGVyIG9wdGlvbiB0byBjb25zdWx0IGlmIHlvdSBhbHJlYWR5IGtub3cgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBhY2hpZXZlLCBidXQgY2FuJ3QgcmVjYWxsIGhvdyB0byBkbyBpdC4gRXZlcnlvbmUgbmVlZHMgdGhpcyBzb3J0IG9mIHJlZmVyZW5jZSBmcm9tIHRpbWUgdG8gdGltZS4NCg0KDQpUaGUgW1IgTWFya2Rvd24gQ29va2Jvb2tdKGh0dHBzOi8vYm9va2Rvd24ub3JnL3lpaHVpL3JtYXJrZG93bi1jb29rYm9vay8pIGJ5IFlpaHVpIFhpZSwgQ2hyaXN0b3BoZSBEZXJ2aWV1eCwgYW5kIEVtaWx5IFJpZWRlcmVyLCBzaG91bGQgYmUgb25lIG9mIHRoZSBmaXJzdCByZWZlcm5jZXMgeW91IHNlZWsgd2hlbiB0aGluZ3MgYXJlbid0IGdvaW5nIHJpZ2h0IHdpdGggeW91ciBSIG1hcmtkb3duIGRvY3VtZW50cy4gSXQgd2lsbCBoZWxwIHlvdSBnbyBmcm9tIG5vdmljZSB0byBwb3dlciBSIG1hcmtkb3duIHVzZXIgaWYgdGhhdCdzIHdoYXQgeW91IHdhbnQuIFdhdGNoIHRob3VnaCB0aGF0IHlvdSBkb24ndCBzcGVuZCB0b28gbXVjaCB0aW1lIG1ha2luZyB5b3VyIFIgbWFya2Rvd24gZG9jdW1lbnRzIG1vcmUgYXdlc29tZSB0aGFuIHRoZSBzaXR1YXRpb24gZGVzZXJ2ZXMuDQogDQoNCg0KIA0KDQoNCiMjIEFueSBRdWVzdGlvbnMgQWJvdXQgdGhlIENvdXJzZSBTdHJ1Y3R1cmUgb3IgRGlyZWN0aW9uPw0KDQoNCiFbUXVlc3Rpb25zP10oLi4vZ3JhcGhpY3MvcXVlc3Rpb24uanBnKSANCg0KQXNrIG5vdywgb24gU3RyZWFtLCBvciBieSBlLW1haWwgbGF0ZXIuLi4gYnV0ICoqKmFsd2F5cyoqKiBhc2suIFdlIGFyZSBoZXJlIHRvIGhlbHAuDQoNCg==