In this course, our goal is for you to learn about and understand the
science of clinical psychology, its application to the real world, and
the limitations and strengths of the clinically relevant research and
claims you encounter. We have created this document to describe
evidence-based strategies for learning and applying the course material,
as well as preparing for exams.
Attend and Participate
in Every Class Session
- Attend every lecture and class discussion section. Attendance
is important for learning the material. Get notes if you miss a
class.
- Take good notes in every lecture and discussion section, and
while doing the readings. We purposefully leave blanks in our Powerpoint
slides that necessitate notetaking. Taking notes will facilitate active
learning AND be useful when preparing for exams. Don’t try to copy down
verbatim what the instructor or TA is saying. Rather, think about the
new concepts they are introducing and find ways to summarize the new
information in ways that will make sense to you later along the way.
Review your notes carefully, and let your TA or Professor Petersen know
if you have any questions or points of confusions!
- Participate fully in active-learning opportunities in lectures
and discussion sections. We will try to provide opportunities in
every class session to discuss ideas with your neighbors, to write about
your perspectives, and to answer questions or solve problems on the
Powerpoint slides.
- Ask questions in class (we’ll address as many as we can!).
And ask questions outside of class. You can do this right after class or
discussion section. You can come to office hours with any of the TAs or
with Professor Petersen. You can email questions to any of the TAs or
Professor Petersen. You can also ask other students in the class or in
your study group about your questions. We know that it can be
anxiety-provoking to talk with your TAs or course instructors, but we
all love talking with students, and we’re really good at figuring out
what is confusing you and then helping you to understand it better!
Do All of the Required
Readings and Assignments
Completion of the required readings and assignments is an important
prerequisite for learning the material.
Pay Particular
Attention to What is Most Important
There is too much content in the class to remember everything, so it
is important to prioritize studying the most important information.
Pay close attention to things that are emphasized, including
things that are talked about more than once. Certain concepts will
be emphasized much more than others. If we discuss something several
times or with greater emphasis, it is because it is a critical concept
and we want to make sure you understand it. Listen for themes that come
up in both lecture and discussions sections. Make sure you understand
what is important about them!
Pay particular to the take-away messages of each lecture,
discussion section, and reading. When you read an article or review
a lecture, ask yourself: “What are the main messages Professor Petersen
wants us to hear?” After attending lecture and the discussion sections,
close your notes and ask yourself, “What were the main points that
Professor Petersen or the TA emphasized and what was important about
them?” Similarly, after reading the assignment for discussion sections
or lecture, turn the material face down and ask yourself, “What was
important about this reading? What about this is relevant to lecture and
section? What are the main things to learn?” If you read a research
article, ask yourself “What are the main findings? What are the
strengths and limitations of the study?” Have the reading quiz
open while reading the article, to help guide your reading so
you make sure you take away the key points of the reading.
Pay attention to the examples Professor Petersen and the TAs use
in lecture and section. Examples will help place the different
concepts into context. Think about the different examples given in class
and use them to learn how each concept can be applied. This should give
you a better understanding of what might otherwise be an abstract
concept.
Focus on understanding the concepts, not just memorizing the
details. Students are often taught to memorize facts to be successful in
class. Although memorizing some facts will be helpful in this class, we
really want you to understand how the facts are applied in
clinical psychology. Thus, many test questions will require that you
both know the facts and understand more abstract concepts. To succeed in
this class, it is important that you think deeply about and learn to
apply the knowledge from lecture and section, rather than simply
memorizing it. You will do best on exams if you go beyond memorizing and
critically think about the ideas we present in lecture and discussion
sections. In addition to understanding the concepts and technical terms
we have discussed, you should understand why they are important and how
to apply them. Compare concepts discussed in class and think about how
they are similar or different. Apply concepts to real world scenarios
and think through the examples presented in class. Put the concepts into
your own words and try to teach them to someone else. This helps you
figure out what you do and don’t understand, which puts you in a better
position to ask specific questions after class or in office hours.
Regarding the types of questions you may be asked on the exam, you do
not need to memorize dates, names, or exact numbers, unless the
date/name/number was stressed in class or section, but you will be
expected to know general trends that we emphasized.
Use Effective Study
Strategies
Schedule Study
Time
Do not leave things for last minute. You will have a lot to
study before you know it. Try to keep up with the material and ask
questions if you have them.
Study for shorter but more frequent periods. One of the
BEST things you can do to learn the course material is
study for a shorter amount of time, on multiple days a week,
and for every week of the semester. Research clearly
indicates that this is a much more effective approach than cramming your
studying into two or three longer study sessions right before the exam.
In a nutshell, the research on studying tells us that humans best
remember information when they practice recalling that information
across numerous study sessions.
For instance, if you budget one hour to learn all the different types
of reliability and validity, you will be more likely to remember them on
test day if you study them for 15 minutes across four days rather than
studying them for a single hour at one time. Thus, even though you’re
not studying the information for any longer, spreading out the times
that you study (i.e., revisiting the material again and again for
briefer study sessions) is the best approach to successfully remembering
the information on test day and beyond the course itself.
We recommend studying the course material for 4–5 hours per week
across three 90-minute study sessions or across four-to-five 60-minute
study sessions. We suggest scheduling these study sessions in your
calendar to occur every week just like you would your classes. Here is
an example of what your study session schedule might look like:
8:00–9:30 |
|
11:30–1:00 |
5:30–7:00 |
|
Now that you have scheduled regular study sessions, what is the most
effective way to design your study strategy within each session?
Research indicates that the most effective study strategy spreads out
testing yourself on different parts of the material
within study sessions as well as
between study sessions. For instance, if you want
to remember the inclusion and exclusion criteria for mental disorders,
you might test yourself on what you remember, check your answers, and
then move on to study something else. Then, at the end of the same study
session, you could test yourself again on inclusion and exclusion
criteria and check your answers. You could also decide to test yourself
on these criteria at the start of each study session for a week, until
remembering the information becomes easy and you can recall it
automatically. This helps your brain practice successful remembering. If
something is difficult to remember, try struggling with it before you
show yourself the answer. Memory works sort of like a muscle, so
challenging your brain to remember something difficult can help you
remember more successfully the next time.
Below, we’ve included an example week of how individual study
sessions might be structured using the spaced-out approach during a
week early in the semester, when you have had the first three lectures
and have already spent some time studying the first two lectures. Keep
in mind that the third lecture has more material than the first two
lectures and is the most recently learned (so the least studied). Thus,
it is allotted the most time. Imagine spending 15–20 minutes on each
block within a session. Customize these study sessions to spend the most
time on course material that feels the most challenging to you and less
time on material that you feel more confident about. As you can see,
the lectures repeat across days and within single study sessions, and
the study approaches draw from a variety of the effective study
techniques we described in more detail in discussion section (and
below!).
Test Yourself
One of the BEST ways to learn the course material
and do well on the exams is to test yourself on
key concepts, their distinctions, and their implications/applications,
rather than just re-reading or re-writing your notes over and over
again. There are three testing methods that we highly recommend
this semester.
First, use Quizlet to test your
ability to provide definitions for key concepts. We have created Quizlet
study sets for each lecture; for instructions how to access them, see here. Note that you can use Quizlet as a
strategy for organizing your self-learning, too. We recommend that you
use the “Flashcards”, “Test”, and “Match” study methods. “Match”
evaluates your ability to recognize or identify the correct definition
for each term. This is the easiest approach and is a good starting
place. “Test” also evaluates your ability to recognize or identify the
correct definition for a term but uses a variety of testing strategies.
This study method is more challenging than “Match”. “Flashcards”
evaluates your ability to recall the correct definition for each term.
This study method is the most challenging.
Second, complete all study questions for each lecture and all
practice exam questions for each exam, which you can find in the
“Study Questions” and “Practice Exam Questions” folders, respectively,
of the “Files” tab in ICON. The study questions and practice exam
questions are a great tool that will help you check for understanding of
concepts. There are multiple-choice questions, for which all correct
answers are provided. And there are open-ended questions, for which
sample correct responses are provided. The latter type of question is
particularly challenging, because research clearly demonstrates that
trying to put class-related material into your own words is one of the
best ways to learn new material and figure out what is confusing to
you.
Third, ask yourself questions about the material you have
studied, answer them, and THEN check to see if you are correct. For
example, after reviewing the first lecture, you might close your
materials, then ask yourself “What are the four main measurement
strategies in scientific clinical psychology, and how are they defined?”
or “What are some key characteristics of scientific clinical
psychology?” or “What are some key challenges facing scientific clinical
psychology?”
In a prior semester of the class, the students who received the
highest grades tended to spend relatively more time using Study
Questions to test themselves compared to using Quizlet or rereading
their notes (see figure below).
Put Material Into
Your Own Words
Another one of the BEST ways to learn the course
material and do well on the exams is to put the course
material into your own words or try to explain
the material to someone/something else (including your ceiling
fan).
Close your notes on a particular portion of the material and then ask
yourself some of the following questions or explain them to
someone/something else: “What are the main points, concepts, and
findings, in my own words? What is important about key points, concepts
and findings, in my own words? What might another example of a key
concept be? How can key concepts be applied? How do key concepts differ
from one another, in my own words?”
Similarly, after reading a research article for discussion section,
turn the material face down and ask yourself some of the following
questions: “What is important about this reading, in my own words? What
about this paper is relevant to our course? What are the main findings?
What are the strengths and limitations of the study??
These approaches—which move beyond memorizing concepts—will help you
more deeply understand and learn to apply course material, which is
critical to success in this course. These approaches also help you
figure out what’s confusing you, so you’re in a better position to ask
questions during/after class, over email, or in office hours.
Study With Peers
Join a peer study group! Students can learn a lot from studying with
their peers. Studying with peers can help students gain better
understanding of where their knowledge of course material is stronger
and which topics they need to study more. Moreover, providing
instruction to other peers can help consolidate your own learning.
Contact the instructor team if you want to join a peer study group.
Go Easy on Less
Effective Study Strategies
Finally, we’re going to touch briefly on what doesn’t work
well when trying to learn course material and prepare for
exams. Research tells us that re-reading or re-writing notes over and
over again doesn’t improve your understanding of course material and
test performance, even though it may feel like the material is becoming
easier or more familiar. As we noted above, cramming most of your
studying into the day or two before the exam also results in less
understanding and poorer test scores. Active learning and testing
methods are key to improving understanding and doing better on exams,
even if they feel more challenging. Thus, we urge you to test yourself
using Quizlet, complete the Study Questions, ask yourself questions, and
try to put course material into your own words!
Use Effective
Test-Taking Strategies
- Arrive early and relax in the minutes before the exam. You might
focus on your breathing, close your eyes and focus on vividly recalling
a relaxing scene or experience, or slowly clench and release some muscle
groups in your body.
- Make an initial rapid pass through the exam in which you answer
every question you can. Don’t spend too long on any single question—just
flag the ones about which you are uncertain and move on. But do read the
instructions, the questions, and the responses carefully, so you don’t
make careless errors.
- On your second pass through the exam, take a little longer (but not
too long!) on each of the remaining questions and make your best call on
each one.
- Leave time to review your answers if you can.
- Keep a good eye on your time, and manage your time well, so that you
have sufficient time to make both the first and second pass through the
exam.
- Ask questions if you have them. We’ll let you know if we can’t
answer them.
- Get a good night’s sleep before the exam! This will improve your
long-term memory for course material and make it easier to access during
the exam.
- Get some exercise or engage in physical activity of some sort (even
a brief walk!). Physical activity can improve your ability to focus on
challenging tasks and reduce your anxiety about the exam.
- Evaluate your performance and the adequacy of your preparation after
the exam (both before and after you know how you did!). What worked
well, and what should you consider doing differently when preparing for
and taking the next exam? Feel free to come discuss this with the TAs or
Professor Petersen!
Ask Us Questions and
Let Us Know When You’re Confused
Every one of us—including your TAs and Profs!—have questions and get
confused about course material sometimes. When this happens to you (and
it will!), remember that you have a lot of options: you can ask
questions inside or outside of class, you can come to office hours with
us, and you can email us. We know that talking with us can be
challenging, but we encourage you to get outside your comfort zone and
give it a try! 😊 We all love working with students, and we all want you
to succeed in our class. Ask for help when you need it!
LS0tCnRpdGxlOiAiTGVhcm5pbmcgYW5kIFN1Y2NlZWRpbmcgaW4gSW50cm9kdWN0aW9uIHRvIENsaW5pY2FsIFBzeWNob2xvZ3kiCnN1YnRpdGxlOiAiQWRhcHRlZCBmcm9tIGEgZG9jdW1lbnQgYnkgVGVyZXNhIFRyZWF0IGFuZCBDYXJvbGluZSBCb3lkLVJvZ2VycyIKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZSA9IEZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICBjb21tZW50ID0gIiIpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0KbGlicmFyeSgiZW1vIikKYGBgCgpJbiB0aGlzIGNvdXJzZSwgb3VyIGdvYWwgaXMgZm9yIHlvdSB0byBsZWFybiBhYm91dCBhbmQgdW5kZXJzdGFuZCB0aGUgc2NpZW5jZSBvZiBjbGluaWNhbCBwc3ljaG9sb2d5LCBpdHMgYXBwbGljYXRpb24gdG8gdGhlIHJlYWwgd29ybGQsIGFuZCB0aGUgbGltaXRhdGlvbnMgYW5kIHN0cmVuZ3RocyBvZiB0aGUgY2xpbmljYWxseSByZWxldmFudCByZXNlYXJjaCBhbmQgY2xhaW1zIHlvdSBlbmNvdW50ZXIuCldlIGhhdmUgY3JlYXRlZCB0aGlzIGRvY3VtZW50IHRvIGRlc2NyaWJlIGV2aWRlbmNlLWJhc2VkIHN0cmF0ZWdpZXMgZm9yIGxlYXJuaW5nIGFuZCBhcHBseWluZyB0aGUgY291cnNlIG1hdGVyaWFsLCBhcyB3ZWxsIGFzIHByZXBhcmluZyBmb3IgZXhhbXMuCgojIEF0dGVuZCBhbmQgUGFydGljaXBhdGUgaW4gRXZlcnkgQ2xhc3MgU2Vzc2lvbgoKLSA8dT5BdHRlbmQgZXZlcnkgbGVjdHVyZSBhbmQgY2xhc3MgZGlzY3Vzc2lvbiBzZWN0aW9uLjwvdT4KQXR0ZW5kYW5jZSBpcyBpbXBvcnRhbnQgZm9yIGxlYXJuaW5nIHRoZSBtYXRlcmlhbC4KR2V0IG5vdGVzIGlmIHlvdSBtaXNzIGEgY2xhc3MuCi0gPHU+VGFrZSBnb29kIG5vdGVzPC91PiBpbiBldmVyeSBsZWN0dXJlIGFuZCBkaXNjdXNzaW9uIHNlY3Rpb24sIGFuZCB3aGlsZSBkb2luZyB0aGUgcmVhZGluZ3MuCldlIHB1cnBvc2VmdWxseSBsZWF2ZSBibGFua3MgaW4gb3VyIFBvd2VycG9pbnQgc2xpZGVzIHRoYXQgbmVjZXNzaXRhdGUgbm90ZXRha2luZy4KVGFraW5nIG5vdGVzIHdpbGwgZmFjaWxpdGF0ZSBhY3RpdmUgbGVhcm5pbmcgQU5EIGJlIHVzZWZ1bCB3aGVuIHByZXBhcmluZyBmb3IgZXhhbXMuCkRvbid0IHRyeSB0byBjb3B5IGRvd24gdmVyYmF0aW0gd2hhdCB0aGUgaW5zdHJ1Y3RvciBvciBUQSBpcyBzYXlpbmcuClJhdGhlciwgdGhpbmsgYWJvdXQgdGhlIG5ldyBjb25jZXB0cyB0aGV5IGFyZSBpbnRyb2R1Y2luZyBhbmQgZmluZCB3YXlzIHRvIHN1bW1hcml6ZSB0aGUgbmV3IGluZm9ybWF0aW9uIGluIHdheXMgdGhhdCB3aWxsIG1ha2Ugc2Vuc2UgdG8geW91IGxhdGVyIGFsb25nIHRoZSB3YXkuClJldmlldyB5b3VyIG5vdGVzIGNhcmVmdWxseSwgYW5kIGxldCB5b3VyIFRBIG9yIFByb2Zlc3NvciBQZXRlcnNlbiBrbm93IGlmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcG9pbnRzIG9mIGNvbmZ1c2lvbnMhCi0gPHU+UGFydGljaXBhdGUgZnVsbHkgaW4gYWN0aXZlLWxlYXJuaW5nIG9wcG9ydHVuaXRpZXMgaW4gbGVjdHVyZXMgYW5kIGRpc2N1c3Npb24gc2VjdGlvbnM8L3U+LgpXZSB3aWxsIHRyeSB0byBwcm92aWRlIG9wcG9ydHVuaXRpZXMgaW4gZXZlcnkgY2xhc3Mgc2Vzc2lvbiB0byBkaXNjdXNzIGlkZWFzIHdpdGggeW91ciBuZWlnaGJvcnMsIHRvIHdyaXRlIGFib3V0IHlvdXIgcGVyc3BlY3RpdmVzLCBhbmQgdG8gYW5zd2VyIHF1ZXN0aW9ucyBvciBzb2x2ZSBwcm9ibGVtcyBvbiB0aGUgUG93ZXJwb2ludCBzbGlkZXMuCi0gPHU+QXNrIHF1ZXN0aW9uczwvdT4gaW4gY2xhc3MgKHdlJ2xsIGFkZHJlc3MgYXMgbWFueSBhcyB3ZSBjYW4hKS4KQW5kIGFzayBxdWVzdGlvbnMgb3V0c2lkZSBvZiBjbGFzcy4KWW91IGNhbiBkbyB0aGlzIHJpZ2h0IGFmdGVyIGNsYXNzIG9yIGRpc2N1c3Npb24gc2VjdGlvbi4KWW91IGNhbiBjb21lIHRvIG9mZmljZSBob3VycyB3aXRoIGFueSBvZiB0aGUgVEFzIG9yIHdpdGggUHJvZmVzc29yIFBldGVyc2VuLgpZb3UgY2FuIGVtYWlsIHF1ZXN0aW9ucyB0byBhbnkgb2YgdGhlIFRBcyBvciBQcm9mZXNzb3IgUGV0ZXJzZW4uCllvdSBjYW4gYWxzbyBhc2sgb3RoZXIgc3R1ZGVudHMgaW4gdGhlIGNsYXNzIG9yIGluIHlvdXIgc3R1ZHkgZ3JvdXAgYWJvdXQgeW91ciBxdWVzdGlvbnMuCldlIGtub3cgdGhhdCBpdCBjYW4gYmUgYW54aWV0eS1wcm92b2tpbmcgdG8gdGFsayB3aXRoIHlvdXIgVEFzIG9yIGNvdXJzZSBpbnN0cnVjdG9ycywgYnV0IHdlIGFsbCBsb3ZlIHRhbGtpbmcgd2l0aCBzdHVkZW50cywgYW5kIHdlJ3JlIHJlYWxseSBnb29kIGF0IGZpZ3VyaW5nIG91dCB3aGF0IGlzIGNvbmZ1c2luZyB5b3UgYW5kIHRoZW4gaGVscGluZyB5b3UgdG8gdW5kZXJzdGFuZCBpdCBiZXR0ZXIhCgojIERvIEFsbCBvZiB0aGUgUmVxdWlyZWQgUmVhZGluZ3MgYW5kIEFzc2lnbm1lbnRzCgpDb21wbGV0aW9uIG9mIHRoZSByZXF1aXJlZCByZWFkaW5ncyBhbmQgYXNzaWdubWVudHMgaXMgYW4gaW1wb3J0YW50IHByZXJlcXVpc2l0ZSBmb3IgbGVhcm5pbmcgdGhlIG1hdGVyaWFsLgoKIyBQYXkgUGFydGljdWxhciBBdHRlbnRpb24gdG8gV2hhdCBpcyBNb3N0IEltcG9ydGFudAoKVGhlcmUgaXMgdG9vIG11Y2ggY29udGVudCBpbiB0aGUgY2xhc3MgdG8gcmVtZW1iZXIgZXZlcnl0aGluZywgc28gaXQgaXMgaW1wb3J0YW50IHRvIHByaW9yaXRpemUgc3R1ZHlpbmcgdGhlIG1vc3QgaW1wb3J0YW50IGluZm9ybWF0aW9uLgoKPHU+UGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGluZ3MgdGhhdCBhcmUgZW1waGFzaXplZCwgaW5jbHVkaW5nIHRoaW5ncyB0aGF0IGFyZSB0YWxrZWQgYWJvdXQgbW9yZSB0aGFuIG9uY2UuPC91PgpDZXJ0YWluIGNvbmNlcHRzIHdpbGwgYmUgZW1waGFzaXplZCBtdWNoIG1vcmUgdGhhbiBvdGhlcnMuCklmIHdlIGRpc2N1c3Mgc29tZXRoaW5nIHNldmVyYWwgdGltZXMgb3Igd2l0aCBncmVhdGVyIGVtcGhhc2lzLCBpdCBpcyBiZWNhdXNlIGl0IGlzIGEgY3JpdGljYWwgY29uY2VwdCBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgaXQuCkxpc3RlbiBmb3IgdGhlbWVzIHRoYXQgY29tZSB1cCBpbiBib3RoIGxlY3R1cmUgYW5kIGRpc2N1c3Npb25zIHNlY3Rpb25zLgpNYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgd2hhdCBpcyBpbXBvcnRhbnQgYWJvdXQgdGhlbSEKCjx1PlBheSBwYXJ0aWN1bGFyIHRvIHRoZSB0YWtlLWF3YXkgbWVzc2FnZXMgb2YgZWFjaCBsZWN0dXJlLCBkaXNjdXNzaW9uIHNlY3Rpb24sIGFuZCByZWFkaW5nLjwvdT4KV2hlbiB5b3UgcmVhZCBhbiBhcnRpY2xlIG9yIHJldmlldyBhIGxlY3R1cmUsIGFzayB5b3Vyc2VsZjogIldoYXQgYXJlIHRoZSBtYWluIG1lc3NhZ2VzIFByb2Zlc3NvciBQZXRlcnNlbiB3YW50cyB1cyB0byBoZWFyPyIKQWZ0ZXIgYXR0ZW5kaW5nIGxlY3R1cmUgYW5kIHRoZSBkaXNjdXNzaW9uIHNlY3Rpb25zLCBjbG9zZSB5b3VyIG5vdGVzIGFuZCBhc2sgeW91cnNlbGYsICJXaGF0IHdlcmUgdGhlIG1haW4gcG9pbnRzIHRoYXQgUHJvZmVzc29yIFBldGVyc2VuIG9yIHRoZSBUQSBlbXBoYXNpemVkIGFuZCB3aGF0IHdhcyBpbXBvcnRhbnQgYWJvdXQgdGhlbT8iClNpbWlsYXJseSwgYWZ0ZXIgcmVhZGluZyB0aGUgYXNzaWdubWVudCBmb3IgZGlzY3Vzc2lvbiBzZWN0aW9ucyBvciBsZWN0dXJlLCB0dXJuIHRoZSBtYXRlcmlhbCBmYWNlIGRvd24gYW5kIGFzayB5b3Vyc2VsZiwgIldoYXQgd2FzIGltcG9ydGFudCBhYm91dCB0aGlzIHJlYWRpbmc/CldoYXQgYWJvdXQgdGhpcyBpcyByZWxldmFudCB0byBsZWN0dXJlIGFuZCBzZWN0aW9uPyBXaGF0IGFyZSB0aGUgbWFpbiB0aGluZ3MgdG8gbGVhcm4/IgpJZiB5b3UgcmVhZCBhIHJlc2VhcmNoIGFydGljbGUsIGFzayB5b3Vyc2VsZiAiV2hhdCBhcmUgdGhlIG1haW4gZmluZGluZ3M/CldoYXQgYXJlIHRoZSBzdHJlbmd0aHMgYW5kIGxpbWl0YXRpb25zIG9mIHRoZSBzdHVkeT8iCioqSGF2ZSB0aGUgcmVhZGluZyBxdWl6IG9wZW4gd2hpbGUgcmVhZGluZyB0aGUgYXJ0aWNsZSoqLCB0byBoZWxwIGd1aWRlIHlvdXIgcmVhZGluZyBzbyB5b3UgbWFrZSBzdXJlIHlvdSB0YWtlIGF3YXkgdGhlIGtleSBwb2ludHMgb2YgdGhlIHJlYWRpbmcuCgo8dT5QYXkgYXR0ZW50aW9uIHRvIHRoZSBleGFtcGxlcyBQcm9mZXNzb3IgUGV0ZXJzZW4gYW5kIHRoZSBUQXMgdXNlIGluIGxlY3R1cmUgYW5kIHNlY3Rpb24uPC91PgpFeGFtcGxlcyB3aWxsIGhlbHAgcGxhY2UgdGhlIGRpZmZlcmVudCBjb25jZXB0cyBpbnRvIGNvbnRleHQuClRoaW5rIGFib3V0IHRoZSBkaWZmZXJlbnQgZXhhbXBsZXMgZ2l2ZW4gaW4gY2xhc3MgYW5kIHVzZSB0aGVtIHRvIGxlYXJuIGhvdyBlYWNoIGNvbmNlcHQgY2FuIGJlIGFwcGxpZWQuClRoaXMgc2hvdWxkIGdpdmUgeW91IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCBtaWdodCBvdGhlcndpc2UgYmUgYW4gYWJzdHJhY3QgY29uY2VwdC4KCjx1PkZvY3VzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmNlcHRzPC91Piwgbm90IGp1c3QgbWVtb3JpemluZyB0aGUgZGV0YWlscy4KU3R1ZGVudHMgYXJlIG9mdGVuIHRhdWdodCB0byBtZW1vcml6ZSBmYWN0cyB0byBiZSBzdWNjZXNzZnVsIGluIGNsYXNzLgpBbHRob3VnaCBtZW1vcml6aW5nIHNvbWUgZmFjdHMgd2lsbCBiZSBoZWxwZnVsIGluIHRoaXMgY2xhc3MsIHdlIHJlYWxseSB3YW50IHlvdSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmFjdHMgYXJlICphcHBsaWVkKiBpbiBjbGluaWNhbCBwc3ljaG9sb2d5LgpUaHVzLCBtYW55IHRlc3QgcXVlc3Rpb25zIHdpbGwgcmVxdWlyZSB0aGF0IHlvdSBib3RoIGtub3cgdGhlIGZhY3RzIGFuZCB1bmRlcnN0YW5kIG1vcmUgYWJzdHJhY3QgY29uY2VwdHMuClRvIHN1Y2NlZWQgaW4gdGhpcyBjbGFzcywgaXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IHRoaW5rIGRlZXBseSBhYm91dCBhbmQgbGVhcm4gdG8gYXBwbHkgdGhlIGtub3dsZWRnZSBmcm9tIGxlY3R1cmUgYW5kIHNlY3Rpb24sIHJhdGhlciB0aGFuIHNpbXBseSBtZW1vcml6aW5nIGl0LgpZb3Ugd2lsbCBkbyBiZXN0IG9uIGV4YW1zIGlmIHlvdSBnbyBiZXlvbmQgbWVtb3JpemluZyBhbmQgY3JpdGljYWxseSB0aGluayBhYm91dCB0aGUgaWRlYXMgd2UgcHJlc2VudCBpbiBsZWN0dXJlIGFuZCBkaXNjdXNzaW9uIHNlY3Rpb25zLgpJbiBhZGRpdGlvbiB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb25jZXB0cyBhbmQgdGVjaG5pY2FsIHRlcm1zIHdlIGhhdmUgZGlzY3Vzc2VkLCB5b3Ugc2hvdWxkIHVuZGVyc3RhbmQgd2h5IHRoZXkgYXJlIGltcG9ydGFudCBhbmQgaG93IHRvIGFwcGx5IHRoZW0uCkNvbXBhcmUgY29uY2VwdHMgZGlzY3Vzc2VkIGluIGNsYXNzIGFuZCB0aGluayBhYm91dCBob3cgdGhleSBhcmUgc2ltaWxhciBvciBkaWZmZXJlbnQuCkFwcGx5IGNvbmNlcHRzIHRvIHJlYWwgd29ybGQgc2NlbmFyaW9zIGFuZCB0aGluayB0aHJvdWdoIHRoZSBleGFtcGxlcyBwcmVzZW50ZWQgaW4gY2xhc3MuClB1dCB0aGUgY29uY2VwdHMgaW50byB5b3VyIG93biB3b3JkcyBhbmQgdHJ5IHRvIHRlYWNoIHRoZW0gdG8gc29tZW9uZSBlbHNlLgpUaGlzIGhlbHBzIHlvdSBmaWd1cmUgb3V0IHdoYXQgeW91IGRvIGFuZCBkb24ndCB1bmRlcnN0YW5kLCB3aGljaCBwdXRzIHlvdSBpbiBhIGJldHRlciBwb3NpdGlvbiB0byBhc2sgc3BlY2lmaWMgcXVlc3Rpb25zIGFmdGVyIGNsYXNzIG9yIGluIG9mZmljZSBob3Vycy4KClJlZ2FyZGluZyB0aGUgdHlwZXMgb2YgcXVlc3Rpb25zIHlvdSBtYXkgYmUgYXNrZWQgb24gdGhlIGV4YW0sIHlvdSBkbyAqbm90KiBuZWVkIHRvIG1lbW9yaXplIGRhdGVzLCBuYW1lcywgb3IgZXhhY3QgbnVtYmVycywgdW5sZXNzIHRoZSBkYXRlL25hbWUvbnVtYmVyIHdhcyBzdHJlc3NlZCBpbiBjbGFzcyBvciBzZWN0aW9uLCBidXQgeW91IHdpbGwgYmUgZXhwZWN0ZWQgdG8ga25vdyBnZW5lcmFsIHRyZW5kcyB0aGF0IHdlIGVtcGhhc2l6ZWQuCgojIFVzZSBFZmZlY3RpdmUgU3R1ZHkgU3RyYXRlZ2llcwoKIyMgU2NoZWR1bGUgU3R1ZHkgVGltZQoKPHU+RG8gbm90IGxlYXZlIHRoaW5ncyBmb3IgbGFzdCBtaW51dGUuPC91PgpZb3Ugd2lsbCBoYXZlIGEgbG90IHRvIHN0dWR5IGJlZm9yZSB5b3Uga25vdyBpdC4KVHJ5IHRvIGtlZXAgdXAgd2l0aCB0aGUgbWF0ZXJpYWwgYW5kIGFzayBxdWVzdGlvbnMgaWYgeW91IGhhdmUgdGhlbS4KCjx1PlN0dWR5IGZvciBzaG9ydGVyIGJ1dCBtb3JlIGZyZXF1ZW50IHBlcmlvZHMuPC91PgpPbmUgb2YgdGhlICoqQkVTVCoqIHRoaW5ncyB5b3UgY2FuIGRvIHRvIGxlYXJuIHRoZSBjb3Vyc2UgbWF0ZXJpYWwgaXMgPHU+KipzdHVkeSBmb3IgYSBzaG9ydGVyIGFtb3VudCBvZiB0aW1lLCBvbiBtdWx0aXBsZSBkYXlzIGEgd2VlaywgYW5kIGZvciBldmVyeSB3ZWVrIG9mIHRoZSBzZW1lc3RlcioqPC91Pi4KUmVzZWFyY2ggY2xlYXJseSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIGEgbXVjaCBtb3JlIGVmZmVjdGl2ZSBhcHByb2FjaCB0aGFuIGNyYW1taW5nIHlvdXIgc3R1ZHlpbmcgaW50byB0d28gb3IgdGhyZWUgbG9uZ2VyIHN0dWR5IHNlc3Npb25zIHJpZ2h0IGJlZm9yZSB0aGUgZXhhbS4KSW4gYSBudXRzaGVsbCwgdGhlIHJlc2VhcmNoIG9uIHN0dWR5aW5nIHRlbGxzIHVzIHRoYXQgaHVtYW5zIGJlc3QgcmVtZW1iZXIgaW5mb3JtYXRpb24gd2hlbiB0aGV5IHByYWN0aWNlIHJlY2FsbGluZyB0aGF0IGluZm9ybWF0aW9uIGFjcm9zcyBudW1lcm91cyBzdHVkeSBzZXNzaW9ucy4KCkZvciBpbnN0YW5jZSwgaWYgeW91IGJ1ZGdldCBvbmUgaG91ciB0byBsZWFybiBhbGwgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiByZWxpYWJpbGl0eSBhbmQgdmFsaWRpdHksIHlvdSB3aWxsIGJlIG1vcmUgbGlrZWx5IHRvIHJlbWVtYmVyIHRoZW0gb24gdGVzdCBkYXkgaWYgeW91IHN0dWR5IHRoZW0gZm9yIDE1IG1pbnV0ZXMgYWNyb3NzIGZvdXIgZGF5cyByYXRoZXIgdGhhbiBzdHVkeWluZyB0aGVtIGZvciBhIHNpbmdsZSBob3VyIGF0IG9uZSB0aW1lLgpUaHVzLCBldmVuIHRob3VnaCB5b3XigJlyZSBub3Qgc3R1ZHlpbmcgdGhlIGluZm9ybWF0aW9uIGZvciBhbnkgbG9uZ2VyLCBzcHJlYWRpbmcgb3V0IHRoZSB0aW1lcyB0aGF0IHlvdSBzdHVkeSAoaS5lLiwgcmV2aXNpdGluZyB0aGUgbWF0ZXJpYWwgYWdhaW4gYW5kIGFnYWluIGZvciBicmllZmVyIHN0dWR5IHNlc3Npb25zKSBpcyB0aGUgYmVzdCBhcHByb2FjaCB0byBzdWNjZXNzZnVsbHkgcmVtZW1iZXJpbmcgdGhlIGluZm9ybWF0aW9uIG9uIHRlc3QgZGF5IGFuZCBiZXlvbmQgdGhlIGNvdXJzZSBpdHNlbGYuCgpXZSByZWNvbW1lbmQgc3R1ZHlpbmcgdGhlIGNvdXJzZSBtYXRlcmlhbCBmb3IgNOKAkzUgaG91cnMgcGVyIHdlZWsgYWNyb3NzIHRocmVlIDkwLW1pbnV0ZSBzdHVkeSBzZXNzaW9ucyBvciBhY3Jvc3MgZm91ci10by1maXZlIDYwLW1pbnV0ZSBzdHVkeSBzZXNzaW9ucy4KV2Ugc3VnZ2VzdCBzY2hlZHVsaW5nIHRoZXNlIHN0dWR5IHNlc3Npb25zIGluIHlvdXIgY2FsZW5kYXIgdG8gb2NjdXIgZXZlcnkgd2VlayBqdXN0IGxpa2UgeW91IHdvdWxkIHlvdXIgY2xhc3Nlcy4KSGVyZSBpcyBhbiBleGFtcGxlIG9mIHdoYXQgeW91ciBzdHVkeSBzZXNzaW9uIHNjaGVkdWxlIG1pZ2h0IGxvb2sgbGlrZToKCnwgTW9uZGF5ICAgIHwgVHVlc2RheSB8IFdlZG5lc2RheSAgfCBUaHVyc2RheSAgfCBGcmlkYXkgfAp8Oi0tLS0tLS0tLS18Oi0tLS0tLS0tfDotLS0tLS0tLS0tLXw6LS0tLS0tLS0tLXw6LS0tLS0tLXwKfCA4OjAw4oCTOTozMCB8ICAgICAgICAgfCAxMTozMOKAkzE6MDAgfCA1OjMw4oCTNzowMCB8ICAgICAgICB8CgpOb3cgdGhhdCB5b3UgaGF2ZSBzY2hlZHVsZWQgcmVndWxhciBzdHVkeSBzZXNzaW9ucywgd2hhdCBpcyB0aGUgbW9zdCBlZmZlY3RpdmUgd2F5IHRvIGRlc2lnbiB5b3VyIHN0dWR5IHN0cmF0ZWd5IHdpdGhpbiBlYWNoIHNlc3Npb24/ClJlc2VhcmNoIGluZGljYXRlcyB0aGF0IDx1PnRoZSBtb3N0IGVmZmVjdGl2ZSBzdHVkeSBzdHJhdGVneSBzcHJlYWRzIG91dCB0ZXN0aW5nIHlvdXJzZWxmIG9uIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgbWF0ZXJpYWwgKip3aXRoaW4qKiBzdHVkeSBzZXNzaW9ucyBhcyB3ZWxsIGFzICoqYmV0d2VlbioqIHN0dWR5IHNlc3Npb25zPC91Pi4KRm9yIGluc3RhbmNlLCBpZiB5b3Ugd2FudCB0byByZW1lbWJlciB0aGUgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24gY3JpdGVyaWEgZm9yIG1lbnRhbCBkaXNvcmRlcnMsIHlvdSBtaWdodCB0ZXN0IHlvdXJzZWxmIG9uIHdoYXQgeW91IHJlbWVtYmVyLCBjaGVjayB5b3VyIGFuc3dlcnMsIGFuZCB0aGVuIG1vdmUgb24gdG8gc3R1ZHkgc29tZXRoaW5nIGVsc2UuClRoZW4sIGF0IHRoZSBlbmQgb2YgdGhlIHNhbWUgc3R1ZHkgc2Vzc2lvbiwgeW91IGNvdWxkIHRlc3QgeW91cnNlbGYgYWdhaW4gb24gaW5jbHVzaW9uIGFuZCBleGNsdXNpb24gY3JpdGVyaWEgYW5kIGNoZWNrIHlvdXIgYW5zd2Vycy4KWW91IGNvdWxkIGFsc28gZGVjaWRlIHRvIHRlc3QgeW91cnNlbGYgb24gdGhlc2UgY3JpdGVyaWEgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc3R1ZHkgc2Vzc2lvbiBmb3IgYSB3ZWVrLCB1bnRpbCByZW1lbWJlcmluZyB0aGUgaW5mb3JtYXRpb24gYmVjb21lcyBlYXN5IGFuZCB5b3UgY2FuIHJlY2FsbCBpdCBhdXRvbWF0aWNhbGx5LgpUaGlzIGhlbHBzIHlvdXIgYnJhaW4gcHJhY3RpY2Ugc3VjY2Vzc2Z1bCByZW1lbWJlcmluZy4KSWYgc29tZXRoaW5nIGlzIGRpZmZpY3VsdCB0byByZW1lbWJlciwgdHJ5IHN0cnVnZ2xpbmcgd2l0aCBpdCBiZWZvcmUgeW91IHNob3cgeW91cnNlbGYgdGhlIGFuc3dlci4KTWVtb3J5IHdvcmtzIHNvcnQgb2YgbGlrZSBhIG11c2NsZSwgc28gY2hhbGxlbmdpbmcgeW91ciBicmFpbiB0byByZW1lbWJlciBzb21ldGhpbmcgZGlmZmljdWx0IGNhbiBoZWxwIHlvdSByZW1lbWJlciBtb3JlIHN1Y2Nlc3NmdWxseSB0aGUgbmV4dCB0aW1lLgoKQmVsb3csIDx1PndlJ3ZlIGluY2x1ZGVkIGFuIGV4YW1wbGUgd2VlayBvZiBob3cgaW5kaXZpZHVhbCBzdHVkeSBzZXNzaW9ucyBtaWdodCBiZSBzdHJ1Y3R1cmVkIHVzaW5nIHRoZSBzcGFjZWQtb3V0IGFwcHJvYWNoPC91PiBkdXJpbmcgYSB3ZWVrIGVhcmx5IGluIHRoZSBzZW1lc3Rlciwgd2hlbiB5b3UgaGF2ZSBoYWQgdGhlIGZpcnN0IHRocmVlIGxlY3R1cmVzIGFuZCBoYXZlIGFscmVhZHkgc3BlbnQgc29tZSB0aW1lIHN0dWR5aW5nIHRoZSBmaXJzdCB0d28gbGVjdHVyZXMuCktlZXAgaW4gbWluZCB0aGF0IHRoZSB0aGlyZCBsZWN0dXJlIGhhcyBtb3JlIG1hdGVyaWFsIHRoYW4gdGhlIGZpcnN0IHR3byBsZWN0dXJlcyBhbmQgaXMgdGhlIG1vc3QgcmVjZW50bHkgbGVhcm5lZCAoc28gdGhlIGxlYXN0IHN0dWRpZWQpLgpUaHVzLCBpdCBpcyBhbGxvdHRlZCB0aGUgbW9zdCB0aW1lLgpJbWFnaW5lIHNwZW5kaW5nIDE14oCTMjAgbWludXRlcyBvbiBlYWNoIGJsb2NrIHdpdGhpbiBhIHNlc3Npb24uCkN1c3RvbWl6ZSB0aGVzZSBzdHVkeSBzZXNzaW9ucyB0byBzcGVuZCB0aGUgbW9zdCB0aW1lIG9uIGNvdXJzZSBtYXRlcmlhbCB0aGF0IGZlZWxzIHRoZSBtb3N0IGNoYWxsZW5naW5nIHRvIHlvdSBhbmQgbGVzcyB0aW1lIG9uIG1hdGVyaWFsIHRoYXQgeW91IGZlZWwgbW9yZSBjb25maWRlbnQgYWJvdXQuCjx1PkFzIHlvdSBjYW4gc2VlLCB0aGUgbGVjdHVyZXMgcmVwZWF0IGFjcm9zcyBkYXlzIGFuZCB3aXRoaW4gc2luZ2xlIHN0dWR5IHNlc3Npb25zLCBhbmQgdGhlIHN0dWR5IGFwcHJvYWNoZXMgZHJhdyBmcm9tIGEgdmFyaWV0eSBvZiB0aGUgZWZmZWN0aXZlIHN0dWR5IHRlY2huaXF1ZXMgd2UgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIGRpc2N1c3Npb24gc2VjdGlvbiAoYW5kIGJlbG93ISk8L3U+LgoKIVtFeGFtcGxlIFN0dWR5IFNjaGVkdWxlXShpbWFnZXMvc3R1ZHlTY2hlZHVsZS5qcGcpCgojIyBUZXN0IFlvdXJzZWxmIHsjdGVzdFlvdXJzZWxmfQoKT25lIG9mIHRoZSAqKkJFU1QqKiB3YXlzIHRvIGxlYXJuIHRoZSBjb3Vyc2UgbWF0ZXJpYWwgYW5kIGRvIHdlbGwgb24gdGhlIGV4YW1zIGlzIHRvIDx1PioqdGVzdCB5b3Vyc2VsZioqPC91PiBvbiBrZXkgY29uY2VwdHMsIHRoZWlyIGRpc3RpbmN0aW9ucywgYW5kIHRoZWlyIGltcGxpY2F0aW9ucy9hcHBsaWNhdGlvbnMsIHJhdGhlciB0aGFuIGp1c3QgcmUtcmVhZGluZyBvciByZS13cml0aW5nIHlvdXIgbm90ZXMgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KVGhlcmUgYXJlIDx1PnRocmVlIHRlc3RpbmcgbWV0aG9kczwvdT4gdGhhdCB3ZSBoaWdobHkgcmVjb21tZW5kIHRoaXMgc2VtZXN0ZXIuCgpGaXJzdCwgPHU+W3VzZSBRdWl6bGV0XShxdWl6bGV0Lmh0bWwpPC91PiB0byB0ZXN0IHlvdXIgYWJpbGl0eSB0byBwcm92aWRlIGRlZmluaXRpb25zIGZvciBrZXkgY29uY2VwdHMuCldlIGhhdmUgY3JlYXRlZCBRdWl6bGV0IHN0dWR5IHNldHMgZm9yIGVhY2ggbGVjdHVyZTsgZm9yIGluc3RydWN0aW9ucyBob3cgdG8gYWNjZXNzIHRoZW0sIHNlZSBbaGVyZV0ocXVpemxldC5odG1sKS4KTm90ZSB0aGF0IHlvdSBjYW4gdXNlIFF1aXpsZXQgYXMgYSBzdHJhdGVneSBmb3Igb3JnYW5pemluZyB5b3VyIHNlbGYtbGVhcm5pbmcsIHRvby4KV2UgcmVjb21tZW5kIHRoYXQgeW91IHVzZSB0aGUgIkZsYXNoY2FyZHMiLCAiVGVzdCIsIGFuZCAiTWF0Y2giIHN0dWR5IG1ldGhvZHMuCiJNYXRjaCIgZXZhbHVhdGVzIHlvdXIgYWJpbGl0eSB0byByZWNvZ25pemUgb3IgaWRlbnRpZnkgdGhlIGNvcnJlY3QgZGVmaW5pdGlvbiBmb3IgZWFjaCB0ZXJtLgpUaGlzIGlzIHRoZSBlYXNpZXN0IGFwcHJvYWNoIGFuZCBpcyBhIGdvb2Qgc3RhcnRpbmcgcGxhY2UuCiJUZXN0IiBhbHNvIGV2YWx1YXRlcyB5b3VyIGFiaWxpdHkgdG8gcmVjb2duaXplIG9yIGlkZW50aWZ5IHRoZSBjb3JyZWN0IGRlZmluaXRpb24gZm9yIGEgdGVybSBidXQgdXNlcyBhIHZhcmlldHkgb2YgdGVzdGluZyBzdHJhdGVnaWVzLgpUaGlzIHN0dWR5IG1ldGhvZCBpcyBtb3JlIGNoYWxsZW5naW5nIHRoYW4gIk1hdGNoIi4KIkZsYXNoY2FyZHMiIGV2YWx1YXRlcyB5b3VyIGFiaWxpdHkgdG8gcmVjYWxsIHRoZSBjb3JyZWN0IGRlZmluaXRpb24gZm9yIGVhY2ggdGVybS4KVGhpcyBzdHVkeSBtZXRob2QgaXMgdGhlIG1vc3QgY2hhbGxlbmdpbmcuCgpTZWNvbmQsIDx1PmNvbXBsZXRlIGFsbCBzdHVkeSBxdWVzdGlvbnMgZm9yIGVhY2ggbGVjdHVyZSBhbmQgYWxsIHByYWN0aWNlIGV4YW0gcXVlc3Rpb25zIGZvciBlYWNoIGV4YW08L3U+LCB3aGljaCB5b3UgY2FuIGZpbmQgaW4gdGhlICJTdHVkeSBRdWVzdGlvbnMiIGFuZCAiUHJhY3RpY2UgRXhhbSBRdWVzdGlvbnMiIGZvbGRlcnMsIHJlc3BlY3RpdmVseSwgb2YgdGhlICJGaWxlcyIgdGFiIGluIElDT04uClRoZSBzdHVkeSBxdWVzdGlvbnMgYW5kIHByYWN0aWNlIGV4YW0gcXVlc3Rpb25zIGFyZSBhIGdyZWF0IHRvb2wgdGhhdCB3aWxsIGhlbHAgeW91IGNoZWNrIGZvciB1bmRlcnN0YW5kaW5nIG9mIGNvbmNlcHRzLgpUaGVyZSBhcmUgbXVsdGlwbGUtY2hvaWNlIHF1ZXN0aW9ucywgZm9yIHdoaWNoIGFsbCBjb3JyZWN0IGFuc3dlcnMgYXJlIHByb3ZpZGVkLgpBbmQgdGhlcmUgYXJlIG9wZW4tZW5kZWQgcXVlc3Rpb25zLCBmb3Igd2hpY2ggc2FtcGxlIGNvcnJlY3QgcmVzcG9uc2VzIGFyZSBwcm92aWRlZC4KVGhlIGxhdHRlciB0eXBlIG9mIHF1ZXN0aW9uIGlzIHBhcnRpY3VsYXJseSBjaGFsbGVuZ2luZywgYmVjYXVzZSByZXNlYXJjaCBjbGVhcmx5IGRlbW9uc3RyYXRlcyB0aGF0IHRyeWluZyB0byBwdXQgY2xhc3MtcmVsYXRlZCBtYXRlcmlhbCBpbnRvIHlvdXIgb3duIHdvcmRzIGlzIG9uZSBvZiB0aGUgYmVzdCB3YXlzIHRvIGxlYXJuIG5ldyBtYXRlcmlhbCBhbmQgZmlndXJlIG91dCB3aGF0IGlzIGNvbmZ1c2luZyB0byB5b3UuCgpUaGlyZCwgPHU+YXNrIHlvdXJzZWxmIHF1ZXN0aW9uczwvdT4gYWJvdXQgdGhlIG1hdGVyaWFsIHlvdSBoYXZlIHN0dWRpZWQsIGFuc3dlciB0aGVtLCBhbmQgVEhFTiBjaGVjayB0byBzZWUgaWYgeW91IGFyZSBjb3JyZWN0LgpGb3IgZXhhbXBsZSwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBmaXJzdCBsZWN0dXJlLCB5b3UgbWlnaHQgY2xvc2UgeW91ciBtYXRlcmlhbHMsIHRoZW4gYXNrIHlvdXJzZWxmICJXaGF0IGFyZSB0aGUgZm91ciBtYWluIG1lYXN1cmVtZW50IHN0cmF0ZWdpZXMgaW4gc2NpZW50aWZpYyBjbGluaWNhbCBwc3ljaG9sb2d5LCBhbmQgaG93IGFyZSB0aGV5IGRlZmluZWQ/IiBvciAiV2hhdCBhcmUgc29tZSBrZXkgY2hhcmFjdGVyaXN0aWNzIG9mIHNjaWVudGlmaWMgY2xpbmljYWwgcHN5Y2hvbG9neT8iIG9yICJXaGF0IGFyZSBzb21lIGtleSBjaGFsbGVuZ2VzIGZhY2luZyBzY2llbnRpZmljIGNsaW5pY2FsIHBzeWNob2xvZ3k/IgoKSW4gYSBwcmlvciBzZW1lc3RlciBvZiB0aGUgY2xhc3MsIHRoZSBzdHVkZW50cyB3aG8gcmVjZWl2ZWQgdGhlIGhpZ2hlc3QgZ3JhZGVzIHRlbmRlZCB0byBzcGVuZCByZWxhdGl2ZWx5IG1vcmUgdGltZSB1c2luZyBTdHVkeSBRdWVzdGlvbnMgdG8gdGVzdCB0aGVtc2VsdmVzIGNvbXBhcmVkIHRvIHVzaW5nIFF1aXpsZXQgb3IgcmVyZWFkaW5nIHRoZWlyIG5vdGVzIChzZWUgZmlndXJlIGJlbG93KS4KCiFbR3JhZGVzIGJ5IFN0dWR5IE1ldGhvZCBpbiBQcmlvciBTZW1lc3Rlcl0oaW1hZ2VzL2V4YW1HcmFkZXNCeVN0dWR5TWV0aG9kLnBuZykKCiMjIFB1dCBNYXRlcmlhbCBJbnRvIFlvdXIgT3duIFdvcmRzCgpBbm90aGVyIG9uZSBvZiB0aGUgKipCRVNUKiogd2F5cyB0byBsZWFybiB0aGUgY291cnNlIG1hdGVyaWFsIGFuZCBkbyB3ZWxsIG9uIHRoZSBleGFtcyBpcyB0byA8dT4qKnB1dCB0aGUgY291cnNlIG1hdGVyaWFsIGludG8geW91ciBvd24gd29yZHMqKjwvdT4gb3IgPHU+Kip0cnkgdG8gZXhwbGFpbiB0aGUgbWF0ZXJpYWwgdG8gc29tZW9uZS9zb21ldGhpbmcgZWxzZSAoaW5jbHVkaW5nIHlvdXIgY2VpbGluZyBmYW4pKio8L3U+LgoKQ2xvc2UgeW91ciBub3RlcyBvbiBhIHBhcnRpY3VsYXIgcG9ydGlvbiBvZiB0aGUgbWF0ZXJpYWwgYW5kIHRoZW4gYXNrIHlvdXJzZWxmIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMgb3IgZXhwbGFpbiB0aGVtIHRvIHNvbWVvbmUvc29tZXRoaW5nIGVsc2U6CiJXaGF0IGFyZSB0aGUgbWFpbiBwb2ludHMsIGNvbmNlcHRzLCBhbmQgZmluZGluZ3MsIGluIG15IG93biB3b3Jkcz8KV2hhdCBpcyBpbXBvcnRhbnQgYWJvdXQga2V5IHBvaW50cywgY29uY2VwdHMgYW5kIGZpbmRpbmdzLCBpbiBteSBvd24gd29yZHM/CldoYXQgbWlnaHQgYW5vdGhlciBleGFtcGxlIG9mIGEga2V5IGNvbmNlcHQgYmU/CkhvdyBjYW4ga2V5IGNvbmNlcHRzIGJlIGFwcGxpZWQ/CkhvdyBkbyBrZXkgY29uY2VwdHMgZGlmZmVyIGZyb20gb25lIGFub3RoZXIsIGluIG15IG93biB3b3Jkcz8iCgpTaW1pbGFybHksIGFmdGVyIHJlYWRpbmcgYSByZXNlYXJjaCBhcnRpY2xlIGZvciBkaXNjdXNzaW9uIHNlY3Rpb24sIHR1cm4gdGhlIG1hdGVyaWFsIGZhY2UgZG93biBhbmQgYXNrIHlvdXJzZWxmIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBxdWVzdGlvbnM6CiJXaGF0IGlzIGltcG9ydGFudCBhYm91dCB0aGlzIHJlYWRpbmcsIGluIG15IG93biB3b3Jkcz8KV2hhdCBhYm91dCB0aGlzIHBhcGVyIGlzIHJlbGV2YW50IHRvIG91ciBjb3Vyc2U/CldoYXQgYXJlIHRoZSBtYWluIGZpbmRpbmdzPwpXaGF0IGFyZSB0aGUgc3RyZW5ndGhzIGFuZCBsaW1pdGF0aW9ucyBvZiB0aGUgc3R1ZHk/PwoKVGhlc2UgYXBwcm9hY2hlc+KAlHdoaWNoIG1vdmUgYmV5b25kIG1lbW9yaXppbmcgY29uY2VwdHPigJR3aWxsIGhlbHAgeW91IG1vcmUgZGVlcGx5IHVuZGVyc3RhbmQgYW5kIGxlYXJuIHRvIGFwcGx5IGNvdXJzZSBtYXRlcmlhbCwgd2hpY2ggaXMgY3JpdGljYWwgdG8gc3VjY2VzcyBpbiB0aGlzIGNvdXJzZS4KVGhlc2UgYXBwcm9hY2hlcyBhbHNvIGhlbHAgeW91IGZpZ3VyZSBvdXQgd2hhdCdzIGNvbmZ1c2luZyB5b3UsIHNvIHlvdSdyZSBpbiBhIGJldHRlciBwb3NpdGlvbiB0byBhc2sgcXVlc3Rpb25zIGR1cmluZy9hZnRlciBjbGFzcywgb3ZlciBlbWFpbCwgb3IgaW4gb2ZmaWNlIGhvdXJzLgoKIyMgU3R1ZHkgV2l0aCBQZWVycwoKSm9pbiBhIHBlZXIgc3R1ZHkgZ3JvdXAhClN0dWRlbnRzIGNhbiBsZWFybiBhIGxvdCBmcm9tIHN0dWR5aW5nIHdpdGggdGhlaXIgcGVlcnMuClN0dWR5aW5nIHdpdGggcGVlcnMgY2FuIGhlbHAgc3R1ZGVudHMgZ2FpbiBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGVyZSB0aGVpciBrbm93bGVkZ2Ugb2YgY291cnNlIG1hdGVyaWFsIGlzIHN0cm9uZ2VyIGFuZCB3aGljaCB0b3BpY3MgdGhleSBuZWVkIHRvIHN0dWR5IG1vcmUuCk1vcmVvdmVyLCBwcm92aWRpbmcgaW5zdHJ1Y3Rpb24gdG8gb3RoZXIgcGVlcnMgY2FuIGhlbHAgY29uc29saWRhdGUgeW91ciBvd24gbGVhcm5pbmcuCkNvbnRhY3QgdGhlIGluc3RydWN0b3IgdGVhbSBpZiB5b3Ugd2FudCB0byBqb2luIGEgcGVlciBzdHVkeSBncm91cC4KCiMgR28gRWFzeSBvbiBMZXNzIEVmZmVjdGl2ZSBTdHVkeSBTdHJhdGVnaWVzCgpGaW5hbGx5LCB3ZSdyZSBnb2luZyB0byB0b3VjaCBicmllZmx5IG9uIDx1Pioqd2hhdCBkb2Vzbid0IHdvcmsgd2VsbCoqPC91PiB3aGVuIHRyeWluZyB0byBsZWFybiBjb3Vyc2UgbWF0ZXJpYWwgYW5kIHByZXBhcmUgZm9yIGV4YW1zLgpSZXNlYXJjaCB0ZWxscyB1cyB0aGF0IHJlLXJlYWRpbmcgb3IgcmUtd3JpdGluZyBub3RlcyBvdmVyIGFuZCBvdmVyIGFnYWluIGRvZXNuJ3QgaW1wcm92ZSB5b3VyIHVuZGVyc3RhbmRpbmcgb2YgY291cnNlIG1hdGVyaWFsIGFuZCB0ZXN0IHBlcmZvcm1hbmNlLCBldmVuIHRob3VnaCBpdCBtYXkgZmVlbCBsaWtlIHRoZSBtYXRlcmlhbCBpcyBiZWNvbWluZyBlYXNpZXIgb3IgbW9yZSBmYW1pbGlhci4KQXMgd2Ugbm90ZWQgYWJvdmUsIGNyYW1taW5nIG1vc3Qgb2YgeW91ciBzdHVkeWluZyBpbnRvIHRoZSBkYXkgb3IgdHdvIGJlZm9yZSB0aGUgZXhhbSBhbHNvIHJlc3VsdHMgaW4gbGVzcyB1bmRlcnN0YW5kaW5nIGFuZCBwb29yZXIgdGVzdCBzY29yZXMuCkFjdGl2ZSBsZWFybmluZyBhbmQgdGVzdGluZyBtZXRob2RzIGFyZSBrZXkgdG8gaW1wcm92aW5nIHVuZGVyc3RhbmRpbmcgYW5kIGRvaW5nIGJldHRlciBvbiBleGFtcywgZXZlbiBpZiB0aGV5IGZlZWwgbW9yZSBjaGFsbGVuZ2luZy4KVGh1cywgd2UgdXJnZSB5b3UgdG8gdGVzdCB5b3Vyc2VsZiB1c2luZyBRdWl6bGV0LCBjb21wbGV0ZSB0aGUgU3R1ZHkgUXVlc3Rpb25zLCBhc2sgeW91cnNlbGYgcXVlc3Rpb25zLCBhbmQgdHJ5IHRvIHB1dCBjb3Vyc2UgbWF0ZXJpYWwgaW50byB5b3VyIG93biB3b3JkcyEKCiMgVXNlIEVmZmVjdGl2ZSBUZXN0LVRha2luZyBTdHJhdGVnaWVzCgotIEFycml2ZSBlYXJseSBhbmQgcmVsYXggaW4gdGhlIG1pbnV0ZXMgYmVmb3JlIHRoZSBleGFtLgpZb3UgbWlnaHQgZm9jdXMgb24geW91ciBicmVhdGhpbmcsIGNsb3NlIHlvdXIgZXllcyBhbmQgZm9jdXMgb24gdml2aWRseSByZWNhbGxpbmcgYSByZWxheGluZyBzY2VuZSBvciBleHBlcmllbmNlLCBvciBzbG93bHkgY2xlbmNoIGFuZCByZWxlYXNlIHNvbWUgbXVzY2xlIGdyb3VwcyBpbiB5b3VyIGJvZHkuCi0gTWFrZSBhbiBpbml0aWFsIHJhcGlkIHBhc3MgdGhyb3VnaCB0aGUgZXhhbSBpbiB3aGljaCB5b3UgYW5zd2VyIGV2ZXJ5IHF1ZXN0aW9uIHlvdSBjYW4uCkRvbid0IHNwZW5kIHRvbyBsb25nIG9uIGFueSBzaW5nbGUgcXVlc3Rpb27igJRqdXN0IGZsYWcgdGhlIG9uZXMgYWJvdXQgd2hpY2ggeW91IGFyZSB1bmNlcnRhaW4gYW5kIG1vdmUgb24uCkJ1dCBkbyByZWFkIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBxdWVzdGlvbnMsIGFuZCB0aGUgcmVzcG9uc2VzIGNhcmVmdWxseSwgc28geW91IGRvbid0IG1ha2UgY2FyZWxlc3MgZXJyb3JzLgotIE9uIHlvdXIgc2Vjb25kIHBhc3MgdGhyb3VnaCB0aGUgZXhhbSwgdGFrZSBhIGxpdHRsZSBsb25nZXIgKGJ1dCBub3QgdG9vIGxvbmchKSBvbiBlYWNoIG9mIHRoZSByZW1haW5pbmcgcXVlc3Rpb25zIGFuZCBtYWtlIHlvdXIgYmVzdCBjYWxsIG9uIGVhY2ggb25lLgotIExlYXZlIHRpbWUgdG8gcmV2aWV3IHlvdXIgYW5zd2VycyBpZiB5b3UgY2FuLgotIEtlZXAgYSBnb29kIGV5ZSBvbiB5b3VyIHRpbWUsIGFuZCBtYW5hZ2UgeW91ciB0aW1lIHdlbGwsIHNvIHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCB0aW1lIHRvIG1ha2UgYm90aCB0aGUgZmlyc3QgYW5kIHNlY29uZCBwYXNzIHRocm91Z2ggdGhlIGV4YW0uCi0gQXNrIHF1ZXN0aW9ucyBpZiB5b3UgaGF2ZSB0aGVtLgpXZSdsbCBsZXQgeW91IGtub3cgaWYgd2UgY2FuJ3QKYW5zd2VyIHRoZW0uCi0gR2V0IGEgZ29vZCBuaWdodCdzIHNsZWVwIGJlZm9yZSB0aGUgZXhhbSEKVGhpcyB3aWxsIGltcHJvdmUgeW91ciBsb25nLXRlcm0gbWVtb3J5IGZvciBjb3Vyc2UgbWF0ZXJpYWwgYW5kIG1ha2UgaXQgZWFzaWVyIHRvIGFjY2VzcyBkdXJpbmcgdGhlIGV4YW0uCi0gR2V0IHNvbWUgZXhlcmNpc2Ugb3IgZW5nYWdlIGluIHBoeXNpY2FsIGFjdGl2aXR5IG9mIHNvbWUgc29ydCAoZXZlbiBhIGJyaWVmIHdhbGshKS4KUGh5c2ljYWwgYWN0aXZpdHkgY2FuIGltcHJvdmUgeW91ciBhYmlsaXR5IHRvIGZvY3VzIG9uIGNoYWxsZW5naW5nIHRhc2tzIGFuZCByZWR1Y2UgeW91ciBhbnhpZXR5IGFib3V0IHRoZSBleGFtLgotIEV2YWx1YXRlIHlvdXIgcGVyZm9ybWFuY2UgYW5kIHRoZSBhZGVxdWFjeSBvZiB5b3VyIHByZXBhcmF0aW9uIGFmdGVyIHRoZSBleGFtIChib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgeW91IGtub3cgaG93IHlvdSBkaWQhKS4KV2hhdCB3b3JrZWQgd2VsbCwgYW5kIHdoYXQgc2hvdWxkIHlvdSBjb25zaWRlciBkb2luZyBkaWZmZXJlbnRseSB3aGVuIHByZXBhcmluZyBmb3IgYW5kIHRha2luZyB0aGUgbmV4dCBleGFtPwpGZWVsIGZyZWUgdG8gY29tZSBkaXNjdXNzIHRoaXMgd2l0aCB0aGUgVEFzIG9yIFByb2Zlc3NvciBQZXRlcnNlbiEKCiMgQXNrIFVzIFF1ZXN0aW9ucyBhbmQgTGV0IFVzIEtub3cgV2hlbiBZb3UncmUgQ29uZnVzZWQKCkV2ZXJ5IG9uZSBvZiB1c+KAlGluY2x1ZGluZyB5b3VyIFRBcyBhbmQgUHJvZnMh4oCUaGF2ZSBxdWVzdGlvbnMgYW5kIGdldCBjb25mdXNlZCBhYm91dCBjb3Vyc2UgbWF0ZXJpYWwgc29tZXRpbWVzLgpXaGVuIHRoaXMgaGFwcGVucyB0byB5b3UgKGFuZCBpdCB3aWxsISksIHJlbWVtYmVyIHRoYXQgeW91IGhhdmUgYSBsb3Qgb2Ygb3B0aW9uczogeW91IGNhbiBhc2sgcXVlc3Rpb25zIGluc2lkZSBvciBvdXRzaWRlIG9mIGNsYXNzLCB5b3UgY2FuIGNvbWUgdG8gb2ZmaWNlIGhvdXJzIHdpdGggdXMsIGFuZCB5b3UgY2FuIGVtYWlsIHVzLgpXZSBrbm93IHRoYXQgdGFsa2luZyB3aXRoIHVzIGNhbiBiZSBjaGFsbGVuZ2luZywgYnV0IHdlIGVuY291cmFnZSB5b3UgdG8gZ2V0IG91dHNpZGUgeW91ciBjb21mb3J0IHpvbmUgYW5kIGdpdmUgaXQgYSB0cnkhCmByIGVtbzo6amkoInNtaWxpbmdfZmFjZV93aXRoX3NtaWxpbmdfZXllcyIpYApXZSBhbGwgbG92ZSB3b3JraW5nIHdpdGggc3R1ZGVudHMsIGFuZCB3ZSBhbGwgd2FudCB5b3UgdG8gc3VjY2VlZCBpbiBvdXIgY2xhc3MuCkFzayBmb3IgaGVscCB3aGVuIHlvdSBuZWVkIGl0IQo=