Web Services Policy 1.5 - Guidelines for Policy Assertion Authors

Editors' copy $Date: 2007/06/19 06:47:47 $ @@ @@@@ @@@@

This version:
ws-policy-guidelines.html
Latest version:
http://dev.w3.org/cvsweb/~checkout~/2006/ws/policy/ws-policy-guidelines.html?content-type=text/html;charset=utf-8
Previous version:
http://www.w3.org/TR/2006/WD-ws-policy-guidelines-20061221
Editors:
Asir S Vedamuthu, Microsoft Corporation
David Orchard, BEA Systems, Inc.
Frederick Hirsch, Nokia
Maryann Hondo, IBM Corporation
Prasad Yendluri, webMethods, Inc.
Toufic Boubez, Layer 7 Technologies
Ümit Yalçinalp, SAP AG.

Abstract

Web Services Policy 1.5 - Guidelines for Policy Assertion Authors is intended to provide guidance for Assertion Authors that will work with the Web Services Policy 1.5 - Framework [Web Services Policy Framework] and Web Services Policy 1.5 - Attachment [Web Services Policy Attachment] specifications to create domain specific assertions. The focus of this document is to provide best practices and patterns to follow as well as illustrate the care needed in using WS-Policy to achieve the best possible results for interoperability. It is a complementary guide to using the specifications.

Status of this Document

This document is an editors' copy that has no official standing.

Table of Contents

1. Introduction
2. List of Best Practice Statements
3. What is an Assertion?
4. Who is involved in authoring Assertions?
    4.1 Roles and Responsibilities
        4.1.1 Assertion Authors
        4.1.2 Consumers
        4.1.3 Providers
5. General Guidelines for Assertion Authors
    5.1 Assertions and Their Target Use
    5.2 Authoring Styles
    5.3 Considerations when Modeling New Assertions
        5.3.1 Minimal approach
        5.3.2 QName and XML Information Set representation
        5.3.3 Self Describing Messages
        5.3.4 Single Domains
    5.4 Comparison of Nested and Parameterized Assertions
        5.4.1 Assertions with Parameters
        5.4.2 Nested Assertions
    5.5 Designating Ignorable Behavior
        5.5.1 Ignorable Behavior in Intersection
        5.5.2 Ignorable Behavior at runtime
    5.6 Designating Optional Behaviors
        5.6.1 Optional behavior in Compact authoring
        5.6.2 Optional behavior at runtime
            5.6.2.1 Example
    5.7 Considerations for Policy Attachment in WSDL
    5.8 Interrelated domains
6. Versioning Policy Assertions
    6.1 Referencing Policy Expressions
    6.2 Evolution of Assertions (Versioning and Compatibility)
    6.3 Supporting New Policy Subjects
7. Applying Best Practices for Policy Attachment
    7.1 Appropriate Attachment: Preserving Context-Free Policies
    7.2 Appropriate Attachment: Identifying Assertion Subjects
        7.2.1 Interaction between Subjects
    7.3 Appropriate Attachment: Identifying Assertion Sources
8. Scenario and a worked example

Appendices

A. Security Considerations
B. XML Namespaces
C. References
D. Acknowledgements (Non-Normative)
E. Changes in this Version of the Document (Non-Normative)
F. Web Services Policy 1.5 - Guidelines for Policy Assertion Authors Change Log (Non-Normative)


1. Introduction

The WS-Policy specification defines a policy to be a collection of policy alternatives with each policy alternative a collection of policy assertions. The Web Services Policy 1.5 - Framework provides a flexible framework to represent consistent combinations of behaviors from a variety of domains. A policy assertion is a machine readable metadata expression that identifies behaviors required for Web services interactions. Web Services Policy 1.5 - Guidelines for Policy Assertion Authors is a resource primarily for Assertion Authors and provides guidelines on the use of Web Services Policy 1.5 - Framework and Web Services Policy 1.5 - Attachment specifications to create and use domain specific assertions to enable interoperability.

WS-Policy Assertions communicate the requirements and capabilities of a web service by adhering to the specification, WS-Policy Framework. To enable interoperability of web services different sets of WS-Policy Assertions need to be defined by different communities based upon domain-specific requirements of the web service.

The focus of these guidelines is to capture best practices and usage patterns for practitioners. It is a complementary guide to the Framework and Attachments specifications and the Primer. It is intended to provide non-normative guidelines for WS-Policy Assertion Authors who need to know the features of the language and understand the requirements for describing policy assertions. Some of the guidance for WS-Policy Assertion Authors can also be helpful for:

This document assumes a basic understanding of XML, Namespaces in XML, WSDL, SOAP and the Web Services Policy language.

This is a non-normative document and does not provide a definitive specification of the Web Services Policy framework. B. XML Namespaces lists all the namespace prefixes that are used in this document. (XML elements without a namespace prefix are from the Web Services Policy XML Namespace.)

As a companion document to the primer, this document also follows the Socratic style of beginning with a question, and then answering the question.

2. List of Best Practice Statements

The following Best Practices appear in this document with discussion and examples, and are summarized here for quick reference:

3. What is an Assertion?

An assertion is a piece of metadata that describes a capability related to a specific WS-Policy domain. Sets of domain-specific assertions are typically defined in a dedicated specification that describes their semantics, applicability and scoping requirements as well as their data type definition using XML Schema.

Policy assertions representing shared and visible behaviors are useful pieces of metadata to enable interoperability and tooling for automation. The key to understanding when to design policy assertions is to have clarity on the characteristics of a behavior represented by a policy assertion. Some useful ways to discover relevant behaviors are to ask questions like the following:

There are already many examples in the industry that adhere to the above practices, such as Web Services Reliable Messaging Policy and WS-SecurityPolicy. Some common characteristics from these documents may be considered as best practices for new Assertion Authors:

In this document we will explain why these practices should be followed so that the assertion developers defining such a specification will be well informed and able to adequately specify assertions for their domain.

It is expected that consumers of the metadata specified by the Assertion Authors will also benefit from understanding these practices as it will help them utilize the assertions in the context of the WS-Policy framework. A result of following the best practices will be an assertion specification that describes a contract for the consumers and providers of the capabilities and constraints of the domain.

4. Who is involved in authoring Assertions?

In order for the policy framework to enable communities to express their own domain knowledge, it is necessary to provide basic functionality that all domains could exploit and then allow points of extension where authors of the various WS-Policy assertions for a particular domain can provide additional semantics.

Some policy assertions specify traditional requirements and capabilities that will ultimately manifest on the wire (e.g., authentication scheme, transport protocol selection). Other policy assertions have no wire manifestation yet are critical to proper service selection and usage (e.g., privacy policy, QoS characteristics). WS-Policy provides a single policy grammar to allow both kinds of assertions to be reasoned about in a consistent manner.

4.1 Roles and Responsibilities

Below we capture some of the characteristics of the roles and responsibilities for the authors, consumers and providers.

4.1.1 Assertion Authors

Assertion Authors are a community that chooses to exploit the WS-Policy Framework by creating their own specification to define a set of assertions that express the capabilities and constraints of that target domain. The WS-Policy Framework is based on a declarative model, meaning that it is incumbent on the Assertion Authors to define both the semantics of the assertions as well as the scope of their target domain in their specification. The set of metadata for any particular domain will vary in the granularity of assertion specification required. It is the intent of this document to help communities utilize the framework in such a way that multiple WS-Policy domains can co-exist and consumers and providers can utilize the framework consistently across domains.

When using the WS-Policy Framework, any Assertion Authors defining new WS-Policy assertions must adhere to the MUST's and SHOULD's in the specification and should review the conformance section of the specification.

Assertion Authors should also specify a policy subject. For instance, if a policy assertion were to be used with WSDL, an assertion description should specify a WSDL policy subject.

An example of a domain specification that follows these practices is the WS-SecurityPolicy specification [WS-SecurityPolicy]. The WS-SecurityPolicy authors have defined the scope of their target domain (security) as follows:

"This document [WS-SecurityPolicy] defines a set of security policy assertions for use with the WS-Policy framework with respect to security features provided in WSS: SOAP Message Security, WS-Trust and WS-SecureConversation. This document takes the approach of defining a base set of assertions that describe how messages are to be secured. Flexibility with respect to token types, cryptographic algorithms and mechanisms used, including using transport level security is part of the design and allows for evolution over time. The intent is to provide enough information for compatibility and interoperability to be determined by web service participants along with all information necessary to actually enable a participant to engage in a secure exchange of messages."

An example of scoping individual assertions to policy subjects is also provided by the WS-Security Policy specification in Appendix A.

4.1.2 Consumers

A consumer of WS-Policy Assertions can be any entity that is capable of parsing a WS-Policy XML element and selecting one alternative from the policy. This selected alternative is then used to govern the creation of a message to send to the subject to which the policy alternative was attached. The WS-Policy Attachment specification defines a set of attachment models for use with common web service subjects: WSDL definitions [WSDL 1.1, WSDL 2.0 Core Language], UDDI directory entries [UDDI API 2.0, UDDI Data Structure 2.0, UDDI 3.0], and WS-Addressing Endpoint References (EPR) [WS-Addressing Core].

In the degenerate case, a human could read the XML and determine if a message could be constructed conformant to the advertised policy.

It is expected that consumers of WS-Policy will include a wide range of client configurations, from stand alone client applications to "active" web service requesters that are capable of adapting to the constraints and capabilities expressed in a WS-Policy document and modifying their own configurations dynamically.

4.1.3 Providers

A provider who expresses capabilities and requirements of a Web service as policies can be any web service implementation that can specify its on-the-wire message behavior as a policy expression that conforms to the Web Services Policy 1.5 - Framework [Web Services Policy Framework] and Web Services Policy 1.5 - Attachment [Web Services Policy Attachment] specifications. The Web Services Policy 1.5 - Attachment specification has defined a set of subjects and an extensible mechanism for attaching policies to web services subjects.

When deploying services with policies it is useful for providers to anticipate how to evolve their services capabilities over time. If forward compatibility is a concern in order to accommodate compatibility with different and potentially new clients, providers should refer to 6. Versioning Policy Assertions and Web Services Policy Primer that describes service and policy assertion evolution.

5. General Guidelines for Assertion Authors

As Assertion Authors begin the task of inventing XML dialects to represent policy assertions they can take advantage of WS-Policy building on XML principles and XML Schema validation in their design. WS-Policy relies on the QName of a policy assertion being an XML element but allows Assertion Authors to optionally provide additional semantics through nesting assertions, or specifying assertion parameters. This section covers several aspects of assertion design and provides some answers to the following questions:

5.1 Assertions and Their Target Use

Assertion Authors should understand the functionality that the WS-Policy framework provides and apply the knowledge of the policy framework processing when defining the set of assertions.

Assertions can be simple or they can be complex. Assertion Authors may choose to specify multiple peer assertions, each carrying the semantic of a particular behavior, or they may choose to specify assertions that contains assertion parameters and/or nested policy expression (nested assertions), each of which relate to an aspect of the behavior, yet encapsulated within a single assertion. There are advantages to simplifying the set of assertions. The ultimate goal of policy is to enable interoperability. By keeping assertion design as simple as possible, Assertion Authors will more likely be able to meet that objective.

Therefore, Assertion Authors need to have a specific goal in mind for the assertions that they author. Assertion specifications should include a detailed specification of the assertion’s semantics, a set of valid policy subjects to which the asserction maybe attached. The specification should also include the scope of the assertion in the context of a particular policy subject. For example, an assertion with Endpoint Policy Subject can be scoped to a given message exchange with that endpoint, or it can be scoped to all messages exchanged with that endpoint. The former case permits a client to select a different alternative with each successive message exchange. Finally, if a set of assertions describes a wide range of behaviors, the ability to combine individual assertions may also need to be considered. For example, if an assertion applies to the SOAP protocol, it would be necessary to consider how its presence must interact with other policy assertions that are defined for security.

Assertion Authors should include the following items in an assertion specification:

The WS-Policy Attachment specification defines a number of different policy subjects to which an assertion can be attached. For attaching to WSDL subjects see 5.7 Considerations for Policy Attachment in WSDL for more detail. Additionally, the framework provides for the means to extend the set of policy subjects beyond the set of subjects defined in the WS-Policy Attachment specification.

Although a policy assertion may be constrained to a specific set of policy subjects by Assertion Authors, its semantics should not be dependent upon the mechanism by which the policy expression is attached to a given policy subject. For instance, an assertion "Foo" has the same semantic when attached to an operation policy subject regardless of whether it was attached using XML element policy attachment or the external URI attachment mechanism. Independence from a specific attachment mechanism allows policy tools to choose the most appropriate mechanism to attach a policy without having to analyze the contents of the policy.

Best Practice 1: Semantics Independent of Attachment Mechanisms

The semantics of a policy assertion should not depend on the attachment mechanism used.

Editorial note 
April 25th 07, editors decided to add G2 - "Assertion Authors should define policy assertions for behaviors that are relevant to compatibility tests, such as web service protocols that manifest on the wire." - to Section 5.1. May 9th 07, an issue was opened against G2 - issue 4566.

Best Practice 2: Behaviors Relevant to Compatibility Tests

Whenever possible, Assertion Authors should define policy asswertions for behaviors that are relevant to compatibility tests, such as web service protocols that manifest on the wire.

Editorial note 
Place holder.

5.2 Authoring Styles

WS-Policy supports two different authoring styles, compact form and normal form. A compact form is one in which an expression consists of three constructs: an attribute to decorate an assertion (to indicate whether it is required or optional), semantics for recursively nested policy operators, and a policy reference/inclusion mechanism. A policy expression in the compact form can be translated into its normal form using the policy normalization algorithm described in the Web Service Policy Framework (see section 4.3 Compact Policy Expression).

The two forms of a policy expression are semantically equivalent. When multiple alternatives are present in a policy, the normal form may express the choices more explicitly. On the other hand, the compact form may be more readable for humans when an assertion is marked as optional using the wsp:optional attribute. A policy processor may normalize a policy expression originally authored in compact form at any time without changing the semantics of the policy. In general, it is not possible to guarantee in what form a policy expression would be when it is processed. As a result, the description for a policy assertion should not depend on the style used to author a policy expression that contains the assertion.

Best Practice 3: Semantics Independent of the Form

The semantics of an assertion should be independent of the form (compact or normal form) of policy expressions that contain the assertion.

In the example below, the policy expression is shown in its two forms, compact and normal. In compact form, the wsrmp:RMAssertion assertion is augmented by the wsp:Optional="true" attribute. While the compact form of the expression might be more human readable, the semantics of the particular assertion are independent of the form and of the presence (or absence) of the wsp:optional attribute.

Example 5-1. Policy Expression in Compact Form

<wsp:Policy xmlns:wsp='http://www.w3.org/ns/ws-policy'
	xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702'
	xmlns:wsrmp='http://docs.oasis-open.org/ws-rx/wsrmp/200608'>
<wsrmp:RMAssertion wsp:Optional="true"/>
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:TransportBinding>
        <wsp:Policy>
          <sp:TransportToken>
            <wsp:Policy>
	          <sp:HttpsToken>
	            <wsp:Policy>
	             <sp:RequireClientCertificate/>
	            </wsp:Policy>
	          </sp:HttpsToken>
            </wsp:Policy>
          </sp:TransportToken>
        </wsp:Policy>
      </sp:TransportBinding>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>

Example 5-2. Policy Expression in Normal Form

<wsp:Policy xmlns:wsp='http://www.w3.org/ns/ws-policy'
	xmlns:sp='http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702' 
	xmlns:wsrmp='http://docs.oasis-open.org/ws-rx/wsrmp/200608'>
  <wsp:ExactlyOne> 
    <wsp:All>
      <wsrmp:RMAssertion/>
      <sp:TransportBinding>
        <wsp:Policy>
          <sp:TransportToken>
            <wsp:Policy>
	          <sp:HttpsToken>
	            <wsp:Policy>
	              <sp:RequireClientCertificate/>
	            </wsp:Policy>
	          </sp:HttpsToken>
            </wsp:Policy>
          </sp:TransportToken>
        </wsp:Policy>
      </sp:TransportBinding>
    </wsp:All>
          
    <wsp:All>
      <sp:TransportBinding>
        <wsp:Policy>
          <sp:TransportToken>
            <wsp:Policy>
	          <sp:HttpsToken>
	            <wsp:Policy>
	              <sp:RequireClientCertificate/>
	            </wsp:Policy>
	          </sp:HttpsToken>
            </wsp:Policy>
          </sp:TransportToken>
        </wsp:Policy>
      </sp:TransportBinding>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>

5.3 Considerations when Modeling New Assertions

When creating a new policy domain, it is important to understand how policy expressions are used by a framework implementation that has followed the specifications.

The examples given in this document reference WS-Policy like WS-SecurityPolicy and WS-RM Policy. These policy expressions represent web services message exchange requirements, but policy authoring can be done by individual groups that wish to represent web services application requirements and deployments that wish to reuse the WS-Policy framework in order to enable dynamic negotiation of business requirements and capabilities at runtime.

5.3.1 Minimal approach

New Assertion Authors are encouraged to try to not overload assertions. A single assertion indicates a single behavior. Sets of assertions can by grouped by an operator "all". This indicates that there is a relationship between the assertions and they now constitute a policy alternative.

If grouping is utilized, choices between alternatives can be indicated by an "exactly one" operator. This basic set of operators allows Assertion Authors a wide range of options for expressing the possible combinations of assertions within their domain.

It requires a good deal of effort to evaluate the capabilities of a domain and capture them in a way that reflects the options of the domain if the domain has a lot of assertions to define. Interoperability testing of new policy domains is recommended to ensure that consumers and providers are able to use the new domain assertions. To facilitate proper progression of an assertion, Assertion Authors should start with a simple working assertion that allows extensibility. As the design work progresses, one may add more parameters or nested policy assertions to meet one's interoperability needs.

Best Practice 4: Start with Simple Assertion

Assertion Authors should start with a simple working assertion that allows assertion parameter extensibility.

New Assertion Authors are encouraged to look at Web Services Reliable Messaging Policy to see an example of a relatively simple domain that has defined three assertions. Assertion Authors are encouraged to look at WS-SecurityPolicy to see an example of a complex domain that has been decomposed into a set of policy expressions.

5.3.2 QName and XML Information Set representation

Web Services Policy language allows Assertion Authors to invent their own XML dialects to represent policy assertions. The policy language relies only on the policy assertion XML element QName. This QName is unique and identifies the behavior represented by a policy assertion. Assertion Authors have the option to represent an assertion parameter as a child element (by leveraging natural XML nesting) or an attribute of an assertion. The general guidelines on when to use XML elements versus attributes apply is: Use a unique QName to identify a distinct behavior

Best Practice 5: Use Unique QNames

Assertion Authors should use a unique QName to identify a distinct behavior.

An example of this method is given in the Web Services Reliable Messaging Policy document [Web Services Reliable Messaging Policy] and included below for illustration. The unique Qname for RM in this case is "RMAssertion".

The syntax of an assertion can be represented using an XML outline (plus an XML schema document) to specify the syntax of an assertion.

Best Practice 6: Provide an XML Outline

Assertion authors should provide an XML outline plus an XML schema to specify the syntax of an assertion.

 <wsrmp:RMAssertion [wsp:Optional="true"]? ...> 
   <wsp:Policy >
     [ <wsrmp:SequenceSTR/> |
       <wsrmp:SequenceTransportSecurity/> ] ?
     <wsrmp:DeliveryAssurance/> 
     <wsp:Policy >
        [ <wsrmp:ExactlyOnce/> | 
          <wsrmp:AtLeastOnce/> |
          <wsrmp:AtMostOnce/> ]
        <wsrmp:InOrder/> ?
     </wsp:Policy>
     </wsrmp:DeliveryAssurance> ] ?
    </wsp:Policy>
 </wsrmp:RMAssertion/>
 

Outlines can also illustrate the nesting of assertions. In the example above, the assertion DeliveryAssurance, has nested policy assertions and the XML outline enumerates the nested assertions (ExactlyOnce, AtLeastOnce,AtMostOnce)that are allowed.

To give a general example, the definiton of assertion syntax for a hypothetical assertion such as SampleAssertion, should allow attribute extensibility as part of the XML definition, allowing the attributes defined by wsp:Policy to be used.

Example 5-4. Use of @any for attribute extensibility

/samplePrefix:SampleAssertion/@any
This is an extensibility mechanism to allow additional attributes to be added to the element, including wsp:Optional.
				

When an XML outline is included as part of an assertion description it is possible to use the wsp:Optional attribute in the outline. In the RM case above, wsp:Optional was used.

Best Practice 7: Assertion XML outline can indicate use of wsp:Optional attribute

An assertion XML outline can indicate the use of the wsp:Optional attribute to identify optional behaviors.

When an XML outline is included as part of an assertion description it is possible to use the wsp:Ignorable attribute in the outline. In the example below, wsp:Ignorable was used to indciate behavior that does not impact intersection.

Best Practice 8: Assertion XML outline can indicate use of wsp:Ignorable attribute

An assertion XML outline can indicate the use of the wsp:Ignorable attribute to identify ignorable behaviors for intersection.

Best Practice 9: Specify Semantics Clearly

Assertion authors should clearly and completely specify the semantics of a policy assertion.

5.3.3 Self Describing Messages

WS-Policy is intended to communicate the requirements, capabilities and behaviors of nodes that provide the message's path, not specifically to declare properties of the message semantics. One of the advantages of Web services is that an XML message can be stored and later examined (e.g. as a record of a business transaction) or interpreted by an intermediary; however, if information that is necessary to understand a message is not available, these capabilities suffer.

Policy assertions should not be used to express the semantics of a message. Rather, if a property is required to understand a message, it should be communicated in the message, or be made available by some other means (e.g., being referenced by a URI in the message) instead of being communicated as a policy element. Note that there are other specifications that target specification of semantics of a message, such as SAWSDL.

If the messages could not be made self describing by utilizing additional properties present in the message as required by the assertion, it would be necessary to determine the behaviors engaged at runtime by additional means. A general protocol that aids in determining such behaviors may be utilized, however a standard protocol for this purpose is currently not available to ensure interoperability. Thus, a private protocol should be used with care.

Another approach is to use of the assertion to selectively apply to subjects. For example, a dedicated endpoint may be allocated to ensure the engagement of a behavior that is expressed by a policy assertion. This approach can be considered when messages cannot be self describing.

Policy assertions should not be used to express the semantics of a message. Firstly, an assertion type indicates a runtime behavior. Secondly, Assertion Authors need to indicate how the runtime behavior represented in the assertion type can be inferred or indicated from a message at runtime. If there is a need for the behavior to be represented in a persistent way or if there is a need for additional data or metadata that is present in a message to be persisted, it should be incorporated into the assertion design or in the message itself. In essence, the Assertion Authors should consider how to make messages self describing when utilizing their assertions by specifying additional properties, headers, etc. that must be present in a message as part of their assertion design.

Best Practice 10: Not Necessary to Understand a Message

Assertion Authors should not define policy assertions to represent information that is necessary to understand a message.

For example, if the details of a message's encryption ( e.g., the cipher used, etc) are expressed in policy that isn't attached to the message, it isn't possible to later decipher it. This is very different from expressing, in policy, what ciphers (and so forth) are supported by a particular endpoint, or those that are required in a particular message; the latter are the intended uses of the WS-Policy framework.

5.3.4 Single Domains

When considering the creation of a new domain of policy assertions, it is important to identify whether or not the domain is self-contained or at least if a subset of the domain can be well defined. A domain that expresses a broad set of capabilities will also need to have a community supporting implementations of these capabilities to provide value to the consumers. Ultimately it is the consumers and providers that will determine whether a particular set of assertions correctly characterize a domain. A new community should avoid duplicating assertions that have already been defined as this will create ambiguity not clarification. New Assertion Authors should focus on creating assertions for those specific constraints and capabilities that do not overlap with other domains but that communicate new functionality.

The model advocated for new assertion development is a cooperative marketplace [some might say it is an "opt-in" model]. The providers of services need to find value in the set of assertions or they will not include the assertions in their service descriptions.

It is the responsibility of the Assertion Authors to avoid duplication of assertions. A review by a broad community is the best way to ensure that the granularity of a set of domain assertions is appropriate.

Best Practice 11: Avoid Duplication of Assertions

Assertion Authors should reuse an existing assertion (rather than create a new one) whenever possible.

5.4 Comparison of Nested and Parameterized Assertions

There are two different ways to provide additional information in an assertion beyond its type. We cover these two cases below followed by a comparison of these approaches targeting when to use either of the approach.

5.4.1 Assertions with Parameters

Policy assertion parameters are the opaque payload of an assertion. Parameters carry additional useful information for engaging the behavior described by an assertion and are preserved through policy processing such as normalize, merge and policy intersection. Requesters may use policy intersection to select a compatible policy alternative for an interaction. Assertion parameters do not affect the outcome of policy intersection unless the assertion specifies domain specific processing for policy intersection.

In the XML representation of a policy assertion, the child elements and attributes of the assertion excluding child elements and attributes from the policy language namespace name are the assertion parameters.

Best Practice 12: Use Parameters for Useful Information

Assertion Authors should represent useful (or additional) information necessary for engaging the behavior represented by a policy assertion as assertion parameters.

In the example below, sp:Body and sp:Header elements are the two assertion parameters of the sp:SignedParts policy assertion (this assertion requires the parts of a message to be protected). These two parameters identify the parts of a wire message that should be protected. These parameters carry additional useful information for engaging the behavior.

Example 5-5. Policy Assertion with Assertion Parameters

<wsp:Policy>
  <sp:SignedParts>
    <sp:Body/>
    <sp:Header/>
  </sp:SignedParts>
</wsp:Policy>

5.4.2 Nested Assertions

The framework provides the ability to "nest" policy assertions. For domains with a complex set of options, nesting provides one way to indicate dependent elements within a behavior.

The following design questions below can help to determine when to use nested policy expressions:

  • Are these assertions designed for the same policy subject?

  • Do these assertions represent dependent behaviors?

If the answers are yes to both of these questions then leveraging nested policy expressions is something to consider. Keep in mind that a nested policy expression participates in the policy intersection algorithm. If a requester uses policy intersection to select a compatible policy alternative then the assertions in a nested policy expression play a first class role in the outcome. If there is a nested policy expression, an assertion description should declare it and enumerate the nested policy assertions that are allowed. There is one caveat to watch out for: policy assertions with deeply nested policy can greatly increase the complexity of a policy and should be avoided when they are not needed.

Best Practice 13: Use Nested Assertions for Dependent Behaviors

Assertion Authors should represent dependent behaviors that are relevant to a compatibility test and apply to the same policy subject using nested policy assertions.

Best Practice 14: Enumerate Nested Assertions

If there is a nested policy expression, then the Assertion Authors should enumerate the nested policy assertions that are allowed.

The main consideration for selecting parameters or nesting of assertions is that the framework intersection algorithm processes nested alternatives, but does not consider parameters in its algorithm.

Assertion Authors should recognize that the framework can yield multiple assertions of the same type. The QName of the assertion is the only vehicle for the framework to match a specific assertion, NOT the contents of the element. If the assertion is a parameterized assertion the authors must understand that this type of assertion will require additional processing by consumers in order to disambiguate the assertions or to understand the semantics of the name value pairs, complex content, attribute values contribution to the processing. The tradeoff is the generality vs. the flexibility and complexity of the comparison expected for a domain.

If the assertion authors want to delegate the processing to the framework, utilizing nesting should be considered. Otherwise, domain specific comparison algorithms may need to be devised and be delegated to the specific domain handlers that are not visible to the WS-Policy framework. However, domain specific intersection processing reduces interop and increases the burden to implement an assertion.

Best Practice 15: Discourage Domain Specific Intersection

Assertion authors should only specify domain specific intersection semantics when policy intersection is insufficient.

We will use the WS-SecurityPolicy to illustrate the use of nested assertions.

Securing messages is a complex usage scenario. The WS-SecurityPolicy Assertion Authors have defined the sp:TransportBinding policy assertion to indicate the use of transport-level security for protecting messages. Just indicating the use of transport-level security for protecting messages is not sufficient. To successfully interact with a Web service, the consumer must know not only that transport-level security is required, but also the transport token to use, the secure transport to use, the algorithm suite to use for performing cryptographic operations, etc. The sp:TransportBinding policy assertion can represent these dependent behaviors.

A policy assertion like the sp:TransportBinding identifies a visible behavior that is a requirement. A nested policy expression can be used to enumerate the dependent behaviors on the Transport binding. A nested policy expression is a policy expression that is a child element of another policy assertion element. A nested policy expression further qualifies the behavior of its parent policy assertion.

In the example below, the child Policy element is a nested policy expression and further qualifies the behavior of the sp:TransportBinding policy assertion. The sp:TransportToken is a nested policy assertion of the sp:TransportBinding policy assertion. The sp:TransportToken assertion requires the use of a specific transport token and further qualifies the behavior of the sp:TransportBinding policy assertion (which already requires the use of transport-level security for protecting messages).

Example 5-6. Transport Security Policy Assertion

<sp:TransportBinding>
  <Policy>
    <sp:TransportToken>
      <Policy>
        <sp:HttpsToken>
          <wsp:Policy/>
        </sp:HttpsToken>
      </Policy>
    </sp:TransportToken>
    <sp:AlgorithmSuite>
      <Policy>
        <sp:Basic256Rsa15/>
      </Policy>
    </sp:AlgorithmSuite>
  </Policy>
</sp:TransportBinding>

The sp:AlgorithmSuite is a nested policy assertion of the sp:TransportBinding policy assertion. The sp:AlgorithmSuite assertion requires the use of the algorithm suite identified by its nested policy assertion (sp:Basic256Rsa15 in the example above) and further qualifies the behavior of the sp:TransportBinding policy assertion.

Setting aside the details of using transport-level security, a policy-aware client that recognizes this policy assertion can engage transport-level security and its dependent behaviors automatically. This means the complexity of security usage is absorbed by a policy-aware client and hidden from Web service application developers.

Assertion Authors should note the effect of nested policy expressions on policy intersection in their nested policy design. The result of intersecting an assertion that contains an empty nested policy expression with an assertion of the same type without a nested policy expression is that the assertions are not compatible. Therefore, when providers require dependent behaviors these behaviors should be explicitly specified as assertions in a nested policy expression. When the definition of an assertion allows for nested dependent behaviors, but the use of the assertion only contains an empty nested policy expression, this specific use indicates the specification of no nested dependent behaviors. This use must not be interpreted as being compatible with "any" of the nested dependent behaviors that are allowed by the assertion, unless otherwise specified by the assertion definition.

As an example, WS-Security Policy defines sp:HttpToken assertion to contain three possible nested elements, sp:HttpBasicAuthentication, sp:HttpDigestAuthentication and sp:RequireClientCertificate. When the HttpToken is used with an empty nested policy in a policy expression by a provider, it will indicate that none of the dependent behaviors namely authentication or client certificate is required.

Example 5-7. Empty Nested Policy Expression

<sp:TransportToken> 
  <wsp:Policy> 
	<sp:HttpsToken> 
	  <wsp:Policy/> 
	</sp:HttpsToken> 
  </wsp:Policy> 
</sp:TransportToken>

A non-anonymous client who requires authentication or client certificate will not be able to use this provider solely on the basis of intersection algorithm alone.

5.5 Designating Ignorable Behavior

5.5.1 Ignorable Behavior in Intersection

Ignorable assertions represent behaviors that may be ingored by the intersection algorithm. At a minimum, assertion authors need to document the semantics of the assertions [see Best Practice 2] and included in that definition should be some indication of the impact of the assertion behavior at intersection and at runtime.

When policy expression authors include these assertions in service policies, some behaviors may be marked by using the wsp:Ignorable attribute with a value of "true". (In order to simplify reference to such assertions, we just use the phrase "ignorable assertions" in this section). It is recommended that if it is possible to use the wsp:Ignorable attribute, that the assertion authors indicat this in any XML outline [Best Practice 7]. During intersection, there are two defined modes for processing, lax and strict. Policy assertions marked with an attribute to indicate that the assertion can be ignored by the interstection algorithm are processed differently by the algorithm specified in the Policy Framesork [see strict and lax mode in Framework and Primer for details]. Assertion Authors should consider whether the behavior represented by the Assertion they are defining can be safely ignored for the purposes of intersection, and indicate this in the definition of the assertion. The use of the ignorable attribute influences whether or not certain assertions are part of the compatability assessment between two alternatives. See [tbd] for details on the use of the ignorable attribute.

5.5.2 Ignorable Behavior at runtime

Ignorable behaviors indicate behavior at the time of intersection. At runtime, a party that indicated an ignorable behavior in its policy may engage the behavior that was marked "ignorable" for intersection. Assertion authors should indicate the semantic of the runtime behavior in the description of the assertion that allows the ignorable attribute.

Policy intersection in strict mode will result in alternatives that consist only of assertions known to both parties. Hence, the runtime behavior is known to both parties.

Policy intersection in lax mode may result in alternatives with assertions that exist in one party's policy but not the other party's policy. In the case where one party chooses to engage in runtime behavior with another party based on alternatives from a lax mode intersection algorithm, the runtime behavior is out of scope of the policy framework.

5.6 Designating Optional Behaviors

5.6.1 Optional behavior in Compact authoring

Optional behaviors represent behaviors that may be engaged by a consumer. When using the compact authoring form for assertions, such behaviors are marked by using wsp:Optional attribute with a value of "true". (In order to simplify reference to such assertions, we just use the phrase “optional assertions” in this section.) During the process of normalization the runtime behavior is indicated by two policy alternatives, one with and one without the assertion. In a consumer/provider scenario, the choice of engaging the runtime behavior is upon the consumer by selecting the appropriate policy alternative. The provider may influence what is possible by choosing whether or not to include policy alternatives in a policy expression, by using the wsp:Optional attribute. Assertion Authors should clearly indicate in the assertion definition that it is possible to be optional [See Section xx].

The portion of the assertion definition that describes policy subjects and assertion attachment should indicate that wsp:Optional can be used to indicate that the behavior is optional for the policy subject.

Continuing the example with the hypothetical SampleAssertion, the section on Assertion Attachment should include discussion of optionality.

Example 5-8. Assertion Attachment text mentions optionality for policy assertion subjects

The SampleAssertion policy assertion indicates behavior over all messages in a binding, so
it has an Endpoint Policy Subject and must be attached to a wsdl:binding or wsdl:port. 
The assertion may be optional when attached to these subjects, allowing use of wsp:Optional.
					

5.6.2 Optional behavior at runtime

Since optional behaviors indicate optionality for both the provider and the consumer, behaviors that must always be engaged by a consumer must not be marked as "optional" with a value "true" since this would allow the consumer to select the policy alternative that does not contain the assertion, and thus not engaging the behavior.

Best Practice 16: Limit use of Optional Assertions

Assertion Authors should not use optional assertions for behaviors that must be present in compatible policy expressions.

The target scope of an optional assertion is an important factor for Assertion Authors to consider as it determines the granularity where the behavior is optionally engaged. For example, if the assertion is targeted for an endpoint policy subject, it is expected to govern all the messages that are indicated by the specific endpoint when optional behavior is engaged . Since the behavior would be applicable to policy subject that is designated, it is important for the Assertion Authors to choose the appropriate level of granularity for optional behaviors, to consider whether a specific message or all messages, etc. are targeted.

When optional behaviors are indicated by attaching assertions with only one side of an interaction, such as an inbound message of a request-response, the engagement of the rest of the interaction will be undefined. Therefore, the Assertion Authors are encouraged to consider how the attachment on a message policy subject on a response message should be treated when optional behaviors are specified for message exchanges within a request response for response messages, using message policy subject. Leaving the semantics not specified or incompletely specified may result in providers making assumptions. Similarly, if engagement of a behavior is only specified for an outbound message, the Assertion Authors should consider describing the semantics if the incoming messages also utilized the behavior. This is especially important if the assertion is applicable to more than one specific policy subject. One approach that is currently taken by WS-RM Policy [Web Services Reliable Messaging Policy] is to introduce both message and endpoint policy subjects for one of its assertions and require the use of endpoint policy subject when message policy subject is used via attachment.

Best Practice 17: Consider entire message exchange pattern when specifying Assertions that may be optional

Assertion Authors should associate optional assertions with the appropriate endpoint and use the smallest possible granularity to limit the degree to which optionality applies.

Behaviors must be engaged with respect to messages that are targeted to the provider so that the provider can determine that the optional behavior is engaged. In other words, the need for self describing messages [5.3.3 Self Describing Messages ] should not be forgotten. An explicit, out of band mechanism might be necessary to enable a client to indicate that the optional behavior is engaged. (Such an out of band mechanism is outside the scope of WS-Policy Framework).

Best Practice 18: Include semantics of use when Optional Assertion is indicated

When a given behavior may be optional, it must be possible for both message participants to determine that the assertion is selected by both parties, either out of band or as reflected by the message content.

5.6.2.1 Example

The Web Services Policy Primer document contains an example that outlines the use of MTOM as an optional behavior that can be engaged by a consumer. Related to this behavior is an assertion that identifies the use of MIME Multipart/Related serialization [MTOMPolicy]. Policy-aware clients that recognize and engage this policy assertion will use Optimized MIME Serialization for messages.

The semantics of the MTOM assertion declare that the behavior must be reflected in messages by requiring that they use an obvious wire format (MIME Multipart/Related serialization). Thus, this optional behavior is self describing. For example, an inbound message to a web service that requires MTOM must adhere to Optimized MIME Serialization. By examining the message, the provider can determine whether the policy alternate that contains the MTOM assertion is being obeyed ( Best Practice: Indicate use of an Optional Assertion).

Note that if a MTOM assertion were only bound to an inbound message endpoint, then it would not be clear whether the outbound message from the provider would also utilize the behavior. Thus this assertion should be associated at the granularity of an entire message exchange. The semantics of the assertion should specify this to avoid inappropriate assumptions by implementations. This is important for an optional assertion where it may not be clear whether it is to apply in a message exchange when optionally used in part of that exchange (Best Practice: Consider entire message exchange pattern when specifying Assertions that may be optional).

5.7 Considerations for Policy Attachment in WSDL

A behavior identified by a policy assertion applies to the associated policy subject. If a policy assertion is to be used within WSDL, Assertion Authors should specify a WSDL policy subject.

The specific WSDL policy subject is determined with respect to a behavior as follows:

  • If the behavior applies to any message exchange using any of the endpoints offered by a service then the subject is the service policy subject.

  • If the behavior applies to any message exchange made using an endpoint then the subject is the endpoint policy subject.

  • If the behavior applies to any message exchange defined by an operation then the subject is the operation policy subject.

  • If the behavior applies to an input message then the subject is the message policy subject - similarly for output and fault message policy subjects.

Best Practice 19: Assertion Authors Should Specify Policy Subject(s)

Assertion Authors should specify the set of relevant policy subjects with which the assertion may be associated. For instance, if a policy assertion is to be used with WSDL, the assertion description should specify a WSDL policy subject - such as service, endpoint, operation and message.

Assertion Authors that wish to utilize WSDL policy subjects need to understand how the assertions will be processed in an intersection and merging, and the implications of the processing for considering a specific attachment point and policy subject. This topic is considered in detail in Web Services Policy Primer

For a given WSDL policy subject, there may be several attachment points. For example, there are three attachment points for the endpoint policy subject: the port, binding and portType element. Assertion Authors should identify the relevant attachment point when defining a new assertion. To determine the relevant attachment points, Assertion Authors should consider the scope of the attachment point. For example, an assertion should only be allowed in the portType element if the assertion reasonably applies to any endpoint that ever references that portType. Most of the known policy assertions are designed for the endpoint, operation or message policy subject.

In using WSDL attachment, it should be noted that the service policy subject is a collection of endpoint policy subjects. The endpoint policy subject is a collection of operation policy subjects and so on. As a result, the WSDL policy subjects compose naturally. It is quite tempting to associate the identified behavior to a broader policy subject than to a fine granular policy subject. For instance, it is convenient to attach a supporting token assertion (defined by the Web Services Security Policy specification) to an endpoint policy subject instead of a message policy subject. However such policy attachments to policy subjects of broader scope and granularity should be done only after careful evaluation.

Best Practice 20: Choose the Most Granular Policy Subject

Assertion Authors should choose the most granular policy subject to which the behavior represented by a policy assertion applies.

For authoring convenience, Assertion Authors may allow the association of an assertion to multiple policy subjects. If an assertion is allowed to be associated with multiple policy subjects as is possible with WSDL, then the Assertion Authors have the burden to describe the semantics of multiple instances of the same assertion attached to different policy subjects at the same time in order to avoid conflicting behavior.

Best Practice 21: Define Semantics of Attachment to Multiple Policy Subjects

If an assertion is allowed to be associated with multiple policy subjects, the assertion author should describe the semantics of multiple instances of the same assertion attached to multiple policy subjects at the same time.

If the capability is not really suitable and may imply different semantics with respect to attachment points, the Assertion Authors should consider the following:

  • Decompose the semantics with several assertions.

  • Rewrite a single assertion targeting a specific subject.

Since many attachment points are available in WSDL, it would be necessary for Assertion Authors to recommend a preferred attachment point. One approach would be to identify different attachment points in a policy subject, choose the most granular policy subject that the behavior applies to and specify that as a preferred attachment point. However, this approach only works if the policy subject is a true WSDL construct other than some other protocol concept that is layered over WSDL message exchanges. For example, as described previously the WS-RM Policy is a capability that governs a target endpoint's capability to accept message sequences that are beyond single message exchange. Therefore, its semantics encompass the cases when message level policy subjects may be used as attachment but also considers the case when sequences are present. In addition, when the policy assertions do not target wire-level behaviors but rather abstract requirements, this technique does not apply.

Best Practice 22: Specify Preferred Attachment Point for an Assertion

If an assertion can be attached at multiple attachment points within a policy subject, Assertion Authors should specify a preferred attachment point for the chosen policy subject.

Assertion Authors that utilize WSDL policy subjects need to understand how the assertions will be processed in merging and the specify implications of ending up with multiple assertions of the same kind in an alternative, in the merged policy. For example, consider the SignedParts assertion defined in WS-SecurityPolicy 1.2. The definition of SignedParts assertion explicitly permits multiple SignedParts assertions to be present within a policy alternative, and declares it to be equivalent to a single SignedParts assertion containing the union of all specified message parts. So, if a SignedParts assertion is specified in a WSDL binding at the input message level and subsequently an additional SignedParts assertion is specified at the WSDL endpoint policy subject level, then the effective policy at the endpoint could have more than one SignedParts assertion in the same alternative. However, the clear semantics defined by the SignedParts assertion enable processing of the multiple occurrences properly.

Best Practice 23: Describe Semantics of Multiple Assertions of Same Type

A policy alternative can contain multiple instances of the same policy assertion type. Assertion authors should specify the semantics of multiple instances of same policy assertion type in the same policy alternative and the semantics of parameters and nested policy (if any) when there are multiple instances of a policy assertion type in the same policy alternative.

5.8 Interrelated domains

Editorial note 
To be re-structured to use the format in the Architecture of the WWW doc.

Assertion Authors need to be clear about how assertions defined in their domain may fit with assertions for interrelated domains. A classic example of such an interrelated domain is security, because security tends to cut across all aspects of a solution.

One example is the definition of additional assertions related to the interrelated security domain [WS-SecurityPolicy] in Web Services Reliable Messaging Policy Assertions [Web Services Reliable Messaging Policy].

Assertion Authors should not duplicate existing assertions and should also make sure that when adding assertions those new assertions are consistent with pre-existing assertions of any interrelated domain.

Best Practice 24: Specify Composition with Related Assertions

Assertion authors should clearly specify how an assertion may compose with other related assertions, if any.

6. Versioning Policy Assertions

Assertion Authors need to consider not just the expression of the current set of requirements but how they anticipate new assertions being added to the set. There are three aspects to versioning policy assetions:

6.1 Referencing Policy Expressions

The Web Services Policy Primer illustrates how providers can utilize the identification mechanism defined in the Policy specification to expose a complex policy expression as a reusable building block for other policy expressions by reference. Reuse may also be useful for domain Assertion Authors, especially those defining complex assertions utilizing references to policy expressions by nesting. Statically available parameterized content may also be reused by different assertions. However, such referencing mechanism is outside the scope of WS-Policy naming and referencing framework and other mechanisms could be used. As an example, in Web Services Policy Primer Section 4.2, the sp:issuedToken assertion utilizes the sp:RequestSecurityTokenTemplate parameter that contains necessary information to request a security token. The contents of the parameter are static and allows reuse in different security scenerios.

6.2 Evolution of Assertions (Versioning and Compatibility)

Over time, there may be multiple equivalent behaviors emerging in the Web Service interaction space. Examples of such multiple equivalent behaviors are WSS: SOAP Message Security 1.0 vs. 1.1 and WS-Addressing August 2004 version vs. WS-Addressing W3C Recommendation [WS-Addressing Core]. These equivalent behaviors are mutually exclusive for an interaction. Such equivalent behaviors can be modeled as independent assertions.

Best Practice 25: Use Independent Assertions for Different Versions of a Behavior

Assertion Authors should use independent assertions for modeling different versions of a behavior.

The policy expression in the example below requires the use of WSS: SOAP Message Security 1.0.

Example 6-1. Message-level Security and WSS: SOAP Message Security 1.0

<Policy>
  <sp:Wss10>…</sp:Wss10>
</Policy>

The policy expression in the example below requires the use of WSS: SOAP Message Security 1.1. These are multiple equivalent behaviors and are represented using distinct policy assertions.

Example 6-2. Message-level Security and WSS: SOAP Message Security 1.1

<Policy>
  <sp:Wss11>…</sp:Wss11>
</Policy>

6.3 Supporting New Policy Subjects

The best practice 19. Assertion Authors Should Specify Policy Subject(s) specifies that policy authors should define the set of policy subjects to which policy assertions can be attached. Over time, new policy subjects may need to be defined. When this occurs, policy Assertion Authors may update the list of policy subjects supported by an assertion.

When the assertion's semantics do not change to invalidate any of the original policy subjects but new policy subjects need to be added, it may be possible to use the same assertion to designate the additional policy subjects without a namespace change. For example, a policy assertion for a protocol that is originally designed for endpoint policy subject may add message policy subject to indicate finer granularity in the attachment provided that endpoint policy subject is also retained in its design. When new policy subjects are added it is incumbent on the authors to retain the semantic of the policy assertion.

Best Practice 26: Change of the Policy Subject Over Time

If the policy subjects change over time, the assertion description should also be versioned to reflect this change.

7. Applying Best Practices for Policy Attachment

7.1 Appropriate Attachment: Preserving Context-Free Policies

Policy attachment should not affect the interpretation of Policy alternatives. If it did, each policy assertion would need to be written with different (and possibly unknown) attachment mechanisms in mind.

7.2 Appropriate Attachment: Identifying Assertion Subjects

Each policy attachment mechanism should unambiguously identify the subject of the attached assertions. Generally, this should be a specific SOAP node or a specific message between two SOAP nodes. Some attachment mechanisms may encompass multiple notes or messages, for example, "the message along its entire path".

7.2.1 Interaction between Subjects

If the best practices are followed, and the assertions are scoped according to their subject, then multiple policy domains may be combined without conflict. Each domain should define any limitations at the policy subject level that might impact interoperability (i.e. WS-SecurityPolicy - binding abstraction to group capabilities per message exchange).

7.3 Appropriate Attachment: Identifying Assertion Sources

As with identifying Policy subjects, policy attachment mechanisms should make it possible to clearly identify the source of a policy assertion both for debugging and for verification. This could take several forms: it could be assumed (in WSDL, the source of the assertion is the same as the WSDL provider) or it could be proven (using WS-Trust).

8. Scenario and a worked example

To illustrate the topics explored in this document, we include an example of a web service and how a fictitious company might utilize the WS-Policy Framework to enable Web Service interoperability. Company A has determined to utilize WS-Security, WS-Addressing and WS-Reliable Messaging in all its new web service offerings and has instructed its developers to use the policy assertions defined by the following documents:

The application developers at Company A are instructed to review the current web services at Company A and propose a plan for adding policy assertions.

The application developers collect information about web services within Company A and determine that all of the web services already have a WSDL 1.1 description. The developers have determined that Company A's web services fall into two types of web services. There are those that fall into the "default" category, and will use a predefined set of policy assertions, and there are those that use the default but also extend the policy alternatives.

They have also determined that for the both types, the appropriate policy subject is the endpoint. They determined this because the capabilities apply to all operations and messages for the web service not to any one individual operation or message exchange.

Service A is a WSDL 1.1 conformant web service and requires the use of transport-level security for protecting messages as well as including addressing headers. Employees of Company A have already incorporated wss:Security headers into their messages.

Example 8-1. Message with Security Headers

<soap:Envelope> 
  <soap:Header>
    <wss:Security soap:mustUnderstand ="1">
      <wsu:Timestamp wsu:Id=_0">
        <wsu:Created> 20006-01-19T02:49:53.914Z </u:Created> 
        <wsu:Expires> 20006-01-19T02:54:53.914Z </u:Expires>
      </wsu:Timestamp>
    </wss:Security>
    <wsa:To> http://CompanyA/quote <wsa:To>
    <wsa:Action> http://CompanyA/GetRealQuote</wsa:Action>
 </soap:Header>
 <soap:Body> ...
</soap:Envelope>

The SOAP message in the example above includes security timestamps that express creation and expiration times of this message. Company A requires the use of these security timestamps and transport-level security, such as HTTPS for protecting messages.

The example below illustrates a policy expression that CompanyA has created for its employees to use on their web services to indicate the use of addressing and transport-level security for securing messages.

Example 8-2. CompanyA-ProfileA

<Policy URI=http://www.CompanyA.com/WebServicesProfileA.xml> 
	<wsam:Addressing>…</wsam:Addressing>
	<sp:TransportBinding></sp:TransportBinding>
</Policy>

The sp:TransportBinding element is a policy assertion. The assertion identifies the use of transport-level-security - such as HTTPS for protecting messages at the transport level. Company A's policy aware clients can now recognize this policy assertion and if they support it, engage in transport level security for protecting messages and providing security timestamps in SOAP envelopes for any WSDL with this policy attached.

When creating the policy for the default web services, the developers took into consideration several factors. First, all their web services were WSDL 1.1 web services. Second, they wanted to reuse policy assertions where ever possible. Third, they wanted to ensure that where possible they would support alternatives rather than forcing a single client configuration.

The developers read the WS-Policy specification and noted that there were three ways to express combinations of behaviors. The three policy operators, (Policy, All and ExactlyOne) were considered and the result was the creation of two policy elements.

The first policy is shown in Figure CompanyA-ProfileA and it is the policy that is used by many web services at Company A that rely on HTTPS to provide transport level protection of messages.

The second policy is shown in Figure CompanyA-ProfileB and it offers requesters of a service the ability to provide additional integrity protection by including WS-Security Headers to protect the message content after it is processed by the transport. The additional security processing is not required by all Company A web services.

Example 8-3. CompanyA-ProfileB (not expanded)

<Policy wsu:Id="CompanyA-ProfileB">
 <wsam:Addressing>…</wsam:Addressing>
 <ExactlyOne>
  <sp:TransportBinding></sp:TransportBinding>
  <sp:AsymmetricBinding></sp:AssymetricBinding>
 </ExactlyOne>
</Policy>

We have shown above that Company A offered a second profile that included two security options. The details of the Bindings, requires a more detailed exploration of some of the other features of the WS-Policy Framework.

When Assertion Authors create sets of Policy assertions, like WS-Security Policy they need to consider expressing the semantics of their domain in a way that policy consumers, like Company A, can utilize them. In this case, the WS-SecurityPolicy Assertion Authors factored out common elements of security mechanisms and utilized a feature of WS-Policy called "nested" assertions. In the case of an sp:TransportBinding assertion, just indicating the use of transport-level security for protecting messages is not sufficient. For a consumer of a web service provided by a company, like Company A, to successfully interact, the consumer must also know what transport token, what algorithm suite, etc. is required. The sp:TransportBinding assertion, can (and has) represent (ed) these dependent behaviors as "nested" policy assertions.

In the example below the child Policy element is a nested policy behavior and further qualifies the behavior of the sp:TransportBinding policy assertion.

Example 8-4. CompanyA-ProfileB (fully expanded)

<Policy wsu:Id="CompanyA-ProfileB"> 
 <wsam:Addressing>…</wsam:Addressing>
 <ExactlyOne>
  <sp:TransportBinding>
   <Policy>
    <sp:TransportToken>
     <Policy>
	   <sp:HttpsToken>
		 <wsp:Policy/>
	   </sp:HttpsToken>
     </Policy>
    </sp:TransportToken>
    <sp:AlgorithmSuite>
     <Policy>
      <sp:Basic256Rsa15 />
     </Policy>
    </sp:AlgorithmSuite>
   </Policy>
  </sp:TransportBinding>
  <sp:AsymmetricBinding>
  </sp:AssymetricBinding>
 </ExactlyOne>
</Policy>

The sp:AlgorithmSuite is a nested policy assertion of the sp:TransportBinding assertion and indicates that this suite is required. The sp:TransportToken is a nested policy assertion that indicates the use of a specific type of token, in this case an HttpsToken.

It should be noted that each policy has an Identifier. In the case of the default policy expression, Company A has decided that this policy expression should be broadly available via a URI. There are advantages and disadvantages to using each type of identifier. For URI's there is the issue of maintaining the policy expression when it may no longer be used (Company A gets bought by Company B and starts using the policies of Company B, but some "old" consumers may still try to reference the URI).

For the second type of web services, which may be used only by certain of Company A's business partners, the id is an XML ID. The relative URI for referencing this within the same WSDL document is #CompanyA-ProfileB. This can be useful for company's when the policy expressions are agreed to between partners but may be changed as the business agreements change. But the disadvantage is that the policy expression must be included in each WSDL document.

Since Company A has decided to use well known policy expressions that are part of a specification, they adhere to the guidance given in the WS-SecurityPolicy specification and attach the policies to the web service endpoint policy subject as recommended by the WS-SecurityPolicy specification. For the default web services, the URI is included in the wsdl binding for each web service.

Example 8-5.

<wsdl:binding name="CompanyADefaultBinding" type="tns:CompanyADefault">
 <wsp:PolicyReference URI="http://www.CompanyA.com/WebServicesProfileA.xml">
 <wsdl:operation name="GetQuote"> </wsdl:operation>
</wsdl:binding>

The partner specified policy is included in the beginning of the WSDL 1.1 document and referenced by the binding for the service as in the example below.

Example 8-6.

<wsdl:definitions name="StockQuote"
    targetNamespace="http:..">
<wsp:Policy wsu:Id="CompanyA-ProfileB"> 
	<wsam:Addressing>…</wsam:Addressing>
	<ExactlyOne>
	   <sp:TransportBinding>
              <Policy>
     	         <sp:TransportToken>
		   <wsp:Policy>
			 <sp:HttpsToken>
			   <wsp:Policy/>
			 </sp:HttpsToken>
                   </wsp:Policy>
                 </sp:TransportToken>
                 <sp:AlgorithmSuite>
                    <wsp:Policy>
		       <sp:Basic256Rsa15 />
                    </wsp:Policy>
                 </spAlgorithmSuite>
              </Policy>
           </sp:TransportBinding>
	   <sp:AsymmetricBinding>
           </sp:AssymetricBinding>
	</ExactlyOne>
</wsp:Policy>

<wsdl:binding name="CompanyADefaultBinding" type="tns:CompanyADefault"> 
 <wsp:PolicyReference id=#CompanyA-ProfileB>
 <wsdl:operation name="GetQuote"> </wsdl:operation>
</wsdl:binding>

In some cases, companies may chose to implement their own assertions. When companies chose to become Assertion Authors they need to consider not only the definition of the behavior that the assertion represents but they need to consider how new assertions will be intersected and merged with other assertions in the calculation of an effective policy and this also indicates they need to consider policy subjects.

The WS-Policy 1.5 - Attachment specification defines algorithms for calculating the effective policy for a given policy subject and effective policies for WSDL 1.1, WSDL 2.0 and UDDI policy subjects.

A. Security Considerations

Security considerations are discussed in the Web Services Policy Framework document.

B. XML Namespaces

The table below lists XML Namespaces that are used in this document. The choice of any namespace prefix is arbitrary and not semantically significant.

Table B-1. Prefixes and XML Namespaces used in this specification.
PrefixXML NamespaceSpecifications
soap http://www.w3.org/2003/05/soap-envelope [SOAP 1.2 Messaging Framework]
sp http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702 [WS-SecurityPolicy]
wsa http://www.w3.org/2005/08/addressing [WS-Addressing Core]
wsam http://www.w3.org/2007/05/addressing/metadata [WS-Addressing Metadata]
wsdl http://schemas.xmlsoap.org/wsdl/ [WSDL 1.1]
wsp http://www.w3.org/ns/ws-policy [Web Services Policy Framework, Web Services Policy Attachment]
wsrmp http://docs.oasis-open.org/ws-rx/wsrmp/200608 [Web Services Reliable Messaging Policy]
wss http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd [WS-Security 2004]
wsu http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd [WS-Security 2004]

C. References

[MTOM]
SOAP Message Transmission Optimization Mechanism, M. Gudgin, N. Mendelsohn, M. Nottingham and H. Ruellan, Editors. World Wide Web Consortium, 25 January 2005. This version of the SOAP Message Transmission Optimization Mechanism Recommendation is http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/. The latest version of SOAP Message Transmission Optimization Mechanism is available at http://www.w3.org/TR/soap12-mtom/.
[MTOMPolicy]
MTOM Serialization Policy Assertion (WS-MTOMPolicy), C Ferris, K Gavrylyuk, J Marsh , J Schlimmer, Authors. September 2006. Version 1.0 at http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization/optimizedmimeserialization-policy.pdf.
[SOAP 1.1]
Simple Object Access Protocol (SOAP) 1.1, D. Box, et al, Editors. World Wide Web Consortium, 8 May 2000. Available at http://www.w3.org/TR/2000/NOTE-SOAP-20000508/.
[SOAP 1.2 Messaging Framework]
SOAP Version 1.2 Part 1: Messaging Framework, M. Gudgin, M. Hadley, N. Mendelsohn, J-J. Moreau, H. Frystyk Nielsen, Editors. World Wide Web Consortium, 24 June 2003. This version of the SOAP Version 1.2 Part 1: Messaging Framework Recommendation is http://www.w3.org/TR/2003/REC-soap12-part1-20030624/. The latest version of SOAP Version 1.2 Part 1: Messaging Framework is available at http://www.w3.org/TR/soap12-part1/.
[XOP]
XML-binary Optimized Packaging, M. Gudgin, N. Mendelsohn, M. Nottingham and H. Ruellan, Editors. World Wide Web Consortium, 25 January 2005. This version of the XML-binary Optimized Packaging Recommendation is http://www.w3.org/TR/2005/REC-xop10-20050125/. The latest version of XML-binary Optimized Packaging is available at http://www.w3.org/TR/xop10/.
[WS-Addressing Core]
Web Services Addressing 1.0 - Core, M. Gudgin, M. Hadley, and T. Rogers, Editors. World Wide Web Consortium, 9 May 2006. This version of the Web Services Addressing 1.0 - Core Recommendation is http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/. The latest version of Web Services Addressing 1.0 - Core is available at http://www.w3.org/TR/ws-addr-core.
[WS-Addressing Metadata]
Web Services Addressing 1.0 - Metadata, M. Gudgin, M. Hadley, T. Rogers and Ü. Yalçinalp, Editors. World Wide Web Consortium, 16 May 2007. This version of the Web Services Addressing 1.0 - Metadata is http://www.w3.org/TR/2007/WD-ws-addr-metadata-20070516/. The latest version of Web Services Addressing 1.0 - Metadata is available at http://www.w3.org/TR/ws-addr-metadata.
[WSDL 1.1]
Web Services Description Language (WSDL) 1.1, E. Christensen, et al, Authors. World Wide Web Consortium, March 2001. Available at http://www.w3.org/TR/2001/NOTE-wsdl-20010315.
[WSDL 2.0 Core Language]
Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language, R. Chinnici, J. J. Moreau, A. Ryman, S. Weerawarana, Editors. World Wide Web Consortium, 27 March 2006. This version of the WSDL 2.0 specification is http://www.w3.org/TR/2006/CR-wsdl20-20060327. The latest version of WSDL 2.0 is available at http://www.w3.org/TR/wsdl20.
[Web Services Policy Framework]
Web Services Policy 1.5 - Framework, A. S. Vedamuthu, D. Orchard, F. Hirsch, M. Hondo, P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World Wide Web Consortium, @@, @@@@ @@@@. This version of the Web Services Policy 1.5 - Framework specification is at http://www.w3.org/TR/ws-policy/. The latest version of Web Services Policy 1.5 - Framework is available at http://www.w3.org/TR/ws-policy/.
[Web Services Policy Attachment]
Web Services Policy 1.5 - Attachment, A. S. Vedamuthu, D. Orchard, F. Hirsch, M. Hondo, P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World Wide Web Consortium, @@, @@@@ @@@@. This version of the Web Services Policy 1.5 - Attachment specification is at http://www.w3.org/TR/ws-policy-attach. The latest version of Web Services Policy 1.5 - Attachment is available at http://www.w3.org/TR/ws-policy-attach/.
[Web Services Policy Primer]
Web Services Policy 1.5 - Primer, A. S. Vedamuthu, D. Orchard, F. Hirsch, M. Hondo, P. Yendluri, T. Boubez and Ü. Yalçinalp, Editors. World Wide Web Consortium, Draft.
[Web Services Reliable Messaging]
Web Services Reliable Messaging (WS-ReliableMessaging), D. Davis, A. Karmarkar G. Pilz, S. Winkler, Ü. Yalçinalp, Editors. Organization for the Advancement of Structured Information Standards, August 7th, 2006, available at: http://docs.oasis-open.org/ws-rx/wsrm/200608/wsrm-1.1-rddl-200608.html
[Web Services Reliable Messaging Policy]
Web Services Reliable Messaging Policy Assertion v1.1, D. Davis, A. Karmarkar, G. Pilz, S. Winkler, Ü. Yalçinalp, Editors. Organization for the Advancement of Structured Information Standards, August 4, 2006, available at: http://docs.oasis-open.org/ws-rx/wsrmp/200608/wsrmp-1.1-rddl-200608.html
[WS-Security 2004]
Web Services Security: SOAP Message Security 1.0, A. Nadalin, C. Kaler, P. Hallam-Baker and R. Monzillo, Editors. Organization for the Advancement of Structured Information Standards, March 2004. Available at http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf.
[WS-SecurityPolicy]
WS-SecurityPolicy v1.0, A. Nadalin, M. Gudgin, A. Barbir, and H. Granqvist, Editors. Organization for the Advancement of Structured Information Standards, 8 December 2005. Available at http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702.
[WS-Trust]
Web Services Trust Language (WS-Trust), S. Anderson, et al, Authors. Actional Corporation, BEA Systems, Inc., Computer Associates International, Inc., International Business Machines Corporation, Layer 7 Technologies, Microsoft Corporation, Oblix Inc., OpenNetwork Technologies Inc., Ping Identity Corporation, Reactivity Inc., RSA Security Inc., and VeriSign Inc., February 2005. Available at http://schemas.xmlsoap.org/ws/2005/02/trust.
[UDDI API 2.0]
UDDI Version 2.04 API, T. Bellwood, Editor. Organization for the Advancement of Structured Information Standards, 19 July 2002. This version of UDDI Version 2.0 API is http://uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm. The latest version of the UDDI 2.0 API is available at http://uddi.org/pubs/ProgrammersAPI_v2.htm.
[UDDI Data Structure 2.0]
UDDI Version 2.03 Data Structure Reference, C. von Riegen, Editor. Organization for the Advancement of Structured Information Standards, 19 July 2002. This version of UDDI Version 2.0 Data Structures is http://uddi.org/pubs/DataStructure-V2.03-Published-20020719.htm. The latest version of the UDDI 2.0 Data Structures is available at http://uddi.org/pubs/DataStructure_v2.htm.
[UDDI 3.0]
UDDI Version 3.0.1, L. Clément, et al, Editors. Organization for the Advancement of Structured Information Standards, 14 October 2003. This version of the UDDI Version 3.0 is http://uddi.org/pubs/uddi-v3.0.1-20031014.htm. The latest version of the UDDI 3.0 specification is available at http://uddi.org/pubs/uddi_v3.htm.
[SAWSDL]
Semantic Annotations for WSDL and XML Schema Joel Farrell, Holger Lausen, Editors. World Wide Web Consortium, 26 January 2007. This version of the specification is at http://www.w3.org/TR/sawsdl. The latest version of Semantic Annotations for WSDL and XML Schema is available at http://www.w3.org/TR/sawsdl/.

D. Acknowledgements (Non-Normative)

This document is the work of the W3C Web Services Policy Working Group.

Members of the Working Group are (at the time of writing, and by alphabetical order): Dimitar Angelov (SAP AG), Abbie Barbir (Nortel Networks), Charlton Barreto (Adobe Systems Inc.), Sergey Beryozkin (IONA Technologies, Inc.), Vladislav Bezrukov (SAP AG), Toufic Boubez (Layer 7 Technologies), Symon Chang (BEA Systems, Inc.), Paul Cotton (Microsoft Corporation), Glen Daniels (Sonic Software), Doug Davis (IBM Corporation), Jacques Durand (Fujitsu Limited), Ruchith Fernando (WSO2), Christopher Ferris (IBM Corporation), William Henry (IONA Technologies, Inc.), Frederick Hirsch (Nokia), Maryann Hondo (IBM Corporation), Ondrej Hrebicek (Microsoft Corporation), Steve Jones (Layer 7 Technologies), Tom Jordahl (Adobe Systems Inc.), Paul Knight (Nortel Networks), Philippe Le Hégaret (W3C/MIT), Mark Little (JBoss Inc.), Mohammad Makarechian (Microsoft Corporation), Ashok Malhotra (Oracle Corporation), Jonathan Marsh (WSO2), Monica Martin (Sun Microsystems, Inc.), Arnaud Meyniel (Axway Software), Jeff Mischkinsky (Oracle Corporation), Dale Moberg (Axway Software), Anthony Nadalin (IBM Corporation), David Orchard (BEA Systems, Inc.), Sanjay Patil (SAP AG), Manjula Peiris (WSO2), Fabian Ritzmann (Sun Microsystems, Inc.), Daniel Roth (Microsoft Corporation), Tom Rutt (Fujitsu Limited), Sanka Samaranayake (WSO2), Felix Sasaki (W3C/Keio), Skip Snow (Citigroup), Yakov Sverdlov (CA), Mark Temple-Raston (Citigroup), Asir Vedamuthu (Microsoft Corporation), Sanjiva Weerawarana (WSO2), Ümit Yalçinalp (SAP AG), Prasad Yendluri (webMethods, Inc.).

Previous members of the Working Group were: Jeffrey Crump, Jong Lee, Bob Natale, Eugene Osovetsky, Bijan Parsia, Seumas Soltysik.

The people who have contributed to discussions on public-ws-policy@w3.org are also gratefully acknowledged.

E. Changes in this Version of the Document (Non-Normative)

A list of substantive changes since the Working Draft dated 30 March, 2007 is below:

F. Web Services Policy 1.5 - Guidelines for Policy Assertion Authors Change Log (Non-Normative)

DateAuthorDescription
20060829UYCreated first draft based on agreed outline and content
20061013UYEditorial fixes (suggested by Frederick), fixed references, bibl items, fixed dangling pointers, created eds to do
20061018MHEditorial fixes for readability, added example for Encrypted parts
20061030UYFixes for Paul Cotton's editorial comments (20061020)
20061031UYFixes for Frederick's editorial comments (20061025)
20061031UYOptionality discussion feedback integration
20061115MHFirst attempt at restructuring to include primer content
20061120MHRestructure to address action items 64,77, which refer to bugzilla 3705 and F2F RESOLUTION 3792
20061127ASVUpdated the list of editors. Added Frederick and Umit to the list of editors. Editors' action 86.
20061128MHReplaced section in Lifecycle with pointer to the text in the primer: related to action 77
20061129FJHEditorial revision (editorial actions 84 and 90) - includes suggestions from Asir: Part 1 and Part 2.
20061129ASVFormatted examples in 6.2 Evolution of Assertions (Versioning and Compatibility).
20061218FSFormatted examples in 5.2 Authoring Styles and 8. Scenario and a worked example.
20061219TIBEditorial revision: most parts of editorial action 96. Remaining editorials to be reviewed.
20061220TIBEditorial revision: completed missing parts of editorial action 96 after editorial reviews by co-editors.
20061226MHEditorial revision: reconciled terms related to "Assertion Authors" 106 and bug http://www.w3.org/Bugs/Public/show_bug.cgi?id=3983
20070104UYResolution of Issue 3982 Based on Minutes for resolution, Minor formatting for consistent use of the term "Assertion Author"
20070104UYResolution of Issue 3980
20070108ASVReset Section E. Changes in this Version of the Document.
20070122PYCompleted action item: 127 Resolution for issue 4197
20070130UYCompleted action item: 144. Resolution for issues 3985 and 3986
20070130UYCompleted action item: 137. Resolution for issue 4198
20070130UYCompleted action item: 119. Resolution for issue 4141
20070130UYCompleted action item: 126. Resolution for issue 4188
20070130UYFixed SAWSDL ref name
20070131FJHFixed numerous spelling and typo errors. Implement resolution for issue 3953 as noted in message 90 and amended as noted in message 217. Changes correspond to editor's action 152.
20070221MH Partial implementation for issue 4072 in response to editor's action 154 . NOTE ALSO- I needed to put back in the "prefix" entity defintion [line7] to get the build to work.
20070306ASV Implemented partial resolution for issue 3987. Related editorial action is 153.
20070308DBOChanged "lifecycle" spec references to versioning to fix build.
20070314FJHImplemented resolution for issue 4072 as outlined in proposal. Editorial action 204.
20070314FJHImplemented resolution for issue 3987 as outlined in proposal. Editorial action 203.
20070315ASVImplemented the resolution for issue 3979. Editors' action 198.
20070315ASVImplemented the resolution for issue 3981. Editors' action 205.
20070315FJHImplemented resolution for issue 4035 as outlined in proposal. Editorial action 197.
20070319MH Implemented resolution for issue 4073 in response to editor's action 199 as outlined in proposal .
20070320ASVImplemented the resolution for issue 4319. Editors' action 206.
20070320ASVImplemented the resolution for issue 3990. Editors' action 210.
20070320ASVImplemented the resolution for issue 4212. Editors' action 207.
20070321ASVUpdated section E. Changes in this Version of the Document.
20070329DBOChanged all <p>Best Practice: to <p role="practice">
20070416DBOUpdated 6.2 and 6.3 for issue 3989. Note, removed one best practice that was a dup.
20070423FJHUpdated 5.5 Designating Optional Behaviors for issue 3989. Added informative reference for MTOMPolicy. Added two best practices, one is similar to G16 but focused on optional. Revised practice that was there.
20070425MHUpdated 5.3 "Considerations when Modeling New Assertions" related to issue 3989. [Editorial Action 229] Restructured text to follow examples
20070425TIBUpdated 5.2 Authoring Styles for issue 3989 and editors' action item 227
20070426PYEditorial changes to align with the OASIS WS-SecurityPolicy specification. For issue 4318. Editors' action 245.
20070427FJHUpdated 5.5.1 Optional behavior in Compact authoring adding G7 and G8 for issue 3989 and editors' action item 250 as noted in message 69. Also replaced TBD in section 2 with descriptive text."
20070501ASVReset Section E. Changes in this Version of the Document.
20070507PYUpdated 5.6 WSDL guidelines section, to follow the new format and added G15, G16, G17 and G18. Accounts for parts of resolution for issue 3989 corresponding to editors' action items 232, 253, and 256.
20070507TIBUpdated 5.1 Assertions and their Target Use for issue 3989 and editors' action item 227.
20070508MHUpdated Section 5 for adding guidelines G9, G10 on ignorable, and G5 , G6 (general) to address editors' action items 251. 256.
20070511PYUpdated 5.6 WSDL guidelines section to add G19 identified in AI 256 (now G24). Accounts for parts of resolution for issue 3989 corresponding to editors' action item 256 - now complete.
20070513ASVUpdated Section 5.4.1 to use the new format re issue issue 3989. Editors' action 230.
20070514ASVUpdated Section 5.4.2 to use the new format re issue issue 3989. Editors' action 230. Collapsed Section 5.4.2 and 5.4.3.
20070514ASVAdded G11 and G13 to Section 5.4.1 and 5.4.2 re issue issue 3989. Editors' action 252 and 255.
20070516PYEditorial change to section 5.7 to place best practices after the associated explanatory text and to fix grammar.
20070518PYEnsured Best Practices G1, G3 and G20 of original IBM/MS Contribution are reflected.
20070518PYUpdated Appendix E, Changes in this Version of the Document (E. Changes in this Version of the Document).
20070520ASVAdded Best Practice 24. Specify Composition with Related Assertions (from the IBM and MS Contribution to 5.8 Interrelated domains. Added an ed note that Section 5.8 Interrelated domains needs to be re-structured.
20070520ASVAdded Best Practice 10. Not Necessary to Understand a Message (from the IBM and MS Contribution to 5.3.3 Self Describing Messages .
20070520ASVAdded an ed note that Section 5.5 Designating Ignorable Behavior looks incomplete.
20070520ASVFixed typos.
20070520ASVAdded an ed note in Section 5.1 Assertions and Their Target Use that there is an open issue against Best Practice G2.
20070524DBOEditorial changes to align with the W3C WS-Addressing Metadata specification. For issue 4375. Editors' action 284.
20070529PYImplemented Resolution for issue 4573. Apply "Best Practices" consistently.
20070529PYImplemented Resolution in Editors' action 290. Consistent use of Assertion Authors.
20070529PYImplemented Resolution in Editors' action 291. Consistent use of should in place of must in the best practice statements.
20070529PYImplemented Resolution in Editors' action 294.
20070530PYImplemented Resolution in Editors' action 303.
20070530PYImplemented Resolution in Editors' action 304.
20070530PYImplemented Resolution in Editors' action 305.
20070530PYImplemented Resolution in Editors' action 306.
20070530PYImplemented Resolution in Editors' action 307.
20070530PYImplemented Resolution in Editors' action 308.
20070601TIBImplemented Resolution in Editors' actions 310 and 311.
200706013MHImplemented Resolution in Editors' actions 292 and 293.
200706016ASVImplemented Editors' action 289.
20070616ASVImplemented the resolution for issue 4074. Editors' action 286.
200706018ASVImplemented Editors' action 295.
200706018TIBImplemented place holder for Editors' action 249 for locking the document.

--=_mixed 00743DA585257300_Content-Type: application/octet-stream; name="ws-policy-guidelines.xml" Content-Disposition: attachment; filename="ws-policy-guidelines.xml" Content-Transfer-Encoding: base64 PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gJElkOiB3cy1wb2xp Y3ktZ3VpZGVsaW5lcy54bWwsdiAxLjkzIDIwMDcvMDYvMTkgMDY6NDc6NDcgdGJvdWJleiBFeHAg JCAtLT4NCjwhRE9DVFlQRSBzcGVjIFBVQkxJQyAiLS8vVzNDLy9EVEQgU3BlY2lmaWNhdGlvbiBW Mi4xMC8vRU4iICJ4bWxzcGVjLmR0ZCIgWw0KPCFFTlRJVFkgJSBlbnRpdGllcyBTWVNURU0gImVu dGl0aWVzLmR0ZCIgPg0KJWVudGl0aWVzOw0KPCFFTlRJVFkgc3RhdHVzIFNZU1RFTSAic3RhdHVz LWd1aWRlbGluZXMueG1sIj4NCjwhRU5USVRZIHByZWZpeCAid3MtcG9saWN5LWd1aWRlbGluZXMi ID4NCjwhRU5USVRZIGRvY3VtZW50LnN0YXR1cy5ndWlkZWxpbmVzICJFZGl0b3JzJyBjb3B5ICRE YXRlOiAyMDA3LzA2LzE5IDA2OjQ3OjQ3ICQiPg0KPCFFTlRJVFkgcHJldmxvYyAiaHR0cDovL3d3 dy53My5vcmcvVFIvMjAwNi9XRC13cy1wb2xpY3ktZ3VpZGVsaW5lcy0yMDA2MTIyMSI+DQo8IUVO VElUWSBoZWxsaXAgIiYjODIzMDsiPg0KPCFFTlRJVFkgZ3VpZGVsaW5lcy1iZXN0cHJhY3RpY2Vz IFNZU1RFTSAiZ3VpZGVsaW5lcy1iZXN0cHJhY3RpY2VzLnhtbCI+DQpdPg0KPD94bWwtc3R5bGVz aGVldCB0eXBlPSd0ZXh0L3hzbCcgaHJlZj0neG1sc3BlYy1wb2xpY3kueHNsJz8+DQo8c3BlYyB3 M2MtZG9jdHlwZT0iJmRvY3R5cGUuZ3VpZGVsaW5lczsiIHJvbGU9IiZkb2N1bWVudC5yb2xlOyI+ DQogIDxoZWFkZXI+DQogICAgPHRpdGxlPiZndWlkZWxpbmVzLnRpdGxlOzwvdGl0bGU+DQogICAg PHczYy1kZXNpZ25hdGlvbj4mdzNjLWRlc2lnbmF0aW9uLWd1aWRlbGluZXM7PC93M2MtZGVzaWdu YXRpb24+DQogICAgPHczYy1kb2N0eXBlPiZkb2N1bWVudC5zdGF0dXMuZ3VpZGVsaW5lczs8L3cz Yy1kb2N0eXBlPg0KICAgIDxwdWJkYXRlPg0KICAgICAgPGRheT4mZHJhZnQuZGF5OzwvZGF5Pg0K ICAgICAgPG1vbnRoPiZkcmFmdC5tb250aDs8L21vbnRoPg0KICAgICAgPHllYXI+JmRyYWZ0Lnll YXI7PC95ZWFyPg0KICAgIDwvcHViZGF0ZT4NCiAgICA8cHVibG9jPg0KICAgICAgPGxvYyBocmVm PSImdzNjLWRlc2lnbmF0aW9uLWd1aWRlbGluZXM7Ij4mdzNjLWRlc2lnbmF0aW9uLWd1aWRlbGlu ZXM7PC9sb2M+DQogICAgPC9wdWJsb2M+ICZhbHRsb2NzLmd1aWRlbGluZXM7DQoJPHByZXZsb2Nz Pg0KICAgICAgICAgICAgPGxvYyBocmVmPSImcHJldmxvYzsiPiZwcmV2bG9jOzwvbG9jPg0KICAg ICAgICA8L3ByZXZsb2NzPg0KICAgIDxsYXRlc3Rsb2M+DQogICAgICA8bG9jIGhyZWY9IiZndWlk ZWxpbmVzLmxhdGVzdDsiPiZndWlkZWxpbmVzLmxhdGVzdDs8L2xvYz4NCiAgICA8L2xhdGVzdGxv Yz4NCiAgCTxhdXRobGlzdD4NCiAgCQk8YXV0aG9yIHJvbGU9ImVkaXRvciI+DQogIAkJCTxuYW1l PkFzaXIgUyBWZWRhbXV0aHU8L25hbWU+DQogIAkJCTxhZmZpbGlhdGlvbj5NaWNyb3NvZnQgQ29y cG9yYXRpb248L2FmZmlsaWF0aW9uPg0KICAJCTwvYXV0aG9yPg0KICAJCTxhdXRob3Igcm9sZT0i ZWRpdG9yIj4NCiAgCQkJPG5hbWU+RGF2aWQgT3JjaGFyZDwvbmFtZT4NCiAgCQkJPGFmZmlsaWF0 aW9uPkJFQSBTeXN0ZW1zLCBJbmMuPC9hZmZpbGlhdGlvbj4NCiAgCQk8L2F1dGhvcj4NCiAgCQk8 YXV0aG9yIHJvbGU9ImVkaXRvciI+DQogIAkJCTxuYW1lPkZyZWRlcmljayBIaXJzY2g8L25hbWU+ DQogIAkJCTxhZmZpbGlhdGlvbj5Ob2tpYTwvYWZmaWxpYXRpb24+DQogIAkJPC9hdXRob3I+DQog IAkJPGF1dGhvciByb2xlPSJlZGl0b3IiPg0KICAJCQk8bmFtZT5NYXJ5YW5uIEhvbmRvPC9uYW1l Pg0KICAJCQk8YWZmaWxpYXRpb24+SUJNIENvcnBvcmF0aW9uPC9hZmZpbGlhdGlvbj4NCiAgCQk8 L2F1dGhvcj4NCiAgCQk8YXV0aG9yIHJvbGU9ImVkaXRvciI+DQogIAkJCTxuYW1lPlByYXNhZCBZ ZW5kbHVyaTwvbmFtZT4NCiAgCQkJPGFmZmlsaWF0aW9uPndlYk1ldGhvZHMsIEluYy48L2FmZmls aWF0aW9uPg0KICAJCTwvYXV0aG9yPg0KICAJCTxhdXRob3Igcm9sZT0iZWRpdG9yIj4NCiAgCQkJ PG5hbWU+VG91ZmljIEJvdWJlejwvbmFtZT4NCiAgCQkJPGFmZmlsaWF0aW9uPkxheWVyIDcgVGVj aG5vbG9naWVzPC9hZmZpbGlhdGlvbj4NCiAgCQk8L2F1dGhvcj4NCiAgCQk8YXV0aG9yIHJvbGU9 ImVkaXRvciI+DQogIAkJCTxuYW1lPsOcbWl0IFlhbMOnaW5hbHA8L25hbWU+DQogIAkJCTxhZmZp bGlhdGlvbj5TQVAgQUcuPC9hZmZpbGlhdGlvbj4NCiAgCQk8L2F1dGhvcj4NCiAgCTwvYXV0aGxp c3Q+DQogICAgPGFic3RyYWN0Pg0KICAgICAgPHA+DQogICAgICAgIDxlbXBoPiZndWlkZWxpbmVz LnRpdGxlOzwvZW1waD4gaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBndWlkYW5jZSBmb3IgQXNzZXJ0 aW9uDQogICAgICAgIEF1dGhvcnMgdGhhdCB3aWxsIHdvcmsgd2l0aCB0aGUgJmZyYW1ld29yay50 aXRsZTsgWzxiaWJyZWYNCiAgICAgICAgcmVmPSJXUy1Qb2xpY3kiLz5dIGFuZCAmYXR0YWNobWVu dC50aXRsZTsgWzxiaWJyZWYNCiAgICAgICAgcmVmPSJXUy1Qb2xpY3lBdHRhY2htZW50Ii8+XSBz cGVjaWZpY2F0aW9ucyB0byBjcmVhdGUgZG9tYWluDQogICAgICAgIHNwZWNpZmljIGFzc2VydGlv bnMuIFRoZSBmb2N1cyBvZiB0aGlzIGRvY3VtZW50IGlzIHRvIHByb3ZpZGUNCiAgICAgICAgYmVz dCBwcmFjdGljZXMgYW5kIHBhdHRlcm5zIHRvIGZvbGxvdyBhcyB3ZWxsIGFzIGlsbHVzdHJhdGUN CiAgICAgICAgdGhlIGNhcmUgbmVlZGVkIGluIHVzaW5nIFdTLVBvbGljeSB0byBhY2hpZXZlIHRo ZSBiZXN0DQogICAgICAgIHBvc3NpYmxlIHJlc3VsdHMgZm9yIGludGVyb3BlcmFiaWxpdHkuIEl0 IGlzIGEgY29tcGxlbWVudGFyeQ0KICAgICAgICBndWlkZSB0byB1c2luZyB0aGUgc3BlY2lmaWNh dGlvbnMuIDwvcD4NCiAgICANCiAgICA8L2Fic3RyYWN0PiAmc3RhdHVzOyANCg0KICAgICA8bGFu Z3VzYWdlPg0KICAgICAgPGxhbmd1YWdlIGlkPSJlbi1VUyI+RW5nbGlzaDwvbGFuZ3VhZ2U+DQog ICAgPC9sYW5ndXNhZ2U+DQogICAgPHJldmlzaW9uZGVzYz4NCiAgICAgIDxwPkxhc3QgTW9kaWZp ZWQ6ICREYXRlOiAyMDA3LzA2LzE5IDA2OjQ3OjQ3ICQ8L3A+DQogICAgPC9yZXZpc2lvbmRlc2M+ DQogIDwvaGVhZGVyPg0KICA8Ym9keT4NCiAgICA8ZGl2MSBpZD0iaW50cm9kdWN0aW9uIj4NCiAg ICAgICAgPGhlYWQ+SW50cm9kdWN0aW9uPC9oZWFkPg0KICAgICAgDQogICAgICAgIDxwPlRoZSBX Uy1Qb2xpY3kgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgcG9saWN5IHRvIGJlIGEgY29sbGVjdGlv bg0KICAgICAgICBvZiBwb2xpY3kgYWx0ZXJuYXRpdmVzIHdpdGggZWFjaCBwb2xpY3kgYWx0ZXJu YXRpdmUgYQ0KICAgICAgICBjb2xsZWN0aW9uIG9mIHBvbGljeSBhc3NlcnRpb25zLiBUaGUgJmZy YW1ld29yay50aXRsZTsgcHJvdmlkZXMgYSBmbGV4aWJsZSBmcmFtZXdvcmsgdG8gDQogICAgICAg IHJlcHJlc2VudA0KICAgICAgICBjb25zaXN0ZW50IGNvbWJpbmF0aW9ucyBvZiBiZWhhdmlvcnMg ZnJvbSBhIHZhcmlldHkgb2YgZG9tYWlucy4NCiAgICAgICAgQSBwb2xpY3kgYXNzZXJ0aW9uIGlz IGEgbWFjaGluZSByZWFkYWJsZSBtZXRhZGF0YSBleHByZXNzaW9uIHRoYXQgDQogICAgICAgIGlk ZW50aWZpZXMgYmVoYXZpb3JzICByZXF1aXJlZCBmb3IgV2ViIHNlcnZpY2VzIGludGVyYWN0aW9u cy4NCiAgICAgICAgPGVtcGg+Jmd1aWRlbGluZXMudGl0bGU7PC9lbXBoPg0KICAgICAgICBpcyBh IHJlc291cmNlIHByaW1hcmlseSBmb3IgQXNzZXJ0aW9uIEF1dGhvcnMgYW5kIHByb3ZpZGVzDQog ICAgICAgIGd1aWRlbGluZXMgb24gdGhlIHVzZSBvZiAmZnJhbWV3b3JrLnRpdGxlOyBhbmQNCiAg ICAgICAgJmF0dGFjaG1lbnQudGl0bGU7IHNwZWNpZmljYXRpb25zIHRvIGNyZWF0ZSBhbmQgdXNl IGRvbWFpbiBzcGVjaWZpYw0KICAgICAgICBhc3NlcnRpb25zIHRvIGVuYWJsZSBpbnRlcm9wZXJh YmlsaXR5Lg0KICAgICAgICA8L3A+DQoJICAgIDxwPldTLVBvbGljeSBBc3NlcnRpb25zIGNvbW11 bmljYXRlIHRoZSByZXF1aXJlbWVudHMgYW5kIGNhcGFiaWxpdGllcyBvZiBhIHdlYg0KICAgICAg ICBzZXJ2aWNlIGJ5IGFkaGVyaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLCBXUy1Qb2xpY3kgRnJh bWV3b3JrLiBUbyBlbmFibGUgaW50ZXJvcGVyYWJpbGl0eSBvZiB3ZWINCiAgICAgICAgc2Vydmlj ZXMgZGlmZmVyZW50IHNldHMgb2YgV1MtUG9saWN5IEFzc2VydGlvbnMgbmVlZCB0byBiZQ0KICAg ICAgICBkZWZpbmVkIGJ5IGRpZmZlcmVudCBjb21tdW5pdGllcyBiYXNlZCB1cG9uIGRvbWFpbi1z cGVjaWZpYyByZXF1aXJlbWVudHMgb2YNCiAgICAgICAgdGhlIHdlYiBzZXJ2aWNlLg0KICAgICAg ICA8L3A+DQoJICAgIDxwPlRoZSBmb2N1cyBvZiB0aGVzZSBndWlkZWxpbmVzIGlzIHRvIGNhcHR1 cmUgYmVzdA0KICAgICAgICBwcmFjdGljZXMgYW5kIHVzYWdlIHBhdHRlcm5zIGZvciBwcmFjdGl0 aW9uZXJzLiBJdCBpcyBhDQogICAgICAgIGNvbXBsZW1lbnRhcnkgZ3VpZGUgdG8gdGhlIEZyYW1l d29yayBhbmQgQXR0YWNobWVudHMNCiAgICAgICAgc3BlY2lmaWNhdGlvbnMgYW5kIHRoZSBQcmlt ZXIuIEl0IGlzIGludGVuZGVkIHRvIHByb3ZpZGUNCiAgICAgICAgbm9uLW5vcm1hdGl2ZSBndWlk ZWxpbmVzIGZvciBXUy1Qb2xpY3kgQXNzZXJ0aW9uIEF1dGhvcnMgd2hvDQogICAgICAgIG5lZWQg dG8ga25vdyB0aGUgZmVhdHVyZXMgb2YgdGhlIGxhbmd1YWdlIGFuZCB1bmRlcnN0YW5kIHRoZQ0K ICAgICAgICByZXF1aXJlbWVudHMgZm9yIGRlc2NyaWJpbmcgcG9saWN5IGFzc2VydGlvbnMuIFNv bWUgb2YgdGhlDQogICAgICAgIGd1aWRhbmNlIGZvciBXUy1Qb2xpY3kgQXNzZXJ0aW9uIEF1dGhv cnMgY2FuIGFsc28gYmUgaGVscGZ1bA0KICAgICAgICBmb3I6DQoNCiAgICAgICAgPC9wPg0KCSAg CQk8dWxpc3Q+DQoJCQkgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwPldTLVBvbGljeSBleHByZXNzaW9uIGF1dGhvcnMgd2hvIG5lZWQgdG8g dW5kZXJzdGFuZCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeW50YXgg b2YgdGhlIGxhbmd1YWdlIGFuZCB1bmRlcnN0YW5kIGhvdyB0byBidWlsZCBjb25zaXN0ZW50IA0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5IGV4cHJlc3Npb25zDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC9pdGVtPg0KCQkJCTxpdGVtPg0KCQkJCQk8cD5Db25zdW1lcnMgb2YgcG9saWN5 IGV4cHJlc3Npb25zIHdobyBuZWVkIHRvIHVuZGVyc3RhbmQNCiAgICAgICAgCQkJdGhlIHJlcXVp cmVtZW50cyBjb250YWluZWQgaW4gcG9saWN5IGFzc2VydGlvbnMNCiAgICAgICAgIAkJCTwvcD4N CgkJCQk8L2l0ZW0+DQoJCQkJPGl0ZW0+DQoJCQkJCTxwPlByb3ZpZGVycyBvZiBwb2xpY3kgZXhw cmVzc2lvbnMgd2hvIG5lZWQgdG8gdW5kZXJzdGFuZA0KICAgICAgICAgCQkJIGhvdyB0byB1c2Ug dGhlIGFzc2VydGlvbnMgYXV0aG9yZWQgYnkgQXNzZXJ0aW9uIEF1dGhvcnMNCiAgICAgICAgIAkJ CTwvcD4NCgkJCQk8L2l0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg ICAgICAgICAgICAgICAgICAgICAgPC91bGlzdD4NCgkJPHA+VGhpcyBkb2N1bWVudCBhc3N1bWVz IGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiBYTUwsIA0KICAgICAgICBOYW1lc3BhY2VzIGluIFhN TCwgV1NETCwgU09BUCBhbmQgdGhlIFdlYiBTZXJ2aWNlcyBQb2xpY3kgbGFuZ3VhZ2UuIA0KICAg ICAgICA8L3A+DQoJCTxwPlRoaXMgaXMgYSBub24tbm9ybWF0aXZlIGRvY3VtZW50IGFuZCBkb2Vz DQogICAgICAgIG5vdCBwcm92aWRlIGEgZGVmaW5pdGl2ZSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBX ZWIgU2VydmljZXMNCiAgICAgICAgUG9saWN5IGZyYW1ld29yay4gPHNwZWNyZWYgcmVmPSJ4bWwt bmFtZXNwYWNlcyIvPiBsaXN0cyBhbGwNCiAgICAgICAgdGhlIG5hbWVzcGFjZSBwcmVmaXhlcyB0 aGF0IGFyZSB1c2VkIGluIHRoaXMgZG9jdW1lbnQuIChYTUwNCiAgICAgICAgZWxlbWVudHMgd2l0 aG91dCBhIG5hbWVzcGFjZSBwcmVmaXggYXJlIGZyb20gdGhlIFdlYiBTZXJ2aWNlcw0KICAgICAg ICBQb2xpY3kgWE1MIE5hbWVzcGFjZS4pDQogICAgICAgIDwvcD4gDQogICAgICAgIDxwPiBBcyBh IGNvbXBhbmlvbiBkb2N1bWVudCB0byB0aGUgcHJpbWVyLCB0aGlzIGRvY3VtZW50IGFsc28gZm9s bG93cw0KICAgICAgICB0aGUgU29jcmF0aWMgc3R5bGUgb2YgYmVnaW5uaW5nIHdpdGggYSBxdWVz dGlvbiwgYW5kIHRoZW4gYW5zd2VyaW5nIA0KICAgICAgICB0aGUgcXVlc3Rpb24uDQogICAgICAg IDwvcD4NCiAgICA8L2RpdjE+DQogICAgICA8ZGl2MSBpZD0iYmVzdC1wcmFjdGljZXMtbGlzdCI+ DQogICAgICAgICAgPGhlYWQ+TGlzdCBvZiBCZXN0IFByYWN0aWNlIFN0YXRlbWVudHM8L2hlYWQ+ DQogICAgICAgICAgPHA+VGhlIGZvbGxvd2luZyBCZXN0IFByYWN0aWNlcyBhcHBlYXIgaW4gdGhp cyBkb2N1bWVudCB3aXRoIGRpc2N1c3Npb24gYW5kIGV4YW1wbGVzLCBhbmQgYXJlIHN1bW1hcml6 ZWQgaGVyZSBmb3IgcXVpY2sgcmVmZXJlbmNlOjwvcD4NCiAgICAgICAgICAmZ3VpZGVsaW5lcy1i ZXN0cHJhY3RpY2VzOw0KICAgICAgPC9kaXYxPg0KCTxkaXYxIGlkPSJBc3NlcnRpb25zIj4NCiAg ICAgICAgPGhlYWQ+V2hhdCBpcyBhbiBBc3NlcnRpb24/IDwvaGVhZD4NCiAgICAgDQoJCTxwPkFu IGFzc2VydGlvbiBpcyBhIHBpZWNlIG9mIG1ldGFkYXRhIHRoYXQgZGVzY3JpYmVzIGENCiAgICAg IAljYXBhYmlsaXR5IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBXUy1Qb2xpY3kgZG9tYWluLiBTZXRz IG9mIGRvbWFpbi1zcGVjaWZpYyBhc3NlcnRpb25zDQogICAgICAJYXJlIHR5cGljYWxseSBkZWZp bmVkIGluIGEgZGVkaWNhdGVkIHNwZWNpZmljYXRpb24gdGhhdCBkZXNjcmliZXMNCiAgICAgIAl0 aGVpciBzZW1hbnRpY3MsIGFwcGxpY2FiaWxpdHkgYW5kIHNjb3BpbmcgcmVxdWlyZW1lbnRzIGFz IHdlbGwNCiAgICAgIAlhcyB0aGVpciBkYXRhIHR5cGUgZGVmaW5pdGlvbiB1c2luZyBYTUwgU2No ZW1hLiANCiAgICAgIAk8L3A+DQogICAgICANCiAgICAgIAk8cD5Qb2xpY3kgYXNzZXJ0aW9ucyBy ZXByZXNlbnRpbmcgc2hhcmVkIGFuZCB2aXNpYmxlIGJlaGF2aW9ycyBhcmUgdXNlZnVsIHBpZWNl cyBvZiBtZXRhZGF0YSB0byBlbmFibGUgDQogICAgICAJaW50ZXJvcGVyYWJpbGl0eSBhbmQgdG9v bGluZyBmb3IgYXV0b21hdGlvbi4gVGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoZW4gdG8NCiAg ICAgICAgZGVzaWduIHBvbGljeSBhc3NlcnRpb25zIGlzIHRvIGhhdmUgY2xhcml0eSBvbiB0aGUg Y2hhcmFjdGVyaXN0aWNzIG9mIGEgYmVoYXZpb3INCiAgICAgICAgcmVwcmVzZW50ZWQgYnkgYSBw b2xpY3kgYXNzZXJ0aW9uLiBTb21lIHVzZWZ1bCB3YXlzIHRvIGRpc2NvdmVyIHJlbGV2YW50IGJl aGF2aW9ycyBhcmUNCiAgICAgICAgdG8gYXNrIHF1ZXN0aW9ucyBsaWtlIHRoZSBmb2xsb3dpbmc6 DQogICAgICAgIDwvcD4NCiAgICAgICAgPHVsaXN0Pg0KICAgICAgICAgIDxpdGVtPg0KICAgICAg ICAgICAgPHA+SXMgdGhpcyBiZWhhdmlvciBhIHJlcXVpcmVtZW50Pw0KICAgICAgICAgICAgPC9w Pg0KICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgIDxwPklz IHRoZSBiZWhhdmlvciB2aXNpYmxlPw0KICAgICAgICAgICAgPC9wPg0KICAgICAgICANCiAgICAg ICAgICAgIAk8cD5BIHZpc2libGUgYmVoYXZpb3IgcmVmZXJzIHRvIGEgcmVxdWlyZW1lbnQgdGhh dCBtYW5pZmVzdHMgaXRzZWxmIG9uIHRoZSB3aXJlLiBXZWIgc2VydmljZXMNCiAgICAgICAgICAg IAlwcm92aWRlIGludGVyb3BlcmFibGUgbWFjaGluZS10by1tYWNoaW5lIGludGVyYWN0aW9uIGFt b25nIGRpc3BhcmF0ZSBzeXN0ZW1zLiBXZWINCiAgICAgICAgICAgIAlzZXJ2aWNlIGludGVyb3Bl cmFiaWxpdHkgaXMgdGhlIGNhcGFiaWxpdHkgb2YgZGlzcGFyYXRlIHN5c3RlbXMgdG8gZXhjaGFu Z2UgZGF0YSB1c2luZw0KICAgICAgICAgICAgCWNvbW1vbiBkYXRhIGZvcm1hdHMgYW5kIHByb3Rv Y29scyBzdXBwb3J0aW5nIGNoYXJhY3RlcmlzdGljcyBzdWNoIGFzIG1lc3NhZ2luZywgc2VjdXJp dHksIA0KICAgICAgICAgICAgCXJlbGlhYmlsaXR5IGFuZA0KICAgICAgICAgICAgCXRyYW5zYWN0 aW9uLiBTdWNoIGRhdGEgZm9ybWF0cyBhbmQgcHJvdG9jb2xzIG1hbmlmZXN0IG9uIHRoZSB3aXJl LiBQcm92aWRlcnMgYW5kDQogICAgICAgICAgICAJcmVxdWVzdGVycyByZWx5IG9uIHdpcmUgbWVz c2FnZXMgY29uZm9ybWluZyB0byBzdWNoIGZvcm1hdHMgYW5kIHByb3RvY29scw0KICAgICAgICAg ICAgCXRvIGFjaGlldmUgaW50ZXJvcGVyYWJpbGl0eS4gDQogICAgICAgICAgICAJPC9wPg0KICAg ICAgICAgIAk8cD4NCiAgICAgICAgICAJCUlmIGFuIGFzc2VydGlvbiBkZXNjcmliZXMgYSBiZWhh dmlvciB0aGF0IGRvZXMgbm90IG1hbmlmZXN0IG9uIHRoZSB3aXJlIHRoZW4gdGhlIGFzc2VydGlv biB3aWxsIG5vdCBpbXBhY3QgdGhlIA0KICAgICAgICAgIAkJaW50ZXJvcGVyYWJpbGl0eSBvZiB3 aXJlIG1lc3NhZ2VzLCBidXQgbWF5IHN0aWxsIGJlIHJlbGV2YW50IHRvIGVuYWJsaW5nIGFuIGlu dGVyb3BlcmFibGUgaW50ZXJhY3Rpb24uIA0KICAgICAgICAgIAkJRm9yIGV4YW1wbGUsIGEgcHJv dmlkZXIgbWF5IG5vdCB3aXNoIHRvIGludGVyYWN0IHVubGVzcyBhIGNsaWVudCBjYW4gYWNjZXB0 IGFuIGFzc2VydGlvbiBkZXNjcmliaW5nIHByb3ZpZGVyIGJlaGF2aW9yLiANCiAgICAgICAgICAJ CUFuIGV4YW1wbGUgaXMgYW4gYXNzZXJ0aW9uIHRoYXQgZGVzY3JpYmVzIHRoZSBwcml2YWN5IG5v dGljZSBpbmZvcm1hdGlvbiBvZiBhIHByb3ZpZGVyIGFuZCB0aGUgYXNzb2NpYXRlZCByZWd1bGF0 b3J5IA0KICAgICAgICAgIAkJc2FmZWd1YXJkIGluIHBsYWNlIG9uIHRoZSBwcm92aWRlcidzIHNp ZGUuIEZvciBjYXNlcyB3aGVyZSB0aGUgcHJvdmlkZXIgZG9lcyBub3QgaW50ZW5kIHRoZSBhc3Nl cnRpb24gdG8gaW1wYWN0IA0KICAgICAgICAgIAkJaW50ZXJvcGVyYWJpbGl0eSBpdCBtYXkgbWFy ayBpdCBhcyBpZ25vcmFibGUuDQogICAgICAgICAgCTwvcD4NCiAgICAgICAgICAgIAk8cD5JZiBh biBhc3NlcnRpb24gaGFzIG5vIHdpcmUgb3IgbWVzc2FnZS1sZXZlbCB2aXNpYmxlIGJlaGF2aW9y IHRoZW4gdGhlIGludGVyYWN0aW5nDQogICAgICAgICAgICAJcGFydGljaXBhbnRzIG1heSByZXF1 aXJlIHNvbWUgc29ydCBvZiBhZGRpdGlvbmFsIG1lY2hhbmlzbSB0byBpbmRpY2F0ZQ0KICAgICAg ICAgICAgCWNvbXBsaWFuY2Ugd2l0aCB0aGUgYXNzZXJ0aW9uIGFuZCB0byBlbmFibGUgZGlzcHV0 ZSByZXNvbHV0aW9uLiANCiAgICAgICAgICAgIAlJbnRyb2R1Y2luZyBhbiBhZGRpdGlvbmFsIG5v bi1yZXB1ZGlhdGlvbiBtZWNoYW5pc20gYWRkcw0KICAgICAgICAgICAgCXVubmVjZXNzYXJ5IGNv bXBsZXhpdHkgdG8gcHJvY2Vzc2luZyBhIHBvbGljeSBhc3NlcnRpb24uDQogICAgICAgICAgICAJ PC9wPg0KICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgIDxw PkRvZXMgdGhlIGJlaGF2aW9yIGFwcGx5IHRvIHR3byBvciBtb3JlIFdlYiBzZXJ2aWNlIHBhcnRp Y2lwYW50cz8NCiAgICAgICAgICAgIDwvcD4NCiAgICAgICAgICAJPHA+QSBzaGFyZWQgYmVoYXZp b3IgcmVmZXJzIHRvIGEgcmVxdWlyZW1lbnQgdGhhdCBpcyByZWxldmFudCB0byBhbiBpbnRlcm9w ZXJhYmxlIFdlYiBzZXJ2aWNlIGludGVyYWN0aW9uIGFuZCBpbnZvbHZlcyANCiAgICAgICAgICAJ CXR3byBvciBtb3JlIHBhcnRpY2lwYW50cy4gSWYgYW4gYXNzZXJ0aW9uIG9ubHkgZGVzY3JpYmVz IG9uZSBwYXJ0aWNpcGFudCdzIGJlaGF2aW9yIHRoZSBhc3NlcnRpb24gbWF5IHN0aWxsIGJlIHJl bGV2YW50IHRvIA0KICAgICAgICAgIAkJZW5hYmxpbmcgYW4gaW50ZXJvcGVyYWJsZSBpbnRlcmFj dGlvbi4gIA0KICAgICAgICAgIAkJQW4gZXhhbXBsZSBpcyB0aGUgdXNlIG9mIGxvZ2dpbmcgb3Ig YXVkaXRpbmcgYnkgdGhlIHByb3ZpZGVyLiBJZiBhbiBhc3NlcnRpb24gb25seSBkZXNjcmliZXMg b25lIHBhcnRpY2lwYW50J3MgYmVoYXZpb3IgdGhlbiANCiAgICAgICAgICAJCXRoZSBhc3NlcnRp b24gbWF5IGJlIG1hcmtlZCBhcyBpZ25vcmFibGUgKGluZGljYXRpbmcgaXQgZG9lcyBub3QgaW1w YWN0IGludGVyb3BlcmFiaWxpdHkpLiBBbiBpZ25vcmFibGUgcG9saWN5IGFzc2VydGlvbiBpcyAN CiAgICAgICAgICAJCWlnbm9yZWQgZm9yIGxheCBwb2xpY3kgaW50ZXJzZWN0aW9uLiBJZiBhbiBh c3NlcnRpb24gaXMgbm90IGFuIGlnbm9yYWJsZSBhc3NlcnRpb24gdGhlbiBpdCBpcyBkZWVtZWQg aW1wb3J0YW50IGZvciBhZ3JlZW1lbnQgDQogICAgICAgICAgCQliZXR3ZWVuIGJvdGggcGFydGll cy4NCiAgICAgICAgICAJPC9wPg0KICAgICAgICAgICAgCTwvaXRlbT4NCiAgICAgDQogICAgICAg ICAgCTxpdGVtPg0KICAgICAgICAgICAgCTxwPkRvZXMgdGhlIGJlaGF2aW9yIGhhdmUgYW4gaW1w bGllZCBzY29waW5nIHRvIGEgcG9saWN5IHN1YmplY3Qgc3VjaCBhcyBzZXJ2aWNlLCBlbmRwb2lu dCwgb3BlcmF0aW9uIGFuZCBtZXNzYWdlPw0KICAgICAgICAgICAgCTwvcD4NCiAgICAgICAgICAJ PC9pdGVtPg0KICAgICAgICAgIAk8aXRlbT4NCiAgICAgICAgICAJCTxwPklzIHRoZXJlIGEgcmVx dWlyZW1lbnQgdGhhdCBhIGNob2ljZSBtdXN0IGJlIG1hZGUgZm9yIHN1Y2Nlc3NmdWwgaW50ZXJh Y3Rpb24/PC9wPg0KICAgICAgICAgIAkJDQogICAgICAgICAgCQk8cD5Tb21ldGltZXMgcHJvdmlk ZXJzIGFuZCByZXF1ZXN0ZXJzIGFyZSByZXF1aXJlZCB0byBlbmdhZ2UgaW4gY2VydGFpbiBiZWhh dmlvcnMuIA0KICAgICAgICAgIAkJCVRoZSB1c2Ugb2Ygb3B0aW1pemF0aW9uIGFuZCByZWxpYWJs ZSBtZXNzYWdpbmcgYXJlIHR3byBleGFtcGxlcy4NCiAgICAgICAgICAJCTwvcD4NCiAgICAgICAg ICAJPC9pdGVtPg0KICAgICAgICA8L3VsaXN0Pg0KCQkNCgkJPHA+VGhlcmUgYXJlIGFscmVhZHkg bWFueSBleGFtcGxlcyBpbiB0aGUgaW5kdXN0cnkgdGhhdCBhZGhlcmUgdG8gdGhlIGFib3ZlIHBy YWN0aWNlcywgc3VjaCBhcyA8YmlicmVmIHJlZj0iV1MtUk0tUG9saWN5Ii8+DQogICAgICAJYW5k IDxiaWJyZWYgcmVmPSJXUy1TZWN1cml0eVBvbGljeSIvPi4gU29tZSBjb21tb24gY2hhcmFjdGVy aXN0aWNzIGZyb20gdGhlc2UgZG9jdW1lbnRzIG1heSBiZSBjb25zaWRlcmVkIGFzIDxlbXBoPmJl c3QgcHJhY3RpY2VzPC9lbXBoPiBmb3IgbmV3IEFzc2VydGlvbiBBdXRob3JzOg0KICAgICAgCTwv cD4gDQoJCQk8dWxpc3Q+DQoJCQkJPGl0ZW0+DQoJCQkJCTxwPlNwZWNpZnkgYm90aCB0aGUgc3lu dGF4IGFuZCB0aGUgc2VtYW50aWNzIG9mIHRoZSBhc3NlcnRpb25zDQogICAgICAgICAgICAgICAJ CTwvcD4NCgkJCQk8L2l0ZW0+DQoJCQkJPGl0ZW0+DQoJCQkJCTxwPklmIG5lc3RlZCBvciBwYXJh bWV0ZXJpemVkIGFzc2VydGlvbnMgYXJlIGRlZmluZWQsIGJlIGNsZWFyIGFib3V0IHRoZWlyIHVz YWdlDQogICAgICAgICAgICAgICAJCTwvcD4NCgkJCQk8L2l0ZW0+DQoJCQkJPGl0ZW0+DQoJCQkJ CTxwPiBEZXNjcmliZSB0aGUgcG9saWN5IHN1YmplY3RzIHRoZSBhc3NlcnRpb25zIGNhbiBiZSBh dHRhY2hlZCB0by4gDQogICAgICAgICAgICAgICAJCTwvcD4NCgkJCQk8L2l0ZW0+DQoJCQk8L3Vs aXN0Pg0KCQk8cD5JbiB0aGlzIGRvY3VtZW50IHdlIHdpbGwgZXhwbGFpbiB3aHkgdGhlc2UgcHJh Y3RpY2VzIHNob3VsZA0KICAgICAgCWJlIGZvbGxvd2VkIHNvIHRoYXQgdGhlIGFzc2VydGlvbiBk ZXZlbG9wZXJzIGRlZmluaW5nIHN1Y2ggYQ0KICAgICAgCXNwZWNpZmljYXRpb24gd2lsbCBiZSB3 ZWxsIGluZm9ybWVkIGFuZCBhYmxlIHRvIGFkZXF1YXRlbHkgc3BlY2lmeSBhc3NlcnRpb25zIGZv ciB0aGVpciBkb21haW4uDQogICAgICAJPC9wPg0KCQk8cD5JdCBpcyBleHBlY3RlZCB0aGF0IGNv bnN1bWVycyBvZiB0aGUgbWV0YWRhdGEgc3BlY2lmaWVkIGJ5DQogICAgIAl0aGUgQXNzZXJ0aW9u IEF1dGhvcnMgd2lsbCBhbHNvIGJlbmVmaXQgZnJvbSB1bmRlcnN0YW5kaW5nIHRoZXNlDQogICAg ICAJcHJhY3RpY2VzIGFzIGl0IHdpbGwgaGVscCB0aGVtIHV0aWxpemUgdGhlIGFzc2VydGlvbnMg aW4gdGhlDQogICAgICAJY29udGV4dCBvZiB0aGUgV1MtUG9saWN5IGZyYW1ld29yay4gQSByZXN1 bHQgb2YgZm9sbG93aW5nIHRoZQ0KICAgICAgCWJlc3QgcHJhY3RpY2VzIHdpbGwgYmUgYW4gYXNz ZXJ0aW9uIHNwZWNpZmljYXRpb24gdGhhdCBkZXNjcmliZXMNCiAgICAgIAlhIGNvbnRyYWN0IGZv ciB0aGUgY29uc3VtZXJzIGFuZCBwcm92aWRlcnMgb2YgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29u c3RyYWludHMgb2YgdGhlIGRvbWFpbi4NCiAgICAgIAk8L3A+DQogICAgCTwvZGl2MT4NCiAgICAg DQogICAgCTxkaXYxIGlkPSJhc3NlcnRpb24tYXV0aG9ycyI+DQoJCTxoZWFkPldobyBpcyBpbnZv bHZlZCBpbiBhdXRob3JpbmcgQXNzZXJ0aW9ucz8gPC9oZWFkPg0KCQkJDQoJCTxwPkluIG9yZGVy IGZvciB0aGUgcG9saWN5IGZyYW1ld29yayB0byBlbmFibGUgY29tbXVuaXRpZXMgdG8NCgkJZXhw cmVzcyB0aGVpciBvd24gZG9tYWluIGtub3dsZWRnZSwgaXQgaXMgbmVjZXNzYXJ5IHRvIHByb3Zp ZGUgYmFzaWMNCgkJZnVuY3Rpb25hbGl0eSB0aGF0IGFsbCBkb21haW5zIGNvdWxkIGV4cGxvaXQg YW5kIHRoZW4gYWxsb3cNCgkJcG9pbnRzIG9mIGV4dGVuc2lvbiB3aGVyZSBhdXRob3JzIG9mIHRo ZSB2YXJpb3VzIFdTLVBvbGljeQ0KCQlhc3NlcnRpb25zIGZvciBhIHBhcnRpY3VsYXIgZG9tYWlu IGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgc2VtYW50aWNzLg0KICAgICAgICA8L3A+DQogICAgICAg IDxwPlNvbWUgcG9saWN5IGFzc2VydGlvbnMgc3BlY2lmeSB0cmFkaXRpb25hbA0KICAgICAgCXJl cXVpcmVtZW50cyBhbmQgY2FwYWJpbGl0aWVzIHRoYXQgd2lsbCB1bHRpbWF0ZWx5IG1hbmlmZXN0 IG9uDQogICAgICAJdGhlIHdpcmUgKGUuZy4sIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSwgdHJhbnNw b3J0IHByb3RvY29sIHNlbGVjdGlvbikuIE90aGVyIHBvbGljeSBhc3NlcnRpb25zIGhhdmUgbm8g d2lyZSBtYW5pZmVzdGF0aW9uDQogICAgICAJeWV0IGFyZSBjcml0aWNhbCB0byBwcm9wZXIgc2Vy dmljZSBzZWxlY3Rpb24gYW5kIHVzYWdlIChlLmcuLA0KICAgICAgCXByaXZhY3kgcG9saWN5LCBR b1MgY2hhcmFjdGVyaXN0aWNzKS4gV1MtUG9saWN5IHByb3ZpZGVzIGENCiAgICAgIAlzaW5nbGUg cG9saWN5IGdyYW1tYXIgdG8gYWxsb3cgYm90aCBraW5kcyBvZiBhc3NlcnRpb25zIHRvIGJlIHJl YXNvbmVkIGFib3V0IGluIGEgY29uc2lzdGVudCBtYW5uZXIuDQogICAgICAJPC9wPg0KICAJCQk8 ZGl2MiBpZD0icm9sZXMiPg0KICAgICAgICAJPGhlYWQ+IFJvbGVzIGFuZCBSZXNwb25zaWJpbGl0 aWVzIDwvaGVhZD4NCgkJCTxwPkJlbG93IHdlIGNhcHR1cmUgc29tZSBvZiB0aGUgY2hhcmFjdGVy aXN0aWNzIG9mIHRoZSByb2xlcw0KICAgICAgICAJYW5kIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHRo ZSBhdXRob3JzLCBjb25zdW1lcnMgYW5kIHByb3ZpZGVycy4NCiAgICAgICAgCTwvcD4NCgkJCQk8 ZGl2MyBpZD0iZG9tYWluLW93bmVycyI+DQoJCQkJDQoJCQkJPGhlYWQ+IEFzc2VydGlvbiBBdXRo b3JzPC9oZWFkPg0KCQkJCTxwPkFzc2VydGlvbiBBdXRob3JzIGFyZSBhIGNvbW11bml0eSB0aGF0 IGNob29zZXMgdG8NCiAgICAgICAgCQlleHBsb2l0IHRoZSBXUy1Qb2xpY3kgRnJhbWV3b3JrIGJ5 IGNyZWF0aW5nIHRoZWlyIG93bg0KICAgICAgICAJCXNwZWNpZmljYXRpb24gdG8gZGVmaW5lIGEg c2V0IG9mIGFzc2VydGlvbnMgdGhhdCBleHByZXNzIHRoZQ0KICAgICAgICAJCWNhcGFiaWxpdGll cyBhbmQgY29uc3RyYWludHMgb2YgdGhhdCB0YXJnZXQgZG9tYWluLiBUaGUNCiAgICAgICAgCQlX Uy1Qb2xpY3kgRnJhbWV3b3JrIGlzIGJhc2VkIG9uIGEgZGVjbGFyYXRpdmUgbW9kZWwsIG1lYW5p bmcNCiAgICAgICAgCQl0aGF0IGl0IGlzIGluY3VtYmVudCBvbiB0aGUgQXNzZXJ0aW9uIEF1dGhv cnMgdG8gZGVmaW5lIGJvdGggdGhlIHNlbWFudGljcyBvZiANCiAgICAgICAgCQl0aGUgYXNzZXJ0 aW9ucyBhcyB3ZWxsIGFzIHRoZSBzY29wZSBvZiB0aGVpciB0YXJnZXQgZG9tYWluIGluIHRoZWly IHNwZWNpZmljYXRpb24uIFRoZSBzZXQNCiAgICAgICAgCQlvZiBtZXRhZGF0YSBmb3IgYW55IHBh cnRpY3VsYXIgZG9tYWluIHdpbGwgdmFyeSBpbiB0aGUgZ3JhbnVsYXJpdHkgb2YgYXNzZXJ0aW9u DQogICAgICAgIAkJc3BlY2lmaWNhdGlvbiByZXF1aXJlZC4gIEl0IGlzIHRoZSBpbnRlbnQgb2YN CiAgICAgICAgCQl0aGlzIGRvY3VtZW50IHRvIGhlbHAgY29tbXVuaXRpZXMgdXRpbGl6ZSB0aGUg ZnJhbWV3b3JrIGluIHN1Y2gNCiAgICAgICAJCQkgYSB3YXkgdGhhdCBtdWx0aXBsZSBXUy1Qb2xp Y3kgZG9tYWlucyBjYW4gY28tZXhpc3QgYW5kDQogICAgICAgCQkJY29uc3VtZXJzIGFuZCBwcm92 aWRlcnMgY2FuIHV0aWxpemUgdGhlIGZyYW1ld29yayBjb25zaXN0ZW50bHkgYWNyb3NzIGRvbWFp bnMuDQoJCQkJPC9wPg0KCQkJCTxwPldoZW4gdXNpbmcgdGhlIFdTLVBvbGljeSBGcmFtZXdvcmss IGFueQ0KICAgIAkgICAgCUFzc2VydGlvbiBBdXRob3JzIGRlZmluaW5nIG5ldyBXUy1Qb2xpY3kg YXNzZXJ0aW9ucw0KICAgIAkgICAgCW11c3QgYWRoZXJlIHRvIHRoZSBNVVNUJ3MgYW5kIFNIT1VM RCdzIGluIHRoZSBzcGVjaWZpY2F0aW9uDQogICAgCSAgICAJYW5kIHNob3VsZCByZXZpZXcgdGhl IGNvbmZvcm1hbmNlIHNlY3Rpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uIA0KICAgIAkgICAgCTwv cD4NCiAgICAJICAgCQkgPHA+QXNzZXJ0aW9uIEF1dGhvcnMgc2hvdWxkIGFsc28gc3BlY2lmeSBh IHBvbGljeSBzdWJqZWN0LiBGb3INCgkJCQlpbnN0YW5jZSwgaWYgYSBwb2xpY3kgYXNzZXJ0aW9u IHdlcmUgdG8gYmUgdXNlZCB3aXRoIFdTREwsIGFuIGFzc2VydGlvbg0KCQkJCWRlc2NyaXB0aW9u IHNob3VsZCBzcGVjaWZ5IGEgV1NETCBwb2xpY3kgc3ViamVjdC4NCgkJCQk8L3A+DQogICAgICAg IAkJPHA+QW4gZXhhbXBsZSBvZiBhIGRvbWFpbiBzcGVjaWZpY2F0aW9uIHRoYXQgZm9sbG93cyB0 aGVzZSBwcmFjdGljZXMgaXMgdGhlIFdTLVNlY3VyaXR5UG9saWN5DQogICAgICAgIAkJc3BlY2lm aWNhdGlvbiBbPGJpYnJlZiByZWY9IldTLVNlY3VyaXR5UG9saWN5Ii8+XS4gVGhlDQogICAgICAg IAkJCVdTLVNlY3VyaXR5UG9saWN5IGF1dGhvcnMgaGF2ZSBkZWZpbmVkIHRoZSBzY29wZSBvZiB0 aGVpcg0KICAgICAgICAJCQl0YXJnZXQgZG9tYWluIChzZWN1cml0eSkgYXMgZm9sbG93czoNCiAg ICAgICAgCQk8L3A+DQoJCQkJPHA+PGVtcGg+IlRoaXMgZG9jdW1lbnQgW1dTLVNlY3VyaXR5UG9s aWN5XSBkZWZpbmVzIGEgc2V0IG9mDQogICAgICAgIAkJc2VjdXJpdHkgcG9saWN5IGFzc2VydGlv bnMgZm9yIHVzZSB3aXRoIHRoZSBXUy1Qb2xpY3kNCiAgICAgICAgCQlmcmFtZXdvcmsgd2l0aCBy ZXNwZWN0IHRvIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGluIFdTUzoNCiAgICAgICAgCQlT T0FQIE1lc3NhZ2UgU2VjdXJpdHksIFdTLVRydXN0IGFuZCBXUy1TZWN1cmVDb252ZXJzYXRpb24u IFRoaXMgZG9jdW1lbnQgdGFrZXMgdGhlIGFwcHJvYWNoIG9mDQogICAgICAgIAkJZGVmaW5pbmcg YSBiYXNlIHNldCBvZiBhc3NlcnRpb25zIHRoYXQgZGVzY3JpYmUgaG93IG1lc3NhZ2VzDQogICAg ICAgIAkJYXJlIHRvIGJlIHNlY3VyZWQuIEZsZXhpYmlsaXR5IHdpdGggcmVzcGVjdCB0byB0b2tl biB0eXBlcywNCiAgICAgICAgCQljcnlwdG9ncmFwaGljIGFsZ29yaXRobXMgYW5kIG1lY2hhbmlz bXMgdXNlZCwgaW5jbHVkaW5nIHVzaW5nDQogICAgICAgIAkJdHJhbnNwb3J0IGxldmVsIHNlY3Vy aXR5IGlzIHBhcnQgb2YgdGhlIGRlc2lnbiBhbmQgYWxsb3dzIGZvcg0KICAgICAgICAJCWV2b2x1 dGlvbiBvdmVyIHRpbWUuIFRoZSBpbnRlbnQgaXMgdG8gcHJvdmlkZSBlbm91Z2gNCiAgICAgICAg CQlpbmZvcm1hdGlvbiBmb3IgY29tcGF0aWJpbGl0eSBhbmQgaW50ZXJvcGVyYWJpbGl0eSB0byBi ZQ0KICAgICAgICAJCWRldGVybWluZWQgYnkgd2ViIHNlcnZpY2UgcGFydGljaXBhbnRzIGFsb25n IHdpdGggYWxsDQogICAgICAgIAkJaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGFjdHVhbGx5IGVu YWJsZSBhIHBhcnRpY2lwYW50IHRvDQogICAgICAgIAkJZW5nYWdlIGluIGEgc2VjdXJlIGV4Y2hh bmdlIG9mIG1lc3NhZ2VzLiIgPC9lbXBoPg0KCQkJCTwvcD4NCgkJCQk8cD5BbiBleGFtcGxlIG9m IHNjb3BpbmcgaW5kaXZpZHVhbCBhc3NlcnRpb25zIHRvIHBvbGljeSBzdWJqZWN0cyBpcyBhbHNv IHByb3ZpZGVkIGJ5IHRoZSBXUy1TZWN1cml0eSBQb2xpY3kgc3BlY2lmaWNhdGlvbiBpbiBBcHBl bmRpeCBBLg0KCQkJCTwvcD4NCgkJCQk8L2RpdjM+DQoJCQkJDQoJCQkJPGRpdjMgaWQ9ImNvbnN1 bWVycyI+DQoJCQkJDQoJCQkJPGhlYWQ+Q29uc3VtZXJzPC9oZWFkPg0KCQkJCTxwPkEgY29uc3Vt ZXIgb2YgV1MtUG9saWN5DQoJCQkJQXNzZXJ0aW9ucyBjYW4gYmUgYW55IGVudGl0eSB0aGF0IGlz IGNhcGFibGUgb2YgcGFyc2luZyBhDQoJCQkJV1MtUG9saWN5IFhNTCAgZWxlbWVudCBhbmQgc2Vs ZWN0aW5nIG9uZSBhbHRlcm5hdGl2ZSBmcm9tIHRoZQ0KCQkJCXBvbGljeS4gVGhpcyBzZWxlY3Rl ZCBhbHRlcm5hdGl2ZSBpcyB0aGVuIHVzZWQgdG8gZ292ZXJuIHRoZSBjcmVhdGlvbiBvZiBhIG1l c3NhZ2UNCgkJCQl0byBzZW5kIHRvIHRoZSBzdWJqZWN0IHRvIHdoaWNoIHRoZSBwb2xpY3kgYWx0 ZXJuYXRpdmUgd2FzDQoJCQkJYXR0YWNoZWQuICBUaGUgV1MtUG9saWN5IEF0dGFjaG1lbnQgc3Bl Y2lmaWNhdGlvbiBkZWZpbmVzIGENCgkJCQlzZXQgb2YgYXR0YWNobWVudCBtb2RlbHMgZm9yIHVz ZSB3aXRoIGNvbW1vbiB3ZWIgc2VydmljZQ0KCQkJCXN1YmplY3RzOiBXU0RMIGRlZmluaXRpb25z IFs8YmlicmVmIHJlZj0iV1NETDExIiAvPiwgPGJpYnJlZg0KCQkJCXJlZj0iV1NETDIwIiAvPl0s IFVEREkgZGlyZWN0b3J5IGVudHJpZXMgWzxiaWJyZWYNCgkJCQlyZWY9IlVERElBUEkyMCIgLz4s IDxiaWJyZWYgcmVmPSJVRERJRGF0YVN0cnVjdHVyZTIwIiAvPiwNCgkJCQk8YmlicmVmIHJlZj0i VURESTMwIiAvPl0sIGFuZCBXUy1BZGRyZXNzaW5nIEVuZHBvaW50DQoJCQkJUmVmZXJlbmNlcyAo RVBSKSBbPGJpYnJlZiByZWY9IldTLUFkZHJlc3NpbmciLz5dLg0KICAgICAgIAkJIAk8L3A+DQoJ CQkJPHA+IA0KCQkJCUluIHRoZSBkZWdlbmVyYXRlIGNhc2UsIGEgaHVtYW4gY291bGQgcmVhZCB0 aGUgWE1MIGFuZA0KCQkJCWRldGVybWluZSBpZiBhIG1lc3NhZ2UgY291bGQgYmUgY29uc3RydWN0 ZWQgY29uZm9ybWFudCB0byB0aGUNCgkJCQlhZHZlcnRpc2VkIHBvbGljeS4NCiAgICAgICAgCQk8 L3A+DQogICAgICAgIAkJPHA+SXQgaXMgZXhwZWN0ZWQgdGhhdCBjb25zdW1lcnMgb2YgV1MtUG9s aWN5IHdpbGwgaW5jbHVkZSBhDQogICAgIAkJICAgCXdpZGUgcmFuZ2Ugb2YgY2xpZW50IGNvbmZp Z3VyYXRpb25zLCBmcm9tIHN0YW5kIGFsb25lIGNsaWVudA0KICAgICAJCSAgIAlhcHBsaWNhdGlv bnMgdG8gImFjdGl2ZSIgd2ViIHNlcnZpY2UgcmVxdWVzdGVycyB0aGF0IGFyZQ0KCQkJCWNhcGFi bGUgb2YgYWRhcHRpbmcgdG8gdGhlIGNvbnN0cmFpbnRzIGFuZCBjYXBhYmlsaXRpZXMNCgkJCQll eHByZXNzZWQgaW4gYSBXUy1Qb2xpY3kgZG9jdW1lbnQgYW5kIG1vZGlmeWluZyB0aGVpciBvd24N CiAgICAgIAkJCWNvbmZpZ3VyYXRpb25zIGR5bmFtaWNhbGx5Lg0KICAgICAgICAJCTwvcD4NCgkJ CQk8L2RpdjM+DQoJCQkJPGRpdjMgaWQ9InByb3ZpZGVycyI+DQoJCQkJPGhlYWQ+UHJvdmlkZXJz PC9oZWFkPg0KCQkJCTxwPkEgcHJvdmlkZXIgd2hvIGV4cHJlc3NlcyBjYXBhYmlsaXRpZXMgYW5k IHJlcXVpcmVtZW50cyBvZiBhIFdlYiBzZXJ2aWNlDQoJCQkJYXMgcG9saWNpZXMgY2FuIGJlIGFu eSB3ZWIgc2VydmljZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGNhbg0KCSAgIAkJCXNwZWNpZnkgaXRz IG9uLXRoZS13aXJlIG1lc3NhZ2UgYmVoYXZpb3IgYXMgYSBwb2xpY3kNCgkJCQlleHByZXNzaW9u IHRoYXQgY29uZm9ybXMgdG8gdGhlIFdlYiBTZXJ2aWNlcyBQb2xpY3kgMS41IC0gRnJhbWV3b3Jr IFs8YmlicmVmIHJlZj0iV1MtUG9saWN5Ii8+XQ0KCQkJCWFuZCBXZWIgU2VydmljZXMgUG9saWN5 IDEuNSAtIEF0dGFjaG1lbnQgWzxiaWJyZWYgcmVmPSJXUy1Qb2xpY3lBdHRhY2htZW50Ii8+XSBz cGVjaWZpY2F0aW9ucy4NCgkJCQlUaGUgV2ViIFNlcnZpY2VzIFBvbGljeSAxLjUgLSBBdHRhY2ht ZW50IHNwZWNpZmljYXRpb24gaGFzIGRlZmluZWQgYSBzZXQgb2YNCgkgICAJCQlzdWJqZWN0cyBh bmQgYW4gZXh0ZW5zaWJsZSBtZWNoYW5pc20gZm9yIGF0dGFjaGluZyBwb2xpY2llcw0KCSAgIAkJ CXRvIHdlYiBzZXJ2aWNlcyBzdWJqZWN0cy4gDQogICAgICAgICAgIAkJPC9wPg0KCQkJCTxwPldo ZW4gZGVwbG95aW5nIHNlcnZpY2VzIHdpdGggcG9saWNpZXMgaXQgaXMgdXNlZnVsIGZvciBwcm92 aWRlcnMgdG8gYW50aWNpcGF0ZSBob3cNCiAgICAgICAgICAgCQl0byBldm9sdmUgdGhlaXIgc2Vy dmljZXMgY2FwYWJpbGl0aWVzIG92ZXIgdGltZS4gIElmDQogICAgICAgICAgIAkJZm9yd2FyZCBj b21wYXRpYmlsaXR5IGlzIGEgY29uY2VybiBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZQ0KICAgICAg ICAgICAJCWNvbXBhdGliaWxpdHkgd2l0aCBkaWZmZXJlbnQgYW5kIHBvdGVudGlhbGx5IG5ldyBj bGllbnRzLA0KICAgICAgICAgICAJCXByb3ZpZGVycyBzaG91bGQgcmVmZXIgdG8gPHNwZWNyZWYg cmVmPSJ2ZXJzaW9uaW5nLXBvbGljeS1hc3NlcnRpb25zIi8+IGFuZA0KICAgICAgICAgICAJCTxi aWJyZWYgcmVmPSJXUy1Qb2xpY3ktUHJpbWVyIi8+IHRoYXQgZGVzY3JpYmVzIHNlcnZpY2UgYW5k DQogICAgICAgICAgIAkJcG9saWN5IGFzc2VydGlvbiBldm9sdXRpb24uDQoJICAgCQkJPC9wPg0K CSAgIAkJCTwvZGl2Mz4NCgkJCTwvZGl2Mj4NCgk8L2RpdjE+DQogICAgICAgICAgICAgIA0KCTxk aXYxIGlkPSJnZW5lcmFsLWd1aWRlbGluZXMiPg0KCQk8aGVhZD5HZW5lcmFsIEd1aWRlbGluZXMg Zm9yIEFzc2VydGlvbiBBdXRob3JzPC9oZWFkPg0KCQk8cD4gQXMgQXNzZXJ0aW9uIEF1dGhvcnMg YmVnaW4gdGhlIHRhc2sgb2YgaW52ZW50aW5nIFhNTCBkaWFsZWN0cyB0byByZXByZXNlbnQgcG9s aWN5ICBhc3NlcnRpb25zIHRoZXkgY2FuIHRha2UNCgkJYWR2YW50YWdlIG9mIFdTLVBvbGljeSBi dWlsZGluZyBvbiBYTUwgcHJpbmNpcGxlcyBhbmQgWE1MIFNjaGVtYSB2YWxpZGF0aW9uIGluIHRo ZWlyIGRlc2lnbi4gV1MtUG9saWN5IA0KCQlyZWxpZXMgb24gdGhlIFFOYW1lIG9mIGEgcG9saWN5 IGFzc2VydGlvbiBiZWluZyBhbiBYTUwgZWxlbWVudCBidXQgYWxsb3dzIEFzc2VydGlvbiBBdXRo b3JzIHRvIG9wdGlvbmFsbHkgIA0KCQlwcm92aWRlIGFkZGl0aW9uYWwgc2VtYW50aWNzIHRocm91 Z2ggbmVzdGluZyBhc3NlcnRpb25zLCBvciBzcGVjaWZ5aW5nIGFzc2VydGlvbiBwYXJhbWV0ZXJz Lg0KCQlUaGlzIHNlY3Rpb24gY292ZXJzIHNldmVyYWwgYXNwZWN0cyBvZiBhc3NlcnRpb24gZGVz aWduIGFuZCBwcm92aWRlcyBzb21lIGFuc3dlcnMgdG8gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnM6 PC9wPg0KICAgICAgCQk8dWxpc3Q+DQogICAgICAgCQkgPGl0ZW0+DQogICAgICAgICAgCQk8cD5X aGF0IGlzIHRoZSBpbnRlbmRlZCB1c2Ugb2YgdGhlIHBvbGljeSBhc3NlcnRpb24/PC9wPg0KICAg ICAgICAJPC9pdGVtPg0KICAgICAgICAJPGl0ZW0+DQogICAgICAgICAgCQk8cD5XaGljaCBhdXRo b3Jpbmcgc3R5bGUgd2lsbCBiZSB1c2VkPzwvcD4NCiAgICAgICAgCTwvaXRlbT4NCiAgICAgICAg CTxpdGVtPg0KICAgICAgICAgCQkgPHA+SXMgdGhpcyBhIG5ldyBwb2xpY3kgZG9tYWluPyBEb2Vz IGl0IG5lZWQgdG8gY29tcG9zZSB3aXRoIG90aGVyIGRvbWFpbnM/PC9wPg0KICAgICAgICAJPC9p dGVtPg0KICAgICAgICAJPGl0ZW0+DQogICAgICAgICAgCQk8cD5Ib3cgY29tcGxleCBhcmUgdGhl IGFzc2VydGlvbnM/PC9wPg0KICAgICAgICAJPC9pdGVtPg0KICAgICAgICAJPGl0ZW0+DQogICAg ICAgICAgCQk8cD5JcyB0aGVyZSBhIG5lZWQgdG8gY29uc2lkZXIgbmVzdGluZz88L3A+DQogICAg ICAgIAk8L2l0ZW0+DQogICAgICAJCTxpdGVtPg0KICAgICAgICAgIAkJPHA+RG8gb3B0aW9uYWwg YmVoYXZpb3JzIG5lZWQgdG8gYmUgcmVwcmVzZW50ZWQ/PC9wPg0KICAgICAgICAJPC9pdGVtPg0K ICAgICAgICAJPC91bGlzdD4NCiAgICAgICAgCQ0KCQkJPGRpdjIgaWQ9ImFzc2VydGlvbi10YXJn ZXQiPg0KCQkJPGhlYWQ+QXNzZXJ0aW9ucyBhbmQgVGhlaXIgVGFyZ2V0IFVzZTwvaGVhZD4NCgkJ CQk8cD4NCgkJCQlBc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rp b25hbGl0eSB0aGF0IHRoZSBXUy1Qb2xpY3kNCgkJCQlmcmFtZXdvcmsgcHJvdmlkZXMgYW5kIGFw cGx5IHRoZSBrbm93bGVkZ2Ugb2YgdGhlIHBvbGljeSBmcmFtZXdvcmsgcHJvY2Vzc2luZw0KCQkJ CXdoZW4gZGVmaW5pbmcgdGhlIHNldCBvZiBhc3NlcnRpb25zLiANCgkJCQk8L3A+DQoJCQkJPHA+ DQoJCQkJQXNzZXJ0aW9ucyBjYW4gYmUgc2ltcGxlIG9yIHRoZXkgY2FuIGJlIGNvbXBsZXguIEFz c2VydGlvbiBBdXRob3JzIG1heSBjaG9vc2UNCgkJCQl0byBzcGVjaWZ5IG11bHRpcGxlIHBlZXIg YXNzZXJ0aW9ucywgZWFjaCBjYXJyeWluZyB0aGUgc2VtYW50aWMgb2YgYSBwYXJ0aWN1bGFyDQoJ CQkJYmVoYXZpb3IsIG9yIHRoZXkgbWF5IGNob29zZSB0byBzcGVjaWZ5IGFzc2VydGlvbnMgdGhh dCBjb250YWlucyBhc3NlcnRpb24gcGFyYW1ldGVycw0KCQkJCWFuZC9vciBuZXN0ZWQgcG9saWN5 IGV4cHJlc3Npb24gKG5lc3RlZCBhc3NlcnRpb25zKSwgZWFjaCBvZiB3aGljaCByZWxhdGUgdG8g YW4NCgkJCQlhc3BlY3Qgb2YgdGhlIGJlaGF2aW9yLCB5ZXQgZW5jYXBzdWxhdGVkIHdpdGhpbiBh IHNpbmdsZSBhc3NlcnRpb24uDQoJCQkJVGhlcmUgYXJlIGFkdmFudGFnZXMgdG8gc2ltcGxpZnlp bmcgdGhlIHNldCBvZiBhc3NlcnRpb25zLiBUaGUgdWx0aW1hdGUgZ29hbCBvZg0KCQkJCXBvbGlj eSBpcyB0byBlbmFibGUgaW50ZXJvcGVyYWJpbGl0eS4gQnkga2VlcGluZyBhc3NlcnRpb24gZGVz aWduIGFzIHNpbXBsZSBhcw0KCQkJCXBvc3NpYmxlLCBBc3NlcnRpb24gQXV0aG9ycyB3aWxsIG1v cmUgbGlrZWx5IGJlIGFibGUgdG8gbWVldCB0aGF0IG9iamVjdGl2ZS4NCgkJCQk8L3A+DQoJCQkJ PHA+DQoJCQkJVGhlcmVmb3JlLCBBc3NlcnRpb24gQXV0aG9ycyBuZWVkIHRvIGhhdmUgYSBzcGVj aWZpYyBnb2FsIGluIG1pbmQgZm9yIHRoZSBhc3NlcnRpb25zDQoJCQkJdGhhdCB0aGV5IGF1dGhv ci4gQXNzZXJ0aW9uIHNwZWNpZmljYXRpb25zIHNob3VsZCBpbmNsdWRlIGEgZGV0YWlsZWQgc3Bl Y2lmaWNhdGlvbg0KCQkJCW9mIHRoZSBhc3NlcnRpb27igJlzIHNlbWFudGljcywgYSBzZXQgb2Yg dmFsaWQgcG9saWN5IHN1YmplY3RzIHRvIHdoaWNoIHRoZSBhc3NlcmN0aW9uDQoJCQkJbWF5YmUg YXR0YWNoZWQuIFRoZSBzcGVjaWZpY2F0aW9uIHNob3VsZCBhbHNvIGluY2x1ZGUgdGhlIHNjb3Bl IG9mIHRoZSBhc3NlcnRpb24NCgkJCQlpbiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgcG9s aWN5IHN1YmplY3QuIEZvciBleGFtcGxlLCBhbiBhc3NlcnRpb24gd2l0aA0KCQkJCUVuZHBvaW50 IFBvbGljeSBTdWJqZWN0IGNhbiBiZSBzY29wZWQgdG8gYSBnaXZlbiBtZXNzYWdlIGV4Y2hhbmdl IHdpdGggdGhhdCBlbmRwb2ludCwNCgkJCQlvciBpdCBjYW4gYmUgc2NvcGVkIHRvIGFsbCBtZXNz YWdlcyBleGNoYW5nZWQgd2l0aCB0aGF0IGVuZHBvaW50LiBUaGUgZm9ybWVyIGNhc2UNCgkJCQlw ZXJtaXRzIGEgY2xpZW50IHRvIHNlbGVjdCBhIGRpZmZlcmVudCBhbHRlcm5hdGl2ZSB3aXRoIGVh Y2ggc3VjY2Vzc2l2ZSBtZXNzYWdlDQoJCQkJZXhjaGFuZ2UuIEZpbmFsbHksIGlmIGEgc2V0IG9m IGFzc2VydGlvbnMgZGVzY3JpYmVzIGEgd2lkZSByYW5nZSBvZiBiZWhhdmlvcnMsDQoJCQkJdGhl IGFiaWxpdHkgdG8gY29tYmluZSBpbmRpdmlkdWFsIGFzc2VydGlvbnMgbWF5IGFsc28gbmVlZCB0 byBiZSBjb25zaWRlcmVkLg0KCQkJCUZvciBleGFtcGxlLCBpZiBhbiBhc3NlcnRpb24gYXBwbGll cyB0byB0aGUgU09BUCBwcm90b2NvbCwgaXQgd291bGQgYmUgbmVjZXNzYXJ5DQoJCQkJdG8gY29u c2lkZXIgaG93IGl0cyBwcmVzZW5jZSBtdXN0IGludGVyYWN0IHdpdGggb3RoZXIgcG9saWN5IGFz c2VydGlvbnMgdGhhdA0KCQkJCWFyZSBkZWZpbmVkIGZvciBzZWN1cml0eS4NCgkJCQk8L3A+DQoN CgkJCQk8cD5Bc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGl0 ZW1zIGluIGFuIA0KCQkJCQlhc3NlcnRpb24gc3BlY2lmaWNhdGlvbjoNCgkJCQkJPC9wPg0KCQkJ CTxwPg0KCQkJCQk8dWxpc3Q+DQoJCQkJCQk8aXRlbT48cD5UaGUgZGVmaW5pdGlvbiBvZiB0aGUg YXNzZXJ0aW9uJ3Mgc2VtYW50aWMgDQoJCQkJCQkJKFNlZSBiZXN0IHByYWN0aWNlIDxzcGVjcmVm IHJlZj0iQXNzZXJ0aW9uRGVmaW5pdGlvbnMiLz4pLjwvcD48L2l0ZW0+DQoJCQkJCQk8aXRlbT48 cD5UaGUgc3BlY2lmaWNhdGlvbiBvZiB0aGUgc2V0IG9mIHZhbGlkIHBvbGljeSBzdWJqZWN0cyB0 byB3aGljaCBhbiANCgkJCQkJCQlhc3NlcnRpb24gbWF5IGJlIGF0dGFjaGVkDQoJCQkJCQkJKFNl ZSBiZXN0IHByYWN0aWNlIDxzcGVjcmVmIHJlZj0iYnAtV1NETC1wb2xpY3ktc3ViamVjdCIvPiku PC9wPjwvaXRlbT4NCgkJCQkJCTxpdGVtPjxwPlRoZSBzY29wZSBvZiB0aGUgYXNzZXJ0aW9uIGlu IHRoZSBjb250ZXh0IG9mIGEgcGFydGljdWxhciBwb2xpY3kgDQoJCQkJCQkJc3ViamVjdCAoU2Vl IGJlc3QgcHJhY3RpY2VzIGluIFNlY3Rpb24gPHNwZWNyZWYgcmVmPSJsZXZlbHMtb2YtYWJzdHJh Y3Rpb24iLz4pLjwvcD48L2l0ZW0+DQoJCQkJCQk8aXRlbT48cD5BbnkgY29tcG9zaXRpb24gY29u c2lkZXJhdGlvbnMgaWYgdGhlIGFzc2VydGlvbiBpcyB1c2VkIHdpdGgNCgkJCQkJCW90aGVyIGFz c2VydGlvbnMgaW4gYSBjb250ZXh0DQoJCQkJCQkJKFNlZSBiZXN0IHByYWN0aWNlIDxzcGVjcmVm IHJlZj0iYnAtc3BlY2lmeS1jb21wb3NpdGlvbiIvPikuPC9wPjwvaXRlbT4NCgkJCQkJPC91bGlz dD4NCgkJCQk8L3A+DQoJCQkJDQoJCQkJPHA+DQoJCQkJVGhlIFdTLVBvbGljeSBBdHRhY2htZW50 IHNwZWNpZmljYXRpb24gZGVmaW5lcyBhIG51bWJlciBvZiBkaWZmZXJlbnQgDQoJCQkJcG9saWN5 IHN1YmplY3RzIHRvIHdoaWNoIGFuIGFzc2VydGlvbiBjYW4gYmUgYXR0YWNoZWQuIEZvciBhdHRh Y2hpbmcgdG8gDQoJCQkJCVdTREwgc3ViamVjdHMgc2VlIDxzcGVjcmVmIHJlZj0ibGV2ZWxzLW9m LWFic3RyYWN0aW9uIi8+IGZvciBtb3JlIGRldGFpbC4gDQoJCQkJQWRkaXRpb25hbGx5LCB0aGUg ZnJhbWV3b3JrIHByb3ZpZGVzIGZvciB0aGUgbWVhbnMgdG8gZXh0ZW5kIHRoZSBzZXQgb2YgDQoJ CQkJcG9saWN5IHN1YmplY3RzIGJleW9uZCB0aGUgc2V0IG9mIHN1YmplY3RzIGRlZmluZWQgaW4g dGhlIFdTLVBvbGljeSANCgkJCQlBdHRhY2htZW50IHNwZWNpZmljYXRpb24uDQoJCQkJPC9wPg0K CQkJCTxwPkFsdGhvdWdoIGEgcG9saWN5IA0KCQkJCWFzc2VydGlvbiBtYXkgYmUgY29uc3RyYWlu ZWQgdG8gYSBzcGVjaWZpYyBzZXQgb2YgcG9saWN5IHN1YmplY3RzIGJ5IA0KCQkJCUFzc2VydGlv biBBdXRob3JzLCBpdHMgc2VtYW50aWNzIHNob3VsZCBub3QgYmUgZGVwZW5kZW50IHVwb24gdGhl IA0KCQkJCW1lY2hhbmlzbSBieSB3aGljaCB0aGUgcG9saWN5IGV4cHJlc3Npb24gaXMgYXR0YWNo ZWQgdG8gYSBnaXZlbiBwb2xpY3kgDQoJCQkJc3ViamVjdC4gRm9yIGluc3RhbmNlLCBhbiBhc3Nl cnRpb24gIkZvbyIgaGFzIHRoZSBzYW1lIHNlbWFudGljIHdoZW4gDQoJCQkJYXR0YWNoZWQgdG8g YW4gb3BlcmF0aW9uIHBvbGljeSBzdWJqZWN0IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCB3YXMg DQoJCQkJYXR0YWNoZWQgdXNpbmcgWE1MIGVsZW1lbnQgcG9saWN5IGF0dGFjaG1lbnQgb3IgdGhl IGV4dGVybmFsIFVSSSANCgkJCQlhdHRhY2htZW50IG1lY2hhbmlzbS4gSW5kZXBlbmRlbmNlIGZy b20gYSBzcGVjaWZpYyBhdHRhY2htZW50IG1lY2hhbmlzbSANCgkJCQlhbGxvd3MgcG9saWN5IHRv b2xzIHRvIGNob29zZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBtZWNoYW5pc20gdG8gYXR0YWNoIGEg DQoJCQkJcG9saWN5IHdpdGhvdXQgaGF2aW5nIHRvIGFuYWx5emUgdGhlIGNvbnRlbnRzIG9mIHRo ZSBwb2xpY3kuIA0KCQkJCTwvcD4NCgkJCQk8cCByb2xlPSJwcmFjdGljZSIgaWQ9ImJwLWFzc2Vy dGlvbi1zZW1hbnRpY3MiPjxxdW90ZT5TZW1hbnRpY3MgSW5kZXBlbmRlbnQgb2YgDQoJCQkJQXR0 YWNobWVudCBNZWNoYW5pc21zPC9xdW90ZT48cXVvdGU+DQoJCQkgICAgVGhlIHNlbWFudGljcyBv ZiBhIHBvbGljeSBhc3NlcnRpb24gc2hvdWxkIG5vdCBkZXBlbmQgb24gdGhlIA0KCQkJCWF0dGFj aG1lbnQgbWVjaGFuaXNtIHVzZWQuPC9xdW90ZT4NCgkJCQk8L3A+DQoJCQkJDQoJCQkJPGVkbm90 ZT4NCgkJCQkJPGVkdGV4dD5BcHJpbCAyNXRoIDA3LCBlZGl0b3JzIA0KCQkJCQk8bG9jIGhyZWY9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDcvMDQvMjUtd3MtcG9saWN5LWVkcy1taW51dGVzLmh0bWwj aXRlbTAzIj5kZWNpZGVkPC9sb2M+IHRvIGFkZCBHMiAtIA0KCQkJCQkiQXNzZXJ0aW9uIEF1dGhv cnMgc2hvdWxkIGRlZmluZSANCgkJCQkJcG9saWN5IGFzc2VydGlvbnMgZm9yIGJlaGF2aW9ycyB0 aGF0IGFyZSByZWxldmFudCB0byBjb21wYXRpYmlsaXR5IHRlc3RzLCANCgkJCQkJc3VjaCBhcyB3 ZWIgc2VydmljZSBwcm90b2NvbHMgdGhhdCBtYW5pZmVzdCBvbiB0aGUgd2lyZS4iIC0gdG8gU2Vj dGlvbiA1LjEuIA0KCQkJCQlNYXkgOXRoIDA3LCBhbiBpc3N1ZSB3YXMgb3BlbmVkIGFnYWluc3Qg RzIgLSBpc3N1ZSANCgkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJs aWMvc2hvd19idWcuY2dpP2lkPTQ1NjYiPjQ1NjY8L2xvYz4uDQoJCSAgICAgICAgICAgIDwvZWR0 ZXh0Pg0KCQkJCTwvZWRub3RlPg0KCQkJCTxwIHJvbGU9InByYWN0aWNlIiBpZD0iYnAtY29tcGF0 aWJpbGl0eS10ZXN0cyI+DQoJCQkJCTxxdW90ZT5CZWhhdmlvcnMgUmVsZXZhbnQgdG8gQ29tcGF0 aWJpbGl0eSBUZXN0czwvcXVvdGU+DQoJCQkJCTxxdW90ZT4NCgkJCQkJCVdoZW5ldmVyIHBvc3Np YmxlLCBBc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgZGVmaW5lIHBvbGljeSBhc3N3ZXJ0aW9ucw0K CQkJCQkJZm9yIGJlaGF2aW9ycyB0aGF0IGFyZSByZWxldmFudCB0byBjb21wYXRpYmlsaXR5IHRl c3RzLCBzdWNoIGFzIHdlYiBzZXJ2aWNlDQoJCQkJCQlwcm90b2NvbHMgdGhhdCBtYW5pZmVzdCBv biB0aGUgd2lyZS4NCgkJCQkJPC9xdW90ZT4NCgkJCQk8L3A+DQoJCQkJPGVkbm90ZT4NCgkJCQkJ PGVkdGV4dD5QbGFjZSBob2xkZXIuPC9lZHRleHQ+DQoJCQkJPC9lZG5vdGU+DQoJCQkJDQoJCTwv ZGl2Mj4NCg0KCQk8ZGl2MiBpZD0iY29tcGFjdC1mdWxsIj4NCgkJCTxoZWFkPkF1dGhvcmluZyBT dHlsZXMgPC9oZWFkPg0KCQkJPHA+V1MtUG9saWN5IHN1cHBvcnRzIHR3byBkaWZmZXJlbnQgYXV0 aG9yaW5nIHN0eWxlcywgY29tcGFjdCBmb3JtIGFuZA0KCQkJCW5vcm1hbCBmb3JtLiBBIGNvbXBh Y3QgZm9ybSBpcyBvbmUgaW4gd2hpY2ggYW4gZXhwcmVzc2lvbiBjb25zaXN0cyBvZg0KCQkJCXRo cmVlIGNvbnN0cnVjdHM6IGFuIGF0dHJpYnV0ZSB0byBkZWNvcmF0ZSBhbiBhc3NlcnRpb24gKHRv IGluZGljYXRlDQoJCQkJd2hldGhlciBpdCBpcyByZXF1aXJlZCBvciBvcHRpb25hbCksIHNlbWFu dGljcyBmb3IgcmVjdXJzaXZlbHkgbmVzdGVkDQoJCQkJcG9saWN5IG9wZXJhdG9ycywgYW5kIGEg cG9saWN5IHJlZmVyZW5jZS9pbmNsdXNpb24gbWVjaGFuaXNtLg0KCQkJCUEgcG9saWN5IGV4cHJl c3Npb24gaW4gdGhlIGNvbXBhY3QgZm9ybSBjYW4gYmUgdHJhbnNsYXRlZCBpbnRvIGl0cw0KCQkJ CW5vcm1hbCBmb3JtIHVzaW5nIHRoZSBwb2xpY3kgbm9ybWFsaXphdGlvbiBhbGdvcml0aG0gZGVz Y3JpYmVkIGluIHRoZQ0KCQkJCVdlYiBTZXJ2aWNlIFBvbGljeSBGcmFtZXdvcmsgKHNlZSBzZWN0 aW9uIDQuMyBDb21wYWN0IFBvbGljeQ0KCQkJCUV4cHJlc3Npb24pLiANCgkJCTwvcD4NCgkJCTxw PlRoZSB0d28gZm9ybXMgb2YgYSBwb2xpY3kgZXhwcmVzc2lvbiBhcmUgc2VtYW50aWNhbGx5DQoJ CQkJZXF1aXZhbGVudC4gV2hlbiBtdWx0aXBsZSBhbHRlcm5hdGl2ZXMgYXJlIHByZXNlbnQgaW4g YSBwb2xpY3ksIHRoZQ0KCQkJCW5vcm1hbCBmb3JtIG1heSBleHByZXNzIHRoZSBjaG9pY2VzIG1v cmUgZXhwbGljaXRseS4gT24gdGhlIG90aGVyIGhhbmQsDQoJCQkJdGhlIGNvbXBhY3QgZm9ybSBt YXkgYmUgbW9yZSByZWFkYWJsZSBmb3IgaHVtYW5zIHdoZW4gYW4gYXNzZXJ0aW9uIGlzDQoJCQkJ bWFya2VkIGFzIG9wdGlvbmFsIHVzaW5nIHRoZSA8Y29kZT53c3A6b3B0aW9uYWw8L2NvZGU+IGF0 dHJpYnV0ZS4NCgkJCQlBIHBvbGljeSBwcm9jZXNzb3IgbWF5IG5vcm1hbGl6ZSBhIHBvbGljeSBl eHByZXNzaW9uIG9yaWdpbmFsbHkgYXV0aG9yZWQNCgkJCQlpbiBjb21wYWN0IGZvcm0gYXQgYW55 IHRpbWUgd2l0aG91dCBjaGFuZ2luZyB0aGUgc2VtYW50aWNzIG9mIHRoZQ0KCQkJCXBvbGljeS4g SW4gZ2VuZXJhbCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGd1YXJhbnRlZSBpbiB3aGF0IGZvcm0g YQ0KCQkJCXBvbGljeSBleHByZXNzaW9uIHdvdWxkIGJlIHdoZW4gaXQgaXMgcHJvY2Vzc2VkLiBB cyBhIHJlc3VsdCwgdGhlDQoJCQkJZGVzY3JpcHRpb24gZm9yIGEgcG9saWN5IGFzc2VydGlvbiBz aG91bGQgbm90IGRlcGVuZCBvbiB0aGUgc3R5bGUgdXNlZA0KCQkJCXRvIGF1dGhvciBhIHBvbGlj eSBleHByZXNzaW9uIHRoYXQgY29udGFpbnMgdGhlIGFzc2VydGlvbi4NCgkJCTwvcD4NCgkJCTxw IHJvbGU9InByYWN0aWNlIiBpZD0iYnAtc2VtYW50aWNzLWFuZC1mb3JtIj4NCgkJCQk8cXVvdGU+ U2VtYW50aWNzIEluZGVwZW5kZW50IG9mIHRoZSBGb3JtPC9xdW90ZT4NCgkJCQk8cXVvdGU+VGhl IHNlbWFudGljcyBvZiBhbiBhc3NlcnRpb24gc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mDQoJCQkJ CXRoZSBmb3JtIChjb21wYWN0IG9yIG5vcm1hbCBmb3JtKSBvZiBwb2xpY3kgZXhwcmVzc2lvbnMg dGhhdCBjb250YWluIHRoZQ0KCQkJCQlhc3NlcnRpb24uPC9xdW90ZT4NCgkJCTwvcD4NCgkJCTxw Pg0KCQkJCUluIHRoZSBleGFtcGxlIGJlbG93LCB0aGUgcG9saWN5IGV4cHJlc3Npb24gaXMgc2hv d24gaW4gaXRzIHR3byBmb3JtcywNCgkJCQljb21wYWN0IGFuZCBub3JtYWwuIEluIGNvbXBhY3Qg Zm9ybSwgdGhlIDxjb2RlPndzcm1wOlJNQXNzZXJ0aW9uPC9jb2RlPiBhc3NlcnRpb24NCgkJCQlp cyBhdWdtZW50ZWQgYnkgdGhlIDxjb2RlPndzcDpPcHRpb25hbD0idHJ1ZSI8L2NvZGU+IGF0dHJp YnV0ZS4NCgkJCQlXaGlsZSB0aGUgY29tcGFjdCBmb3JtIG9mIHRoZSBleHByZXNzaW9uIG1pZ2h0 IGJlIG1vcmUgaHVtYW4gcmVhZGFibGUsIHRoZSBzZW1hbnRpY3Mgb2YgdGhlDQoJCQkJcGFydGlj dWxhciBhc3NlcnRpb24gYXJlIGluZGVwZW5kZW50IG9mIHRoZSBmb3JtIGFuZCBvZiB0aGUgcHJl c2VuY2UgKG9yIGFic2VuY2UpDQoJCQkJb2YgdGhlIDxjb2RlPndzcDpvcHRpb25hbDwvY29kZT4g YXR0cmlidXRlLg0KCQkJPC9wPg0KCQkJDQoJCQk8ZXhhbXBsZT4NCgkJCQk8aGVhZD5Qb2xpY3kg RXhwcmVzc2lvbiBpbiBDb21wYWN0IEZvcm08L2hlYWQ+DQo8ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2 ZSI+Jmx0O3dzcDpQb2xpY3kgeG1sbnM6d3NwPScmbnN1cmk7Jw0KCXhtbG5zOnNwPSdodHRwOi8v ZG9jcy5vYXNpcy1vcGVuLm9yZy93cy1zeC93cy1zZWN1cml0eXBvbGljeS8yMDA3MDInDQoJeG1s bnM6d3NybXA9J2h0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzLXJ4L3dzcm1wLzIwMDYwOCcm Z3Q7DQombHQ7d3NybXA6Uk1Bc3NlcnRpb24gd3NwOk9wdGlvbmFsPSJ0cnVlIi8mZ3Q7DQogICZs dDt3c3A6RXhhY3RseU9uZSZndDsNCiAgICAmbHQ7d3NwOkFsbCZndDsNCiAgICAgICZsdDtzcDpU cmFuc3BvcnRCaW5kaW5nJmd0Ow0KICAgICAgICAmbHQ7d3NwOlBvbGljeSZndDsNCiAgICAgICAg ICAmbHQ7c3A6VHJhbnNwb3J0VG9rZW4mZ3Q7DQogICAgICAgICAgICAmbHQ7d3NwOlBvbGljeSZn dDsNCgkgICAgICAgICAgJmx0O3NwOkh0dHBzVG9rZW4mZ3Q7DQoJICAgICAgICAgICAgJmx0O3dz cDpQb2xpY3kmZ3Q7DQoJICAgICAgICAgICAgICZsdDtzcDpSZXF1aXJlQ2xpZW50Q2VydGlmaWNh dGUvJmd0Ow0KCSAgICAgICAgICAgICZsdDsvd3NwOlBvbGljeSZndDsNCgkgICAgICAgICAgJmx0 Oy9zcDpIdHRwc1Rva2VuJmd0Ow0KICAgICAgICAgICAgJmx0Oy93c3A6UG9saWN5Jmd0Ow0KICAg ICAgICAgICZsdDsvc3A6VHJhbnNwb3J0VG9rZW4mZ3Q7DQogICAgICAgICZsdDsvd3NwOlBvbGlj eSZndDsNCiAgICAgICZsdDsvc3A6VHJhbnNwb3J0QmluZGluZyZndDsNCiAgICAmbHQ7L3dzcDpB bGwmZ3Q7DQogICZsdDsvd3NwOkV4YWN0bHlPbmUmZ3Q7DQombHQ7L3dzcDpQb2xpY3kmZ3Q7PC9l Zz4NCgkJCTwvZXhhbXBsZT4NCgkJCQ0KCQkJPGV4YW1wbGU+DQoJCQkJPGhlYWQ+UG9saWN5IEV4 cHJlc3Npb24gaW4gTm9ybWFsIEZvcm08L2hlYWQ+DQo8ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+ Jmx0O3dzcDpQb2xpY3kgeG1sbnM6d3NwPScmbnN1cmk7Jw0KCXhtbG5zOnNwPSdodHRwOi8vZG9j cy5vYXNpcy1vcGVuLm9yZy93cy1zeC93cy1zZWN1cml0eXBvbGljeS8yMDA3MDInIA0KCXhtbG5z Ondzcm1wPSdodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93cy1yeC93c3JtcC8yMDA2MDgnJmd0 Ow0KICAmbHQ7d3NwOkV4YWN0bHlPbmUmZ3Q7IA0KICAgICZsdDt3c3A6QWxsJmd0Ow0KICAgICAg Jmx0O3dzcm1wOlJNQXNzZXJ0aW9uLyZndDsNCiAgICAgICZsdDtzcDpUcmFuc3BvcnRCaW5kaW5n Jmd0Ow0KICAgICAgICAmbHQ7d3NwOlBvbGljeSZndDsNCiAgICAgICAgICAmbHQ7c3A6VHJhbnNw b3J0VG9rZW4mZ3Q7DQogICAgICAgICAgICAmbHQ7d3NwOlBvbGljeSZndDsNCgkgICAgICAgICAg Jmx0O3NwOkh0dHBzVG9rZW4mZ3Q7DQoJICAgICAgICAgICAgJmx0O3dzcDpQb2xpY3kmZ3Q7DQoJ ICAgICAgICAgICAgICAmbHQ7c3A6UmVxdWlyZUNsaWVudENlcnRpZmljYXRlLyZndDsNCgkgICAg ICAgICAgICAmbHQ7L3dzcDpQb2xpY3kmZ3Q7DQoJICAgICAgICAgICZsdDsvc3A6SHR0cHNUb2tl biZndDsNCiAgICAgICAgICAgICZsdDsvd3NwOlBvbGljeSZndDsNCiAgICAgICAgICAmbHQ7L3Nw OlRyYW5zcG9ydFRva2VuJmd0Ow0KICAgICAgICAmbHQ7L3dzcDpQb2xpY3kmZ3Q7DQogICAgICAm bHQ7L3NwOlRyYW5zcG9ydEJpbmRpbmcmZ3Q7DQogICAgJmx0Oy93c3A6QWxsJmd0Ow0KICAgICAg ICAgIA0KICAgICZsdDt3c3A6QWxsJmd0Ow0KICAgICAgJmx0O3NwOlRyYW5zcG9ydEJpbmRpbmcm Z3Q7DQogICAgICAgICZsdDt3c3A6UG9saWN5Jmd0Ow0KICAgICAgICAgICZsdDtzcDpUcmFuc3Bv cnRUb2tlbiZndDsNCiAgICAgICAgICAgICZsdDt3c3A6UG9saWN5Jmd0Ow0KCSAgICAgICAgICAm bHQ7c3A6SHR0cHNUb2tlbiZndDsNCgkgICAgICAgICAgICAmbHQ7d3NwOlBvbGljeSZndDsNCgkg ICAgICAgICAgICAgICZsdDtzcDpSZXF1aXJlQ2xpZW50Q2VydGlmaWNhdGUvJmd0Ow0KCSAgICAg ICAgICAgICZsdDsvd3NwOlBvbGljeSZndDsNCgkgICAgICAgICAgJmx0Oy9zcDpIdHRwc1Rva2Vu Jmd0Ow0KICAgICAgICAgICAgJmx0Oy93c3A6UG9saWN5Jmd0Ow0KICAgICAgICAgICZsdDsvc3A6 VHJhbnNwb3J0VG9rZW4mZ3Q7DQogICAgICAgICZsdDsvd3NwOlBvbGljeSZndDsNCiAgICAgICZs dDsvc3A6VHJhbnNwb3J0QmluZGluZyZndDsNCiAgICAmbHQ7L3dzcDpBbGwmZ3Q7DQogICZsdDsv d3NwOkV4YWN0bHlPbmUmZ3Q7DQombHQ7L3dzcDpQb2xpY3kmZ3Q7PC9lZz4NCgkJCTwvZXhhbXBs ZT4NCgkJPC9kaXYyPg0KCQkNCgkJCTxkaXYyIGlkPSJuZXctZ3VpZGVsaW5lcy1kb21haW5zIj4N CgkJCTxoZWFkPkNvbnNpZGVyYXRpb25zIHdoZW4gTW9kZWxpbmcgTmV3IEFzc2VydGlvbnM8L2hl YWQ+DQoJCQkJPHA+V2hlbiBjcmVhdGluZyBhIG5ldyBwb2xpY3kgZG9tYWluLCBpdCBpcyBpbXBv cnRhbnQgdG8NCiAgICAgICAgIAkJdW5kZXJzdGFuZCBob3cgcG9saWN5IGV4cHJlc3Npb25zIGFy ZSB1c2VkIGJ5IGENCgkgICAgICAgIAlmcmFtZXdvcmsgaW1wbGVtZW50YXRpb24gdGhhdCBoYXMg Zm9sbG93ZWQgdGhlIHNwZWNpZmljYXRpb25zLiANCgkgICAgICAgIAk8L3A+DQoJICAgICAgICAJ PHA+VGhlIGV4YW1wbGVzIGdpdmVuIGluIHRoaXMgZG9jdW1lbnQgcmVmZXJlbmNlIFdTLVBvbGlj eSBsaWtlIFdTLVNlY3VyaXR5UG9saWN5IGFuZCBXUy1STSBQb2xpY3kuIA0KCSAgICAgICAgCVRo ZXNlIHBvbGljeSBleHByZXNzaW9ucyByZXByZXNlbnQgd2ViIHNlcnZpY2VzIG1lc3NhZ2UgZXhj aGFuZ2UgcmVxdWlyZW1lbnRzLCBidXQgcG9saWN5IGF1dGhvcmluZyBjYW4NCgkgICAgICAgIAli ZSBkb25lIGJ5IGluZGl2aWR1YWwgZ3JvdXBzIHRoYXQgd2lzaCB0byByZXByZXNlbnQgd2ViIHNl cnZpY2VzIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cyBhbmQNCiAgICAgICAgIAkJZGVwbG95bWVu dHMgdGhhdCB3aXNoIHRvIHJldXNlIHRoZSBXUy1Qb2xpY3kgZnJhbWV3b3JrIGluDQogICAgICAg ICAJCW9yZGVyIHRvIGVuYWJsZSBkeW5hbWljIG5lZ290aWF0aW9uIG9mIGJ1c2luZXNzIHJlcXVp cmVtZW50cw0KICAgICAgICAgCQlhbmQgY2FwYWJpbGl0aWVzIGF0IHJ1bnRpbWUuDQogICAgICAg ICAJCTwvcD4NCiAgICAgICAgIAkJPGRpdjMgaWQ9Im1pbmltYWwtYXBwcm9hY2giPg0KICAgICAg ICAgIAkJCTxoZWFkPk1pbmltYWwgYXBwcm9hY2g8L2hlYWQ+DQoJCQkJCTxwPk5ldyBBc3NlcnRp b24gQXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0byB0cnkgdG8gbm90IG92ZXJsb2FkIGFzc2VydGlv bnMuIEEgc2luZ2xlIGFzc2VydGlvbiBpbmRpY2F0ZXMgYSBzaW5nbGUNCiAgICAgICAgCQkgCWJl aGF2aW9yLiBTZXRzIG9mIGFzc2VydGlvbnMgY2FuIGJ5IGdyb3VwZWQgYnkgYW4gb3BlcmF0b3Ig ImFsbCIuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgYSByZWxhdGlvbnNoaXAgYmV0d2Vl bg0KICAgICAgICAgCQkJdGhlIGFzc2VydGlvbnMgYW5kIHRoZXkgbm93IGNvbnN0aXR1dGUgYSBw b2xpY3kgYWx0ZXJuYXRpdmUuIA0KICAgICAgICAgCQkJPC9wPg0KICAgICAgICAgCQkJPHA+SWYg Z3JvdXBpbmcgaXMgdXRpbGl6ZWQsIGNob2ljZXMgYmV0d2VlbiBhbHRlcm5hdGl2ZXMgY2FuIGJl IGluZGljYXRlZCBieQ0KICAgICAgICAgCQkJYW4gImV4YWN0bHkgb25lIiBvcGVyYXRvci4gVGhp cyBiYXNpYyBzZXQgb2Ygb3BlcmF0b3JzIGFsbG93cw0KICAgICAgICAgCQkJQXNzZXJ0aW9uIEF1 dGhvcnMgYSB3aWRlIHJhbmdlIG9mIG9wdGlvbnMgZm9yIGV4cHJlc3NpbmcgdGhlIHBvc3NpYmxl IGNvbWJpbmF0aW9ucyBvZiBhc3NlcnRpb25zIHdpdGhpbiB0aGVpciBkb21haW4uDQogICAgICAg ICAJCQk8L3A+DQoJCQkJCTxwPkl0IHJlcXVpcmVzIGEgZ29vZCBkZWFsIG9mIGVmZm9ydCB0byBl dmFsdWF0ZSB0aGUNCiAgICAgICAgIAkJCWNhcGFiaWxpdGllcyBvZiBhIGRvbWFpbiBhbmQgY2Fw dHVyZSB0aGVtIGluIGEgd2F5IHRoYXQNCiAgICAgICAgIAkJCXJlZmxlY3RzIHRoZSBvcHRpb25z IG9mIHRoZSBkb21haW4gaWYgdGhlIGRvbWFpbiBoYXMgYSBsb3Qgb2YNCiAgICAgICAgIAkJCWFz c2VydGlvbnMgdG8gZGVmaW5lLiAgSW50ZXJvcGVyYWJpbGl0eSB0ZXN0aW5nIG9mIG5ldyBwb2xp Y3kNCiAgICAgICAgIAkJCWRvbWFpbnMgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoYXQgY29u c3VtZXJzIGFuZCBwcm92aWRlcnMNCiAgICAgICAgIAkJCWFyZSBhYmxlIHRvIHVzZSB0aGUgbmV3 IGRvbWFpbiBhc3NlcnRpb25zLiBUbyBmYWNpbGl0YXRlIHByb3BlciANCgkJCQkJcHJvZ3Jlc3Np b24gb2YgYW4gYXNzZXJ0aW9uLCBBc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgc3RhcnQgd2l0aCAN CgkJCQkJYSBzaW1wbGUgd29ya2luZyBhc3NlcnRpb24gdGhhdCBhbGxvd3MgZXh0ZW5zaWJpbGl0 eS4gQXMgdGhlIGRlc2lnbiANCgkJCQkJd29yayBwcm9ncmVzc2VzLCBvbmUgbWF5IGFkZCBtb3Jl IHBhcmFtZXRlcnMgb3IgbmVzdGVkIHBvbGljeSBhc3NlcnRpb25zIA0KCQkJCQl0byBtZWV0IG9u ZSdzIGludGVyb3BlcmFiaWxpdHkgbmVlZHMuIA0KICAgICAgICAgCQkJPC9wPiAgICAgICAgCQkN CiAgICAgICAgICAJCQk8cCByb2xlPSJwcmFjdGljZSIgaWQ9ImJwLWFzc2VydGlvbi1zdGFydCI+ PHF1b3RlPlN0YXJ0IHdpdGggU2ltcGxlIEFzc2VydGlvbjwvcXVvdGU+DQogICAgICAgICAgCQkJ CTxxdW90ZT5Bc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgc3RhcnQgd2l0aCBhIHNpbXBsZSB3b3Jr aW5nIGFzc2VydGlvbiANCiAgICAgICAgICAJCQkJdGhhdCBhbGxvd3MgYXNzZXJ0aW9uIHBhcmFt ZXRlciBleHRlbnNpYmlsaXR5LiA8L3F1b3RlPg0KICAgICAgICAgIAkJCTwvcD4NCiAgICAgICAg ICAJCQk8cD5OZXcgQXNzZXJ0aW9uIEF1dGhvcnMgYXJlIGVuY291cmFnZWQgdG8gbG9vayBhdCA8 YmlicmVmIHJlZj0iV1MtUk0tUG9saWN5Ii8+IHRvIHNlZSBhbiBleGFtcGxlIG9mIGENCiAgICAg ICAgIAkJCXJlbGF0aXZlbHkgc2ltcGxlIGRvbWFpbiB0aGF0IGhhcyBkZWZpbmVkIHRocmVlIGFz c2VydGlvbnMuIEFzc2VydGlvbiBBdXRob3JzIGFyZSBlbmNvdXJhZ2VkIHRvIGxvb2sgYXQgPGJp YnJlZg0KICAgICAgICAgCQkJcmVmPSJXUy1TZWN1cml0eVBvbGljeSIvPiB0byBzZWUgYW4gZXhh bXBsZSBvZiBhIGNvbXBsZXggZG9tYWluIHRoYXQgaGFzIGJlZW4gZGVjb21wb3NlZCBpbnRvIGEg c2V0IG9mIHBvbGljeSBleHByZXNzaW9ucy4NCiAgICAgICAgCQkJPC9wPiANCiAgICAgICAgCQk8 L2RpdjM+DQogICAgICAgIAkJPGRpdjMgaWQ9IlFOYW1lX2FuZF9YTUxfSW5mb3JtYXRpb25fU2V0 X3JlcHJlc2VudGF0aW9uIj4NCiAgICAgICAgICAJCTxoZWFkPlFOYW1lIGFuZCBYTUwgSW5mb3Jt YXRpb24gU2V0IHJlcHJlc2VudGF0aW9uPC9oZWFkPg0KICAgICAgICAgIAkJCTxwPldlYiBTZXJ2 aWNlcyBQb2xpY3kgbGFuZ3VhZ2UgYWxsb3dzIEFzc2VydGlvbiBBdXRob3JzIHRvIGludmVudA0K ICAgICAgICAgICAgCQl0aGVpciBvd24gWE1MIGRpYWxlY3RzIHRvIHJlcHJlc2VudCBwb2xpY3kg YXNzZXJ0aW9ucy4gVGhlIHBvbGljeSBsYW5ndWFnZSByZWxpZXMgb25seQ0KICAgICAgICAgICAg CQlvbiB0aGUgcG9saWN5IGFzc2VydGlvbiBYTUwgZWxlbWVudCBRTmFtZS4gVGhpcyBRTmFtZSBp cyB1bmlxdWUgYW5kIGlkZW50aWZpZXMgdGhlDQogICAgICAgICAgICAJCWJlaGF2aW9yIHJlcHJl c2VudGVkIGJ5IGEgcG9saWN5IGFzc2VydGlvbi4gIEFzc2VydGlvbiBBdXRob3JzIGhhdmUgdGhl IG9wdGlvbiB0bw0KICAgICAgICAgICAgCQlyZXByZXNlbnQgYW4gYXNzZXJ0aW9uIHBhcmFtZXRl ciBhcyBhIGNoaWxkIGVsZW1lbnQgKGJ5IGxldmVyYWdpbmcgbmF0dXJhbCBYTUwgbmVzdGluZykN CiAgICAgICAgICAgIAkJb3IgYW4gYXR0cmlidXRlIG9mIGFuIGFzc2VydGlvbi4gVGhlIGdlbmVy YWwgZ3VpZGVsaW5lcyBvbiB3aGVuIHRvIHVzZSBYTUwgZWxlbWVudHMNCiAgICAgICAgICAJCQl2 ZXJzdXMgYXR0cmlidXRlcyBhcHBseSBpczogVXNlIGEgdW5pcXVlIFFOYW1lIHRvIGlkZW50aWZ5 IGEgZGlzdGluY3QgYmVoYXZpb3IgDQogICAgICAgICAgCQkJPC9wPg0KICAgICAgICAgICAgCQk8 cCByb2xlPSJwcmFjdGljZSIgaWQ9ImJwLXVuaXF1ZS1xbmFtZXMiPiA8cXVvdGU+VXNlIFVuaXF1 ZSBRTmFtZXM8L3F1b3RlPg0KICAgICAgICAgICAgCQkgICA8cXVvdGU+QXNzZXJ0aW9uIEF1dGhv cnMgc2hvdWxkIHVzZSBhIHVuaXF1ZSBRTmFtZSB0byBpZGVudGlmeSBhIGRpc3RpbmN0IGJlaGF2 aW9yLjwvcXVvdGU+IA0KICAgICAgICAgICAgCQk8L3A+CQkNCgkJCSAgCSAgICA8cD4gQW4gZXhh bXBsZSBvZiB0aGlzIG1ldGhvZCBpcyBnaXZlbiBpbiB0aGUgV2ViIFNlcnZpY2VzIFJlbGlhYmxl IE1lc3NhZ2luZyBQb2xpY3kgZG9jdW1lbnQgWzxiaWJyZWYgcmVmPSJXUy1STS1Qb2xpY3kiLz5d DQoJCQkgIAkgICAgYW5kIGluY2x1ZGVkIGJlbG93IGZvciBpbGx1c3RyYXRpb24uICBUaGUgdW5p cXVlIFFuYW1lIGZvciBSTSBpbiB0aGlzIGNhc2UgaXMgIlJNQXNzZXJ0aW9uIi4NCiAgICAgICAg ICAgIAkJPC9wPg0KICAgICAgICAgIAkJCTxwPlRoZSBzeW50YXggb2YgYW4gYXNzZXJ0aW9uIGNh biBiZSByZXByZXNlbnRlZCB1c2luZyBhbiBYTUwgb3V0bGluZSAocGx1cyBhbiBYTUwgc2NoZW1h DQogICAgICAgICAgICAJCWRvY3VtZW50KSB0byBzcGVjaWZ5IHRoZSBzeW50YXggb2YgYW4gYXNz ZXJ0aW9uLg0KICAgICAgICAgICAgCQk8L3A+DQogICAgICAgICAgICAJCSA8cCByb2xlPSJwcmFj dGljZSIgaWQ9IlhNTE91dGxpbmUiPiA8cXVvdGU+UHJvdmlkZSBhbiBYTUwgT3V0bGluZTwvcXVv dGU+ID4NCiAgICAgICAgICAgIAkgICAgICAgIDxxdW90ZT5Bc3NlcnRpb24gYXV0aG9ycyBzaG91 bGQgcHJvdmlkZSBhbiBYTUwgb3V0bGluZSBwbHVzIGFuIFhNTCBzY2hlbWEgdG8gc3BlY2lmeSB0 aGUgc3ludGF4IG9mIGFuIGFzc2VydGlvbi48L3F1b3RlPg0KCQkJICAJICAgIDwvcD4NCiA8ZXhh bXBsZT4JCQ0KIDxlZz4NCiAmbHQ7d3NybXA6Uk1Bc3NlcnRpb24gW3dzcDpPcHRpb25hbD0idHJ1 ZSJdPyAuLi4mZ3Q7IA0KICAgJmx0O3dzcDpQb2xpY3kgJmd0Ow0KICAgICBbICZsdDt3c3JtcDpT ZXF1ZW5jZVNUUi8mZ3Q7IHwNCiAgICAgICAmbHQ7d3NybXA6U2VxdWVuY2VUcmFuc3BvcnRTZWN1 cml0eS8mZ3Q7IF0gPw0KICAgICAmbHQ7d3NybXA6RGVsaXZlcnlBc3N1cmFuY2UvJmd0OyANCiAg ICAgJmx0O3dzcDpQb2xpY3kgJmd0Ow0KICAgICAgICBbICZsdDt3c3JtcDpFeGFjdGx5T25jZS8m Z3Q7IHwgDQogICAgICAgICAgJmx0O3dzcm1wOkF0TGVhc3RPbmNlLyZndDsgfA0KICAgICAgICAg ICZsdDt3c3JtcDpBdE1vc3RPbmNlLyZndDsgXQ0KICAgICAgICAmbHQ7d3NybXA6SW5PcmRlci8m Z3Q7ID8NCiAgICAgJmx0Oy93c3A6UG9saWN5Jmd0Ow0KICAgICAmbHQ7L3dzcm1wOkRlbGl2ZXJ5 QXNzdXJhbmNlJmd0OyBdID8NCiAgICAmbHQ7L3dzcDpQb2xpY3kmZ3Q7DQogJmx0Oy93c3JtcDpS TUFzc2VydGlvbi8mZ3Q7DQogPC9lZz4NCiA8L2V4YW1wbGU+ICAgICAgICAJCQ0KICAgICAgICAg ICAgCSAgICAgICAgIAkJDQogICAgICAgICAgICAJCTxwPk91dGxpbmVzIGNhbiBhbHNvIGlsbHVz dHJhdGUgdGhlIG5lc3Rpbmcgb2YgYXNzZXJ0aW9ucy4gSW4gdGhlIGV4YW1wbGUgYWJvdmUsDQog ICAgICAgICAgICAJCXRoZSBhc3NlcnRpb24gRGVsaXZlcnlBc3N1cmFuY2UsIGhhcyBuZXN0ZWQg cG9saWN5IGFzc2VydGlvbnMgYW5kIHRoZSBYTUwgb3V0bGluZQ0KICAgICAgICAgICAgCQllbnVt ZXJhdGVzIHRoZSBuZXN0ZWQgYXNzZXJ0aW9ucyAoRXhhY3RseU9uY2UsIEF0TGVhc3RPbmNlLEF0 TW9zdE9uY2UpdGhhdCBhcmUgYWxsb3dlZC4gDQogICAgICAgICAgICAJCTwvcD4NCiAgICAgICAg ICAgIAkJPHA+DQogICAgICAgICAgICAJCVRvIGdpdmUgYSBnZW5lcmFsIGV4YW1wbGUsIHRoZSBk ZWZpbml0b24gb2YgYXNzZXJ0aW9uIHN5bnRheCBmb3IgYSBoeXBvdGhldGljYWwNCiAgICAgICAg ICAgIAkJYXNzZXJ0aW9uIHN1Y2ggYXMgU2FtcGxlQXNzZXJ0aW9uLCBzaG91bGQgYWxsb3cgYXR0 cmlidXRlIGV4dGVuc2liaWxpdHkgYXMgcGFydCBvZiANCiAgICAgICAgICAgIAkJdGhlIFhNTCBk ZWZpbml0aW9uLCBhbGxvd2luZyB0aGUgYXR0cmlidXRlcyBkZWZpbmVkIGJ5IHdzcDpQb2xpY3kg dG8gYmUgdXNlZC4NCgkJCQkJPC9wPg0KCQkJCQk8cD4NCgkJCQk8ZXhhbXBsZT4NCgkJCQkJPGhl YWQ+VXNlIG9mIEBhbnkgZm9yIGF0dHJpYnV0ZSBleHRlbnNpYmlsaXR5PC9oZWFkPg0KCQkJCQk8 ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+L3NhbXBsZVByZWZpeDpTYW1wbGVBc3NlcnRpb24vQGFu eQ0KVGhpcyBpcyBhbiBleHRlbnNpYmlsaXR5IG1lY2hhbmlzbSB0byBhbGxvdyBhZGRpdGlvbmFs IGF0dHJpYnV0ZXMgdG8gYmUgYWRkZWQgdG8gdGhlIGVsZW1lbnQsIGluY2x1ZGluZyB3c3A6T3B0 aW9uYWwuDQoJCQkJPC9lZz48L2V4YW1wbGU+DQogICAgICAgICAgICAJCTwvcD4JCQ0KICAgICAg ICAgICAgCTxwPiBXaGVuIGFuIFhNTCBvdXRsaW5lIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgYW4g YXNzZXJ0aW9uIGRlc2NyaXB0aW9uIGl0IGlzIHBvc3NpYmxlIHRvDQoJCQkJdXNlIHRoZSB3c3A6 T3B0aW9uYWwgYXR0cmlidXRlIGluIHRoZSBvdXRsaW5lLiBJbiB0aGUgUk0gY2FzZSBhYm92ZSwg d3NwOk9wdGlvbmFsIHdhcyB1c2VkLg0KCQkJCTwvcD4JCQkJCQ0KCQkJCTxwIHJvbGU9InByYWN0 aWNlIiBpZD0iYnAtYXNzZXJ0aW9uLXhtbC1hbGxvdy1vcHRpb25hbCI+DQoJCQkJCTxxdW90ZT5B c3NlcnRpb24gWE1MIG91dGxpbmUgY2FuIGluZGljYXRlIHVzZSBvZiB3c3A6T3B0aW9uYWwgYXR0 cmlidXRlPC9xdW90ZT4NCgkJCQkJPHF1b3RlPkFuIGFzc2VydGlvbiBYTUwgb3V0bGluZSBjYW4g aW5kaWNhdGUgdGhlIHVzZSBvZiB0aGUgd3NwOk9wdGlvbmFsIGF0dHJpYnV0ZSB0byANCgkJCQkJ CWlkZW50aWZ5IG9wdGlvbmFsIGJlaGF2aW9ycy48L3F1b3RlPg0KCQkJCTwvcD4NCgkJCQk8cD4g V2hlbiBhbiBYTUwgb3V0bGluZSBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIGFuIGFzc2VydGlvbiBk ZXNjcmlwdGlvbiBpdCBpcyBwb3NzaWJsZSB0bw0KCQkJCXVzZSB0aGUgd3NwOklnbm9yYWJsZSBh dHRyaWJ1dGUgaW4gdGhlIG91dGxpbmUuIEluIHRoZSBleGFtcGxlIGJlbG93LCB3c3A6SWdub3Jh YmxlIHdhcyB1c2VkDQoJCQkJdG8gaW5kY2lhdGUgYmVoYXZpb3IgdGhhdCBkb2VzIG5vdCBpbXBh Y3QgaW50ZXJzZWN0aW9uLg0KCQkJCTwvcD4NCgkJCQkJPHAgcm9sZT0icHJhY3RpY2UiIGlkPSJi cC1hc3NlcnRpb24teG1sLW9wdGlvbmFsIj4NCgkJCQkJPHF1b3RlPkFzc2VydGlvbiBYTUwgb3V0 bGluZSBjYW4gaW5kaWNhdGUgdXNlIG9mIHdzcDpJZ25vcmFibGUgYXR0cmlidXRlPC9xdW90ZT4N CgkJCQkJPHF1b3RlPkFuIGFzc2VydGlvbiBYTUwgb3V0bGluZSBjYW4gaW5kaWNhdGUgdGhlIHVz ZSBvZiB0aGUgd3NwOklnbm9yYWJsZSBhdHRyaWJ1dGUgdG8gDQoJCQkJCQlpZGVudGlmeSBpZ25v cmFibGUgYmVoYXZpb3JzIGZvciBpbnRlcnNlY3Rpb24uPC9xdW90ZT4NCgkJCQk8L3A+DQogCQkJ ICAJICAgIDxwIHJvbGU9InByYWN0aWNlIiBpZD0iQXNzZXJ0aW9uRGVmaW5pdGlvbnMiPiA8cXVv dGU+U3BlY2lmeSBTZW1hbnRpY3MgQ2xlYXJseTwvcXVvdGU+ID4NCiAJCQkgIAkgICAgCTxxdW90 ZT4gQXNzZXJ0aW9uIGF1dGhvcnMgc2hvdWxkIGNsZWFybHkgYW5kIGNvbXBsZXRlbHkgc3BlY2lm eSB0aGUNCiAJCQkgIAkgICAgCSBzZW1hbnRpY3Mgb2YgYSBwb2xpY3kgYXNzZXJ0aW9uLg0KCQkJ ICAJICAgIDwvcXVvdGU+DQoJCQkgIAkgICAgPC9wPg0KDQogDQogICAgICAgIAkJPC9kaXYzPgkN CiAgICAgICAgCQk8ZGl2MyBpZD0ic2VsZi1kZXNjcmliaW5nIj4NCgkJCQkJPGhlYWQ+IFNlbGYg RGVzY3JpYmluZyBNZXNzYWdlcyA8L2hlYWQ+DQogICAgICAgIAkJCTxwPiBXUy1Qb2xpY3kgaXMg aW50ZW5kZWQgdG8gY29tbXVuaWNhdGUgdGhlIHJlcXVpcmVtZW50cywgY2FwYWJpbGl0aWVzIGFu ZA0KICAgIAkgCQkJYmVoYXZpb3JzIG9mIG5vZGVzIHRoYXQgcHJvdmlkZSB0aGUgbWVzc2FnZSdz IHBhdGgsIG5vdCBzcGVjaWZpY2FsbHkgdG8gZGVjbGFyZSBwcm9wZXJ0aWVzIG9mIHRoZSBtZXNz YWdlIHNlbWFudGljcy4gT25lDQogICAgCSAJCQlvZiB0aGUgYWR2YW50YWdlcyBvZiBXZWIgc2Vy dmljZXMgaXMgdGhhdCBhbiBYTUwgbWVzc2FnZSBjYW4gYmUgc3RvcmVkIGFuZCBsYXRlciBleGFt aW5lZCAoZS5nLiBhcyBhIHJlY29yZCBvZiBhIGJ1c2luZXNzDQogICAgIAkJCQl0cmFuc2FjdGlv bikgb3IgaW50ZXJwcmV0ZWQgYnkgYW4gaW50ZXJtZWRpYXJ5OyBob3dldmVyLCBpZiBpbmZvcm1h dGlvbiB0aGF0IGlzIG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIGEgbWVzc2FnZSBpcyBub3QNCiAg ICAgCQkJCWF2YWlsYWJsZSwgdGhlc2UgY2FwYWJpbGl0aWVzIHN1ZmZlci4NCiAgICAgCQkJCTwv cD4NCiAgICAgICAgICAgIAkJPHA+UG9saWN5IGFzc2VydGlvbnMgc2hvdWxkIG5vdCBiZSB1c2Vk IHRvIGV4cHJlc3MgdGhlIHNlbWFudGljcyBvZiBhICBtZXNzYWdlLiBSYXRoZXIsIGlmIGEgcHJv cGVydHkgaXMNCiAgICAgCQkgICAgICAgIHJlcXVpcmVkIHRvIHVuZGVyc3RhbmQgYSBtZXNzYWdl LCBpdCBzaG91bGQgYmUgY29tbXVuaWNhdGVkIGluIHRoZSBtZXNzYWdlLCBvciBiZSBtYWRlIGF2 YWlsYWJsZSBieSBzb21lIG90aGVyIG1lYW5zIChlLmcuLCBiZWluZw0KICAgICAJCQkgICAgcmVm ZXJlbmNlZCBieSBhIFVSSSBpbiB0aGUgbWVzc2FnZSkgaW5zdGVhZCBvZiBiZWluZyBjb21tdW5p Y2F0ZWQgYXMgYSBwb2xpY3kgZWxlbWVudC4gDQogICAgIAkJCSAgICBOb3RlIHRoYXQgdGhlcmUg YXJlIG90aGVyIHNwZWNpZmljYXRpb25zIHRoYXQgdGFyZ2V0IHNwZWNpZmljYXRpb24gb2Ygc2Vt YW50aWNzIG9mIGEgbWVzc2FnZSwgc3VjaCBhcyA8YmlicmVmIHJlZj0iU0FXU0RMIi8+LiANCiAg ICAgCQkJCTwvcD4NCgkJCQkJPHA+SWYgdGhlIG1lc3NhZ2VzIGNvdWxkIG5vdCBiZSBtYWRlIHNl bGYgZGVzY3JpYmluZyBieSB1dGlsaXppbmcgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHByZXNlbnQg aW4gdGhlDQogICAgCQkJCW1lc3NhZ2UgYXMgcmVxdWlyZWQgYnkgdGhlIGFzc2VydGlvbiwgaXQg d291bGQgYmUgbmVjZXNzYXJ5IHRvDQogICAgCQkJCWRldGVybWluZSB0aGUgYmVoYXZpb3JzIGVu Z2FnZWQgYXQgcnVudGltZSBieSBhZGRpdGlvbmFsIG1lYW5zLiBBDQogICAgCQkJCWdlbmVyYWwg cHJvdG9jb2wgdGhhdCBhaWRzIGluIGRldGVybWluaW5nIHN1Y2ggYmVoYXZpb3JzIG1heSBiZQ0K ICAgIAkJCQl1dGlsaXplZCwgaG93ZXZlciBhIHN0YW5kYXJkIHByb3RvY29sIGZvciB0aGlzIHB1 cnBvc2UgaXMNCiAgICAJCQkJY3VycmVudGx5IG5vdCBhdmFpbGFibGUgdG8gZW5zdXJlIGludGVy b3BlcmFiaWxpdHkuIFRodXMsIGEgcHJpdmF0ZSBwcm90b2NvbCBzaG91bGQgYmUgdXNlZCB3aXRo IGNhcmUuIA0KICAgIAkJCQk8L3A+ICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAJ CTxwPkFub3RoZXIgYXBwcm9hY2ggaXMgdG8gdXNlIG9mIHRoZSBhc3NlcnRpb24gdG8gc2VsZWN0 aXZlbHkgYXBwbHkgdG8gc3ViamVjdHMuIEZvciBleGFtcGxlLCBhDQogICAgCQkJCWRlZGljYXRl ZCBlbmRwb2ludCBtYXkgYmUgYWxsb2NhdGVkIHRvIGVuc3VyZSB0aGUgZW5nYWdlbWVudCBvZiBh DQogICAgCQkJCWJlaGF2aW9yIHRoYXQgaXMgZXhwcmVzc2VkIGJ5IGEgcG9saWN5IGFzc2VydGlv bi4gVGhpcyBhcHByb2FjaA0KICAgIAkJCQljYW4gYmUgY29uc2lkZXJlZCB3aGVuIG1lc3NhZ2Vz IGNhbm5vdCBiZSBzZWxmIGRlc2NyaWJpbmcuIA0KICAgICAJCQkJPC9wPg0KICAgICAJCQkJPHA+ UG9saWN5IGFzc2VydGlvbnMgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGV4cHJlc3MgdGhlIHNlbWFu dGljcyBvZiBhIG1lc3NhZ2UuDQogICAgIAkJCQlGaXJzdGx5LCBhbiBhc3NlcnRpb24gdHlwZSBp bmRpY2F0ZXMgYSA8ZW1waD5ydW50aW1lPC9lbXBoPiBiZWhhdmlvci4gIFNlY29uZGx5LCBBc3Nl cnRpb24gQXV0aG9ycyBuZWVkIHRvIGluZGljYXRlIGhvdyB0aGUgcnVudGltZSBiZWhhdmlvciBy ZXByZXNlbnRlZCBpbiB0aGUgYXNzZXJ0aW9uIHR5cGUgY2FuIGJlIGluZmVycmVkIG9yIGluZGlj YXRlZA0KICAgICAJCQkJZnJvbSBhIG1lc3NhZ2UgYXQgcnVudGltZS4gIElmIHRoZXJlIGlzIGEg bmVlZCBmb3IgdGhlIGJlaGF2aW9yDQogICAgCQkgCQl0byBiZSByZXByZXNlbnRlZCBpbiBhIHBl cnNpc3RlbnQgd2F5IG9yIGlmIHRoZXJlIGlzIGEgbmVlZCBmb3INCiAgICAgCQkJCWFkZGl0aW9u YWwgZGF0YSBvciBtZXRhZGF0YSB0aGF0IGlzIHByZXNlbnQgaW4gYSBtZXNzYWdlIHRvIGJlDQog ICAgIAkJCQlwZXJzaXN0ZWQsIGl0IHNob3VsZCBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUgYXNz ZXJ0aW9uIGRlc2lnbiBvcg0KICAgICAJCQkJaW4gdGhlIG1lc3NhZ2UgaXRzZWxmLiBJbiBlc3Nl bmNlLCB0aGUgQXNzZXJ0aW9uIEF1dGhvcnMgc2hvdWxkDQogICAgIAkJCQljb25zaWRlciBob3cg dG8gbWFrZSBtZXNzYWdlcyBzZWxmIGRlc2NyaWJpbmcgd2hlbiB1dGlsaXppbmcNCiAgICAgCQkJ CXRoZWlyIGFzc2VydGlvbnMgYnkgc3BlY2lmeWluZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIGhl YWRlcnMsDQogICAgIAkJCQlldGMuIHRoYXQgbXVzdCBiZSBwcmVzZW50IGluIGEgbWVzc2FnZSBh cyBwYXJ0IG9mIHRoZWlyIGFzc2VydGlvbiBkZXNpZ24uDQogICAgIAkJCQk8L3A+DQogICAgICAg IAkJCTxwIHJvbGU9InByYWN0aWNlIiBpZD0iYnAtbm90LW5lY2Vzc2FyeS10by11bmRlcnN0YW5k LWEtbWVzc2FnZSI+DQogICAgICAgIAkJCQk8cXVvdGU+Tm90IE5lY2Vzc2FyeSB0byBVbmRlcnN0 YW5kIGEgTWVzc2FnZTwvcXVvdGU+DQogICAgICAgIAkJCQk8cXVvdGU+QXNzZXJ0aW9uIEF1dGhv cnMgc2hvdWxkIG5vdCBkZWZpbmUgcG9saWN5IGFzc2VydGlvbnMgdG8gcmVwcmVzZW50IGluZm9y bWF0aW9uIHRoYXQgaXMgbmVjZXNzYXJ5IHRvIHVuZGVyc3RhbmQgYSBtZXNzYWdlLjwvcXVvdGU+ DQogICAgICAgIAkJCTwvcD4NCiAgICAgCQkJCTxwPkZvciBleGFtcGxlLCBpZiB0aGUgZGV0YWls cyBvZiBhIG1lc3NhZ2UncyBlbmNyeXB0aW9uICggZS5nLiwgdGhlIGNpcGhlciB1c2VkLCBldGMp IGFyZSBleHByZXNzZWQNCiAgICAgCQkJCWluIHBvbGljeSB0aGF0IGlzbid0IGF0dGFjaGVkIHRv IHRoZSBtZXNzYWdlLCBpdCBpc24ndCBwb3NzaWJsZQ0KICAgICAJCQkJdG8gbGF0ZXIgZGVjaXBo ZXIgaXQuIFRoaXMgaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSBleHByZXNzaW5nLCBpbg0KICAgICAJ CQkJcG9saWN5LCB3aGF0IGNpcGhlcnMgKGFuZCBzbyBmb3J0aCkgYXJlIHN1cHBvcnRlZCBieSBh IHBhcnRpY3VsYXINCiAgICAgCQkJCWVuZHBvaW50LCBvciB0aG9zZSB0aGF0IGFyZSByZXF1aXJl ZCBpbiBhIHBhcnRpY3VsYXIgbWVzc2FnZTsgdGhlDQogICAgIAkJCQlsYXR0ZXIgYXJlIHRoZSBp bnRlbmRlZCB1c2VzIG9mIHRoZSBXUy1Qb2xpY3kgZnJhbWV3b3JrLg0KICAgICAJCQkJPC9wPgkN CiAgICAgCQkJPC9kaXYzPgkJCQkNCgkJCQk8ZGl2MyBpZD0ic2luZ2xlLWRvbWFpbnMiPg0KCQkJ CTxoZWFkPlNpbmdsZSBEb21haW5zPC9oZWFkPg0KCQkJCQk8cD5XaGVuIGNvbnNpZGVyaW5nIHRo ZSBjcmVhdGlvbiBvZiBhDQogICAgICAJCQkgIAluZXcgZG9tYWluIG9mIHBvbGljeSBhc3NlcnRp b25zLCBpdCBpcyBpbXBvcnRhbnQgdG8gaWRlbnRpZnkNCiAgICAgICAJCQkgCXdoZXRoZXIgb3Ig bm90IHRoZSBkb21haW4gaXMgc2VsZi1jb250YWluZWQgb3IgYXQgbGVhc3QgaWYgYQ0KICAgICAg ICAJCQlzdWJzZXQgb2YgdGhlIGRvbWFpbiBjYW4gYmUgd2VsbCBkZWZpbmVkLiAgQSBkb21haW4g dGhhdA0KICAgICAgICAJCQlleHByZXNzZXMgYSBicm9hZCBzZXQgb2YgY2FwYWJpbGl0aWVzIHdp bGwgYWxzbyBuZWVkIHRvIGhhdmUgYQ0KICAgICAgICAJCQljb21tdW5pdHkgc3VwcG9ydGluZyBp bXBsZW1lbnRhdGlvbnMgIG9mIHRoZXNlIGNhcGFiaWxpdGllcyB0byBwcm92aWRlIHZhbHVlIHRv IHRoZQ0KICAgICAgICAJCQljb25zdW1lcnMuICBVbHRpbWF0ZWx5IGl0IGlzIHRoZSBjb25zdW1l cnMgYW5kIHByb3ZpZGVycyB0aGF0DQogICAgICAgIAkJCXdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIg YSBwYXJ0aWN1bGFyIHNldCBvZiBhc3NlcnRpb25zDQogICAgICAgIAkJCWNvcnJlY3RseSBjaGFy YWN0ZXJpemUgYSBkb21haW4uICBBIG5ldyBjb21tdW5pdHkgc2hvdWxkIGF2b2lkDQogICAgICAg IAkJCWR1cGxpY2F0aW5nIGFzc2VydGlvbnMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBkZWZpbmVk IGFzIHRoaXMNCiAgICAgICAgCQkJd2lsbCBjcmVhdGUgYW1iaWd1aXR5IG5vdCBjbGFyaWZpY2F0 aW9uLiBOZXcgQXNzZXJ0aW9uIEF1dGhvcnMNCiAgICAgICAgCQkJc2hvdWxkIGZvY3VzIG9uIGNy ZWF0aW5nIGFzc2VydGlvbnMgZm9yIHRob3NlIHNwZWNpZmljDQogICAgICAgIAkJCWNvbnN0cmFp bnRzIGFuZCBjYXBhYmlsaXRpZXMgdGhhdCBkbyBub3Qgb3ZlcmxhcCB3aXRoIG90aGVyDQogICAg ICAgIAkJCWRvbWFpbnMgYnV0IHRoYXQgY29tbXVuaWNhdGUgbmV3IGZ1bmN0aW9uYWxpdHkuIA0K ICAgICAgICAJCQk8L3A+DQoJCQkJCTxwPlRoZSBtb2RlbCBhZHZvY2F0ZWQgZm9yIG5ldw0KCQkJ CQlhc3NlcnRpb24gZGV2ZWxvcG1lbnQgaXMgYSBjb29wZXJhdGl2ZSBtYXJrZXRwbGFjZQ0KCQkJ CQlbc29tZSBtaWdodCBzYXkgaXQgaXMgYW4gIm9wdC1pbiIgbW9kZWxdLiBUaGUgcHJvdmlkZXJz DQoJCQkJCW9mIHNlcnZpY2VzIG5lZWQgdG8gZmluZCB2YWx1ZSBpbiB0aGUgc2V0IG9mDQoJCQkJ CWFzc2VydGlvbnMgb3IgdGhleSB3aWxsIG5vdCBpbmNsdWRlIHRoZSBhc3NlcnRpb25zIGluDQoJ CQkJCXRoZWlyIHNlcnZpY2UgZGVzY3JpcHRpb25zLiANCgkJCQkJPC9wPg0KCQkJCQk8cD5JdCBp cyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEFzc2VydGlvbiBBdXRob3JzIHRvIGF2b2lkIGR1 cGxpY2F0aW9uIG9mIGFzc2VydGlvbnMuIA0KCQkJCQlBIHJldmlldyBieSBhIGJyb2FkIGNvbW11 bml0eSBpcyB0aGUgYmVzdCB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlIGdyYW51bGFyaXR5IG9mIGEg c2V0IA0KCQkJCQlvZiBkb21haW4gYXNzZXJ0aW9ucyBpcyBhcHByb3ByaWF0ZS48L3A+DQoJCQkJ CQ0KICAgICAgICAJCQk8cCByb2xlPSJwcmFjdGljZSIgaWQ9ImJwLWFzc2VydGlvbi1kdXBsaWNh dGlvbiI+PHF1b3RlPkF2b2lkIER1cGxpY2F0aW9uIG9mIEFzc2VydGlvbnM8L3F1b3RlPg0KICAg ICAgICAJCQkJPHF1b3RlPkFzc2VydGlvbiBBdXRob3JzIHNob3VsZCByZXVzZSBhbiBleGlzdGlu ZyBhc3NlcnRpb24gKHJhdGhlciB0aGFuIGNyZWF0ZSBhIG5ldyBvbmUpIHdoZW5ldmVyIHBvc3Np YmxlLjwvcXVvdGU+DQogICAgICAgICAgICAJCTwvcD4gDQogICAgICAgICAgICAJPC9kaXYzPg0K ICAgICAgICAgICAgPC9kaXYyPiAgIA0KCQkJPGRpdjIgaWQ9ImNvbXBhcmlzb24iPg0KCQkJCTxo ZWFkPkNvbXBhcmlzb24gb2YgTmVzdGVkIGFuZCBQYXJhbWV0ZXJpemVkIEFzc2VydGlvbnM8L2hl YWQ+DQoJCQkJPHA+VGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgd2F5cyB0byBwcm92aWRlIGFkZGl0 aW9uYWwgaW5mb3JtYXRpb24gaW4gYW4NCgkJCQlhc3NlcnRpb24gYmV5b25kIGl0cyB0eXBlLiBX ZSBjb3ZlciB0aGVzZSB0d28gY2FzZXMgYmVsb3cgZm9sbG93ZWQgYnkgYQ0KCQkJCWNvbXBhcmlz b24gb2YgdGhlc2UgYXBwcm9hY2hlcyB0YXJnZXRpbmcgd2hlbiB0byB1c2UgZWl0aGVyIG9mIHRo ZSBhcHByb2FjaC4gIA0KCQkJCTwvcD4NCg0KCQkJCTxkaXYzIGlkPSJwYXJhbWV0ZXJpemVkLWFz c2VydGlvbnMiPg0KCQkJCQk8aGVhZD5Bc3NlcnRpb25zIHdpdGggUGFyYW1ldGVyczwvaGVhZD4N CgkJCQkJPHA+UG9saWN5IGFzc2VydGlvbiBwYXJhbWV0ZXJzIGFyZSB0aGUgb3BhcXVlIHBheWxv YWQgb2YgYW4gYXNzZXJ0aW9uLiANCgkJCQkJUGFyYW1ldGVycyBjYXJyeSBhZGRpdGlvbmFsIHVz ZWZ1bCBpbmZvcm1hdGlvbiBmb3IgZW5nYWdpbmcgdGhlIA0KCQkJCQliZWhhdmlvciBkZXNjcmli ZWQgYnkgYW4gYXNzZXJ0aW9uIGFuZCBhcmUgcHJlc2VydmVkIHRocm91Z2ggcG9saWN5IA0KCQkJ CQlwcm9jZXNzaW5nIHN1Y2ggYXMgbm9ybWFsaXplLCBtZXJnZSBhbmQgcG9saWN5IGludGVyc2Vj dGlvbi4gDQoJCQkJCVJlcXVlc3RlcnMgbWF5IHVzZSBwb2xpY3kgaW50ZXJzZWN0aW9uIHRvIHNl bGVjdCBhIGNvbXBhdGlibGUgDQoJCQkJCXBvbGljeSBhbHRlcm5hdGl2ZSBmb3IgYW4gaW50ZXJh Y3Rpb24uIEFzc2VydGlvbiBwYXJhbWV0ZXJzIGRvIG5vdCANCgkJCQkJYWZmZWN0IHRoZSBvdXRj b21lIG9mIHBvbGljeSBpbnRlcnNlY3Rpb24gdW5sZXNzIHRoZSBhc3NlcnRpb24gc3BlY2lmaWVz IA0KCQkJCQlkb21haW4gc3BlY2lmaWMgcHJvY2Vzc2luZyBmb3IgcG9saWN5IGludGVyc2VjdGlv bi48L3A+DQoJCQkJCQ0KCQkJCQk8cD5JbiB0aGUgWE1MIHJlcHJlc2VudGF0aW9uIG9mIGEgcG9s aWN5IGFzc2VydGlvbiwgdGhlIGNoaWxkIGVsZW1lbnRzIA0KCQkJCQlhbmQgYXR0cmlidXRlcyBv ZiB0aGUgYXNzZXJ0aW9uIGV4Y2x1ZGluZyBjaGlsZCBlbGVtZW50cyBhbmQgYXR0cmlidXRlcyAN CgkJCQkJZnJvbSB0aGUgcG9saWN5IGxhbmd1YWdlIG5hbWVzcGFjZSBuYW1lIGFyZSB0aGUgYXNz ZXJ0aW9uIHBhcmFtZXRlcnMuPC9wPg0KCQkJCQkNCgkJCQkJPHAgcm9sZT0icHJhY3RpY2UiIGlk PSJicC1hc3NlcnRpb24tcGFyYW1ldGVycyI+PHF1b3RlPlVzZSBQYXJhbWV0ZXJzIGZvciBVc2Vm dWwgDQoJCQkJCUluZm9ybWF0aW9uPC9xdW90ZT4NCgkJCQkJCTxxdW90ZT5Bc3NlcnRpb24gQXV0 aG9ycyBzaG91bGQgcmVwcmVzZW50IHVzZWZ1bCAob3IgYWRkaXRpb25hbCkgDQogICAgICAgICAg ICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgZm9yIGVuZ2FnaW5nIHRoZSBiZWhh dmlvciByZXByZXNlbnRlZCBieSBhIHBvbGljeSANCiAgICAgICAgICAgICAgICAgICAgICAgIGFz c2VydGlvbiBhcyBhc3NlcnRpb24gcGFyYW1ldGVycy4JDQoJCQkJCQk8L3F1b3RlPiANCgkJCQkJ PC9wPg0KDQoJCQkJCTxwPkluIHRoZSBleGFtcGxlIGJlbG93LCA8Y29kZT5zcDpCb2R5PC9jb2Rl PiBhbmQgPGNvZGU+c3A6SGVhZGVyPC9jb2RlPiANCiAgICAgICAgICAgICAgICAgICAgIGVsZW1l bnRzIGFyZSB0aGUgdHdvIGFzc2VydGlvbiBwYXJhbWV0ZXJzIG9mIHRoZSANCiAgICAgICAgICAg ICAgICAgICAgIDxjb2RlPnNwOlNpZ25lZFBhcnRzPC9jb2RlPiBwb2xpY3kgYXNzZXJ0aW9uIA0K ICAgICAgICAgICAgICAgICAgICAgKHRoaXMgYXNzZXJ0aW9uIHJlcXVpcmVzIHRoZSBwYXJ0cyBv ZiBhIG1lc3NhZ2UgdG8gYmUgcHJvdGVjdGVkKS4NCgkJCQkgICAgIFRoZXNlIHR3byBwYXJhbWV0 ZXJzIGlkZW50aWZ5IHRoZSBwYXJ0cyBvZiBhIHdpcmUgbWVzc2FnZSB0aGF0IHNob3VsZCBiZSAN CgkJCQkgICAgIHByb3RlY3RlZC4gVGhlc2UgcGFyYW1ldGVycyBjYXJyeSBhZGRpdGlvbmFsIHVz ZWZ1bCBpbmZvcm1hdGlvbiBmb3IgDQoJCQkJICAgICBlbmdhZ2luZyB0aGUgYmVoYXZpb3IuPC9w Pg0KDQoJPGV4YW1wbGU+IDxoZWFkPlBvbGljeSBBc3NlcnRpb24gd2l0aCBBc3NlcnRpb24gUGFy YW1ldGVyczwvaGVhZD4NCiAgICAgICAgICAgIDxlZyB4bWw6c3BhY2U9InByZXNlcnZlIj4mbHQ7 d3NwOlBvbGljeSZndDsNCiAgJmx0O3NwOlNpZ25lZFBhcnRzJmd0Ow0KICAgICZsdDtzcDpCb2R5 LyZndDsNCiAgICAmbHQ7c3A6SGVhZGVyLyZndDsNCiAgJmx0Oy9zcDpTaWduZWRQYXJ0cyZndDsN CiZsdDsvd3NwOlBvbGljeSZndDs8L2VnPg0KICAgICAgICAgIDwvZXhhbXBsZT4NCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCgkJCQk8L2RpdjM+DQoNCgkJCQk8 ZGl2MyBpZD0ibmVzdGVkLWFzc2VydGlvbnMiPiANCgkJCQk8aGVhZD5OZXN0ZWQgQXNzZXJ0aW9u czwvaGVhZD4NCgkJCQkJCTxwPlRoZSBmcmFtZXdvcmsgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8g Im5lc3QiIHBvbGljeSBhc3NlcnRpb25zLiBGb3IgZG9tYWlucyB3aXRoIGEgY29tcGxleCBzZXQg b2YNCiAgICAgICAgCQkJCW9wdGlvbnMsIG5lc3RpbmcgcHJvdmlkZXMgb25lIHdheSB0byBpbmRp Y2F0ZSBkZXBlbmRlbnQNCiAgICAgICAgCQkJCWVsZW1lbnRzIHdpdGhpbiBhIGJlaGF2aW9yLjwv cD4NCgkJCQkJPHA+DQoJCQkJCQlUaGUgZm9sbG93aW5nIGRlc2lnbiBxdWVzdGlvbnMgYmVsb3cg Y2FuIGhlbHANCgkJCQkJCXRvIGRldGVybWluZSB3aGVuIHRvIHVzZSBuZXN0ZWQgcG9saWN5IGV4 cHJlc3Npb25zOjwvcD4NCgkJCQkJPHVsaXN0Pg0KCQkJCQkJPGl0ZW0+DQoJCQkJCQkJPHA+QXJl IHRoZXNlIGFzc2VydGlvbnMgZGVzaWduZWQgZm9yIHRoZSBzYW1lIHBvbGljeSBzdWJqZWN0PyA8 L3A+DQoJCQkJCQk8L2l0ZW0+DQoJCQkJCQk8aXRlbT4NCgkJCQkJCQk8cD5EbyB0aGVzZSBhc3Nl cnRpb25zIHJlcHJlc2VudCBkZXBlbmRlbnQgYmVoYXZpb3JzPzwvcD4NCgkJCQkJCTwvaXRlbT4N CgkJCQkJPC91bGlzdD4NCgkJCQkJPHA+SWYgdGhlIGFuc3dlcnMgYXJlIHllcyB0byBib3RoIG9m IHRoZXNlIHF1ZXN0aW9ucyB0aGVuIGxldmVyYWdpbmcgbmVzdGVkIHBvbGljeQ0KCQkJCQkJZXhw cmVzc2lvbnMgaXMgc29tZXRoaW5nIHRvIGNvbnNpZGVyLiBLZWVwIGluIG1pbmQgdGhhdCBhIG5l c3RlZCBwb2xpY3kgZXhwcmVzc2lvbiBwYXJ0aWNpcGF0ZXMgaW4NCgkJCQkJCXRoZSBwb2xpY3kg aW50ZXJzZWN0aW9uIGFsZ29yaXRobS4gSWYgYSByZXF1ZXN0ZXIgdXNlcyBwb2xpY3kgaW50ZXJz ZWN0aW9uIHRvIHNlbGVjdCBhDQoJCQkJCQljb21wYXRpYmxlIHBvbGljeSBhbHRlcm5hdGl2ZSB0 aGVuIHRoZSBhc3NlcnRpb25zIGluIGEgbmVzdGVkIHBvbGljeSBleHByZXNzaW9uIHBsYXkgYQ0K CQkJCQkJZmlyc3QgY2xhc3Mgcm9sZSBpbiB0aGUgb3V0Y29tZS4gSWYgdGhlcmUgaXMgYSBuZXN0 ZWQgcG9saWN5IGV4cHJlc3Npb24sIGFuIGFzc2VydGlvbiANCgkJCQkJCWRlc2NyaXB0aW9uIHNo b3VsZCBkZWNsYXJlIGl0IGFuZCBlbnVtZXJhdGUgdGhlIG5lc3RlZCBwb2xpY3kgYXNzZXJ0aW9u cyANCgkJCQkJCXRoYXQgYXJlIGFsbG93ZWQuIFRoZXJlIGlzIG9uZSBjYXZlYXQgdG8gd2F0Y2gg b3V0IGZvcjogcG9saWN5IGFzc2VydGlvbnMNCgkJCQkJCXdpdGggZGVlcGx5IG5lc3RlZCBwb2xp Y3kgY2FuIGdyZWF0bHkgaW5jcmVhc2UgdGhlIGNvbXBsZXhpdHkgb2YgYSBwb2xpY3kgYW5kIHNo b3VsZCBiZQ0KCQkJCQkJYXZvaWRlZCB3aGVuIHRoZXkgYXJlIG5vdCBuZWVkZWQuPC9wPg0KCQkJ CQkJDQoJCQkJCTxwIHJvbGU9InByYWN0aWNlIiBpZD0iYnAtZGVwZW5kZW50LWJlaGF2aW9ycyI+ DQoJCQkJCTxxdW90ZT5Vc2UgTmVzdGVkIEFzc2VydGlvbnMgZm9yIERlcGVuZGVudCBCZWhhdmlv cnM8L3F1b3RlPg0KCQkJCQk8cXVvdGU+QXNzZXJ0aW9uIEF1dGhvcnMgc2hvdWxkIHJlcHJlc2Vu dCBkZXBlbmRlbnQgYmVoYXZpb3JzIHRoYXQgYXJlIHJlbGV2YW50IA0KCQkJCQkJdG8gYSBjb21w YXRpYmlsaXR5IHRlc3QgYW5kIGFwcGx5IHRvIHRoZSBzYW1lIHBvbGljeSBzdWJqZWN0IHVzaW5n IA0KCQkJCQkJbmVzdGVkIHBvbGljeSBhc3NlcnRpb25zLjwvcXVvdGU+PC9wPg0KDQoJCQkJCTxw IHJvbGU9InByYWN0aWNlIiBpZD0iYnAtZGVjbGFyZS1uZXN0ZWQtYXNzZXJ0aW9ucyI+DQoJCQkJ CQk8cXVvdGU+RW51bWVyYXRlIE5lc3RlZCBBc3NlcnRpb25zPC9xdW90ZT4NCgkJCQkJCTxxdW90 ZT5JZiB0aGVyZSBpcyBhIG5lc3RlZCBwb2xpY3kgZXhwcmVzc2lvbiwgdGhlbiB0aGUgQXNzZXJ0 aW9uIEF1dGhvcnMgDQoJCQkJCQlzaG91bGQgZW51bWVyYXRlIHRoZSBuZXN0ZWQgcG9saWN5IGFz c2VydGlvbnMgdGhhdCBhcmUgYWxsb3dlZC48L3F1b3RlPg0KCQkJCQk8L3A+DQogICAgICAgIAkJ CQkNCgkJCQkJPHA+VGhlIG1haW4gY29uc2lkZXJhdGlvbiBmb3Igc2VsZWN0aW5nIHBhcmFtZXRl cnMgb3IgbmVzdGluZw0KCQkJCQkJb2YgYXNzZXJ0aW9ucyBpcyB0aGF0IDxlbXBoPnRoZSBmcmFt ZXdvcmsgaW50ZXJzZWN0aW9uDQoJCQkJCQkJYWxnb3JpdGhtIHByb2Nlc3NlcyBuZXN0ZWQgYWx0 ZXJuYXRpdmVzLCBidXQgZG9lcyBub3QgY29uc2lkZXINCgkJCQkJCQlwYXJhbWV0ZXJzIGluIGl0 cyBhbGdvcml0aG08L2VtcGg+LiANCgkJCQkJPC9wPg0KCQkJCQkNCgkJCQkJPHA+QXNzZXJ0aW9u IEF1dGhvcnMgc2hvdWxkIHJlY29nbml6ZSB0aGF0IHRoZSBmcmFtZXdvcmsgY2FuDQoJCQkJCQl5 aWVsZCBtdWx0aXBsZSBhc3NlcnRpb25zIG9mIHRoZSBzYW1lIHR5cGUuIFRoZSA8ZW1waD5RTmFt ZTwvZW1waD4NCgkJCQkJCW9mIHRoZSBhc3NlcnRpb24gaXMgdGhlIG9ubHkgdmVoaWNsZSBmb3Ig dGhlIGZyYW1ld29yayB0bw0KCQkJCQkJbWF0Y2ggYSBzcGVjaWZpYyBhc3NlcnRpb24sIE5PVCB0 aGUgY29udGVudHMgb2YgdGhlDQoJCQkJCQllbGVtZW50LiBJZiB0aGUgYXNzZXJ0aW9uIGlzIGEg cGFyYW1ldGVyaXplZCBhc3NlcnRpb24gdGhlDQoJCQkJCQlhdXRob3JzIG11c3QgdW5kZXJzdGFu ZCB0aGF0IHRoaXMgdHlwZSBvZiBhc3NlcnRpb24gd2lsbA0KCQkJCQkJcmVxdWlyZSBhZGRpdGlv bmFsIHByb2Nlc3NpbmcgYnkgY29uc3VtZXJzIGluIG9yZGVyIHRvDQoJCQkJCQlkaXNhbWJpZ3Vh dGUgdGhlIGFzc2VydGlvbnMgb3IgdG8gdW5kZXJzdGFuZCB0aGUgc2VtYW50aWNzIG9mDQoJCQkJ CQl0aGUgbmFtZSB2YWx1ZSBwYWlycywgY29tcGxleCBjb250ZW50LCBhdHRyaWJ1dGUgdmFsdWVz DQoJCQkJCQljb250cmlidXRpb24gdG8gdGhlIHByb2Nlc3NpbmcuICBUaGUgdHJhZGVvZmYgaXMg dGhlIGdlbmVyYWxpdHkNCgkJCQkJCXZzLiB0aGUgZmxleGliaWxpdHkgYW5kIGNvbXBsZXhpdHkg b2YgdGhlIGNvbXBhcmlzb24gZXhwZWN0ZWQgZm9yIGEgZG9tYWluLiA8L3A+DQoJCQkJCQ0KCQkJ CQk8cD5JZiB0aGUgYXNzZXJ0aW9uDQoJCQkJCQlhdXRob3JzIHdhbnQgdG8gZGVsZWdhdGUgdGhl IHByb2Nlc3NpbmcgdG8gdGhlIGZyYW1ld29yaywNCgkJCQkJCXV0aWxpemluZyBuZXN0aW5nIHNo b3VsZCBiZSBjb25zaWRlcmVkLiBPdGhlcndpc2UsIGRvbWFpbg0KCQkJCQkJc3BlY2lmaWMgY29t cGFyaXNvbiBhbGdvcml0aG1zIG1heSBuZWVkIHRvIGJlIGRldmlzZWQgYW5kIGJlDQoJCQkJCQlk ZWxlZ2F0ZWQgdG8gdGhlIHNwZWNpZmljIGRvbWFpbiBoYW5kbGVycyB0aGF0IGFyZSBub3Qgdmlz aWJsZQ0KCQkJCQkJdG8gdGhlIFdTLVBvbGljeSBmcmFtZXdvcmsuIEhvd2V2ZXIsIGRvbWFpbiBz cGVjaWZpYyBpbnRlcnNlY3Rpb24gcHJvY2Vzc2luZyByZWR1Y2VzIA0KCQkJCQkJaW50ZXJvcCBh bmQgaW5jcmVhc2VzIHRoZSBidXJkZW4gdG8gaW1wbGVtZW50IGFuIGFzc2VydGlvbi48L3A+DQoJ CQkJCQ0KCQkJCQk8cCByb2xlPSJwcmFjdGljZSIgaWQ9ImJwLWRpc2NvdXJhZ2UtZG9tYWluLXNw ZWNpZmljLWludGVyc2VjdGlvbiI+DQoJCQkJCQk8cXVvdGU+RGlzY291cmFnZSBEb21haW4gU3Bl Y2lmaWMgSW50ZXJzZWN0aW9uPC9xdW90ZT4NCgkJCQkJCTxxdW90ZT5Bc3NlcnRpb24gYXV0aG9y cyBzaG91bGQgb25seSBzcGVjaWZ5IGRvbWFpbiBzcGVjaWZpYyANCgkJCQkJCWludGVyc2VjdGlv biBzZW1hbnRpY3Mgd2hlbiBwb2xpY3kgaW50ZXJzZWN0aW9uIGlzIGluc3VmZmljaWVudC48L3F1 b3RlPjwvcD4NCiAgICAgICAgCQkJCQ0KCQkJCQkJPHA+V2Ugd2lsbCB1c2UgdGhlIFdTLVNlY3Vy aXR5UG9saWN5IHRvIGlsbHVzdHJhdGUgdGhlIHVzZSBvZiBuZXN0ZWQgYXNzZXJ0aW9ucy4NCiAg ICAgICAgCQkJCTwvcD4NCgkJCQkJCTxwPlNlY3VyaW5nIG1lc3NhZ2VzIGlzIGEgY29tcGxleCB1 c2FnZSBzY2VuYXJpby4gVGhlIFdTLVNlY3VyaXR5UG9saWN5IEFzc2VydGlvbiBBdXRob3JzIGhh dmUgZGVmaW5lZCB0aGUNCiAgICAgICAgCQkJCTxjb2RlPnNwOlRyYW5zcG9ydEJpbmRpbmc8L2Nv ZGU+IHBvbGljeSBhc3NlcnRpb24gdG8gaW5kaWNhdGUNCiAgICAgICAJCQkJCSB0aGUgdXNlIG9m IHRyYW5zcG9ydC1sZXZlbCBzZWN1cml0eSBmb3IgcHJvdGVjdGluZw0KICAgICAgICAJCQkJbWVz c2FnZXMuIEp1c3QgaW5kaWNhdGluZyB0aGUgdXNlIG9mIHRyYW5zcG9ydC1sZXZlbCBzZWN1cml0 eQ0KICAgICAgICAJCQkJZm9yIHByb3RlY3RpbmcgbWVzc2FnZXMgaXMgbm90IHN1ZmZpY2llbnQu IFRvIHN1Y2Nlc3NmdWxseQ0KICAgICAgICAJCQkJaW50ZXJhY3Qgd2l0aCBhIFdlYiBzZXJ2aWNl LCB0aGUgY29uc3VtZXIgbXVzdCBrbm93IG5vdCBvbmx5DQogICAgICAgIAkJCQl0aGF0IHRyYW5z cG9ydC1sZXZlbCBzZWN1cml0eSBpcyByZXF1aXJlZCwgYnV0IGFsc28gdGhlDQogICAgICAgIAkJ CQl0cmFuc3BvcnQgdG9rZW4gdG8gdXNlLCB0aGUgc2VjdXJlIHRyYW5zcG9ydCB0byB1c2UsIHRo ZQ0KICAgICAgICAJCQkJYWxnb3JpdGhtIHN1aXRlIHRvIHVzZSBmb3IgcGVyZm9ybWluZyBjcnlw dG9ncmFwaGljDQogICAgICAgIAkJCQlvcGVyYXRpb25zLCBldGMuIFRoZSA8Y29kZT5zcDpUcmFu c3BvcnRCaW5kaW5nPC9jb2RlPiBwb2xpY3kNCiAgICAgICAgCQkJCWFzc2VydGlvbiBjYW4gcmVw cmVzZW50IHRoZXNlIGRlcGVuZGVudCBiZWhhdmlvcnMuDQogICAgICAgIAkJCQk8L3A+DQoJCQkJ CQk8cD5BIHBvbGljeSBhc3NlcnRpb24gbGlrZSB0aGUgPGNvZGU+c3A6VHJhbnNwb3J0QmluZGlu ZzwvY29kZT4NCiAgICAgICAgCQkJCWlkZW50aWZpZXMgYSB2aXNpYmxlIGJlaGF2aW9yIHRoYXQg aXMgYSByZXF1aXJlbWVudC4gQSBuZXN0ZWQNCiAgICAgICAgCQkJCXBvbGljeSBleHByZXNzaW9u IGNhbiBiZSB1c2VkIHRvIGVudW1lcmF0ZSB0aGUgZGVwZW5kZW50DQogICAgICAgIAkJCQliZWhh dmlvcnMgb24gdGhlIFRyYW5zcG9ydCBiaW5kaW5nLiBBIG5lc3RlZCBwb2xpY3kgZXhwcmVzc2lv bg0KICAgICAgICAJCQkJaXMgYSBwb2xpY3kgZXhwcmVzc2lvbiB0aGF0IGlzIGEgY2hpbGQgZWxl bWVudCBvZiBhbm90aGVyDQogICAgICAgIAkJCQlwb2xpY3kgYXNzZXJ0aW9uIGVsZW1lbnQuIEEg bmVzdGVkIHBvbGljeSBleHByZXNzaW9uIGZ1cnRoZXINCiAgICAgICAgCQkJCXF1YWxpZmllcyB0 aGUgYmVoYXZpb3Igb2YgaXRzIHBhcmVudCBwb2xpY3kgYXNzZXJ0aW9uLg0KICAgICAgICAJCQkJ PC9wPg0KCQkJCQkJPHA+SW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBjaGlsZCBQb2xpY3kgZWxl bWVudCBpcyBhIG5lc3RlZA0KICAgICAgICAJCQkJcG9saWN5IGV4cHJlc3Npb24gYW5kIGZ1cnRo ZXIgcXVhbGlmaWVzIHRoZSBiZWhhdmlvciBvZiB0aGUNCiAgICAgICAgCQkJCTxjb2RlPnNwOlRy YW5zcG9ydEJpbmRpbmc8L2NvZGU+IHBvbGljeSBhc3NlcnRpb24uIFRoZQ0KICAgICAgICAJCQkJ PGNvZGU+c3A6VHJhbnNwb3J0VG9rZW48L2NvZGU+IGlzIGEgbmVzdGVkIHBvbGljeSBhc3NlcnRp b24gb2YNCiAgICAgICAgCQkJCXRoZSA8Y29kZT5zcDpUcmFuc3BvcnRCaW5kaW5nPC9jb2RlPiBw b2xpY3kgYXNzZXJ0aW9uLiBUaGUNCiAgICAgICAgCQkJCTxjb2RlPnNwOlRyYW5zcG9ydFRva2Vu PC9jb2RlPiBhc3NlcnRpb24gcmVxdWlyZXMgdGhlIHVzZSBvZiBhDQogICAgICAgIAkJCQlzcGVj aWZpYyB0cmFuc3BvcnQgdG9rZW4gYW5kIGZ1cnRoZXIgcXVhbGlmaWVzIHRoZSBiZWhhdmlvciBv Zg0KICAgICAgICAJCQkJdGhlIDxjb2RlPnNwOlRyYW5zcG9ydEJpbmRpbmc8L2NvZGU+IHBvbGlj eSBhc3NlcnRpb24gKHdoaWNoDQogICAgICAgIAkJCQlhbHJlYWR5IHJlcXVpcmVzIHRoZSB1c2Ug b2YgdHJhbnNwb3J0LWxldmVsIHNlY3VyaXR5IGZvcg0KICAgICAgICAJCQkJcHJvdGVjdGluZyBt ZXNzYWdlcykuDQogICAgICAgIAkJCQk8L3A+DQoJCQkJPGV4YW1wbGU+DQoJCQkJCTxoZWFkPlRy YW5zcG9ydCBTZWN1cml0eSBQb2xpY3kgQXNzZXJ0aW9uPC9oZWFkPg0KCQkJCQk8ZWcgeG1sOnNw YWNlPSJwcmVzZXJ2ZSI+Jmx0O3NwOlRyYW5zcG9ydEJpbmRpbmcmZ3Q7DQogICZsdDtQb2xpY3km Z3Q7DQogICAgJmx0O3NwOlRyYW5zcG9ydFRva2VuJmd0Ow0KICAgICAgJmx0O1BvbGljeSZndDsN CiAgICAgICAgJmx0O3NwOkh0dHBzVG9rZW4mZ3Q7DQogICAgICAgICAgJmx0O3dzcDpQb2xpY3kv Jmd0Ow0KICAgICAgICAmbHQ7L3NwOkh0dHBzVG9rZW4mZ3Q7DQogICAgICAmbHQ7L1BvbGljeSZn dDsNCiAgICAmbHQ7L3NwOlRyYW5zcG9ydFRva2VuJmd0Ow0KICAgICZsdDtzcDpBbGdvcml0aG1T dWl0ZSZndDsNCiAgICAgICZsdDtQb2xpY3kmZ3Q7DQogICAgICAgICZsdDtzcDpCYXNpYzI1NlJz YTE1LyZndDsNCiAgICAgICZsdDsvUG9saWN5Jmd0Ow0KICAgICZsdDsvc3A6QWxnb3JpdGhtU3Vp dGUmZ3Q7DQogICZsdDsvUG9saWN5Jmd0Ow0KJmx0Oy9zcDpUcmFuc3BvcnRCaW5kaW5nJmd0Ozwv ZWc+DQoJCQkJPC9leGFtcGxlPg0KCQkJCQ0KCQkJCQkJPHA+VGhlIDxjb2RlPnNwOkFsZ29yaXRo bVN1aXRlPC9jb2RlPiBpcyBhIG5lc3RlZCBwb2xpY3kgYXNzZXJ0aW9uIG9mDQogICAgICAgICAg IAkJCQkgdGhlIDxjb2RlPnNwOlRyYW5zcG9ydEJpbmRpbmc8L2NvZGU+IHBvbGljeSBhc3NlcnRp b24uIFRoZSA8Y29kZT5zcDpBbGdvcml0aG1TdWl0ZTwvY29kZT4NCiAgICAgICAgICAJCQkJYXNz ZXJ0aW9uIHJlcXVpcmVzIHRoZSB1c2Ugb2YgdGhlIGFsZ29yaXRobSBzdWl0ZSBpZGVudGlmaWVk IGJ5IGl0cyBuZXN0ZWQgcG9saWN5DQogICAgICAgICAgCQkJCWFzc2VydGlvbiAoPGNvZGU+c3A6 QmFzaWMyNTZSc2ExNTwvY29kZT4NCgkJCQkJCTxlbXBoPmluIHRoZSBleGFtcGxlIGFib3ZlPC9l bXBoPikgYW5kIGZ1cnRoZXIgcXVhbGlmaWVzIHRoZSBiZWhhdmlvciBvZiB0aGUNCiAgICAgICAg ICAgIAkJCTxjb2RlPnNwOlRyYW5zcG9ydEJpbmRpbmc8L2NvZGU+IHBvbGljeSBhc3NlcnRpb24u DQogICAgICAgICAgICAJCQk8L3A+DQoJCQkJCQk8cD5TZXR0aW5nIGFzaWRlIHRoZSBkZXRhaWxz IG9mIHVzaW5nIHRyYW5zcG9ydC1sZXZlbA0KICAgICAgICAJCQkJc2VjdXJpdHksIGEgcG9saWN5 LWF3YXJlIGNsaWVudCB0aGF0IHJlY29nbml6ZXMgdGhpcyBwb2xpY3kNCiAgICAgICAgCQkJCWFz c2VydGlvbiBjYW4gZW5nYWdlIHRyYW5zcG9ydC1sZXZlbCBzZWN1cml0eSBhbmQgaXRzDQogICAg ICAgCQkJCQlkZXBlbmRlbnQgYmVoYXZpb3JzIGF1dG9tYXRpY2FsbHkuIFRoaXMgbWVhbnMgdGhl IGNvbXBsZXhpdHkgb2YNCiAgICAgICAgCQkJCXNlY3VyaXR5IHVzYWdlIGlzIGFic29yYmVkIGJ5 IGEgcG9saWN5LWF3YXJlIGNsaWVudCBhbmQgaGlkZGVuDQogICAgICAgIAkJCQlmcm9tIFdlYiBz ZXJ2aWNlIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuDQogICAgICAgIAkJCQk8L3A+DQogICAgICAg IAkJCQkNCgkJCQkJPHA+QXNzZXJ0aW9uIEF1dGhvcnMgc2hvdWxkIG5vdGUgdGhlIGVmZmVjdCBv ZiBuZXN0ZWQgcG9saWN5IGV4cHJlc3Npb25zDQoJCQkJCQlvbiBwb2xpY3kgaW50ZXJzZWN0aW9u IGluIHRoZWlyIG5lc3RlZCBwb2xpY3kgZGVzaWduLiBUaGUgcmVzdWx0IG9mDQoJCQkJCQlpbnRl cnNlY3RpbmcgYW4gYXNzZXJ0aW9uIHRoYXQgY29udGFpbnMgYW4gZW1wdHkgbmVzdGVkIHBvbGlj eQ0KCQkJCQkJZXhwcmVzc2lvbiB3aXRoIGFuIGFzc2VydGlvbiBvZiB0aGUgc2FtZSB0eXBlIHdp dGhvdXQgYSBuZXN0ZWQgcG9saWN5DQoJCQkJCQlleHByZXNzaW9uIGlzIHRoYXQgdGhlIGFzc2Vy dGlvbnMgYXJlIG5vdCBjb21wYXRpYmxlLiBUaGVyZWZvcmUsIHdoZW4NCgkJCQkJCXByb3ZpZGVy cyByZXF1aXJlIGRlcGVuZGVudCBiZWhhdmlvcnMgdGhlc2UgYmVoYXZpb3JzIHNob3VsZCBiZQ0K CQkJCQkJZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgYXNzZXJ0aW9ucyBpbiBhIG5lc3RlZCBwb2xp Y3kgZXhwcmVzc2lvbi4gV2hlbg0KCQkJCQkJdGhlIGRlZmluaXRpb24gb2YgYW4gYXNzZXJ0aW9u IGFsbG93cyBmb3IgbmVzdGVkIGRlcGVuZGVudCBiZWhhdmlvcnMsDQoJCQkJCQlidXQgdGhlIHVz ZSBvZiB0aGUgYXNzZXJ0aW9uIG9ubHkgY29udGFpbnMgYW4gZW1wdHkgbmVzdGVkIHBvbGljeQ0K CQkJCQkJZXhwcmVzc2lvbiwgdGhpcyBzcGVjaWZpYyB1c2UgaW5kaWNhdGVzIHRoZSBzcGVjaWZp Y2F0aW9uIG9mIG5vIG5lc3RlZA0KCQkJCQkJZGVwZW5kZW50IGJlaGF2aW9ycy4gVGhpcyB1c2Ug bXVzdCBub3QgYmUgaW50ZXJwcmV0ZWQgYXMgYmVpbmcNCgkJCQkJCWNvbXBhdGlibGUgd2l0aCAi YW55IiBvZiB0aGUgbmVzdGVkIGRlcGVuZGVudCBiZWhhdmlvcnMgdGhhdCBhcmUNCgkJCQkJCWFs bG93ZWQgYnkgdGhlIGFzc2VydGlvbiwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYnkgdGhl IGFzc2VydGlvbg0KCQkJCQkJZGVmaW5pdGlvbi48L3A+DQoJCQkJCQ0KCQkJCQk8cD5BcyBhbiBl eGFtcGxlLCBXUy1TZWN1cml0eSBQb2xpY3kgZGVmaW5lcyA8Y29kZT5zcDpIdHRwVG9rZW48L2Nv ZGU+IGFzc2VydGlvbiB0bw0KCQkJCQkJY29udGFpbiB0aHJlZSBwb3NzaWJsZSBuZXN0ZWQgZWxl bWVudHMsIDxjb2RlPnNwOkh0dHBCYXNpY0F1dGhlbnRpY2F0aW9uPC9jb2RlPiwNCgkJCQkJCTxj b2RlPnNwOkh0dHBEaWdlc3RBdXRoZW50aWNhdGlvbjwvY29kZT4gYW5kIDxjb2RlPnNwOlJlcXVp cmVDbGllbnRDZXJ0aWZpY2F0ZTwvY29kZT4uIFdoZW4gdGhlDQoJCQkJCQk8Y29kZT5IdHRwVG9r ZW48L2NvZGU+IGlzIHVzZWQgd2l0aCBhbiBlbXB0eSBuZXN0ZWQgcG9saWN5IGluIGEgcG9saWN5 IGV4cHJlc3Npb24NCgkJCQkJCWJ5IGEgcHJvdmlkZXIsIGl0IHdpbGwgaW5kaWNhdGUgdGhhdCBu b25lIG9mIHRoZSBkZXBlbmRlbnQgYmVoYXZpb3JzDQoJCQkJCQluYW1lbHkgYXV0aGVudGljYXRp b24gb3IgY2xpZW50IGNlcnRpZmljYXRlIGlzIHJlcXVpcmVkLjwvcD4NCgkJCQkJDQoJCQkJCTxl eGFtcGxlPg0KCQkJCQkJPGhlYWQ+RW1wdHkgTmVzdGVkIFBvbGljeSBFeHByZXNzaW9uPC9oZWFk Pg0KCQkJCQkJPGVnIHhtbDpzcGFjZT0icHJlc2VydmUiPiZsdDtzcDpUcmFuc3BvcnRUb2tlbiZn dDsgDQogICZsdDt3c3A6UG9saWN5Jmd0OyANCgkmbHQ7c3A6SHR0cHNUb2tlbiZndDsgDQoJICAm bHQ7d3NwOlBvbGljeS8mZ3Q7IA0KCSZsdDsvc3A6SHR0cHNUb2tlbiZndDsgDQogICZsdDsvd3Nw OlBvbGljeSZndDsgDQombHQ7L3NwOlRyYW5zcG9ydFRva2VuJmd0OzwvZWc+DQoJCQkJCTwvZXhh bXBsZT4gDQoJCQkJCQ0KCQkJCQk8cD5BIG5vbi1hbm9ueW1vdXMgY2xpZW50IHdobyByZXF1aXJl cyBhdXRoZW50aWNhdGlvbiBvciBjbGllbnQNCgkJCQkJCWNlcnRpZmljYXRlIHdpbGwgbm90IGJl IGFibGUgdG8gdXNlIHRoaXMgcHJvdmlkZXIgc29sZWx5IG9uIHRoZSBiYXNpcw0KCQkJCQkJb2Yg aW50ZXJzZWN0aW9uIGFsZ29yaXRobSBhbG9uZS48L3A+DQoJCQkJCQ0KCQkJCTwvZGl2Mz4NCgkJ CQkJDQoJCSAgICA8L2RpdjI+IA0KCQkgICAgPGRpdjIgaWQ9Iklnbm9yYWJsZSI+DQoJCSAgICAJ PGhlYWQ+RGVzaWduYXRpbmcgSWdub3JhYmxlIEJlaGF2aW9yPC9oZWFkPg0KCQkgICAgPGRpdjMg aWQ9Iklnbm9yYWJsZS1JbnRlcnNlY3Rpb24iPiANCgkJCQk8aGVhZD5JZ25vcmFibGUgQmVoYXZp b3IgaW4gSW50ZXJzZWN0aW9uPC9oZWFkPg0KCQkJCTxwPklnbm9yYWJsZSBhc3NlcnRpb25zIHJl cHJlc2VudCBiZWhhdmlvcnMgdGhhdCBtYXkgYmUgaW5nb3JlZCBieSB0aGUgaW50ZXJzZWN0aW9u DQoJCQkJYWxnb3JpdGhtLiBBdCBhIG1pbmltdW0sIGFzc2VydGlvbiBhdXRob3JzIG5lZWQgdG8g ZG9jdW1lbnQgdGhlIHNlbWFudGljcyBvZg0KCQkJCXRoZSBhc3NlcnRpb25zIFtzZWUgQmVzdCBQ cmFjdGljZSAyXSBhbmQgaW5jbHVkZWQgaW4gdGhhdCBkZWZpbml0aW9uDQoJCQkJc2hvdWxkIGJl IHNvbWUgaW5kaWNhdGlvbiBvZiB0aGUgaW1wYWN0IG9mIHRoZSBhc3NlcnRpb24gYmVoYXZpb3IN CgkJCQlhdCBpbnRlcnNlY3Rpb24gYW5kIGF0IHJ1bnRpbWUuIA0KCQkJCTwvcD4NCgkJCQk8cD4N CgkJCQlXaGVuIHBvbGljeSBleHByZXNzaW9uIGF1dGhvcnMgaW5jbHVkZSB0aGVzZSBhc3NlcnRp b25zIGluIHNlcnZpY2UNCgkJCQlwb2xpY2llcywgc29tZSBiZWhhdmlvcnMgbWF5IGJlIG1hcmtl ZCBieSB1c2luZyB0aGUgd3NwOklnbm9yYWJsZSBhdHRyaWJ1dGUgd2l0aCBhDQoJCQkJdmFsdWUg b2YgInRydWUiLiAoSW4gb3JkZXIgdG8gc2ltcGxpZnkgcmVmZXJlbmNlIHRvIHN1Y2ggYXNzZXJ0 aW9ucywgd2UganVzdCB1c2UNCgkJCQl0aGUgcGhyYXNlICJpZ25vcmFibGUgYXNzZXJ0aW9ucyIg aW4gdGhpcyBzZWN0aW9uKS4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgaWYNCgkJCQlpdCBpcyBw b3NzaWJsZSB0byB1c2UgdGhlIHdzcDpJZ25vcmFibGUgYXR0cmlidXRlLCB0aGF0IHRoZSBhc3Nl cnRpb24gYXV0aG9ycw0KCQkJCWluZGljYXQgdGhpcyBpbiBhbnkgWE1MIG91dGxpbmUgW0Jlc3Qg UHJhY3RpY2UgN10uIA0KCQkJCQ0KCQkJCUR1cmluZyBpbnRlcnNlY3Rpb24sIHRoZXJlIGFyZSB0 d28gZGVmaW5lZCBtb2RlcyBmb3IgcHJvY2Vzc2luZywgbGF4IGFuZCBzdHJpY3QuDQoJCQkJUG9s aWN5IGFzc2VydGlvbnMgbWFya2VkIHdpdGggYW4gYXR0cmlidXRlIHRvIGluZGljYXRlIHRoYXQg dGhlIGFzc2VydGlvbg0KCQkJICAJY2FuIGJlIGlnbm9yZWQgYnkgdGhlIGludGVyc3RlY3Rpb24g YWxnb3JpdGhtIGFyZSBwcm9jZXNzZWQgZGlmZmVyZW50bHkgYnkgdGhlDQoJCQkgIAlhbGdvcml0 aG0gc3BlY2lmaWVkIGluIHRoZSBQb2xpY3kgRnJhbWVzb3JrIFtzZWUgc3RyaWN0IGFuZCBsYXgg bW9kZSBpbiBGcmFtZXdvcmsgYW5kIA0KCQkJICAJUHJpbWVyIGZvciBkZXRhaWxzXS4gQXNzZXJ0 aW9uIEF1dGhvcnMgc2hvdWxkIGNvbnNpZGVyDQoJCQkgIAl3aGV0aGVyIHRoZSBiZWhhdmlvciBy ZXByZXNlbnRlZCBieSB0aGUgQXNzZXJ0aW9uIHRoZXkgYXJlIGRlZmluaW5nIGNhbiBiZSBzYWZl bHkNCgkJCSAgCWlnbm9yZWQgZm9yIHRoZSBwdXJwb3NlcyBvZiANCgkJCSAgCWludGVyc2VjdGlv biwgYW5kIGluZGljYXRlIHRoaXMgaW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIGFzc2VydGlvbi4g IFRoZSB1c2Ugb2YgdGhlIA0KCQkJICAJaWdub3JhYmxlIGF0dHJpYnV0ZSBpbmZsdWVuY2VzIHdo ZXRoZXIgb3Igbm90IGNlcnRhaW4gYXNzZXJ0aW9ucyBhcmUgcGFydCBvZiB0aGUNCgkJCSAgCWNv bXBhdGFiaWxpdHkgYXNzZXNzbWVudCBiZXR3ZWVuIHR3byBhbHRlcm5hdGl2ZXMuIFNlZSBbdGJk XSBmb3IgZGV0YWlscyBvbiB0aGUgdXNlIA0KCQkJICAJb2YgdGhlIGlnbm9yYWJsZSBhdHRyaWJ1 dGUuDQoJCQkJPC9wPg0KCQkJPC9kaXYzPg0KCQkJPGRpdjMgaWQ9ImRvYy1pZ25vcmFibGUtYXNz ZXJ0aW9ucyI+DQoJCQkJCTxoZWFkPklnbm9yYWJsZSBCZWhhdmlvciBhdCBydW50aW1lPC9oZWFk Pg0KCQkJCTxwPg0KCQkJCUlnbm9yYWJsZSBiZWhhdmlvcnMgaW5kaWNhdGUgYmVoYXZpb3IgYXQg dGhlIHRpbWUgb2YgaW50ZXJzZWN0aW9uLiBBdCBydW50aW1lLA0KCQkJCWEgcGFydHkgdGhhdCBp bmRpY2F0ZWQgYW4gaWdub3JhYmxlIGJlaGF2aW9yIGluIGl0cyBwb2xpY3kgbWF5IGVuZ2FnZSB0 aGUgYmVoYXZpb3INCgkJCQl0aGF0IHdhcyBtYXJrZWQgImlnbm9yYWJsZSIgZm9yIGludGVyc2Vj dGlvbi4gQXNzZXJ0aW9uIGF1dGhvcnMgc2hvdWxkIGluZGljYXRlDQoJCQkJdGhlIHNlbWFudGlj IG9mIHRoZSBydW50aW1lIGJlaGF2aW9yIGluIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYXNzZXJ0 aW9uIHRoYXQgYWxsb3dzDQoJCQkJdGhlIGlnbm9yYWJsZSBhdHRyaWJ1dGUuDQoJCQkgIAk8L3A+ DQoJCQkgIAk8cD4NCgkJCSAgCVBvbGljeSBpbnRlcnNlY3Rpb24gaW4gc3RyaWN0IG1vZGUgd2ls bCByZXN1bHQgaW4gYWx0ZXJuYXRpdmVzIHRoYXQgY29uc2lzdCBvbmx5DQoJCQkgIAlvZiBhc3Nl cnRpb25zIGtub3duIHRvIGJvdGggcGFydGllcy4gSGVuY2UsIHRoZSBydW50aW1lIGJlaGF2aW9y IGlzIGtub3duIHRvIGJvdGgNCgkJCSAgCXBhcnRpZXMuIA0KCQkJICAJPC9wPg0KCQkJICAJPHA+ DQoJCQkgIAlQb2xpY3kgaW50ZXJzZWN0aW9uIGluIGxheCBtb2RlIG1heSByZXN1bHQgaW4gYWx0 ZXJuYXRpdmVzIHdpdGggYXNzZXJ0aW9ucyB0aGF0IA0KCQkJICAJZXhpc3QgaW4gb25lIHBhcnR5 J3MgcG9saWN5IGJ1dCBub3QgdGhlIG90aGVyIHBhcnR5J3MgcG9saWN5LiBJbiB0aGUgY2FzZSB3 aGVyZQ0KCQkJICAJb25lIHBhcnR5IGNob29zZXMgdG8gZW5nYWdlIGluIHJ1bnRpbWUgYmVoYXZp b3Igd2l0aCBhbm90aGVyIHBhcnR5IGJhc2VkIG9uIA0KCQkJICAJYWx0ZXJuYXRpdmVzIGZyb20g YSBsYXggbW9kZSBpbnRlcnNlY3Rpb24gYWxnb3JpdGhtLCB0aGUgcnVudGltZSBiZWhhdmlvciBp cyBvdXQNCgkJCSAgCW9mIHNjb3BlIG9mIHRoZSBwb2xpY3kgZnJhbWV3b3JrLg0KICAgICAJCSAg ICA8L3A+DQoJICAgIDwvZGl2Mz4gIA0KCQk8L2RpdjI+DQoJCTxkaXYyIGlkPSJvcHRpb25hbC1w b2xpY3ktYXNzZXJ0aW9uIj4NCgkJCTxoZWFkPkRlc2lnbmF0aW5nIE9wdGlvbmFsIEJlaGF2aW9y czwvaGVhZD4NCgkJCTxkaXYzPg0KCQkJCTxoZWFkPk9wdGlvbmFsIGJlaGF2aW9yIGluIENvbXBh Y3QgYXV0aG9yaW5nPC9oZWFkPg0KCQkJCTxwPk9wdGlvbmFsIGJlaGF2aW9ycyByZXByZXNlbnQg YmVoYXZpb3JzIHRoYXQgbWF5IGJlIGVuZ2FnZWQgYnkgYSBjb25zdW1lci4gV2hlbiB1c2luZyB0 aGUNCgkJCQkJY29tcGFjdCBhdXRob3JpbmcgZm9ybSBmb3IgYXNzZXJ0aW9ucywgc3VjaCBiZWhh dmlvcnMgYXJlIG1hcmtlZCBieQ0KCQkJCQl1c2luZyA8Y29kZT53c3A6T3B0aW9uYWw8L2NvZGU+ IGF0dHJpYnV0ZSB3aXRoIGEgdmFsdWUgb2YNCgkJCQkJInRydWUiLiAoSW4gb3JkZXIgdG8gc2lt cGxpZnkgcmVmZXJlbmNlIHRvIHN1Y2ggYXNzZXJ0aW9ucywgDQoJCQkJCXdlIGp1c3QgdXNlIHRo ZSBwaHJhc2Ug4oCcb3B0aW9uYWwgYXNzZXJ0aW9uc+KAnSBpbiB0aGlzIHNlY3Rpb24uKQ0KCQkJ CQlEdXJpbmcgdGhlIHByb2Nlc3Mgb2Ygbm9ybWFsaXphdGlvbiB0aGUgcnVudGltZQ0KCQkJCQli ZWhhdmlvciBpcyBpbmRpY2F0ZWQgYnkgdHdvIHBvbGljeSBhbHRlcm5hdGl2ZXMsIG9uZSB3aXRo IGFuZA0KCQkJCQlvbmUgd2l0aG91dCB0aGUgYXNzZXJ0aW9uLiBJbiBhIGNvbnN1bWVyL3Byb3Zp ZGVyDQoJCQkJCXNjZW5hcmlvLCB0aGUgY2hvaWNlIG9mIGVuZ2FnaW5nIHRoZSBydW50aW1lIGJl aGF2aW9yIGlzIHVwb24NCgkJCQkJdGhlIGNvbnN1bWVyIGJ5IHNlbGVjdGluZyB0aGUgYXBwcm9w cmlhdGUgcG9saWN5IGFsdGVybmF0aXZlLg0KCQkJCQlUaGUgcHJvdmlkZXIgbWF5IGluZmx1ZW5j ZSB3aGF0IGlzIHBvc3NpYmxlIGJ5IGNob29zaW5nIHdoZXRoZXIgb3Igbm90IHRvIA0KCQkJCQlp bmNsdWRlIHBvbGljeSBhbHRlcm5hdGl2ZXMgaW4gYSBwb2xpY3kgZXhwcmVzc2lvbiwgYnkgdXNp bmcgIA0KCQkJCQl0aGUgd3NwOk9wdGlvbmFsIGF0dHJpYnV0ZS4gQXNzZXJ0aW9uIEF1dGhvcnMg c2hvdWxkIGNsZWFybHkgaW5kaWNhdGUgaW4gdGhlIGFzc2VydGlvbiANCgkJCQkJZGVmaW5pdGlv biB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGJlIG9wdGlvbmFsIFtTZWUgU2VjdGlvbiB4eF0uIDwv cD4NCgkJCQk8cD5UaGUgcG9ydGlvbiBvZiB0aGUgYXNzZXJ0aW9uIGRlZmluaXRpb24gdGhhdCBk ZXNjcmliZXMgcG9saWN5IHN1YmplY3RzIGFuZCBhc3NlcnRpb24gYXR0YWNobWVudCBzaG91bGQg aW5kaWNhdGUNCgkJCQl0aGF0IHdzcDpPcHRpb25hbCBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0 aGF0IHRoZSBiZWhhdmlvciBpcyBvcHRpb25hbCBmb3IgdGhlIHBvbGljeSBzdWJqZWN0LjwvcD4N Cg0KCQkJCTxwPkNvbnRpbnVpbmcgdGhlIGV4YW1wbGUgd2l0aCB0aGUgaHlwb3RoZXRpY2FsIFNh bXBsZUFzc2VydGlvbiwgdGhlIHNlY3Rpb24gb24gQXNzZXJ0aW9uIEF0dGFjaG1lbnQgc2hvdWxk IA0KCQkJCQlpbmNsdWRlIGRpc2N1c3Npb24gb2Ygb3B0aW9uYWxpdHkuDQoJCQkJPC9wPg0KCQkJ CTxleGFtcGxlPg0KCQkJCQk8aGVhZD5Bc3NlcnRpb24gQXR0YWNobWVudCB0ZXh0IG1lbnRpb25z IG9wdGlvbmFsaXR5IGZvciBwb2xpY3kgYXNzZXJ0aW9uIHN1YmplY3RzPC9oZWFkPg0KCQkJCQk8 ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+VGhlIFNhbXBsZUFzc2VydGlvbiBwb2xpY3kgYXNzZXJ0 aW9uIGluZGljYXRlcyBiZWhhdmlvciBvdmVyIGFsbCBtZXNzYWdlcyBpbiBhIGJpbmRpbmcsIHNv DQppdCBoYXMgYW4gRW5kcG9pbnQgUG9saWN5IFN1YmplY3QgYW5kIG11c3QgYmUgYXR0YWNoZWQg dG8gYSB3c2RsOmJpbmRpbmcgb3Igd3NkbDpwb3J0LiANClRoZSBhc3NlcnRpb24gbWF5IGJlIG9w dGlvbmFsIHdoZW4gYXR0YWNoZWQgdG8gdGhlc2Ugc3ViamVjdHMsIGFsbG93aW5nIHVzZSBvZiB3 c3A6T3B0aW9uYWwuDQoJCQkJCTwvZWc+PC9leGFtcGxlPg0KCQkJPC9kaXYzPg0KCQkJPGRpdjM+ DQoJCQkJPGhlYWQ+T3B0aW9uYWwgYmVoYXZpb3IgYXQgcnVudGltZTwvaGVhZD4NCgkJCQk8cD5T aW5jZSBvcHRpb25hbCBiZWhhdmlvcnMgaW5kaWNhdGUgb3B0aW9uYWxpdHkgZm9yDQoJCQkJCWJv dGggdGhlIHByb3ZpZGVyIGFuZCB0aGUgY29uc3VtZXIsIGJlaGF2aW9ycyB0aGF0IG11c3QNCgkJ CQkJYWx3YXlzIGJlIGVuZ2FnZWQgYnkgYSBjb25zdW1lciBtdXN0IG5vdCBiZSBtYXJrZWQgYXMN CgkJCQkJIm9wdGlvbmFsIiB3aXRoIGEgdmFsdWUgInRydWUiIHNpbmNlIHRoaXMgd291bGQgYWxs b3cgdGhlDQoJCQkJCWNvbnN1bWVyIHRvIHNlbGVjdCB0aGUgcG9saWN5IGFsdGVybmF0aXZlIHRo YXQgZG9lcyBub3QgY29udGFpbiB0aGUgYXNzZXJ0aW9uLA0KCQkJCQlhbmQgdGh1cyBub3QgZW5n YWdpbmcgdGhlIGJlaGF2aW9yLg0KCQkJCTwvcD4NCgkJCQk8cCByb2xlPSJwcmFjdGljZSIgaWQ9 ImJwLWxpbWl0LW9wdGlvbmFsLWFzc2VydGlvbnMiPg0KCQkJCQk8cXVvdGU+TGltaXQgdXNlIG9m IE9wdGlvbmFsIEFzc2VydGlvbnM8L3F1b3RlPg0KCQkJCQk8cXVvdGU+QXNzZXJ0aW9uIEF1dGhv cnMgc2hvdWxkIG5vdCB1c2Ugb3B0aW9uYWwgYXNzZXJ0aW9ucyBmb3IgYmVoYXZpb3JzIHRoYXQg bXVzdCBiZSBwcmVzZW50IA0KCQkJCQkJaW4gY29tcGF0aWJsZSBwb2xpY3kgZXhwcmVzc2lvbnMu PC9xdW90ZT4NCgkJCQk8L3A+DQoJCQkJPHA+IFRoZSB0YXJnZXQgc2NvcGUgb2YgYW4gb3B0aW9u YWwgYXNzZXJ0aW9uIGlzIGFuIGltcG9ydGFudCBmYWN0b3IgZm9yDQoJCQkJCUFzc2VydGlvbiBB dXRob3JzIHRvIGNvbnNpZGVyIGFzIGl0IGRldGVybWluZXMgdGhlDQoJCQkJCTxlbXBoPmdyYW51 bGFyaXR5PC9lbXBoPiB3aGVyZSB0aGUgYmVoYXZpb3IgaXMgb3B0aW9uYWxseQ0KCQkJCQllbmdh Z2VkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGFzc2VydGlvbiBpcyB0YXJnZXRlZCBmb3IgYW4NCgkJ CQkJZW5kcG9pbnQgcG9saWN5IHN1YmplY3QsIGl0IGlzIGV4cGVjdGVkIHRvIGdvdmVybiBhbGwg dGhlDQoJCQkJCW1lc3NhZ2VzIHRoYXQgYXJlIGluZGljYXRlZCBieSB0aGUgc3BlY2lmaWMgZW5k cG9pbnQgd2hlbg0KCQkJCQlvcHRpb25hbCBiZWhhdmlvciBpcyA8ZW1waD4gZW5nYWdlZCA8L2Vt cGg+LiBTaW5jZSB0aGUNCgkJCQkJYmVoYXZpb3Igd291bGQgYmUgYXBwbGljYWJsZSB0byBwb2xp Y3kgc3ViamVjdCB0aGF0IGlzDQoJCQkJCWRlc2lnbmF0ZWQsIGl0IGlzIGltcG9ydGFudCBmb3Ig dGhlIEFzc2VydGlvbiBBdXRob3JzDQoJCQkJCXRvIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgbGV2 ZWwgb2YgZ3JhbnVsYXJpdHkgZm9yIG9wdGlvbmFsDQoJCQkJCWJlaGF2aW9ycywgdG8gY29uc2lk ZXIgd2hldGhlciBhIHNwZWNpZmljIG1lc3NhZ2Ugb3IgYWxsIG1lc3NhZ2VzLCBldGMuICBhcmUg dGFyZ2V0ZWQuIA0KCQkJCTwvcD4NCgkJCQk8cD4NCgkJCQkJV2hlbiBvcHRpb25hbCBiZWhhdmlv cnMgYXJlIGluZGljYXRlZCBieSBhdHRhY2hpbmcgYXNzZXJ0aW9ucyB3aXRoIA0KCQkJCQlvbmx5 IG9uZSBzaWRlIG9mIGFuIGludGVyYWN0aW9uLCBzdWNoIGFzIGFuIGluYm91bmQgbWVzc2FnZSBv ZiBhIA0KCQkJCQlyZXF1ZXN0LXJlc3BvbnNlLCB0aGUgZW5nYWdlbWVudCBvZiB0aGUgcmVzdCBv ZiB0aGUgaW50ZXJhY3Rpb24gd2lsbCANCgkJCQkJYmUgdW5kZWZpbmVkLiBUaGVyZWZvcmUsIHRo ZSBBc3NlcnRpb24gQXV0aG9ycyBhcmUgZW5jb3VyYWdlZCB0byANCgkJCQkJY29uc2lkZXIgaG93 IHRoZSBhdHRhY2htZW50IG9uIGEgbWVzc2FnZSBwb2xpY3kgc3ViamVjdCBvbiBhIHJlc3BvbnNl IA0KCQkJCQltZXNzYWdlIHNob3VsZCBiZSB0cmVhdGVkIHdoZW4gb3B0aW9uYWwgYmVoYXZpb3Jz IGFyZSBzcGVjaWZpZWQgZm9yIA0KCQkJCQltZXNzYWdlIGV4Y2hhbmdlcyB3aXRoaW4gYSByZXF1 ZXN0IHJlc3BvbnNlIGZvciByZXNwb25zZSBtZXNzYWdlcywgDQoJCQkJCXVzaW5nIG1lc3NhZ2Ug cG9saWN5IHN1YmplY3QuIExlYXZpbmcgdGhlIHNlbWFudGljcyBub3Qgc3BlY2lmaWVkIG9yIA0K CQkJCQlpbmNvbXBsZXRlbHkgc3BlY2lmaWVkIG1heSByZXN1bHQgaW4gcHJvdmlkZXJzIG1ha2lu ZyBhc3N1bXB0aW9ucy4gDQoJCQkJCVNpbWlsYXJseSwgaWYgZW5nYWdlbWVudCBvZiBhIGJlaGF2 aW9yIGlzIG9ubHkgc3BlY2lmaWVkIGZvciBhbiANCgkJCQkJb3V0Ym91bmQgbWVzc2FnZSwgdGhl IEFzc2VydGlvbiBBdXRob3JzIHNob3VsZCBjb25zaWRlciBkZXNjcmliaW5nIA0KCQkJCQl0aGUg c2VtYW50aWNzIGlmIHRoZSBpbmNvbWluZyBtZXNzYWdlcyBhbHNvIHV0aWxpemVkIHRoZSBiZWhh dmlvci4gDQoJCQkJCVRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgaWYgdGhlIGFzc2VydGlv biBpcyBhcHBsaWNhYmxlIHRvIG1vcmUgDQoJCQkJCXRoYW4gb25lIHNwZWNpZmljIHBvbGljeSBz dWJqZWN0LiBPbmUgYXBwcm9hY2ggdGhhdCBpcyBjdXJyZW50bHkgdGFrZW4gDQoJCQkJCWJ5IFdT LVJNIFBvbGljeSBbPGJpYnJlZiByZWY9IldTLVJNLVBvbGljeSIvPl0gaXMgdG8gDQoJCQkJCWlu dHJvZHVjZSBib3RoIG1lc3NhZ2UgYW5kIGVuZHBvaW50IHBvbGljeSBzdWJqZWN0cyBmb3Igb25l IG9mIGl0cyANCgkJCQkJYXNzZXJ0aW9ucyBhbmQgcmVxdWlyZSB0aGUgdXNlIG9mIGVuZHBvaW50 IHBvbGljeSBzdWJqZWN0IA0KCQkJCQl3aGVuIG1lc3NhZ2UgcG9saWN5IHN1YmplY3QgaXMgdXNl ZCB2aWEgYXR0YWNobWVudC4NCgkJCQk8L3A+DQoJCQkJPHAgcm9sZT0icHJhY3RpY2UiIGlkPSJi cC1lbnRpcmUtbWVwLWZvci1vcHRpb25hbCI+DQoJCQkJCTxxdW90ZT5Db25zaWRlciBlbnRpcmUg bWVzc2FnZSBleGNoYW5nZSBwYXR0ZXJuIHdoZW4gc3BlY2lmeWluZyBBc3NlcnRpb25zIHRoYXQg bWF5IGJlIG9wdGlvbmFsPC9xdW90ZT4NCgkJCQkJPHF1b3RlPkFzc2VydGlvbiBBdXRob3JzIHNo b3VsZCBhc3NvY2lhdGUgb3B0aW9uYWwgYXNzZXJ0aW9ucyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBl bmRwb2ludCBhbmQgdXNlIHRoZSBzbWFsbGVzdCANCgkJCQkJCXBvc3NpYmxlIGdyYW51bGFyaXR5 IHRvIGxpbWl0IHRoZSBkZWdyZWUgdG8gd2hpY2ggb3B0aW9uYWxpdHkgYXBwbGllcy48L3F1b3Rl Pg0KCQkJCTwvcD4NCgkJCQk8cD4NCgkJCQkJQmVoYXZpb3JzIG11c3QgYmUgZW5nYWdlZA0KCQkJ CQl3aXRoIHJlc3BlY3QgdG8gbWVzc2FnZXMgdGhhdCBhcmUgdGFyZ2V0ZWQgdG8gdGhlIHByb3Zp ZGVyDQoJCQkJCXNvIHRoYXQgdGhlIHByb3ZpZGVyIGNhbiBkZXRlcm1pbmUgdGhhdCB0aGUgb3B0 aW9uYWwNCgkJCQkJYmVoYXZpb3IgaXMgZW5nYWdlZC4gSW4gb3RoZXIgd29yZHMsIHRoZSBuZWVk IGZvciBzZWxmDQoJCQkJCWRlc2NyaWJpbmcgbWVzc2FnZXMgWzxzcGVjcmVmIHJlZj0ic2VsZi1k ZXNjcmliaW5nIi8+XSBzaG91bGQgDQoJCQkJCW5vdCBiZSBmb3Jnb3R0ZW4uIA0KCQkJCQlBbiBl eHBsaWNpdCwgb3V0IG9mIGJhbmQgbWVjaGFuaXNtIG1pZ2h0IGJlIG5lY2Vzc2FyeSB0byBlbmFi bGUgYSANCgkJCQkJY2xpZW50IHRvIGluZGljYXRlIHRoYXQNCgkJCQkJdGhlIG9wdGlvbmFsIGJl aGF2aW9yIGlzIGVuZ2FnZWQuIA0KCQkJCQkoU3VjaCBhbiBvdXQgb2YgYmFuZCBtZWNoYW5pc20g aXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgV1MtUG9saWN5IA0KCQkJCQlGcmFtZXdvcmspLiAgDQoJ CQkJPC9wPg0KCQkJCTxwIHJvbGU9InByYWN0aWNlIiBpZD0iYnAtaW5kaWNhdGUtb3B0aW9uYWwt YXNzZXJ0aW9uLXVzZSI+DQoJCQkJPHF1b3RlPkluY2x1ZGUgc2VtYW50aWNzIG9mIHVzZSB3aGVu IE9wdGlvbmFsIEFzc2VydGlvbiBpcyBpbmRpY2F0ZWQgPC9xdW90ZT4NCgkJCQk8cXVvdGU+V2hl biBhIGdpdmVuIGJlaGF2aW9yIG1heSBiZSBvcHRpb25hbCwgaXQgbXVzdCBiZSBwb3NzaWJsZSBm b3IgYm90aCBtZXNzYWdlIHBhcnRpY2lwYW50cyB0byBkZXRlcm1pbmUgdGhhdCB0aGUgYXNzZXJ0 aW9uIGlzIHNlbGVjdGVkIGJ5IGJvdGggcGFydGllcywgDQoJCQkJCWVpdGhlciBvdXQgb2YgYmFu ZCBvciBhcyByZWZsZWN0ZWQgYnkgdGhlIG1lc3NhZ2UgY29udGVudC48L3F1b3RlPg0KCQkJCQk8 L3A+DQoJCQkJPGRpdjQ+DQoJCQkJCTxoZWFkPkV4YW1wbGU8L2hlYWQ+DQoJCQkJPHA+DQoJCQkJ CVRoZSA8YmlicmVmIHJlZj0iV1MtUG9saWN5LVByaW1lciIvPiBkb2N1bWVudCBjb250YWlucyBh biBleGFtcGxlIHRoYXQgb3V0bGluZXMgdGhlIA0KCQkJCQl1c2Ugb2YgDQoJCQkJCTxiaWJyZWYg cmVmPSJNVE9NIi8+IGFzIGFuIG9wdGlvbmFsIGJlaGF2aW9yIHRoYXQgY2FuIGJlIGVuZ2FnZWQg YnkgYSBjb25zdW1lci4gDQoJCQkJCVJlbGF0ZWQgdG8gdGhpcyANCgkJCQkJYmVoYXZpb3IgIGlz IGFuIGFzc2VydGlvbiB0aGF0IGlkZW50aWZpZXMgdGhlIHVzZSBvZiBNSU1FIE11bHRpcGFydC9S ZWxhdGVkIA0KCQkJCQlzZXJpYWxpemF0aW9uIFs8YmlicmVmIHJlZj0iTVRPTVBvbGljeSIvPl0u IFBvbGljeS1hd2FyZSBjbGllbnRzIHRoYXQgcmVjb2duaXplIGFuZCBlbmdhZ2UgdGhpcyBwb2xp Y3kgDQoJCQkJCWFzc2VydGlvbiB3aWxsIHVzZSBPcHRpbWl6ZWQgTUlNRSBTZXJpYWxpemF0aW9u IGZvciBtZXNzYWdlcy4NCgkJCQk8L3A+PHA+CQ0KCQkJCQlUaGUgc2VtYW50aWNzIG9mIHRoZSBN VE9NIGFzc2VydGlvbiBkZWNsYXJlIHRoYXQgdGhlIGJlaGF2aW9yIG11c3QgYmUgcmVmbGVjdGVk IGluIA0KCQkJCQltZXNzYWdlcyBieSByZXF1aXJpbmcgdGhhdCB0aGV5IHVzZSBhbiBvYnZpb3Vz IHdpcmUgZm9ybWF0IChNSU1FIE11bHRpcGFydC9SZWxhdGVkIA0KCQkJCQlzZXJpYWxpemF0aW9u KS4gVGh1cywgdGhpcyBvcHRpb25hbCBiZWhhdmlvciBpcyBzZWxmIGRlc2NyaWJpbmcuIEZvciBl eGFtcGxlLCBhbiANCgkJCQkJaW5ib3VuZCBtZXNzYWdlIHRvIGEgd2ViIHNlcnZpY2UgdGhhdCBy ZXF1aXJlcyBNVE9NIG11c3QgYWRoZXJlIHRvICBPcHRpbWl6ZWQgTUlNRSANCgkJCQkJU2VyaWFs aXphdGlvbi4gQnkgZXhhbWluaW5nIHRoZSBtZXNzYWdlLCB0aGUgcHJvdmlkZXIgY2FuIGRldGVy bWluZSB3aGV0aGVyIHRoZSBwb2xpY3kNCgkJCQkJYWx0ZXJuYXRlIHRoYXQgY29udGFpbnMgdGhl IE1UT00gYXNzZXJ0aW9uIGlzIGJlaW5nIG9iZXllZCAoDQoJCQkJCQk8bG9jIGhyZWY9IiNicC1p bmRpY2F0ZS1vcHRpb25hbC1hc3NlcnRpb24tdXNlIj5CZXN0IFByYWN0aWNlOiBJbmRpY2F0ZSB1 c2Ugb2YgYW4gT3B0aW9uYWwgQXNzZXJ0aW9uPC9sb2M+KS4NCgkJCQk8L3A+PHA+DQoJCQkJCU5v dGUgdGhhdCBpZiBhIE1UT00gYXNzZXJ0aW9uIHdlcmUgb25seSBib3VuZCB0byBhbiBpbmJvdW5k IG1lc3NhZ2UgZW5kcG9pbnQsIA0KCQkJCQl0aGVuIGl0IHdvdWxkIG5vdCBiZSBjbGVhciB3aGV0 aGVyIHRoZSBvdXRib3VuZCBtZXNzYWdlIGZyb20gdGhlIHByb3ZpZGVyIHdvdWxkIA0KCQkJCQlh bHNvIHV0aWxpemUgdGhlIGJlaGF2aW9yLiBUaHVzIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBh c3NvY2lhdGVkIGF0IHRoZSBncmFudWxhcml0eQ0KCQkJCQlvZiBhbiBlbnRpcmUgbWVzc2FnZSBl eGNoYW5nZS4gIFRoZSBzZW1hbnRpY3Mgb2YgdGhlIGFzc2VydGlvbiBzaG91bGQgc3BlY2lmeSB0 aGlzIA0KCQkJCQl0byBhdm9pZCBpbmFwcHJvcHJpYXRlIGFzc3VtcHRpb25zIGJ5IGltcGxlbWVu dGF0aW9ucy4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGFuIA0KCQkJCQlvcHRpb25hbCBhc3NlcnRp b24gd2hlcmUgIGl0IG1heSBub3QgYmUgY2xlYXIgd2hldGhlciBpdCBpcyB0byBhcHBseSBpbiBh IG1lc3NhZ2UgDQoJCQkJCWV4Y2hhbmdlIHdoZW4gb3B0aW9uYWxseSB1c2VkIGluIHBhcnQgb2Yg dGhhdCBleGNoYW5nZSAgDQoJCQkJCSg8bG9jIGhyZWY9IiNicC1lbnRpcmUtbWVwLWZvci1vcHRp b25hbCI+QmVzdCBQcmFjdGljZTogQ29uc2lkZXIgZW50aXJlIG1lc3NhZ2UgZXhjaGFuZ2UgcGF0 dGVybiB3aGVuIHNwZWNpZnlpbmcgQXNzZXJ0aW9ucyB0aGF0IG1heSBiZSBvcHRpb25hbDwvbG9j PikuDQoJCQkJPC9wPg0KCQkJCQk8L2RpdjQ+DQoJCQk8L2RpdjM+DQoJCTwvZGl2Mj4NCgkJDQoJ CQkNCgkJCTxkaXYyIGlkPSJsZXZlbHMtb2YtYWJzdHJhY3Rpb24iPg0KCQkJCTxoZWFkPkNvbnNp ZGVyYXRpb25zIGZvciBQb2xpY3kgQXR0YWNobWVudCBpbiBXU0RMIDwvaGVhZD4NCgkJCQk8cD5B IGJlaGF2aW9yIGlkZW50aWZpZWQgYnkgYSBwb2xpY3kgYXNzZXJ0aW9uIGFwcGxpZXMgdG8gdGhl DQogICAgICAgIAkJYXNzb2NpYXRlZCBwb2xpY3kgc3ViamVjdC4gSWYgYSBwb2xpY3kgYXNzZXJ0 aW9uIGlzIHRvIGJlIHVzZWQNCiAgICAgICAgCQl3aXRoaW4gV1NETCwgQXNzZXJ0aW9uIEF1dGhv cnMgc2hvdWxkIHNwZWNpZnkgYSBXU0RMDQogICAgICAgIAkJcG9saWN5IHN1YmplY3QuIA0KICAg ICAgICAJCTwvcD4NCgkJCQkNCgkJCQk8cD5UaGUgc3BlY2lmaWMgV1NETCBwb2xpY3kgc3ViamVj dCBpcyBkZXRlcm1pbmVkIHdpdGggcmVzcGVjdCB0byANCgkJCQlhIGJlaGF2aW9yIGFzIGZvbGxv d3M6PC9wPg0KCQkJCTx1bGlzdD4NCgkJCQkJPGl0ZW0+DQoJCQkJCQk8cD5JZiB0aGUgYmVoYXZp b3IgYXBwbGllcyB0byBhbnkgbWVzc2FnZSBleGNoYW5nZQ0KICAgICAgICAgIAkJCQl1c2luZyBh bnkgb2YgdGhlIGVuZHBvaW50cyBvZmZlcmVkIGJ5IGEgc2VydmljZSB0aGVuIHRoZQ0KICAgICAg ICAgCQkJCXN1YmplY3QgaXMgdGhlIHNlcnZpY2UgcG9saWN5IHN1YmplY3QuIDwvcD4NCgkJCQkJ PC9pdGVtPg0KCQkJCQk8aXRlbT4NCgkJCQkJCTxwPklmIHRoZSBiZWhhdmlvciBhcHBsaWVzIHRv IGFueSBtZXNzYWdlIGV4Y2hhbmdlDQogICAgICAgICAgCQkJCW1hZGUgdXNpbmcgYW4gZW5kcG9p bnQgdGhlbiB0aGUgc3ViamVjdCBpcyB0aGUgZW5kcG9pbnQgcG9saWN5IHN1YmplY3QuIDwvcD4N CgkJCQkJPC9pdGVtPg0KCQkJCQk8aXRlbT4NCgkJCQkJCTxwPklmIHRoZSBiZWhhdmlvciBhcHBs aWVzIHRvIGFueSBtZXNzYWdlIGV4Y2hhbmdlDQoJICAJCQkJCWRlZmluZWQgYnkgYW4gb3BlcmF0 aW9uIHRoZW4gdGhlIHN1YmplY3QgaXMgdGhlIG9wZXJhdGlvbiBwb2xpY3kgc3ViamVjdC4gPC9w Pg0KCQkJCQk8L2l0ZW0+DQoJCQkJCTxpdGVtPg0KCQkJCQkJPHA+SWYgdGhlIGJlaGF2aW9yIGFw cGxpZXMgdG8gYW4gaW5wdXQgbWVzc2FnZSB0aGVuDQoJICAJCQkJCXRoZSBzdWJqZWN0IGlzIHRo ZSBtZXNzYWdlIHBvbGljeSBzdWJqZWN0IC0gc2ltaWxhcmx5IGZvciBvdXRwdXQgYW5kIGZhdWx0 IG1lc3NhZ2UgcG9saWN5IHN1YmplY3RzLjwvcD4NCgkJCQkJPC9pdGVtPg0KCQkJCTwvdWxpc3Q+ DQoJCQkJDQoJCQkJPHAgcm9sZT0icHJhY3RpY2UiIGlkPSJicC1XU0RMLXBvbGljeS1zdWJqZWN0 Ij4NCgkJCQkJPHF1b3RlPkFzc2VydGlvbiBBdXRob3JzIFNob3VsZCBTcGVjaWZ5IFBvbGljeSBT dWJqZWN0KHMpPC9xdW90ZT4NCgkJCQkJPHF1b3RlPkFzc2VydGlvbiBBdXRob3JzIHNob3VsZCBz cGVjaWZ5IHRoZSBzZXQgb2YgcmVsZXZhbnQgcG9saWN5IHN1YmplY3RzIHdpdGggd2hpY2ggDQoJ CQkJCSAgICB0aGUgYXNzZXJ0aW9uIG1heSBiZSBhc3NvY2lhdGVkLiBGb3IgaW5zdGFuY2UsIGlm IGEgcG9saWN5IGFzc2VydGlvbiBpcyB0byBiZSB1c2VkIHdpdGggDQoJCQkJCSAgICBXU0RMLCB0 aGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uIHNob3VsZCBzcGVjaWZ5IGEgV1NETCBwb2xpY3kgc3Vi amVjdCAtIHN1Y2ggYXMgc2VydmljZSwgDQoJCQkJCSAgICBlbmRwb2ludCwgb3BlcmF0aW9uIGFu ZCBtZXNzYWdlLg0KCQkJCQk8L3F1b3RlPg0KCQkJCTwvcD4NCgkJCQkNCgkJCQk8cD5Bc3NlcnRp b24gQXV0aG9ycyB0aGF0IHdpc2ggdG8gdXRpbGl6ZSBXU0RMIHBvbGljeSBzdWJqZWN0cyBuZWVk IHRvIA0KCQkJCXVuZGVyc3RhbmQgaG93IHRoZSBhc3NlcnRpb25zIHdpbGwgYmUNCgkJCQlwcm9j ZXNzZWQgaW4gYW4gaW50ZXJzZWN0aW9uIGFuZCBtZXJnaW5nLCBhbmQgdGhlIGltcGxpY2F0aW9u cyBvZg0KCQkJCXRoZSBwcm9jZXNzaW5nIGZvciBjb25zaWRlcmluZyBhIHNwZWNpZmljIGF0dGFj aG1lbnQgcG9pbnQgYW5kDQoJCQkJcG9saWN5IHN1YmplY3QuIFRoaXMgdG9waWMgaXMgY29uc2lk ZXJlZCBpbiBkZXRhaWwgaW4gPGJpYnJlZiByZWY9IldTLVBvbGljeS1QcmltZXIiLz4NCgkJCQk8 L3A+DQoJCQkJDQoJCQkJPHA+IEZvciBhIGdpdmVuIFdTREwgcG9saWN5IHN1YmplY3QsIHRoZXJl IG1heSBiZSBzZXZlcmFsDQogICAgICAgIAkJYXR0YWNobWVudCBwb2ludHMuIEZvciBleGFtcGxl LCB0aGVyZSBhcmUgdGhyZWUgYXR0YWNobWVudA0KICAgICAgICAJCXBvaW50cyBmb3IgdGhlIGVu ZHBvaW50IHBvbGljeSBzdWJqZWN0OiB0aGUgcG9ydCwgYmluZGluZyBhbmQNCiAgICAgICAgCQlw b3J0VHlwZSBlbGVtZW50LiBBc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgaWRlbnRpZnkgdGhlDQog ICAgICAgIAkJcmVsZXZhbnQgYXR0YWNobWVudCBwb2ludCB3aGVuIGRlZmluaW5nIGEgbmV3IGFz c2VydGlvbi4gVG8NCiAgICAgICAgCQlkZXRlcm1pbmUgdGhlIHJlbGV2YW50IGF0dGFjaG1lbnQg cG9pbnRzLCBBc3NlcnRpb24gQXV0aG9ycyBzaG91bGQNCiAgICAgICAgCQljb25zaWRlciB0aGUg c2NvcGUgb2YgdGhlIGF0dGFjaG1lbnQgcG9pbnQuIEZvciBleGFtcGxlLCBhbg0KICAgICAgICAJ CWFzc2VydGlvbiBzaG91bGQgb25seSBiZSBhbGxvd2VkIGluIHRoZSBwb3J0VHlwZSBlbGVtZW50 IGlmDQogICAgICAgIAkJdGhlIGFzc2VydGlvbiByZWFzb25hYmx5IGFwcGxpZXMgdG8gYW55IGVu ZHBvaW50IHRoYXQgZXZlcg0KICAgICAgICAJCXJlZmVyZW5jZXMgdGhhdCBwb3J0VHlwZS4gTW9z dCBvZiB0aGUga25vd24gcG9saWN5IGFzc2VydGlvbnMNCiAgICAgICAgCQlhcmUgZGVzaWduZWQg Zm9yIHRoZSBlbmRwb2ludCwgb3BlcmF0aW9uIG9yIG1lc3NhZ2UgcG9saWN5IHN1YmplY3QuIA0K ICAgICAgICAJCTwvcD4NCgkJCQk8cD4gSW4gdXNpbmcgV1NETCBhdHRhY2htZW50LCBpdCBzaG91 bGQgYmUgbm90ZWQgdGhhdCB0aGUNCiAgICAgICAgCQlzZXJ2aWNlIHBvbGljeSBzdWJqZWN0IGlz IGEgY29sbGVjdGlvbiBvZiBlbmRwb2ludCBwb2xpY3kNCiAgICAgICAgCQlzdWJqZWN0cy4gVGhl IGVuZHBvaW50IHBvbGljeSBzdWJqZWN0IGlzIGEgY29sbGVjdGlvbiBvZg0KICAgICAgICAJCW9w ZXJhdGlvbiBwb2xpY3kgc3ViamVjdHMgYW5kIHNvIG9uLiBBcyBhIHJlc3VsdCwgdGhlIFdTREwN CiAgICAgICAgCQlwb2xpY3kgc3ViamVjdHMgY29tcG9zZSBuYXR1cmFsbHkuIEl0IGlzIHF1aXRl IHRlbXB0aW5nIHRvDQogICAgICAgIAkJYXNzb2NpYXRlIHRoZSBpZGVudGlmaWVkIGJlaGF2aW9y IHRvIGEgYnJvYWRlciBwb2xpY3kgc3ViamVjdA0KICAgICAgICAJCXRoYW4gdG8gYSBmaW5lIGdy YW51bGFyIHBvbGljeSBzdWJqZWN0LiBGb3IgaW5zdGFuY2UsIGl0IGlzDQogICAgICAgIAkJY29u dmVuaWVudCB0byBhdHRhY2ggYSBzdXBwb3J0aW5nIHRva2VuIGFzc2VydGlvbiAoZGVmaW5lZCBi eQ0KICAgICAgICAJCXRoZSBXZWIgU2VydmljZXMgU2VjdXJpdHkgUG9saWN5IHNwZWNpZmljYXRp b24pIHRvIGFuIGVuZHBvaW50DQogICAgICAgIAkJcG9saWN5IHN1YmplY3QgaW5zdGVhZCBvZiBh IG1lc3NhZ2UgcG9saWN5IHN1YmplY3QuIEhvd2V2ZXIgc3VjaCANCiAgICAgICAgCQlwb2xpY3kg YXR0YWNobWVudHMgdG8gcG9saWN5IHN1YmplY3RzIG9mIGJyb2FkZXIgc2NvcGUgYW5kIGdyYW51 bGFyaXR5IA0KICAgICAgICAJCXNob3VsZCBiZSBkb25lIG9ubHkgYWZ0ZXIgY2FyZWZ1bCBldmFs dWF0aW9uLiANCiAgICAgICAgCQk8L3A+DQogICAgICAgIAkJDQoJCQkJPHAgcm9sZT0icHJhY3Rp Y2UiIGlkPSJicC1XU0RMLXBvbGljeS1zdWJqZWN0LUdyYW51bGFyaXR5Ij4NCgkJCQkJPHF1b3Rl PkNob29zZSB0aGUgTW9zdCBHcmFudWxhciBQb2xpY3kgU3ViamVjdDwvcXVvdGU+DQoJCQkJCTxx dW90ZT5Bc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgY2hvb3NlIHRoZSBtb3N0IGdyYW51bGFyIHBv bGljeSBzdWJqZWN0DQoJCQkJCQl0byB3aGljaCB0aGUgYmVoYXZpb3IgcmVwcmVzZW50ZWQgYnkg YSBwb2xpY3kgYXNzZXJ0aW9uIGFwcGxpZXMuDQoJCQkJCTwvcXVvdGU+DQoJCQkJPC9wPgkJCQkN CiAgICAgICAgCQkNCiAgICAgICAgCQk8cD4NCiAgICAgICAgCQlGb3IgYXV0aG9yaW5nIGNvbnZl bmllbmNlLCBBc3NlcnRpb24gQXV0aG9ycyBtYXkgYWxsb3cgdGhlDQogICAgICAgIAkJYXNzb2Np YXRpb24gb2YgYW4gYXNzZXJ0aW9uIHRvIG11bHRpcGxlIHBvbGljeSBzdWJqZWN0cy4gSWYgYW4N CiAgICAgICAgCQlhc3NlcnRpb24gaXMgYWxsb3dlZCB0byBiZSBhc3NvY2lhdGVkIHdpdGggbXVs dGlwbGUgcG9saWN5DQogICAgICAgIAkJc3ViamVjdHMgYXMgaXMgcG9zc2libGUgd2l0aCBXU0RM LCB0aGVuIHRoZSBBc3NlcnRpb24gQXV0aG9ycyBoYXZlIA0KICAgICAgICAJCXRoZSBidXJkZW4g dG8gZGVzY3JpYmUgdGhlIHNlbWFudGljcyBvZiBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlDQog ICAgICAgIAkJc2FtZSBhc3NlcnRpb24gYXR0YWNoZWQgdG8gZGlmZmVyZW50IHBvbGljeSBzdWJq ZWN0cyBhdCB0aGUgc2FtZQ0KICAgICAgICAJCXRpbWUgaW4gb3JkZXIgdG8gYXZvaWQgY29uZmxp Y3RpbmcgYmVoYXZpb3IuDQoJCQkJPC9wPg0KCQkJCQ0KCQkJCTxwIHJvbGU9InByYWN0aWNlIiBp ZD0iYnAtV1NETC1tdWx0aXBsZS1wb2xpY3ktc3ViamVjdHMiPg0KCQkJCQk8cXVvdGU+RGVmaW5l IFNlbWFudGljcyBvZiBBdHRhY2htZW50IHRvIE11bHRpcGxlIFBvbGljeSBTdWJqZWN0czwvcXVv dGU+DQoJCQkJCTxxdW90ZT5JZiBhbiBhc3NlcnRpb24gaXMgYWxsb3dlZCB0byBiZSBhc3NvY2lh dGVkIHdpdGggbXVsdGlwbGUgcG9saWN5IHN1YmplY3RzLCANCgkJCQkJdGhlIGFzc2VydGlvbiBh dXRob3Igc2hvdWxkIGRlc2NyaWJlIHRoZSBzZW1hbnRpY3Mgb2YgbXVsdGlwbGUgaW5zdGFuY2Vz IG9mIA0KCQkJCQl0aGUgc2FtZSBhc3NlcnRpb24gYXR0YWNoZWQgdG8gbXVsdGlwbGUgcG9saWN5 IHN1YmplY3RzIGF0IHRoZSBzYW1lIHRpbWUuIA0KCQkJCQk8L3F1b3RlPg0KCQkJCTwvcD4NCgkJ CQkNCgkJCQk8cD5JZiB0aGUgY2FwYWJpbGl0eSBpcyBub3QgcmVhbGx5IHN1aXRhYmxlIGFuZCBt YXkgaW1wbHkNCgkJCQkJZGlmZmVyZW50IHNlbWFudGljcyB3aXRoIHJlc3BlY3QgdG8gYXR0YWNo bWVudCBwb2ludHMsIHRoZQ0KCQkJCQlBc3NlcnRpb24gQXV0aG9ycyBzaG91bGQgY29uc2lkZXIg dGhlIGZvbGxvd2luZzo8L3A+DQoJCQkJPHVsaXN0Pg0KCQkJCQk8aXRlbT4NCgkJCQkJCTxwPiBE ZWNvbXBvc2UgdGhlIHNlbWFudGljcyB3aXRoIHNldmVyYWwgYXNzZXJ0aW9ucy48L3A+DQoJCQkJ CTwvaXRlbT4NCgkJCQkJPGl0ZW0+DQoJCQkJCQk8cD4gUmV3cml0ZSBhIHNpbmdsZSBhc3NlcnRp b24gdGFyZ2V0aW5nIGEgc3BlY2lmaWMgc3ViamVjdC4gPC9wPg0KCQkJCQk8L2l0ZW0+DQoJCQkJ PC91bGlzdD4NCgkJCQkNCgkJCQk8cD5TaW5jZSBtYW55IGF0dGFjaG1lbnQgcG9pbnRzIGFyZSBh dmFpbGFibGUgaW4gV1NETCwgaXQgd291bGQgYmUNCgkJCQluZWNlc3NhcnkgZm9yIEFzc2VydGlv biBBdXRob3JzIHRvIHJlY29tbWVuZCBhIHByZWZlcnJlZCBhdHRhY2htZW50IA0KCQkJCXBvaW50 LiBPbmUgYXBwcm9hY2ggd291bGQgYmUgdG8gaWRlbnRpZnkgZGlmZmVyZW50IGF0dGFjaG1lbnQg cG9pbnRzIGluDQoJCQkJYSBwb2xpY3kgc3ViamVjdCwgY2hvb3NlIHRoZSBtb3N0IGdyYW51bGFy IHBvbGljeSBzdWJqZWN0IHRoYXQgdGhlIA0KCQkJCWJlaGF2aW9yIGFwcGxpZXMgdG8gYW5kIHNw ZWNpZnkgdGhhdCBhcyBhIHByZWZlcnJlZCBhdHRhY2htZW50IHBvaW50LiANCgkJCQlIb3dldmVy LCB0aGlzIGFwcHJvYWNoIG9ubHkgd29ya3MgaWYgdGhlIHBvbGljeSBzdWJqZWN0IGlzIGEgdHJ1 ZSBXU0RMDQoJCQkJY29uc3RydWN0IG90aGVyIHRoYW4gc29tZSBvdGhlciBwcm90b2NvbCBjb25j ZXB0IHRoYXQgaXMNCgkJCQlsYXllcmVkIG92ZXIgV1NETCBtZXNzYWdlIGV4Y2hhbmdlcy4gRm9y IGV4YW1wbGUsIGFzIGRlc2NyaWJlZCBwcmV2aW91c2x5DQoJCQkJdGhlIFdTLVJNIFBvbGljeSBp cyBhIGNhcGFiaWxpdHkgdGhhdCBnb3Zlcm5zIGEgdGFyZ2V0IGVuZHBvaW50J3MNCgkJCQljYXBh YmlsaXR5IHRvIGFjY2VwdCBtZXNzYWdlIHNlcXVlbmNlcyB0aGF0IGFyZSBiZXlvbmQgc2luZ2xl IG1lc3NhZ2UNCgkJCQlleGNoYW5nZS4gVGhlcmVmb3JlLCBpdHMgc2VtYW50aWNzIGVuY29tcGFz cyB0aGUgY2FzZXMgd2hlbg0KCQkJCW1lc3NhZ2UgbGV2ZWwgcG9saWN5IHN1YmplY3RzIG1heSBi ZSB1c2VkIGFzIGF0dGFjaG1lbnQgYnV0DQoJCQkJYWxzbyBjb25zaWRlcnMgdGhlIGNhc2Ugd2hl biBzZXF1ZW5jZXMgYXJlIHByZXNlbnQuIEluIGFkZGl0aW9uLCANCgkJCQl3aGVuIHRoZSBwb2xp Y3kgYXNzZXJ0aW9ucyBkbyBub3QgdGFyZ2V0IHdpcmUtbGV2ZWwgYmVoYXZpb3JzIGJ1dA0KCQkJ CXJhdGhlciBhYnN0cmFjdCByZXF1aXJlbWVudHMsIHRoaXMgdGVjaG5pcXVlIGRvZXMgbm90IGFw cGx5LiANCgkJCQk8L3A+DQoJCQkJDQoJCQkJPHAgcm9sZT0icHJhY3RpY2UiIGlkPSJicC1XU0RM LXByZWZlcnJlZC1hdHRhY2htZW50LXBvaW50Ij4NCgkJCQkJPHF1b3RlPlNwZWNpZnkgUHJlZmVy cmVkIEF0dGFjaG1lbnQgUG9pbnQgZm9yIGFuIEFzc2VydGlvbjwvcXVvdGU+DQoJCQkJCTxxdW90 ZT5JZiBhbiBhc3NlcnRpb24gY2FuIGJlIGF0dGFjaGVkIGF0IG11bHRpcGxlIGF0dGFjaG1lbnQg cG9pbnRzIA0KCQkJCQkgICAgd2l0aGluIGEgcG9saWN5IHN1YmplY3QsIEFzc2VydGlvbiBBdXRo b3JzIHNob3VsZCBzcGVjaWZ5IGEgDQoJCQkJCSAgICBwcmVmZXJyZWQgYXR0YWNobWVudCBwb2lu dCBmb3IgdGhlIGNob3NlbiBwb2xpY3kgc3ViamVjdC4NCgkJCQkJPC9xdW90ZT4NCgkJCQk8L3A+ DQoJCQkJDQoJCQkJPHA+QXNzZXJ0aW9uIEF1dGhvcnMgdGhhdCB1dGlsaXplIFdTREwgcG9saWN5 IHN1YmplY3RzIG5lZWQgdG8gDQoJCQkJdW5kZXJzdGFuZCBob3cgdGhlIGFzc2VydGlvbnMgd2ls bCBiZSBwcm9jZXNzZWQgaW4gbWVyZ2luZyBhbmQgDQoJCQkJdGhlIHNwZWNpZnkgaW1wbGljYXRp b25zIG9mIGVuZGluZyB1cCB3aXRoIG11bHRpcGxlIGFzc2VydGlvbnMgb2YgDQoJCQkJdGhlIHNh bWUga2luZCBpbiBhbiBhbHRlcm5hdGl2ZSwgaW4gdGhlIG1lcmdlZCBwb2xpY3kuIEZvciBleGFt cGxlLCANCgkJCQljb25zaWRlciB0aGUgU2lnbmVkUGFydHMgYXNzZXJ0aW9uIGRlZmluZWQgaW4g V1MtU2VjdXJpdHlQb2xpY3kgMS4yLg0KCQkJCVRoZSBkZWZpbml0aW9uIG9mIFNpZ25lZFBhcnRz IGFzc2VydGlvbiBleHBsaWNpdGx5IHBlcm1pdHMgbXVsdGlwbGUgDQoJCQkJU2lnbmVkUGFydHMg YXNzZXJ0aW9ucyB0byBiZSBwcmVzZW50IHdpdGhpbiBhIHBvbGljeSBhbHRlcm5hdGl2ZSwgDQoJ CQkJYW5kIGRlY2xhcmVzIGl0IHRvIGJlIGVxdWl2YWxlbnQgdG8gYSBzaW5nbGUgU2lnbmVkUGFy dHMgYXNzZXJ0aW9uIA0KCQkJCWNvbnRhaW5pbmcgdGhlIHVuaW9uIG9mIGFsbCBzcGVjaWZpZWQg bWVzc2FnZSBwYXJ0cy4gU28sIGlmIGEgU2lnbmVkUGFydHMgDQoJCQkJYXNzZXJ0aW9uIGlzIHNw ZWNpZmllZCBpbiBhIFdTREwgYmluZGluZyBhdCB0aGUgaW5wdXQgbWVzc2FnZSBsZXZlbA0KCQkJ CWFuZCBzdWJzZXF1ZW50bHkgYW4gYWRkaXRpb25hbCBTaWduZWRQYXJ0cyBhc3NlcnRpb24gaXMg c3BlY2lmaWVkIA0KCQkJCWF0IHRoZSBXU0RMIGVuZHBvaW50IHBvbGljeSBzdWJqZWN0IGxldmVs LCB0aGVuIHRoZSBlZmZlY3RpdmUgcG9saWN5IA0KCQkJCWF0IHRoZSBlbmRwb2ludCBjb3VsZCBo YXZlIG1vcmUgdGhhbiBvbmUgU2lnbmVkUGFydHMgYXNzZXJ0aW9uIGluIHRoZQ0KCQkJCXNhbWUg YWx0ZXJuYXRpdmUuIEhvd2V2ZXIsIHRoZSBjbGVhciBzZW1hbnRpY3MgZGVmaW5lZCBieSB0aGUg U2lnbmVkUGFydHMgDQoJCQkJYXNzZXJ0aW9uIGVuYWJsZSBwcm9jZXNzaW5nIG9mIHRoZSBtdWx0 aXBsZSBvY2N1cnJlbmNlcyBwcm9wZXJseS4JDQoJCQkgICA8L3A+DQoJCQkgICANCgkJCQk8cCBy b2xlPSJwcmFjdGljZSIgaWQ9ImJwLVdTREwtcG9saWN5LW11bHRpcGxlLWluc3RhbmNlLXNlbWFu dGljcyI+DQoJCQkJCTxxdW90ZT5EZXNjcmliZSBTZW1hbnRpY3Mgb2YgTXVsdGlwbGUgQXNzZXJ0 aW9ucyBvZiBTYW1lIFR5cGU8L3F1b3RlPg0KCQkJCQk8cXVvdGU+QSBwb2xpY3kgYWx0ZXJuYXRp dmUgY2FuIGNvbnRhaW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIA0KCQkJCQlwb2xp Y3kgYXNzZXJ0aW9uIHR5cGUuIEFzc2VydGlvbiBhdXRob3JzIHNob3VsZCBzcGVjaWZ5IHRoZSBz ZW1hbnRpY3Mgb2YgDQoJCQkJCW11bHRpcGxlIGluc3RhbmNlcyBvZiBzYW1lIHBvbGljeSBhc3Nl cnRpb24gdHlwZSBpbiB0aGUgc2FtZSBwb2xpY3kgDQoJCQkJCWFsdGVybmF0aXZlIGFuZCB0aGUg c2VtYW50aWNzIG9mIHBhcmFtZXRlcnMgYW5kIG5lc3RlZCBwb2xpY3kgKGlmIGFueSkgDQoJCQkJ CXdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGluc3RhbmNlcyBvZiBhIHBvbGljeSBhc3NlcnRpb24g dHlwZSBpbiB0aGUgc2FtZSANCgkJCQkJcG9saWN5IGFsdGVybmF0aXZlLg0KCQkJCQk8L3F1b3Rl Pg0KCQkJCTwvcD4NCgkJCQkNCgkJCTwvZGl2Mj4NCgkJPGRpdjIgaWQ9ImludGVycmVsYXRlZC1k b21haW5zIj4NCgkJCTxoZWFkPkludGVycmVsYXRlZCBkb21haW5zPC9oZWFkPg0KCQkJPGVkbm90 ZT4NCgkJCQk8ZWR0ZXh0PlRvIGJlIHJlLXN0cnVjdHVyZWQgdG8gdXNlIHRoZSBmb3JtYXQgaW4g dGhlIEFyY2hpdGVjdHVyZSBvZiB0aGUgV1dXIGRvYy48L2VkdGV4dD4NCgkJCTwvZWRub3RlPg0K CQkJPHA+QXNzZXJ0aW9uIEF1dGhvcnMgbmVlZCB0byBiZSBjbGVhciBhYm91dCBob3cgYXNzZXJ0 aW9ucyBkZWZpbmVkIGluICANCgkJCQl0aGVpciBkb21haW4gbWF5IGZpdCB3aXRoIGFzc2VydGlv bnMgZm9yIGludGVycmVsYXRlZCBkb21haW5zLiBBICANCgkJCQljbGFzc2ljIGV4YW1wbGUgb2Yg c3VjaCBhbiBpbnRlcnJlbGF0ZWQgZG9tYWluIGlzIHNlY3VyaXR5LCBiZWNhdXNlICANCgkJCQlz ZWN1cml0eSB0ZW5kcyB0bw0KCQkJCWN1dCBhY3Jvc3MgYWxsIGFzcGVjdHMgb2YgYSBzb2x1dGlv bi48L3A+DQoJCQk8cD4gT25lIGV4YW1wbGUgaXMgdGhlIGRlZmluaXRpb24gIA0KCQkJCW9mIGFk ZGl0aW9uYWwgYXNzZXJ0aW9ucw0KCQkJCXJlbGF0ZWQgdG8gdGhlIGludGVycmVsYXRlZCBzZWN1 cml0eSBkb21haW4gWzxiaWJyZWYgcmVmPSJXUy1TZWN1cml0eVBvbGljeSIvPl0gaW4gIA0KCQkJ CVdlYiBTZXJ2aWNlcyBSZWxpYWJsZSBNZXNzYWdpbmcgUG9saWN5DQoJCQkJQXNzZXJ0aW9ucyBb PGJpYnJlZiByZWY9IldTLVJNLVBvbGljeSIvPl0uIDwvcD4NCgkJCTxwPkFzc2VydGlvbiBBdXRo b3JzIHNob3VsZCBub3QgZHVwbGljYXRlIGV4aXN0aW5nICANCgkJCQlhc3NlcnRpb25zIGFuZCBz aG91bGQgYWxzbyBtYWtlIHN1cmUgdGhhdCB3aGVuIGFkZGluZyBhc3NlcnRpb25zIHRob3NlIG5l dyBhc3NlcnRpb25zIGFyZSBjb25zaXN0ZW50ICANCgkJCQl3aXRoIHByZS1leGlzdGluZyBhc3Nl cnRpb25zIG9mIGFueSAgDQoJCQkJaW50ZXJyZWxhdGVkIGRvbWFpbi4gPC9wPg0KCQkJPHAgcm9s ZT0icHJhY3RpY2UiIGlkPSJicC1zcGVjaWZ5LWNvbXBvc2l0aW9uIj4NCgkJCQk8cXVvdGU+U3Bl Y2lmeSBDb21wb3NpdGlvbiB3aXRoIFJlbGF0ZWQgQXNzZXJ0aW9uczwvcXVvdGU+DQoJCQkJPHF1 b3RlPkFzc2VydGlvbiBhdXRob3JzIHNob3VsZCBjbGVhcmx5IHNwZWNpZnkgaG93IGFuIGFzc2Vy dGlvbiANCgkJCQltYXkgY29tcG9zZSB3aXRoIG90aGVyIHJlbGF0ZWQgYXNzZXJ0aW9ucywgaWYg YW55LjwvcXVvdGU+DQoJCQk8L3A+DQoJCTwvZGl2Mj4NCgk8L2RpdjE+DQoJPGRpdjEgaWQ9InZl cnNpb25pbmctcG9saWN5LWFzc2VydGlvbnMiPg0KCQk8aGVhZD5WZXJzaW9uaW5nIFBvbGljeSBB c3NlcnRpb25zPC9oZWFkPg0KCQk8cD5Bc3NlcnRpb24gQXV0aG9ycyBuZWVkIHRvIGNvbnNpZGVy IG5vdCBqdXN0IHRoZSBleHByZXNzaW9uIG9mIHRoZSBjdXJyZW50IHNldCBvZiByZXF1aXJlbWVu dHMgYnV0DQoJCWhvdyB0aGV5IGFudGljaXBhdGUgbmV3IGFzc2VydGlvbnMgYmVpbmcgYWRkZWQg dG8gdGhlIHNldC4gIFRoZXJlIGFyZSB0aHJlZSBhc3BlY3RzIHRvIHZlcnNpb25pbmcgcG9saWN5 IGFzc2V0aW9uczo8L3A+DQoJCTx1bGlzdD4NCgkJCTxpdGVtPg0KCQkJCTxwPiBBc3NlcnRpb24g RXh0ZW5zaWJpbGl0eSA8L3A+DQoJCQk8L2l0ZW0+DQoJCQk8aXRlbT4NCgkJCQk8cD4gUG9saWN5 IExhbmd1YWdlIEV4dGVuc2liaWxpdHkgPC9wPg0KCQkJCTxwPk92ZXIgdGltZSwgdGhlIFBvbGlj eSBXRyBvciB0aGlyZCBwYXJ0aWVzIGNhbiB2ZXJzaW9uIG9yIGV4dGVuZCB0aGUgUG9saWN5IExh bmd1YWdlIHdpdGggbmV3IA0KCQkJCW9yIG1vZGlmaWVkIGNvbnN0cnVjdHMuICBUaGVzZSBjb25z dHJ1Y3RzIG1heSBiZSBjb21wYXRpYmxlIG9yIGluY29tcGF0aWJsZSB3aXRoIHByZXZpb3VzIHZl cnNpb25zLg0KCQkJCTwvcD4NCgkJCQk8cD4gQXNzZXJ0aW9uIEF1dGhvcnMgc2hvdWxkIHJldmll dyB0aGUgV1MtUG9saWN5IFByaW1lciA8YmlicmVmIHJlZj0iV1MtUG9saWN5LVByaW1lciIvPiAN CgkJCQlhbmQgdGhlIHNwZWNpZmljYXRpb25zIDxiaWJyZWYgcmVmPSJXUy1Qb2xpY3kiLz4gPGJp YnJlZiByZWY9IldTLVBvbGljeUF0dGFjaG1lbnQiLz4NCgkJCQlmb3IgZGV0YWlscyBvbiBleHRl bnNpYmlsaXR5Lg0KCQkJCTwvcD4gIA0KCQkJCTxwPiBUaGUgY3VycmVudCBXUy1Qb2xpY3kgbGFu Z3VhZ2UgPGJpYnJlZiByZWY9IldTLVBvbGljeSIvPiBwcm92aWRlcyBleHRlbnNpYmlsaXR5IHBv aW50cyANCgkJCQlvbiA2IGVsZW1lbnRzIHdpdGggYSBjb21iaW5hdGlvbiBvZiBhdHRyaWJ1dGUg YW5kL29yIGVsZW1lbnQgZXh0ZW5zaWJpbGl0eTo8L3A+DQoJCQkJCTxvbGlzdD4NCgkJCQkJCTxp dGVtPjxwPlBvbGljeTogZWxlbWVudCBmcm9tICMjb3RoZXIgbmFtZXNwYWNlIGFuZCBhbnkgYXR0 cmlidXRlPC9wPjwvaXRlbT4NCgkJCQkJCTxpdGVtPjxwPkV4YWN0bHlPbmUsIEFsbDogZWxlbWVu dCBmcm9tICMjb3RoZXIgbmFtZXNwYWNlOyBubyBhdHRyaWJ1dGUgZXh0ZW5zaWJpbGl0eTwvcD48 L2l0ZW0+DQoJCQkJCQk8aXRlbT48cD5Qb2xpY3lSZWZlcmVuY2U6IGFueSBlbGVtZW50IGFuZCBh bnkgYXR0cmlidXRlPC9wPjwvaXRlbT4gDQoJCQkJCQk8aXRlbT48cD5Qb2xpY3lBdHRhY2htZW50 OiBlbGVtZW50IGZyb20gIyNvdGhlciBuYW1lc3BhY2UgYW5kIGFueSBhdHRyaWJ1dGU8L3A+PC9p dGVtPg0KCQkJCQkJPGl0ZW0+PHA+QXBwbGllc1RvOiBhbnkgZWxlbWVudCBhbmQgYW55IGF0dHJp YnV0ZTwvcD48L2l0ZW0+DQoJCQkJCQk8aXRlbT48cD5VUkk6IGFueSBhdHRyaWJ1dGU8L3A+PC9p dGVtPg0KCQkJCQk8L29saXN0Pg0KCQkJCQkNCgkJCTwvaXRlbT4NCgkJCTxpdGVtPg0KCQkJCTxw PlN1cHBvcnRpbmcgTmV3IFBvbGljeSBTdWJqZWN0czwvcD4NCgkJCTwvaXRlbT4NCgkJPC91bGlz dD4NCgkJDQoJCQk8ZGl2MiBpZD0iUmVmZXJlbmNpbmdfUG9saWN5X0V4cHJlc3Npb25zIj4NCgkJ CQkJPGhlYWQ+UmVmZXJlbmNpbmcgUG9saWN5IEV4cHJlc3Npb25zPC9oZWFkPg0KCQkJCTxwPlRo ZSA8YmlicmVmIHJlZj0iV1MtUG9saWN5LVByaW1lciIvPiBpbGx1c3RyYXRlcyBob3cgcHJvdmlk ZXJzIGNhbiB1dGlsaXplDQoJCQkJCXRoZSBpZGVudGlmaWNhdGlvbiBtZWNoYW5pc20gZGVmaW5l ZCBpbiB0aGUgUG9saWN5IHNwZWNpZmljYXRpb24gdG8NCgkJCQkJZXhwb3NlIGEgY29tcGxleCBw b2xpY3kgZXhwcmVzc2lvbiBhcyBhIHJldXNhYmxlIGJ1aWxkaW5nIGJsb2NrIGZvcg0KCQkJCQlv dGhlciBwb2xpY3kgZXhwcmVzc2lvbnMgYnkgcmVmZXJlbmNlLiBSZXVzZSBtYXkgYWxzbyBiZSB1 c2VmdWwgZm9yDQoJCQkJCWRvbWFpbiBBc3NlcnRpb24gQXV0aG9ycywgZXNwZWNpYWxseSB0aG9z ZSBkZWZpbmluZyBjb21wbGV4IGFzc2VydGlvbnMNCgkJCQkJdXRpbGl6aW5nIHJlZmVyZW5jZXMg dG8gcG9saWN5IGV4cHJlc3Npb25zIGJ5IG5lc3RpbmcuIFN0YXRpY2FsbHkNCgkJCQkJYXZhaWxh YmxlIHBhcmFtZXRlcml6ZWQgY29udGVudCBtYXkgYWxzbyBiZSByZXVzZWQgYnkgZGlmZmVyZW50 DQoJCQkJCWFzc2VydGlvbnMuIEhvd2V2ZXIsIHN1Y2ggcmVmZXJlbmNpbmcgbWVjaGFuaXNtIGlz IG91dHNpZGUgdGhlIHNjb3BlIG9mDQoJCQkJCVdTLVBvbGljeSBuYW1pbmcgYW5kIHJlZmVyZW5j aW5nIGZyYW1ld29yayBhbmQgb3RoZXIgbWVjaGFuaXNtcyBjb3VsZCBiZSB1c2VkLiANCgkJCQkJ QXMgYW4gZXhhbXBsZSwgaW4gPGJpYnJlZiByZWY9IldTLVBvbGljeS1QcmltZXIiLz4NCgkJCQkJ U2VjdGlvbiA0LjIsIHRoZSA8Y29kZT5zcDppc3N1ZWRUb2tlbjwvY29kZT4gYXNzZXJ0aW9uIHV0 aWxpemVzIHRoZQ0KCQkJCQk8Y29kZT5zcDpSZXF1ZXN0U2VjdXJpdHlUb2tlblRlbXBsYXRlPC9j b2RlPiBwYXJhbWV0ZXIgdGhhdCBjb250YWlucyBuZWNlc3NhcnkNCgkJCQkJaW5mb3JtYXRpb24g dG8gcmVxdWVzdCBhIHNlY3VyaXR5IHRva2VuLiBUaGUgY29udGVudHMgb2YgdGhlIHBhcmFtZXRl cg0KCQkJCQlhcmUgc3RhdGljIGFuZCBhbGxvd3MgcmV1c2UgaW4gZGlmZmVyZW50IHNlY3VyaXR5 IHNjZW5lcmlvcy48L3A+DQoJCQk8L2RpdjI+DQoJCQk8ZGl2MiBpZD0iZXh0ZW5kaW5nLWFzc2Vy dGlvbnMiPg0KCQkJCQk8aGVhZD4gRXZvbHV0aW9uIG9mIEFzc2VydGlvbnMgKFZlcnNpb25pbmcg YW5kIENvbXBhdGliaWxpdHkpPC9oZWFkPg0KCQkJCQk8cD5PdmVyIHRpbWUsIHRoZXJlIG1heSBi ZSBtdWx0aXBsZSBlcXVpdmFsZW50IGJlaGF2aW9ycyBlbWVyZ2luZyBpbiB0aGUgV2ViDQogICAg ICAgICAgIAkJCVNlcnZpY2UgaW50ZXJhY3Rpb24gc3BhY2UuIEV4YW1wbGVzIG9mIHN1Y2ggbXVs dGlwbGUgZXF1aXZhbGVudCBiZWhhdmlvcnMgYXJlIFdTUzogU09BUCBNZXNzYWdlIFNlY3VyaXR5 IDEuMA0KICAgICAgICAgICAJCQl2cy4gMS4xIGFuZCBXUy1BZGRyZXNzaW5nIEF1Z3VzdCAyMDA0 IHZlcnNpb24gdnMuIFdTLUFkZHJlc3NpbmcgVzNDIFJlY29tbWVuZGF0aW9uDQogICAgICAgICAg IAkJCVs8YmlicmVmIHJlZj0iV1MtQWRkcmVzc2luZyIvPl0uIFRoZXNlIGVxdWl2YWxlbnQgYmVo YXZpb3JzDQogICAgICAgICAgIAkJCWFyZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGFuIGludGVy YWN0aW9uLiBTdWNoIGVxdWl2YWxlbnQNCiAgICAgICAgICAgCQkJYmVoYXZpb3JzIGNhbiBiZSBt b2RlbGVkIGFzIGluZGVwZW5kZW50IGFzc2VydGlvbnMuIDwvcD4NCiAgICAgICAgICAgCQkJPHAg cm9sZT0icHJhY3RpY2UiIGlkPSJicC1pbmRlcGVuZGVudC1hc3NlcnRpb25zIj4NCiAgICAgICAg ICAgCQkJPHF1b3RlPlVzZSBJbmRlcGVuZGVudCBBc3NlcnRpb25zIGZvciBEaWZmZXJlbnQgVmVy c2lvbnMgb2YgYSBCZWhhdmlvcjwvcXVvdGU+DQogICAgICAgICAgIAkJCTxxdW90ZT5Bc3NlcnRp b24gQXV0aG9ycyBzaG91bGQgdXNlIGluZGVwZW5kZW50IGFzc2VydGlvbnMgZm9yIG1vZGVsaW5n IGRpZmZlcmVudCANCiAgICAgICAgICAgCQkJdmVyc2lvbnMgb2YgYSBiZWhhdmlvci48L3F1b3Rl PjwvcD4NCiAgICAgICAgICAgCQkJDQogICAgICAgICAgIAkJCTxwPlRoZQ0KICAgICAgICAgICAJ CQlwb2xpY3kgZXhwcmVzc2lvbiBpbiB0aGUgZXhhbXBsZSBiZWxvdyByZXF1aXJlcyB0aGUgdXNl IG9mDQogICAgICAgICAgIAkJCVdTUzogU09BUCBNZXNzYWdlIFNlY3VyaXR5IDEuMC4gPC9wPiAN CiAgICAgICAgICAgCQkJPGV4YW1wbGU+DQogICAgICAgICAgIAkJCQk8aGVhZD5NZXNzYWdlLWxl dmVsIFNlY3VyaXR5IGFuZCBXU1M6IFNPQVAgTWVzc2FnZSBTZWN1cml0eSAxLjA8L2hlYWQ+DQo8 ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Jmx0O1BvbGljeSZndDsNCiAgJmx0O3NwOldzczEwJmd0 OyZoZWxsaXA7Jmx0Oy9zcDpXc3MxMCZndDsNCiZsdDsvUG9saWN5Jmd0OzwvZWc+PC9leGFtcGxl Pg0KICAgICAgICAgICAJCQkJCTxwPlRoZSBwb2xpY3kgZXhwcmVzc2lvbiBpbiB0aGUgZXhhbXBs ZSBiZWxvdyByZXF1aXJlcyB0aGUgdXNlIG9mIFdTUzogU09BUCBNZXNzYWdlDQogICAgICAgICAg IAkJCQkJCVNlY3VyaXR5IDEuMS4gVGhlc2UgYXJlIG11bHRpcGxlIGVxdWl2YWxlbnQgYmVoYXZp b3JzIGFuZCBhcmUgcmVwcmVzZW50ZWQgdXNpbmcgZGlzdGluY3QNCiAgICAgICAgICAgCQkJCQkJ cG9saWN5IGFzc2VydGlvbnMuPC9wPg0KICAgICAgICAgICAJCQkJCTxleGFtcGxlPg0KICAgICAg ICAgICAJCQkJCQk8aGVhZD5NZXNzYWdlLWxldmVsIFNlY3VyaXR5IGFuZCBXU1M6IFNPQVAgTWVz c2FnZSBTZWN1cml0eSAxLjE8L2hlYWQ+DQo8ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Jmx0O1Bv bGljeSZndDsNCiAgJmx0O3NwOldzczExJmd0OyZoZWxsaXA7Jmx0Oy9zcDpXc3MxMSZndDsNCiZs dDsvUG9saWN5Jmd0OzwvZWc+PC9leGFtcGxlPg0KDQoJCQk8L2RpdjI+CQ0KCQk8ZGl2MiBpZD0i c3VwcG9ydGluZy1uZXctcG9saWN5LXN1YmplY3RzIj4NCgkJCTxoZWFkPlN1cHBvcnRpbmcgTmV3 IFBvbGljeSBTdWJqZWN0czwvaGVhZD4NCgkJCTxwPg0KCQkJCVRoZSBiZXN0IHByYWN0aWNlIDxz cGVjcmVmIHJlZj0iYnAtV1NETC1wb2xpY3ktc3ViamVjdCIvPiBzcGVjaWZpZXMgdGhhdCBwb2xp Y3kgYXV0aG9ycyBzaG91bGQgDQoJCQkJZGVmaW5lIHRoZSBzZXQgb2YgcG9saWN5IHN1YmplY3Rz IHRvIHdoaWNoIHBvbGljeSBhc3NlcnRpb25zIGNhbiBiZSANCgkJCQlhdHRhY2hlZC4gIE92ZXIg dGltZSwgbmV3IHBvbGljeSBzdWJqZWN0cyBtYXkgbmVlZCB0byBiZSBkZWZpbmVkLiAgV2hlbiAN CgkJCQl0aGlzIG9jY3VycywgcG9saWN5IEFzc2VydGlvbiBBdXRob3JzIG1heSB1cGRhdGUgdGhl IGxpc3Qgb2YgcG9saWN5IA0KCQkJCXN1YmplY3RzIHN1cHBvcnRlZCBieSBhbiBhc3NlcnRpb24u IA0KCQkJPC9wPg0KCQkJPHA+DQoJCQkJV2hlbiB0aGUgYXNzZXJ0aW9uJ3Mgc2VtYW50aWNzIGRv IG5vdCBjaGFuZ2UgdG8gaW52YWxpZGF0ZSBhbnkgb2YgdGhlIA0KCQkJCW9yaWdpbmFsIHBvbGlj eSBzdWJqZWN0cyBidXQgbmV3IHBvbGljeSBzdWJqZWN0cyBuZWVkIHRvIGJlIGFkZGVkLCBpdCBt YXkgDQoJCQkJYmUgcG9zc2libGUgdG8gdXNlIHRoZSBzYW1lIGFzc2VydGlvbiB0byBkZXNpZ25h dGUgdGhlIGFkZGl0aW9uYWwgcG9saWN5IA0KCQkJCXN1YmplY3RzIHdpdGhvdXQgYSBuYW1lc3Bh Y2UgY2hhbmdlLiAgRm9yIGV4YW1wbGUsIGEgcG9saWN5IGFzc2VydGlvbiBmb3IgDQoJCQkJYSBw cm90b2NvbCB0aGF0IGlzIG9yaWdpbmFsbHkgZGVzaWduZWQgZm9yIGVuZHBvaW50IHBvbGljeSBz dWJqZWN0IG1heSBhZGQgDQoJCQkJbWVzc2FnZSBwb2xpY3kgc3ViamVjdCB0byBpbmRpY2F0ZSBm aW5lciBncmFudWxhcml0eSBpbiB0aGUgYXR0YWNobWVudCANCgkJCQlwcm92aWRlZCB0aGF0IGVu ZHBvaW50IHBvbGljeSBzdWJqZWN0IGlzIGFsc28gcmV0YWluZWQgaW4gaXRzIGRlc2lnbi4gV2hl biANCgkJCQluZXcgcG9saWN5IHN1YmplY3RzIGFyZSBhZGRlZCBpdCBpcyBpbmN1bWJlbnQgb24g dGhlIGF1dGhvcnMgdG8gcmV0YWluIHRoZSANCgkJCQlzZW1hbnRpYyBvZiB0aGUgcG9saWN5IGFz c2VydGlvbi4gDQoJCQk8L3A+DQoNCgkJCTxwIHJvbGU9InByYWN0aWNlIiBpZD0iYnAtcG9saWN5 LXN1YmplY3QtY2hhbmdlIj48cXVvdGU+Q2hhbmdlIG9mIHRoZSBQb2xpY3kgU3ViamVjdCBPdmVy IFRpbWU8L3F1b3RlPjxxdW90ZT5JZiB0aGUgcG9saWN5IHN1YmplY3RzIGNoYW5nZSBvdmVyIHRp bWUsIA0KCQkJCXRoZSBhc3NlcnRpb24gZGVzY3JpcHRpb24gc2hvdWxkIGFsc28gYmUgdmVyc2lv bmVkIHRvIHJlZmxlY3QgdGhpcyANCgkJCQljaGFuZ2UuPC9xdW90ZT4NCgkJCTwvcD4NCgkJPC9k aXYyPiAgICAgIA0KCQk8L2RpdjE+DQoJCQ0KCQk8ZGl2MSBpZD0iYmVzdC1wcmFjdGljZXMtYXR0 YWNobWVudCI+DQoJCQk8aGVhZD5BcHBseWluZyBCZXN0IFByYWN0aWNlcyBmb3IgIFBvbGljeSBB dHRhY2htZW50PC9oZWFkPg0KCQkJPGRpdjIgaWQ9ImNvbnRleHQtZnJlZS1wb2xpY2llcyI+DQoJ CQkJPGhlYWQ+QXBwcm9wcmlhdGUgQXR0YWNobWVudDogUHJlc2VydmluZyBDb250ZXh0LUZyZWUg UG9saWNpZXM8L2hlYWQ+DQoJCQkJPHA+UG9saWN5IGF0dGFjaG1lbnQgc2hvdWxkIG5vdCBhZmZl Y3QgdGhlIGludGVycHJldGF0aW9uIG9mDQogICAgICAgICBQb2xpY3kgYWx0ZXJuYXRpdmVzLiBJ ZiBpdCBkaWQsIGVhY2ggcG9saWN5IGFzc2VydGlvbiB3b3VsZA0KICAgICAgICAgbmVlZCB0byBi ZSB3cml0dGVuIHdpdGggZGlmZmVyZW50IChhbmQgcG9zc2libHkgdW5rbm93bikNCiAgICAgICAg IGF0dGFjaG1lbnQgbWVjaGFuaXNtcyBpbiBtaW5kLiAgPC9wPg0KCQkJCTwhLS0gRURTIFRPIERP OiBbQ0xBUklGWSBTVUJKRUNUIFJFTEFUSU9OU0hJUF0gaW4gdGhlIHBhcmFncmFwaCBhYm92ZSAt LT4NCgkJCTwvZGl2Mj4NCgkJCTxkaXYyIGlkPSJhcHByb3ByaWF0ZS1hdHRhY2htZW50LWFzc2Vy dGlvbi1zdWJqZWN0cyI+DQoJCQkJPGhlYWQ+QXBwcm9wcmlhdGUgQXR0YWNobWVudDogSWRlbnRp ZnlpbmcgQXNzZXJ0aW9uIFN1YmplY3RzPC9oZWFkPg0KCQkJCTxwPkVhY2ggcG9saWN5IGF0dGFj aG1lbnQgbWVjaGFuaXNtIHNob3VsZCB1bmFtYmlndW91c2x5DQogICAgICAgIGlkZW50aWZ5IHRo ZSBzdWJqZWN0IG9mIHRoZSBhdHRhY2hlZCBhc3NlcnRpb25zLiBHZW5lcmFsbHksDQogICAgICAg IHRoaXMgc2hvdWxkIGJlIGEgc3BlY2lmaWMgU09BUCBub2RlIG9yIGEgc3BlY2lmaWMgbWVzc2Fn ZQ0KICAgICAgICBiZXR3ZWVuIHR3byBTT0FQIG5vZGVzLiBTb21lIGF0dGFjaG1lbnQgbWVjaGFu aXNtcyBtYXkNCiAgICAgICAgZW5jb21wYXNzIG11bHRpcGxlIG5vdGVzIG9yIG1lc3NhZ2VzLCBm b3IgZXhhbXBsZSwgInRoZQ0KICAgICAgICBtZXNzYWdlIGFsb25nIGl0cyBlbnRpcmUgcGF0aCIu IDwvcD4NCgkJCQk8ZGl2MyBpZD0iaW50ZXJhY3Rpb24iPg0KCQkJCQk8aGVhZD5JbnRlcmFjdGlv biBiZXR3ZWVuIFN1YmplY3RzPC9oZWFkPg0KCQkJCQk8cD5JZiB0aGUgYmVzdCBwcmFjdGljZXMg YXJlIGZvbGxvd2VkLCBhbmQgdGhlIGFzc2VydGlvbnMNCiAgICAgICAgICAgYXJlIHNjb3BlZCBh Y2NvcmRpbmcgdG8gdGhlaXIgc3ViamVjdCwgdGhlbiBtdWx0aXBsZSBwb2xpY3kNCiAgICAgICAg ICAgZG9tYWlucyBtYXkgYmUgY29tYmluZWQgd2l0aG91dCBjb25mbGljdC4gRWFjaCBkb21haW4N CiAgICAgICAgICAgc2hvdWxkIGRlZmluZSBhbnkgbGltaXRhdGlvbnMgYXQgdGhlIHBvbGljeSBz dWJqZWN0IGxldmVsDQogICAgICAgICAgIHRoYXQgbWlnaHQgaW1wYWN0IGludGVyb3BlcmFiaWxp dHkgKGkuZS4gV1MtU2VjdXJpdHlQb2xpY3kNCiAgICAgICAgICAgLSBiaW5kaW5nIGFic3RyYWN0 aW9uIHRvIGdyb3VwIGNhcGFiaWxpdGllcyBwZXIgbWVzc2FnZQ0KICAgICAgICAgICBleGNoYW5n ZSkuIDwvcD4NCgkJCQk8L2RpdjM+DQoJCQk8L2RpdjI+DQoJCQk8ZGl2MiBpZD0iaWRlbnRpZnlp bmctYXNzZXJ0aW9uLXNvdXJjZXMiPg0KCQkJCTxoZWFkPkFwcHJvcHJpYXRlIEF0dGFjaG1lbnQ6 IElkZW50aWZ5aW5nIEFzc2VydGlvbiBTb3VyY2VzIDwvaGVhZD4NCgkJCQk8cD5BcyB3aXRoIGlk ZW50aWZ5aW5nIFBvbGljeSBzdWJqZWN0cywgcG9saWN5IGF0dGFjaG1lbnQNCgkgICBtZWNoYW5p c21zIHNob3VsZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGNsZWFybHkgaWRlbnRpZnkgdGhlDQoJICAg c291cmNlIG9mIGEgcG9saWN5IGFzc2VydGlvbiBib3RoIGZvciBkZWJ1Z2dpbmcgYW5kIGZvcg0K CSAgIHZlcmlmaWNhdGlvbi4gVGhpcyBjb3VsZCB0YWtlIHNldmVyYWwgZm9ybXM6IGl0IGNvdWxk IGJlDQoJICAgYXNzdW1lZCAoaW4gV1NETCwgdGhlIHNvdXJjZSBvZiB0aGUgYXNzZXJ0aW9uIGlz IHRoZSBzYW1lDQoJICAgYXMgdGhlIFdTREwgcHJvdmlkZXIpIG9yIGl0IGNvdWxkIGJlIHByb3Zl biAodXNpbmcNCgkgICA8YmlicmVmIHJlZj0iV1MtVHJ1c3QiLz4pLiAgPC9wPg0KCQkJPC9kaXYy Pg0KCQk8L2RpdjE+DQoJCTxkaXYxIGlkPSJzY2VuYXJpbyI+DQoJCQk8aGVhZD5TY2VuYXJpbyBh bmQgYSB3b3JrZWQgZXhhbXBsZTwvaGVhZD4NCgkJCTxwPlRvIGlsbHVzdHJhdGUgdGhlIHRvcGlj cyBleHBsb3JlZCBpbiB0aGlzIGRvY3VtZW50LCB3ZQ0KICAgICAgIGluY2x1ZGUgYW4gZXhhbXBs ZSBvZiBhIHdlYiBzZXJ2aWNlIGFuZCBob3cgYSBmaWN0aXRpb3VzIGNvbXBhbnkNCiAgICAgICBt aWdodCB1dGlsaXplIHRoZSBXUy1Qb2xpY3kgRnJhbWV3b3JrIHRvIGVuYWJsZSBXZWIgU2Vydmlj ZQ0KICAgICAgIGludGVyb3BlcmFiaWxpdHkuIENvbXBhbnkgQSBoYXMgZGV0ZXJtaW5lZCB0byB1 dGlsaXplIFdTLVNlY3VyaXR5LA0KICAgICAgIFdTLUFkZHJlc3NpbmcgYW5kIFdTLVJlbGlhYmxl IE1lc3NhZ2luZyBpbiBhbGwgaXRzIG5ldyB3ZWINCiAgICAgICBzZXJ2aWNlIG9mZmVyaW5ncyBh bmQgaGFzIGluc3RydWN0ZWQgaXRzIGRldmVsb3BlcnMgdG8gdXNlIHRoZQ0KICAgICAgIHBvbGlj eSBhc3NlcnRpb25zIGRlZmluZWQgYnkgdGhlIGZvbGxvd2luZyBkb2N1bWVudHM6IDwvcD4NCgkJ CTx1bGlzdD4NCgkJCQk8aXRlbT4NCgkJCQkJPHA+V2ViIFNlcnZpY2VzIFNlY3VyaXR5IFBvbGlj eSA8L3A+DQoJCQkJPC9pdGVtPg0KCQkJCTxpdGVtPg0KCQkJCQk8cD5XZWIgU2VydmljZXMgUmVs aWFibGUgTWVzc2FnaW5nIFBvbGljeSA8L3A+DQoJCQkJPC9pdGVtPg0KCQkJCTxpdGVtPg0KCQkJ CQk8cD5XZWIgU2VydmljZXMgQWRkcmVzc2luZyBXU0RMIEJpbmRpbmc8L3A+DQoJCQkJPC9pdGVt Pg0KCQkJPC91bGlzdD4NCgkJCTxwPlRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIGF0IENvbXBh bnkgQSBhcmUgaW5zdHJ1Y3RlZCB0bw0KICAgICAgcmV2aWV3IHRoZSBjdXJyZW50IHdlYiBzZXJ2 aWNlcyBhdCBDb21wYW55IEEgYW5kIHByb3Bvc2UgYSBwbGFuDQogICAgICBmb3IgYWRkaW5nIHBv bGljeSBhc3NlcnRpb25zLiA8L3A+DQoJCQk8cD5UaGUgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBj b2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IHdlYg0KICAgICAgc2VydmljZXMgd2l0aGluIENvbXBh bnkgQSBhbmQgZGV0ZXJtaW5lIHRoYXQgYWxsIG9mIHRoZSB3ZWINCiAgICAgIHNlcnZpY2VzIGFs cmVhZHkgaGF2ZSBhIFdTREwgMS4xIGRlc2NyaXB0aW9uLiBUaGUgZGV2ZWxvcGVycw0KICAgICAg aGF2ZSBkZXRlcm1pbmVkIHRoYXQgQ29tcGFueSBBJ3Mgd2ViIHNlcnZpY2VzIGZhbGwgaW50byB0 d28NCiAgICAgIHR5cGVzIG9mIHdlYiBzZXJ2aWNlcy4gVGhlcmUgYXJlIHRob3NlIHRoYXQgZmFs bCBpbnRvIHRoZQ0KICAgICAgImRlZmF1bHQiIGNhdGVnb3J5LCBhbmQgd2lsbCB1c2UgYSBwcmVk ZWZpbmVkIHNldCBvZiBwb2xpY3kNCiAgICAgIGFzc2VydGlvbnMsIGFuZCB0aGVyZSBhcmUgdGhv c2UgdGhhdCB1c2UgdGhlIGRlZmF1bHQgYnV0IGFsc28NCiAgICAgIGV4dGVuZCB0aGUgcG9saWN5 IGFsdGVybmF0aXZlcy4gPC9wPg0KCQkJPHA+VGhleSBoYXZlIGFsc28gZGV0ZXJtaW5lZCB0aGF0 IGZvciB0aGUgYm90aCB0eXBlcywgdGhlDQogICAgICBhcHByb3ByaWF0ZSBwb2xpY3kgc3ViamVj dCBpcyB0aGUgZW5kcG9pbnQuICBUaGV5IGRldGVybWluZWQNCiAgICAgIHRoaXMgYmVjYXVzZSB0 aGUgY2FwYWJpbGl0aWVzIGFwcGx5IHRvIGFsbCBvcGVyYXRpb25zIGFuZA0KICAgICAgbWVzc2Fn ZXMgZm9yIHRoZSB3ZWIgc2VydmljZSBub3QgdG8gYW55IG9uZSBpbmRpdmlkdWFsIG9wZXJhdGlv bg0KICAgICAgb3IgbWVzc2FnZSBleGNoYW5nZS4gPC9wPg0KCQkJPHA+U2VydmljZSBBIGlzIGEg V1NETCAxLjEgY29uZm9ybWFudCB3ZWIgc2VydmljZSBhbmQgcmVxdWlyZXMNCiAgICAgIHRoZSB1 c2Ugb2YgdHJhbnNwb3J0LWxldmVsIHNlY3VyaXR5IGZvciBwcm90ZWN0aW5nIG1lc3NhZ2VzIGFz DQogICAgICB3ZWxsIGFzIGluY2x1ZGluZyBhZGRyZXNzaW5nIGhlYWRlcnMuIEVtcGxveWVlcyBv ZiBDb21wYW55IEEgaGF2ZQ0KICAgICAgYWxyZWFkeSBpbmNvcnBvcmF0ZWQgPGNvZGU+d3NzOlNl Y3VyaXR5PC9jb2RlPiBoZWFkZXJzIGludG8gdGhlaXINCiAgICAgIG1lc3NhZ2VzLiA8L3A+DQoJ CQk8ZXhhbXBsZT4NCgkJCQk8aGVhZD5NZXNzYWdlIHdpdGggU2VjdXJpdHkgSGVhZGVyczwvaGVh ZD4NCgkJCQk8ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Jmx0O3NvYXA6RW52ZWxvcGUmZ3Q7IA0K ICAmbHQ7c29hcDpIZWFkZXImZ3Q7DQogICAgJmx0O3dzczpTZWN1cml0eSBzb2FwOm11c3RVbmRl cnN0YW5kID0iMSImZ3Q7DQogICAgICAmbHQ7d3N1OlRpbWVzdGFtcCB3c3U6SWQ9XzAiJmd0Ow0K ICAgICAgICAmbHQ7d3N1OkNyZWF0ZWQmZ3Q7IDIwMDA2LTAxLTE5VDAyOjQ5OjUzLjkxNFogJmx0 Oy91OkNyZWF0ZWQmZ3Q7IA0KICAgICAgICAmbHQ7d3N1OkV4cGlyZXMmZ3Q7IDIwMDA2LTAxLTE5 VDAyOjU0OjUzLjkxNFogJmx0Oy91OkV4cGlyZXMmZ3Q7DQogICAgICAmbHQ7L3dzdTpUaW1lc3Rh bXAmZ3Q7DQogICAgJmx0Oy93c3M6U2VjdXJpdHkmZ3Q7DQogICAgJmx0O3dzYTpUbyZndDsgaHR0 cDovL0NvbXBhbnlBL3F1b3RlICZsdDt3c2E6VG8mZ3Q7DQogICAgJmx0O3dzYTpBY3Rpb24mZ3Q7 IGh0dHA6Ly9Db21wYW55QS9HZXRSZWFsUXVvdGUmbHQ7L3dzYTpBY3Rpb24mZ3Q7DQogJmx0Oy9z b2FwOkhlYWRlciZndDsNCiAmbHQ7c29hcDpCb2R5Jmd0OyAuLi4NCiZsdDsvc29hcDpFbnZlbG9w ZSZndDs8L2VnPg0KCQkJPC9leGFtcGxlPg0KCQkJPHA+VGhlIFNPQVAgbWVzc2FnZSBpbiB0aGUg ZXhhbXBsZSBhYm92ZSBpbmNsdWRlcyBzZWN1cml0eQ0KICAgICB0aW1lc3RhbXBzIHRoYXQgZXhw cmVzcyBjcmVhdGlvbiBhbmQgZXhwaXJhdGlvbiB0aW1lcyBvZiB0aGlzDQogICAgIG1lc3NhZ2Uu IENvbXBhbnkgQSByZXF1aXJlcyB0aGUgdXNlIG9mIHRoZXNlIHNlY3VyaXR5IHRpbWVzdGFtcHMN CiAgICAgYW5kIHRyYW5zcG9ydC1sZXZlbCBzZWN1cml0eSwgc3VjaCBhcyBIVFRQUyBmb3IgcHJv dGVjdGluZw0KICAgICBtZXNzYWdlcy4gPC9wPg0KCQkJPHA+VGhlIGV4YW1wbGUgYmVsb3cgaWxs dXN0cmF0ZXMgYSBwb2xpY3kgZXhwcmVzc2lvbiB0aGF0DQogICAgIENvbXBhbnlBIGhhcyBjcmVh dGVkIGZvciBpdHMgZW1wbG95ZWVzIHRvIHVzZSBvbiB0aGVpciB3ZWINCiAgICAgc2VydmljZXMg dG8gaW5kaWNhdGUgdGhlIHVzZSBvZiBhZGRyZXNzaW5nIGFuZCB0cmFuc3BvcnQtbGV2ZWwNCiAg ICAgc2VjdXJpdHkgZm9yIHNlY3VyaW5nIG1lc3NhZ2VzLiA8L3A+DQoJCQk8ZXhhbXBsZT4NCgkJ CQk8aGVhZD4gQ29tcGFueUEtUHJvZmlsZUEgPC9oZWFkPg0KCQkJCTxlZyB4bWw6c3BhY2U9InBy ZXNlcnZlIj4NCiZsdDtQb2xpY3kgVVJJPWh0dHA6Ly93d3cuQ29tcGFueUEuY29tL1dlYlNlcnZp Y2VzUHJvZmlsZUEueG1sJmd0OyANCgkmbHQ7d3NhbTpBZGRyZXNzaW5nJmd0OyZoZWxsaXA7Jmx0 Oy93c2FtOkFkZHJlc3NpbmcmZ3Q7DQoJJmx0O3NwOlRyYW5zcG9ydEJpbmRpbmcmZ3Q7Jmx0Oy9z cDpUcmFuc3BvcnRCaW5kaW5nJmd0Ow0KJmx0Oy9Qb2xpY3kmZ3Q7PC9lZz4NCgkJCTwvZXhhbXBs ZT4NCgkJCTxwPlRoZSA8Y29kZT5zcDpUcmFuc3BvcnRCaW5kaW5nPC9jb2RlPiBlbGVtZW50IGlz IGEgcG9saWN5IGFzc2VydGlvbi4gVGhlDQogICAgIGFzc2VydGlvbiBpZGVudGlmaWVzIHRoZSB1 c2Ugb2YgdHJhbnNwb3J0LWxldmVsLXNlY3VyaXR5IC0gc3VjaA0KICAgICBhcyBIVFRQUyBmb3Ig cHJvdGVjdGluZyBtZXNzYWdlcyBhdCB0aGUgdHJhbnNwb3J0DQogICAgIGxldmVsLiBDb21wYW55 IEEncyBwb2xpY3kgYXdhcmUgY2xpZW50cyBjYW4gbm93IHJlY29nbml6ZSB0aGlzDQogICAgIHBv bGljeSBhc3NlcnRpb24gYW5kIGlmIHRoZXkgc3VwcG9ydCBpdCwgZW5nYWdlIGluIHRyYW5zcG9y dA0KICAgICBsZXZlbCBzZWN1cml0eSBmb3IgcHJvdGVjdGluZyBtZXNzYWdlcyBhbmQgcHJvdmlk aW5nIHNlY3VyaXR5DQogICAgIHRpbWVzdGFtcHMgaW4gU09BUCBlbnZlbG9wZXMgZm9yIGFueSBX U0RMIHdpdGggdGhpcyBwb2xpY3kNCiAgICAgYXR0YWNoZWQuIDwvcD4NCgkJCTxwPldoZW4gY3Jl YXRpbmcgdGhlIHBvbGljeSBmb3IgdGhlIGRlZmF1bHQgd2ViIHNlcnZpY2VzLCB0aGUNCiAgICAg ZGV2ZWxvcGVycyB0b29rIGludG8gY29uc2lkZXJhdGlvbiBzZXZlcmFsIGZhY3RvcnMuICBGaXJz dCwgYWxsDQogICAgIHRoZWlyIHdlYiBzZXJ2aWNlcyB3ZXJlIFdTREwgMS4xIHdlYiBzZXJ2aWNl cy4gU2Vjb25kLCB0aGV5DQogICAgIHdhbnRlZCB0byByZXVzZSBwb2xpY3kgYXNzZXJ0aW9ucyB3 aGVyZSBldmVyIHBvc3NpYmxlLiBUaGlyZCwNCiAgICAgdGhleSB3YW50ZWQgdG8gZW5zdXJlIHRo YXQgd2hlcmUgcG9zc2libGUgdGhleSB3b3VsZCBzdXBwb3J0DQogICAgIGFsdGVybmF0aXZlcyBy YXRoZXIgdGhhbiBmb3JjaW5nIGEgc2luZ2xlIGNsaWVudA0KICAgICBjb25maWd1cmF0aW9uLiA8 L3A+DQoJCQk8cD5UaGUgZGV2ZWxvcGVycyByZWFkIHRoZSBXUy1Qb2xpY3kgc3BlY2lmaWNhdGlv biBhbmQgbm90ZWQgdGhhdA0KICAgICB0aGVyZSB3ZXJlIHRocmVlIHdheXMgdG8gZXhwcmVzcyBj b21iaW5hdGlvbnMgb2YgYmVoYXZpb3JzLiBUaGUgdGhyZWUNCiAgICAgcG9saWN5IG9wZXJhdG9y cywgKFBvbGljeSwgQWxsIGFuZCBFeGFjdGx5T25lKSB3ZXJlIGNvbnNpZGVyZWQNCiAgICAgYW5k IHRoZSByZXN1bHQgd2FzIHRoZSBjcmVhdGlvbiBvZiB0d28gcG9saWN5IGVsZW1lbnRzLiA8L3A+ DQoJCQk8cD5UaGUgZmlyc3QgcG9saWN5IGlzIHNob3duIGluIEZpZ3VyZQ0KICAgICA8ZW1waD5D b21wYW55QS1Qcm9maWxlQTwvZW1waD4gYW5kIGl0IGlzIHRoZSBwb2xpY3kgdGhhdCBpcyB1c2Vk DQogICAgIGJ5IG1hbnkgd2ViIHNlcnZpY2VzIGF0IENvbXBhbnkgQSB0aGF0IHJlbHkgb24gSFRU UFMgdG8gcHJvdmlkZQ0KICAgICB0cmFuc3BvcnQgbGV2ZWwgcHJvdGVjdGlvbiBvZiBtZXNzYWdl cy4gPC9wPg0KCQkJPHA+VGhlIHNlY29uZCBwb2xpY3kgaXMgc2hvd24gaW4gRmlndXJlDQogICAg IDxlbXBoPkNvbXBhbnlBLVByb2ZpbGVCPC9lbXBoPiBhbmQgaXQgb2ZmZXJzIHJlcXVlc3RlcnMg b2YgYQ0KICAgICBzZXJ2aWNlIHRoZSBhYmlsaXR5IHRvIHByb3ZpZGUgYWRkaXRpb25hbCBpbnRl Z3JpdHkgcHJvdGVjdGlvbiBieQ0KICAgICBpbmNsdWRpbmcgV1MtU2VjdXJpdHkgSGVhZGVycyB0 byBwcm90ZWN0IHRoZSBtZXNzYWdlIGNvbnRlbnQNCiAgICAgYWZ0ZXIgaXQgaXMgcHJvY2Vzc2Vk IGJ5IHRoZSB0cmFuc3BvcnQuICBUaGUgYWRkaXRpb25hbCBzZWN1cml0eQ0KICAgICBwcm9jZXNz aW5nIGlzIG5vdCByZXF1aXJlZCBieSBhbGwgQ29tcGFueSBBIHdlYiBzZXJ2aWNlcy4gPC9wPg0K ICAgICA8ZXhhbXBsZT4gPGhlYWQ+Q29tcGFueUEtUHJvZmlsZUIgKG5vdCBleHBhbmRlZCk8L2hl YWQ+IDxlZw0KICAgICB4bWw6c3BhY2U9InByZXNlcnZlIj4mbHQ7UG9saWN5IHdzdTpJZD0iQ29t cGFueUEtUHJvZmlsZUIiJmd0Ow0KICZsdDt3c2FtOkFkZHJlc3NpbmcmZ3Q7JmhlbGxpcDsmbHQ7 L3dzYW06QWRkcmVzc2luZyZndDsNCiAmbHQ7RXhhY3RseU9uZSZndDsNCiAgJmx0O3NwOlRyYW5z cG9ydEJpbmRpbmcmZ3Q7Jmx0Oy9zcDpUcmFuc3BvcnRCaW5kaW5nJmd0Ow0KICAmbHQ7c3A6QXN5 bW1ldHJpY0JpbmRpbmcmZ3Q7Jmx0Oy9zcDpBc3N5bWV0cmljQmluZGluZyZndDsNCiAmbHQ7L0V4 YWN0bHlPbmUmZ3Q7DQombHQ7L1BvbGljeSZndDs8L2VnPiA8L2V4YW1wbGU+DQoJCQk8cD5XZSBo YXZlIHNob3duIGFib3ZlIHRoYXQgQ29tcGFueSBBIG9mZmVyZWQgYQ0KICAgIHNlY29uZCBwcm9m aWxlIHRoYXQgaW5jbHVkZWQgdHdvIHNlY3VyaXR5IG9wdGlvbnMuICBUaGUgZGV0YWlscyBvZg0K ICAgIHRoZSBCaW5kaW5ncywgcmVxdWlyZXMgYSBtb3JlIGRldGFpbGVkIGV4cGxvcmF0aW9uIG9m IHNvbWUgb2YgdGhlDQogICAgb3RoZXIgZmVhdHVyZXMgb2YgdGhlIFdTLVBvbGljeSBGcmFtZXdv cmsuIDwvcD4NCgkJCTxwPldoZW4gQXNzZXJ0aW9uIEF1dGhvcnMgY3JlYXRlIHNldHMgb2YgUG9s aWN5IGFzc2VydGlvbnMsIGxpa2UNCiAgICBXUy1TZWN1cml0eSBQb2xpY3kgdGhleSBuZWVkIHRv IGNvbnNpZGVyIGV4cHJlc3NpbmcgdGhlIHNlbWFudGljcw0KICAgIG9mIHRoZWlyIGRvbWFpbiBp biBhIHdheSB0aGF0IHBvbGljeSBjb25zdW1lcnMsIGxpa2UgQ29tcGFueSBBLA0KICAgIGNhbiB1 dGlsaXplIHRoZW0uICBJbiB0aGlzIGNhc2UsIHRoZSBXUy1TZWN1cml0eVBvbGljeSBBc3NlcnRp b24gQXV0aG9ycw0KICAgIGZhY3RvcmVkIG91dCBjb21tb24gZWxlbWVudHMgb2Ygc2VjdXJpdHkg bWVjaGFuaXNtcyBhbmQgdXRpbGl6ZWQgYQ0KICAgIGZlYXR1cmUgb2YgV1MtUG9saWN5IGNhbGxl ZCAibmVzdGVkIiBhc3NlcnRpb25zLiAgSW4gdGhlIGNhc2Ugb2YNCiAgICBhbiA8Y29kZT5zcDpU cmFuc3BvcnRCaW5kaW5nPC9jb2RlPiBhc3NlcnRpb24sIGp1c3QgaW5kaWNhdGluZyB0aGUgdXNl IG9mDQogICAgdHJhbnNwb3J0LWxldmVsIHNlY3VyaXR5IGZvciBwcm90ZWN0aW5nIG1lc3NhZ2Vz IGlzIG5vdA0KICAgIHN1ZmZpY2llbnQuIEZvciBhIGNvbnN1bWVyIG9mIGEgd2ViIHNlcnZpY2Ug cHJvdmlkZWQgYnkgYSBjb21wYW55LA0KICAgIGxpa2UgQ29tcGFueSBBLCB0byBzdWNjZXNzZnVs bHkgaW50ZXJhY3QsIHRoZSBjb25zdW1lciBtdXN0IGFsc28NCiAgICBrbm93IHdoYXQgdHJhbnNw b3J0IHRva2VuLCB3aGF0IGFsZ29yaXRobSBzdWl0ZSwgZXRjLiBpcw0KICAgIHJlcXVpcmVkLiBU aGUgPGNvZGU+c3A6VHJhbnNwb3J0QmluZGluZzwvY29kZT4gYXNzZXJ0aW9uLCBjYW4gKGFuZCBo YXMpDQogICAgcmVwcmVzZW50IChlZCkgdGhlc2UgZGVwZW5kZW50IGJlaGF2aW9ycyBhcyAibmVz dGVkIiBwb2xpY3kNCiAgICBhc3NlcnRpb25zLiAgPC9wPg0KCQkJPHA+SW4gdGhlIGV4YW1wbGUg YmVsb3cgdGhlIGNoaWxkIFBvbGljeSBlbGVtZW50IGlzIGEgbmVzdGVkDQogICAgIHBvbGljeSBi ZWhhdmlvciBhbmQgZnVydGhlciBxdWFsaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZQ0KICAgICA8 Y29kZT5zcDpUcmFuc3BvcnRCaW5kaW5nPC9jb2RlPiBwb2xpY3kgYXNzZXJ0aW9uLiAgPC9wPg0K CQkJPGV4YW1wbGU+DQoJCQkJPGhlYWQ+Q29tcGFueUEtUHJvZmlsZUIgKGZ1bGx5IGV4cGFuZGVk KTwvaGVhZD4NCgkJCQk8ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Jmx0O1BvbGljeSB3c3U6SWQ9 IkNvbXBhbnlBLVByb2ZpbGVCIiZndDsgDQogJmx0O3dzYW06QWRkcmVzc2luZyZndDsmaGVsbGlw OyZsdDsvd3NhbTpBZGRyZXNzaW5nJmd0Ow0KICZsdDtFeGFjdGx5T25lJmd0Ow0KICAmbHQ7c3A6 VHJhbnNwb3J0QmluZGluZyZndDsNCiAgICZsdDtQb2xpY3kmZ3Q7DQogICAgJmx0O3NwOlRyYW5z cG9ydFRva2VuJmd0Ow0KICAgICAmbHQ7UG9saWN5Jmd0Ow0KCSAgICZsdDtzcDpIdHRwc1Rva2Vu Jmd0Ow0KCQkgJmx0O3dzcDpQb2xpY3kvJmd0Ow0KCSAgICZsdDsvc3A6SHR0cHNUb2tlbiZndDsN CiAgICAgJmx0Oy9Qb2xpY3kmZ3Q7DQogICAgJmx0Oy9zcDpUcmFuc3BvcnRUb2tlbiZndDsNCiAg ICAmbHQ7c3A6QWxnb3JpdGhtU3VpdGUmZ3Q7DQogICAgICZsdDtQb2xpY3kmZ3Q7DQogICAgICAm bHQ7c3A6QmFzaWMyNTZSc2ExNSAvJmd0Ow0KICAgICAmbHQ7L1BvbGljeSZndDsNCiAgICAmbHQ7 L3NwOkFsZ29yaXRobVN1aXRlJmd0Ow0KICAgJmx0Oy9Qb2xpY3kmZ3Q7DQogICZsdDsvc3A6VHJh bnNwb3J0QmluZGluZyZndDsNCiAgJmx0O3NwOkFzeW1tZXRyaWNCaW5kaW5nJmd0Ow0KICAmbHQ7 L3NwOkFzc3ltZXRyaWNCaW5kaW5nJmd0Ow0KICZsdDsvRXhhY3RseU9uZSZndDsNCiZsdDsvUG9s aWN5Jmd0OzwvZWc+DQoJCQk8L2V4YW1wbGU+DQoJCQk8cD4NCgkJCQk8Y29kZT5UaGUgc3A6QWxn b3JpdGhtU3VpdGU8L2NvZGU+IGlzIGEgbmVzdGVkIHBvbGljeQ0KICAgICBhc3NlcnRpb24gb2Yg dGhlIDxjb2RlPnNwOlRyYW5zcG9ydEJpbmRpbmc8L2NvZGU+IGFzc2VydGlvbiBhbmQNCiAgICAg aW5kaWNhdGVzIHRoYXQgdGhpcyBzdWl0ZSBpcyByZXF1aXJlZC4gIFRoZQ0KICAgICA8Y29kZT5z cDpUcmFuc3BvcnRUb2tlbjwvY29kZT4gaXMgYSBuZXN0ZWQgcG9saWN5IGFzc2VydGlvbiB0aGF0 DQogICAgIGluZGljYXRlcyB0aGUgdXNlIG9mIGEgc3BlY2lmaWMgdHlwZSBvZiB0b2tlbiwgaW4g dGhpcyBjYXNlIGFuDQogICAgIEh0dHBzVG9rZW4uIDwvcD4NCgkJCTxwPkl0IHNob3VsZCBiZSBu b3RlZCB0aGF0IGVhY2ggcG9saWN5IGhhcyBhbiBJZGVudGlmaWVyLiAgSW4gdGhlDQogICAgIGNh c2Ugb2YgdGhlIGRlZmF1bHQgcG9saWN5IGV4cHJlc3Npb24sIENvbXBhbnkgQSBoYXMgZGVjaWRl ZCB0aGF0DQogICAgIHRoaXMgcG9saWN5IGV4cHJlc3Npb24gc2hvdWxkIGJlIGJyb2FkbHkgYXZh aWxhYmxlIHZpYSBhIFVSSS4NCiAgICAgVGhlcmUgYXJlIGFkdmFudGFnZXMgYW5kIGRpc2FkdmFu dGFnZXMgdG8gdXNpbmcgZWFjaCB0eXBlIG9mDQogICAgIGlkZW50aWZpZXIuICBGb3IgVVJJJ3Mg dGhlcmUgaXMgdGhlIGlzc3VlIG9mIG1haW50YWluaW5nIHRoZQ0KICAgICBwb2xpY3kgZXhwcmVz c2lvbiB3aGVuIGl0IG1heSBubyBsb25nZXIgYmUgdXNlZCAoQ29tcGFueSBBIGdldHMNCiAgICAg Ym91Z2h0IGJ5IENvbXBhbnkgQiBhbmQgc3RhcnRzIHVzaW5nIHRoZSBwb2xpY2llcyBvZiBDb21w YW55IEIsDQogICAgIGJ1dCBzb21lICJvbGQiIGNvbnN1bWVycyBtYXkgc3RpbGwgdHJ5IHRvIHJl ZmVyZW5jZSB0aGUNCiAgICAgVVJJKS4gPC9wPg0KCQkJPHA+IEZvciB0aGUgc2Vjb25kIHR5cGUg b2Ygd2ViIHNlcnZpY2VzLCB3aGljaCBtYXkgYmUgdXNlZCBvbmx5DQogICAgIGJ5IGNlcnRhaW4g b2YgQ29tcGFueSBBJ3MgYnVzaW5lc3MgcGFydG5lcnMsIHRoZSBpZCBpcyBhbiBYTUwgSUQuDQog ICAgIFRoZSByZWxhdGl2ZSBVUkkgZm9yIHJlZmVyZW5jaW5nIHRoaXMgd2l0aGluIHRoZSBzYW1l IFdTREwNCiAgICAgZG9jdW1lbnQgaXMgI0NvbXBhbnlBLVByb2ZpbGVCLiBUaGlzIGNhbiBiZSB1 c2VmdWwgZm9yIGNvbXBhbnkncw0KICAgICB3aGVuIHRoZSBwb2xpY3kgZXhwcmVzc2lvbnMgYXJl IGFncmVlZCB0byBiZXR3ZWVuIHBhcnRuZXJzIGJ1dA0KICAgICBtYXkgYmUgY2hhbmdlZCBhcyB0 aGUgYnVzaW5lc3MgYWdyZWVtZW50cyBjaGFuZ2UuIEJ1dCB0aGUNCiAgICAgZGlzYWR2YW50YWdl IGlzIHRoYXQgdGhlIHBvbGljeSBleHByZXNzaW9uIG11c3QgYmUgaW5jbHVkZWQgaW4NCiAgICAg ZWFjaCBXU0RMIGRvY3VtZW50LiA8L3A+DQoJCQk8cD5TaW5jZSBDb21wYW55IEEgaGFzIGRlY2lk ZWQgdG8gdXNlIHdlbGwga25vd24gcG9saWN5DQogICAgIGV4cHJlc3Npb25zIHRoYXQgYXJlIHBh cnQgb2YgYSBzcGVjaWZpY2F0aW9uLCB0aGV5DQogICAgIGFkaGVyZSB0byB0aGUgZ3VpZGFuY2Ug Z2l2ZW4gaW4gdGhlIFdTLVNlY3VyaXR5UG9saWN5DQogICAgIHNwZWNpZmljYXRpb24gYW5kIGF0 dGFjaCB0aGUgcG9saWNpZXMgdG8gdGhlIHdlYiBzZXJ2aWNlIGVuZHBvaW50DQogICAgIHBvbGlj eSBzdWJqZWN0IGFzIHJlY29tbWVuZGVkIGJ5IHRoZSBXUy1TZWN1cml0eVBvbGljeQ0KICAgICBz cGVjaWZpY2F0aW9uLiBGb3IgdGhlIGRlZmF1bHQgd2ViIHNlcnZpY2VzLCB0aGUgVVJJIGlzIGlu Y2x1ZGVkDQogICAgIGluIHRoZSB3c2RsIGJpbmRpbmcgZm9yIGVhY2ggd2ViIHNlcnZpY2UuIDwv cD4NCgkJCTxleGFtcGxlPg0KCQkJCTxoZWFkLz4NCgkJCQk8ZWcgeG1sOnNwYWNlPSJwcmVzZXJ2 ZSI+Jmx0O3dzZGw6YmluZGluZyBuYW1lPSJDb21wYW55QURlZmF1bHRCaW5kaW5nIiB0eXBlPSJ0 bnM6Q29tcGFueUFEZWZhdWx0IiZndDsNCiAmbHQ7d3NwOlBvbGljeVJlZmVyZW5jZSBVUkk9Imh0 dHA6Ly93d3cuQ29tcGFueUEuY29tL1dlYlNlcnZpY2VzUHJvZmlsZUEueG1sIiZndDsNCiAmbHQ7 d3NkbDpvcGVyYXRpb24gbmFtZT0iR2V0UXVvdGUiJmd0OyAmbHQ7L3dzZGw6b3BlcmF0aW9uJmd0 Ow0KJmx0Oy93c2RsOmJpbmRpbmcmZ3Q7PC9lZz4NCgkJCTwvZXhhbXBsZT4NCgkJCTxwPlRoZSBw YXJ0bmVyIHNwZWNpZmllZCBwb2xpY3kgaXMgaW5jbHVkZWQgaW4gdGhlIGJlZ2lubmluZyBvZg0K ICAgIHRoZSBXU0RMIDEuMSBkb2N1bWVudCBhbmQgcmVmZXJlbmNlZCBieSB0aGUgYmluZGluZyBm b3IgdGhlIHNlcnZpY2UNCiAgICBhcyBpbiB0aGUgZXhhbXBsZSBiZWxvdy48L3A+DQoJCQk8ZXhh bXBsZT4NCgkJCQk8aGVhZC8+DQoJCQkJPGVnIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KJmx0O3dz ZGw6ZGVmaW5pdGlvbnMgbmFtZT0iU3RvY2tRdW90ZSINCiAgICB0YXJnZXROYW1lc3BhY2U9Imh0 dHA6Li4iJmd0Ow0KJmx0O3dzcDpQb2xpY3kgd3N1OklkPSJDb21wYW55QS1Qcm9maWxlQiImZ3Q7 IA0KCSZsdDt3c2FtOkFkZHJlc3NpbmcmZ3Q7JmhlbGxpcDsmbHQ7L3dzYW06QWRkcmVzc2luZyZn dDsNCgkmbHQ7RXhhY3RseU9uZSZndDsNCgkgICAmbHQ7c3A6VHJhbnNwb3J0QmluZGluZyZndDsN CiAgICAgICAgICAgICAgJmx0O1BvbGljeSZndDsNCiAgICAgCSAgICAgICAgICZsdDtzcDpUcmFu c3BvcnRUb2tlbiZndDsNCgkJICAgJmx0O3dzcDpQb2xpY3kmZ3Q7DQoJCQkgJmx0O3NwOkh0dHBz VG9rZW4mZ3Q7DQoJCQkgICAmbHQ7d3NwOlBvbGljeS8mZ3Q7DQoJCQkgJmx0Oy9zcDpIdHRwc1Rv a2VuJmd0Ow0KICAgICAgICAgICAgICAgICAgICZsdDsvd3NwOlBvbGljeSZndDsNCiAgICAgICAg ICAgICAgICAgJmx0Oy9zcDpUcmFuc3BvcnRUb2tlbiZndDsNCiAgICAgICAgICAgICAgICAgJmx0 O3NwOkFsZ29yaXRobVN1aXRlJmd0Ow0KICAgICAgICAgICAgICAgICAgICAmbHQ7d3NwOlBvbGlj eSZndDsNCgkJICAgICAgICZsdDtzcDpCYXNpYzI1NlJzYTE1IC8mZ3Q7DQogICAgICAgICAgICAg ICAgICAgICZsdDsvd3NwOlBvbGljeSZndDsNCiAgICAgICAgICAgICAgICAgJmx0Oy9zcEFsZ29y aXRobVN1aXRlJmd0Ow0KICAgICAgICAgICAgICAmbHQ7L1BvbGljeSZndDsNCiAgICAgICAgICAg Jmx0Oy9zcDpUcmFuc3BvcnRCaW5kaW5nJmd0Ow0KCSAgICZsdDtzcDpBc3ltbWV0cmljQmluZGlu ZyZndDsNCiAgICAgICAgICAgJmx0Oy9zcDpBc3N5bWV0cmljQmluZGluZyZndDsNCgkmbHQ7L0V4 YWN0bHlPbmUmZ3Q7DQombHQ7L3dzcDpQb2xpY3kmZ3Q7DQoNCiZsdDt3c2RsOmJpbmRpbmcgbmFt ZT0iQ29tcGFueUFEZWZhdWx0QmluZGluZyIgdHlwZT0idG5zOkNvbXBhbnlBRGVmYXVsdCImZ3Q7 IA0KICZsdDt3c3A6UG9saWN5UmVmZXJlbmNlIGlkPSNDb21wYW55QS1Qcm9maWxlQiZndDsNCiAm bHQ7d3NkbDpvcGVyYXRpb24gbmFtZT0iR2V0UXVvdGUiJmd0OyAmbHQ7L3dzZGw6b3BlcmF0aW9u Jmd0Ow0KJmx0Oy93c2RsOmJpbmRpbmcmZ3Q7PC9lZz4NCgkJCTwvZXhhbXBsZT4NCgkJCTxwPklu IHNvbWUgY2FzZXMsIGNvbXBhbmllcyBtYXkgY2hvc2UgdG8gaW1wbGVtZW50IHRoZWlyIG93bg0K ICBhc3NlcnRpb25zLiAgV2hlbiBjb21wYW5pZXMgY2hvc2UgdG8gYmVjb21lIEFzc2VydGlvbiBB dXRob3JzIHRoZXkgbmVlZA0KICB0byBjb25zaWRlciBub3Qgb25seSB0aGUgZGVmaW5pdGlvbiBv ZiB0aGUgYmVoYXZpb3IgdGhhdCB0aGUNCiAgYXNzZXJ0aW9uIHJlcHJlc2VudHMgYnV0IHRoZXkg bmVlZCB0byBjb25zaWRlciBob3cgbmV3IGFzc2VydGlvbnMNCiAgd2lsbCBiZSBpbnRlcnNlY3Rl ZCBhbmQgbWVyZ2VkIHdpdGggb3RoZXIgYXNzZXJ0aW9ucyBpbiB0aGUNCiAgY2FsY3VsYXRpb24g b2YgYW4gZWZmZWN0aXZlIHBvbGljeSBhbmQgdGhpcyBhbHNvIGluZGljYXRlcyB0aGV5IG5lZWQN CiAgdG8gY29uc2lkZXIgcG9saWN5IHN1YmplY3RzLjwvcD4NCgkJCTxwPiBUaGUgV1MtUG9saWN5 IDEuNSAtIEF0dGFjaG1lbnQgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGFsZ29yaXRobXMgZm9yIGNh bGN1bGF0aW5nIHRoZSANCiBlZmZlY3RpdmUgcG9saWN5IGZvciBhIGdpdmVuIHBvbGljeSBzdWJq ZWN0IGFuZCBlZmZlY3RpdmUgcG9saWNpZXMgZm9yDQogV1NETCAxLjEsIFdTREwgMi4wIGFuZCBV RERJIHBvbGljeSBzdWJqZWN0cy48L3A+DQoJCTwvZGl2MT4NCgk8L2JvZHk+DQoJPGJhY2s+DQoJ CTxkaXYxIGlkPSJzZWN1cml0eS1jb25zaWRlcmF0aW9ucyI+DQoJCQk8aGVhZD5TZWN1cml0eSBD b25zaWRlcmF0aW9uczwvaGVhZD4NCgkJCTxwPiBTZWN1cml0eSBjb25zaWRlcmF0aW9ucyBhcmUg ZGlzY3Vzc2VkIGluIHRoZSA8YmlicmVmIHJlZj0iV1MtUG9saWN5Ii8+IGRvY3VtZW50LjwvcD4N CgkJPC9kaXYxPg0KCQk8ZGl2MSBpZD0ieG1sLW5hbWVzcGFjZXMiPg0KCQkJPGhlYWQ+WE1MIE5h bWVzcGFjZXM8L2hlYWQ+DQoJCQk8cD5UaGUgdGFibGUgYmVsb3cgbGlzdHMgWE1MIE5hbWVzcGFj ZXMgdGhhdCBhcmUgdXNlZCBpbiB0aGlzIGRvY3VtZW50LiBUaGUgY2hvaWNlIG9mIGFueQ0KICAg ICAgICBuYW1lc3BhY2UgcHJlZml4IGlzIGFyYml0cmFyeSBhbmQgbm90IHNlbWFudGljYWxseSBz aWduaWZpY2FudC48L3A+DQoJCQk8dGFibGUgc3VtbWFyeT0iUHJlZml4ZXMgYW5kIFhNTCBOYW1l c3BhY2VzIHVzZWQgaW4gdGhpcyBzcGVjaWZpY2F0aW9uIiBpZD0ibnNwcmVmaXgiIGJvcmRlcj0i MSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI1Ij4NCgkJCQk8Y2FwdGlvbj5QcmVmaXhl cyBhbmQgWE1MIE5hbWVzcGFjZXMgdXNlZCBpbiB0aGlzIHNwZWNpZmljYXRpb24uPC9jYXB0aW9u Pg0KCQkJCTx0aGVhZD4NCgkJCQkJPHRyPg0KCQkJCQkJPHRoPlByZWZpeDwvdGg+DQoJCQkJCQk8 dGg+WE1MIE5hbWVzcGFjZTwvdGg+DQoJCQkJCQk8dGg+U3BlY2lmaWNhdGlvbnM8L3RoPg0KCQkJ CQk8L3RyPg0KCQkJCTwvdGhlYWQ+DQoJCQkJPHRib2R5Pg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+ DQoJCQkJCQkJPGNvZGU+c29hcDwvY29kZT4NCgkJCQkJCTwvdGQ+DQoJCQkJCQk8dGQ+DQoJCQkJ CQkJPGNvZGU+aHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlPC9jb2RlPg0K CQkJCQkJPC90ZD4NCgkJCQkJCTx0ZD5bPGJpYnJlZiByZWY9IlNPQVAxMiIvPl08L3RkPg0KCQkJ CQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+DQoJCQkJCQkJPGNvZGU+c3A8L2NvZGU+DQoJ CQkJCQk8L3RkPg0KCQkJCQkJPHRkPg0KCQkJCQkJCTxjb2RlPmh0dHA6Ly9kb2NzLm9hc2lzLW9w ZW4ub3JnL3dzLXN4L3dzLXNlY3VyaXR5cG9saWN5LzIwMDcwMjwvY29kZT4NCgkJCQkJCTwvdGQ+ DQoJCQkJCQk8dGQ+WzxiaWJyZWYgcmVmPSJXUy1TZWN1cml0eVBvbGljeSIvPl08L3RkPg0KCQkJ CQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+DQoJCQkJCQkJPGNvZGU+d3NhPC9jb2RlPg0K CQkJCQkJPC90ZD4NCgkJCQkJCTx0ZD4NCgkJCQkJCQk8Y29kZT5odHRwOi8vd3d3LnczLm9yZy8y MDA1LzA4L2FkZHJlc3Npbmc8L2NvZGU+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRkPls8YmlicmVm IHJlZj0iV1MtQWRkcmVzc2luZyIvPl08L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQkJPHRyPg0KCQkJ CQkJPHRkPg0KCQkJCQkJCTxjb2RlPndzYW08L2NvZGU+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRk Pg0KCQkJCQkJCTxjb2RlPmh0dHA6Ly93d3cudzMub3JnLzIwMDcvMDUvYWRkcmVzc2luZy9tZXRh ZGF0YTwvY29kZT4NCgkJCQkJCTwvdGQ+DQoJCQkJCQk8dGQ+WzxiaWJyZWYgcmVmPSJXUy1BZGRy ZXNzaW5nTWV0YWRhdGEiLz5dPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRk Pg0KCQkJCQkJCTxjb2RlPndzZGw8L2NvZGU+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRkPg0KCQkJ CQkJCTxjb2RlPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvPC9jb2RlPg0KCQkJCQkJ PC90ZD4NCgkJCQkJCTx0ZD5bPGJpYnJlZiByZWY9IldTREwxMSIvPl08L3RkPg0KCQkJCQk8L3Ry Pg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+DQoJCQkJCQkJPGNvZGU+d3NwPC9jb2RlPg0KCQkJCQkJ PC90ZD4NCgkJCQkJCTx0ZD4NCgkJCQkJCQk8Y29kZT4mbnN1cmk7PC9jb2RlPg0KCQkJCQkJPC90 ZD4NCgkJCQkJCTx0ZD5bPGJpYnJlZiByZWY9IldTLVBvbGljeSIvPiwgPGJpYnJlZiByZWY9IldT LVBvbGljeUF0dGFjaG1lbnQiLz5dPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJ PHRkPg0KCQkJCQkJCTxjb2RlPndzcm1wPC9jb2RlPg0KCQkJCQkJPC90ZD4NCgkJCQkJCTx0ZD4N CgkJCQkJCQk8Y29kZT5odHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93cy1yeC93c3JtcC8yMDA2 MDg8L2NvZGU+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRkPls8YmlicmVmIHJlZj0iV1MtUk0tUG9s aWN5Ii8+XTwvdGQ+DQoJCQkJCTwvdHI+DQoNCgkJCQkJPHRyPg0KCQkJCQkJPHRkPg0KCQkJCQkJ CTxjb2RlPndzczwvY29kZT4NCgkJCQkJCTwvdGQ+DQoJCQkJCQk8dGQ+DQoJCQkJCQkJPGNvZGU+ aHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13 c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkPC9jb2RlPg0KCQkJCQkJPC90ZD4NCgkJCQkJCTx0ZD5b PGJpYnJlZiByZWY9IldTLVNlY3VyaXR5MjAwNCIvPl08L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8 dHI+DQoJCQkJCQk8dGQ+DQoJCQkJCQkJPGNvZGU+d3N1PC9jb2RlPg0KCQkJCQkJPC90ZD4NCgkJ CQkJCTx0ZD4NCgkJCQkJCQk8Y29kZT5odHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAw NC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkPC9jb2RlPg0K CQkJCQkJPC90ZD4NCgkJCQkJCTx0ZD5bPGJpYnJlZiByZWY9IldTLVNlY3VyaXR5MjAwNCIvPl08 L3RkPg0KCQkJCQk8L3RyPg0KCQkJCTwvdGJvZHk+DQoJCQk8L3RhYmxlPg0KCQk8L2RpdjE+DQoJ CTxkaXYxIGlkPSJyZWZlcmVuY2VzIj4NCgkJCTxoZWFkPlJlZmVyZW5jZXM8L2hlYWQ+DQoJCQk8 Ymxpc3Q+DQoJCQkJPGJpYmwga2V5PSJNVE9NIiBpZD0iTVRPTSIgaHJlZj0iaHR0cDovL3d3dy53 My5vcmcvVFIvMjAwNS9SRUMtc29hcDEyLW10b20tMjAwNTAxMjUvIj4NCgkJCQkJPHRpdGxlcmVm PlNPQVAgTWVzc2FnZSBUcmFuc21pc3Npb24gT3B0aW1pemF0aW9uIE1lY2hhbmlzbTwvdGl0bGVy ZWY+LCBNLiBHdWRnaW4sIE4uDQogICAgICAgICAgTWVuZGVsc29obiwgTS4gTm90dGluZ2hhbSBh bmQgSC4gUnVlbGxhbiwgRWRpdG9ycy4gV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgMjUgSmFu dWFyeQ0KICAgICAgICAgIDIwMDUuIFRoaXMgdmVyc2lvbiBvZiB0aGUgU09BUCBNZXNzYWdlIFRy YW5zbWlzc2lvbiBPcHRpbWl6YXRpb24gTWVjaGFuaXNtIFJlY29tbWVuZGF0aW9uDQogICAgICAg ICAgaXMgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNS9SRUMtc29hcDEyLW10b20tMjAwNTAxMjUv LiBUaGUgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9zb2FwMTItbXRvbS8iPmxhdGVz dCB2ZXJzaW9uIG9mIFNPQVAgTWVzc2FnZSBUcmFuc21pc3Npb24NCiAgICAgICAgICAgIE9wdGlt aXphdGlvbiBNZWNoYW5pc208L2xvYz4gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudzMub3Jn L1RSL3NvYXAxMi1tdG9tLy4gPC9iaWJsPg0KCQkJCTxiaWJsIGtleT0iTVRPTVBvbGljeSIgaWQ9 Ik1UT01Qb2xpY3kiDQoJCQkJCQlocmVmPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8y MDA0LzA5L3BvbGljeS9vcHRpbWl6ZWRtaW1lc2VyaWFsaXphdGlvbi9vcHRpbWl6ZWRtaW1lc2Vy aWFsaXphdGlvbi1wb2xpY3kucGRmIj4NCgkJCQkJPHRpdGxlcmVmPk1UT00gU2VyaWFsaXphdGlv biBQb2xpY3kgQXNzZXJ0aW9uIChXUy1NVE9NUG9saWN5KTwvdGl0bGVyZWY+LCANCgkJCQkJQyBG ZXJyaXMsIEsgR2F2cnlseXVrLCBKIE1hcnNoICwgSiBTY2hsaW1tZXIsIEF1dGhvcnMuIFNlcHRl bWJlciAyMDA2LiBWZXJzaW9uIDEuMCBhdCANCgkJCQkJaHR0cDovL3NjaGVtYXMueG1sc29hcC5v cmcvd3MvMjAwNC8wOS9wb2xpY3kvb3B0aW1pemVkbWltZXNlcmlhbGl6YXRpb24vb3B0aW1pemVk bWltZXNlcmlhbGl6YXRpb24tcG9saWN5LnBkZi4NCgkJCQ0KCQkJCTwvYmlibD4NCgkJCQk8Ymli bCBpZD0iU09BUDExIiBrZXk9IlNPQVAgMS4xIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8y MDAwL05PVEUtU09BUC0yMDAwMDUwOC8iPg0KCQkJCQk8dGl0bGVyZWY+U2ltcGxlIE9iamVjdCBB Y2Nlc3MgUHJvdG9jb2wgKFNPQVApIDEuMTwvdGl0bGVyZWY+LCBELiBCb3gsIGV0IGFsLCBFZGl0 b3JzLg0KICAgICAgICAgIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIDggTWF5IDIwMDAuIEF2 YWlsYWJsZSBhdA0KICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvTk9URS1TT0FQ LTIwMDAwNTA4Ly4gPC9iaWJsPg0KCQkJCTxiaWJsIGlkPSJTT0FQMTIiIGtleT0iU09BUCAxLjIg TWVzc2FnaW5nIEZyYW1ld29yayIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9SRUMt c29hcDEyLXBhcnQxLTIwMDMwNjI0LyI+DQoJCQkJCTx0aXRsZXJlZj5TT0FQIFZlcnNpb24gMS4y IFBhcnQgMTogTWVzc2FnaW5nIEZyYW1ld29yazwvdGl0bGVyZWY+LCBNLiBHdWRnaW4sIE0uIEhh ZGxleSwNCiAgICAgICAgICBOLiBNZW5kZWxzb2huLCBKLUouIE1vcmVhdSwgSC4gRnJ5c3R5ayBO aWVsc2VuLCBFZGl0b3JzLiBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAyNA0KICAgICAgICAg IEp1bmUgMjAwMy4gVGhpcyB2ZXJzaW9uIG9mIHRoZSBTT0FQIFZlcnNpb24gMS4yIFBhcnQgMTog TWVzc2FnaW5nIEZyYW1ld29yayBSZWNvbW1lbmRhdGlvbg0KICAgICAgICAgIGlzIGh0dHA6Ly93 d3cudzMub3JnL1RSLzIwMDMvUkVDLXNvYXAxMi1wYXJ0MS0yMDAzMDYyNC8uIFRoZSA8bG9jIGhy ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3NvYXAxMi1wYXJ0MS8iPmxhdGVzdCB2ZXJzaW9uIG9m IFNPQVAgVmVyc2lvbiAxLjIgUGFydCAxOg0KICAgICAgICAgICAgTWVzc2FnaW5nIEZyYW1ld29y azwvbG9jPiBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy53My5vcmcvVFIvc29hcDEyLXBhcnQx Ly4gPC9iaWJsPg0KCQkJCTxiaWJsIGtleT0iWE9QIiBpZD0iWE9QIiBocmVmPSJodHRwOi8vd3d3 LnczLm9yZy9UUi8yMDA1L1JFQy14b3AxMC0yMDA1MDEyNS8iPg0KCQkJCQk8dGl0bGVyZWY+WE1M LWJpbmFyeSBPcHRpbWl6ZWQgUGFja2FnaW5nPC90aXRsZXJlZj4sIE0uIEd1ZGdpbiwgTi4gTWVu ZGVsc29obiwgTS4NCiAgICAgICAgICBOb3R0aW5naGFtIGFuZCBILiBSdWVsbGFuLCBFZGl0b3Jz LiBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAyNSBKYW51YXJ5IDIwMDUuIFRoaXMNCiAgICAg ICAgICB2ZXJzaW9uIG9mIHRoZSBYTUwtYmluYXJ5IE9wdGltaXplZCBQYWNrYWdpbmcgUmVjb21t ZW5kYXRpb24gaXMNCiAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA1L1JFQy14b3Ax MC0yMDA1MDEyNS8uIFRoZSA8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hvcDEwLyI+ bGF0ZXN0IHZlcnNpb24gb2YgWE1MLWJpbmFyeSBPcHRpbWl6ZWQgUGFja2FnaW5nPC9sb2M+IGlz IGF2YWlsYWJsZSBhdA0KICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL3hvcDEwLy4gPC9i aWJsPg0KCQkJCTxiaWJsIGtleT0iV1MtQWRkcmVzc2luZyBDb3JlIiBpZD0iV1MtQWRkcmVzc2lu ZyIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNi9SRUMtd3MtYWRkci1jb3JlLTIwMDYw NTA5LyI+DQoJCQkJCTx0aXRsZXJlZj5XZWIgU2VydmljZXMgQWRkcmVzc2luZyAxLjAgLSBDb3Jl PC90aXRsZXJlZj4sIE0uIEd1ZGdpbiwgTS4gSGFkbGV5LCBhbmQgVC4NCiAgICAgICAgICBSb2dl cnMsIEVkaXRvcnMuIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIDkgTWF5IDIwMDYuIFRoaXMg dmVyc2lvbiBvZiB0aGUgV2ViIFNlcnZpY2VzDQogICAgICAgICAgQWRkcmVzc2luZyAxLjAgLSBD b3JlIFJlY29tbWVuZGF0aW9uIGlzDQogICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAw Ni9SRUMtd3MtYWRkci1jb3JlLTIwMDYwNTA5Ly4gVGhlIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53 My5vcmcvVFIvd3MtYWRkci1jb3JlLyI+bGF0ZXN0IHZlcnNpb24gb2YgV2ViIFNlcnZpY2VzIEFk ZHJlc3NpbmcgMS4wDQogICAgICAgICAgICAtIENvcmU8L2xvYz4gaXMgYXZhaWxhYmxlIGF0IGh0 dHA6Ly93d3cudzMub3JnL1RSL3dzLWFkZHItY29yZS4gPC9iaWJsPg0KICAgICAgICAgICAgPGJp Ymwga2V5PSJXUy1BZGRyZXNzaW5nIE1ldGFkYXRhIiBpZD0iV1MtQWRkcmVzc2luZ01ldGFkYXRh Ig0KICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvV0Qtd3MtYWRkci1t ZXRhZGF0YS0yMDA3MDUxNi8iPg0KICAgICAgICAgIDx0aXRsZXJlZj5XZWIgU2VydmljZXMgQWRk cmVzc2luZyAxLjAgLSBNZXRhZGF0YTwvdGl0bGVyZWY+LCBNLiBHdWRnaW4sIE0uIEhhZGxleSwg VC4NCiAgICAgICAgICBSb2dlcnMgYW5kIMOcLiBZYWzDp2luYWxwLCBFZGl0b3JzLiBXb3JsZCBX aWRlIFdlYiBDb25zb3J0aXVtLCAxNiBNYXkgMjAwNy4gVGhpcyB2ZXJzaW9uIG9mDQogICAgICAg ICAgdGhlIFdlYiBTZXJ2aWNlcyBBZGRyZXNzaW5nIDEuMCAtIE1ldGFkYXRhIGlzDQogICAgICAg ICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9XRC13cy1hZGRyLW1ldGFkYXRhLTIwMDcwNTE2 Ly4gVGhlIDxsb2MNCiAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3dzLWFk ZHItbWV0YWRhdGEiPmxhdGVzdCB2ZXJzaW9uIG9mIFdlYiBTZXJ2aWNlcyBBZGRyZXNzaW5nIDEu MCAtDQogICAgICAgICAgICBNZXRhZGF0YTwvbG9jPiBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3 dy53My5vcmcvVFIvd3MtYWRkci1tZXRhZGF0YS4gPC9iaWJsPg0KICAgICAgICAgICAgDQoJCQkJ PGJpYmwgaWQ9IldTREwxMSIga2V5PSJXU0RMIDEuMSIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv VFIvMjAwMS9OT1RFLXdzZGwtMjAwMTAzMTUiPg0KCQkJCQk8dGl0bGVyZWY+V2ViIFNlcnZpY2Vz IERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSAxLjE8L3RpdGxlcmVmPiwgRS4gQ2hyaXN0ZW5z ZW4sIGV0IGFsLA0KICAgICAgICAgIEF1dGhvcnMuIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0s IE1hcmNoIDIwMDEuIEF2YWlsYWJsZSBhdA0KICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RS LzIwMDEvTk9URS13c2RsLTIwMDEwMzE1LiA8L2JpYmw+DQoNCgkgICAgICAgICAgICAgICAgICAg ICAgICA8YmlibCBrZXk9IldTREwgMi4wIENvcmUgTGFuZ3VhZ2UiIGlkPSJXU0RMMjAiIGhyZWY9 Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDYvQ1Itd3NkbDIwLTIwMDYwMzI3LyI+DQoJICA8dGl0 bGVyZWY+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSBWZXJzaW9uDQoJ ICAyLjAgUGFydCAxOiBDb3JlIExhbmd1YWdlPC90aXRsZXJlZj4sIFIuIENoaW5uaWNpLA0KCSAg Si4gSi4gTW9yZWF1LCBBLiBSeW1hbiwgUy4gV2VlcmF3YXJhbmEsIEVkaXRvcnMuIFdvcmxkIFdp ZGUNCgkgIFdlYiBDb25zb3J0aXVtLCAyNyBNYXJjaCAyMDA2LiBUaGlzIHZlcnNpb24gb2YgdGhl IFdTREwgMi4wDQoJICBzcGVjaWZpY2F0aW9uIGlzDQoJICBodHRwOi8vd3d3LnczLm9yZy9UUi8y MDA2L0NSLXdzZGwyMC0yMDA2MDMyNy4gVGhlIDxsb2MNCgkgIGhyZWY9Imh0dHA6Ly93d3cudzMu b3JnL1RSL3dzZGwyMC8iPmxhdGVzdCB2ZXJzaW9uIG9mIFdTREwNCgkgIDIuMDwvbG9jPiBpcyBh dmFpbGFibGUgYXQgaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbDIwLg0KCSAgPC9iaWJsPg0KDQoJ CQkJPGJpYmwgaWQ9IldTLVBvbGljeSIga2V5PSJXZWIgU2VydmljZXMgUG9saWN5IEZyYW1ld29y ayIgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cudzMu b3JnL1RSL3dzLXBvbGljeS8iPg0KCQkJICAgICAgICA8dGl0bGVyZWY+JmZyYW1ld29yay50aXRs ZTs8L3RpdGxlcmVmPiwgQS4gUy4gVmVkYW11dGh1LCBELiBPcmNoYXJkLCBGLiBIaXJzY2gsIE0u IEhvbmRvLCBQLiBZZW5kbHVyaSwgVC4gQm91YmV6IGFuZCDDnC4gWWFsw6dpbmFscCwgRWRpdG9y cy4gV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgJmRyYWZ0LmRheTssDQogICAgICAgICAgJmRy YWZ0Lm1vbnRoOyAmZHJhZnQueWVhcjsuIFRoaXMgdmVyc2lvbiBvZiB0aGUgDQogICAgICAgICAg JmZyYW1ld29yay50aXRsZTsgc3BlY2lmaWNhdGlvbiBpcyBhdCBodHRwOi8vd3d3LnczLm9yZy9U Ui93cy1wb2xpY3kvLiANCiAgICAgICAgICBUaGUgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9y Zy9UUi93cy1wb2xpY3kvIj5sYXRlc3QgdmVyc2lvbiBvZg0KICAgICAgICAgICZmcmFtZXdvcmsu dGl0bGU7PC9sb2M+IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi93cy1wb2xp Y3kvLiA8L2JpYmw+DQoJCQkJPGJpYmwgaWQ9IldTLVBvbGljeUF0dGFjaG1lbnQiIGtleT0iV2Vi IFNlcnZpY2VzIFBvbGljeSBBdHRhY2htZW50IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93 cy1wb2xpY3ktYXR0YWNoLyI+DQoJCQkJCTx0aXRsZXJlZj4mYXR0YWNobWVudC50aXRsZTs8L3Rp dGxlcmVmPiwgQS4gUy4gVmVkYW11dGh1LCBELiBPcmNoYXJkLCBGLiBIaXJzY2gsIE0uIEhvbmRv LCAgDQoJCQkJCVAuIFllbmRsdXJpLCBULiBCb3ViZXogYW5kIMOcLiBZYWzDp2luYWxwLCBFZGl0 b3JzLiBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAmZHJhZnQuZGF5OywNCiAgICAgICAgICAm ZHJhZnQubW9udGg7ICZkcmFmdC55ZWFyOy4gVGhpcyB2ZXJzaW9uIG9mIHRoZSANCiAgICAgICAg ICAmYXR0YWNobWVudC50aXRsZTsgc3BlY2lmaWNhdGlvbiBpcyBhdCBodHRwOi8vd3d3LnczLm9y Zy9UUi93cy1wb2xpY3ktYXR0YWNoLiBUaGUgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U Ui93cy1wb2xpY3ktYXR0YWNoLyI+bGF0ZXN0IHZlcnNpb24gb2YNCiAgICAgICAgICAgICZhdHRh Y2htZW50LnRpdGxlOzwvbG9jPiBpcyBhdmFpbGFibGUgYXQNCiAgICAgICAgICBodHRwOi8vd3d3 LnczLm9yZy9UUi93cy1wb2xpY3ktYXR0YWNoLy4gPC9iaWJsPg0KCQkJCTxiaWJsIGlkPSJXUy1Q b2xpY3ktUHJpbWVyIiBrZXk9IldlYiBTZXJ2aWNlcyBQb2xpY3kgUHJpbWVyIiBocmVmPSJodHRw Oi8vZGV2LnczLm9yZy9jdnN3ZWIvfmNoZWNrb3V0fi8yMDA2L3dzL3BvbGljeS93cy1wb2xpY3kt cHJpbWVyLmh0bWw/Y29udGVudC10eXBlPXRleHQvaHRtbDslMjBjaGFyc2V0PXV0Zi04Ij4NCgkJ CQkJPHRpdGxlcmVmPiZwcmltZXIudGl0bGU7PC90aXRsZXJlZj4sIEEuIFMuIFZlZGFtdXRodSwg RC4gT3JjaGFyZCwgRi4gSGlyc2NoLCBNLiBIb25kbywgIA0KCQkJCQlQLiBZZW5kbHVyaSwgVC4g Qm91YmV6IGFuZCDDnC4gWWFsw6dpbmFscCwgRWRpdG9ycy4gV29ybGQgV2lkZSBXZWIgQ29uc29y dGl1bSwgRHJhZnQuIDwvYmlibD4NCgkJCQk8YmlibCBpZD0iV1MtUk0iIGtleT0iV2ViIFNlcnZp Y2VzIFJlbGlhYmxlIE1lc3NhZ2luZyIgaHJlZj0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcv d3Mtcngvd3NybS8yMDA2MDgvd3NybS0xLjEtcmRkbC0yMDA2MDguaHRtbCI+DQoJCQkJCTx0aXRs ZXJlZj5XZWIgU2VydmljZXMgUmVsaWFibGUgTWVzc2FnaW5nIChXUy1SZWxpYWJsZU1lc3NhZ2lu Zyk8L3RpdGxlcmVmPiwgRC4gRGF2aXMsIEEuIEthcm1hcmthcg0KCQkJCQlHLiBQaWx6LCBTLiBX aW5rbGVyLCDDnC4gWWFsw6dpbmFscCwgRWRpdG9ycy4gT3JnYW5pemF0aW9uIGZvciB0aGUgQWR2 YW5jZW1lbnQgb2YNCgkJCQkJU3RydWN0dXJlZCBJbmZvcm1hdGlvbiBTdGFuZGFyZHMsIEF1Z3Vz dCA3dGgsIDIwMDYsIGF2YWlsYWJsZSBhdDoNCiAgICAgICAgICBodHRwOi8vZG9jcy5vYXNpcy1v cGVuLm9yZy93cy1yeC93c3JtLzIwMDYwOC93c3JtLTEuMS1yZGRsLTIwMDYwOC5odG1sDQogICAg ICAgICAgPC9iaWJsPg0KCQkJCTxiaWJsIGlkPSJXUy1STS1Qb2xpY3kiIGtleT0iV2ViIFNlcnZp Y2VzIFJlbGlhYmxlIE1lc3NhZ2luZyBQb2xpY3kiIGhyZWY9Imh0dHA6Ly9kb2NzLm9hc2lzLW9w ZW4ub3JnL3dzLXJ4L3dzcm1wLzIwMDYwOC93c3JtcC0xLjEtcmRkbC0yMDA2MDguaHRtbCI+DQoJ CQkJCTx0aXRsZXJlZj5XZWIgU2VydmljZXMgUmVsaWFibGUgTWVzc2FnaW5nIFBvbGljeSBBc3Nl cnRpb24gdjEuMTwvdGl0bGVyZWY+LCBELiBEYXZpcywgDQoJCQkJCUEuIEthcm1hcmthciwgRy4g UGlseiwgUy4gV2lua2xlciwgw5wuIFlhbMOnaW5hbHAsIEVkaXRvcnMuIE9yZ2FuaXphdGlvbiBm b3IgdGhlIEFkdmFuY2VtZW50IG9mDQoJCQkJCVN0cnVjdHVyZWQgSW5mb3JtYXRpb24gU3RhbmRh cmRzLCBBdWd1c3QgNCwgMjAwNiwgYXZhaWxhYmxlIGF0Og0KICAgICAgICAgIGh0dHA6Ly9kb2Nz Lm9hc2lzLW9wZW4ub3JnL3dzLXJ4L3dzcm1wLzIwMDYwOC93c3JtcC0xLjEtcmRkbC0yMDA2MDgu aHRtbA0KICAgICAgICAgIDwvYmlibD4NCgkJCQk8YmlibCBpZD0iV1MtU2VjdXJpdHkyMDA0IiBr ZXk9IldTLVNlY3VyaXR5IDIwMDQiIGhyZWY9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dz cy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtc29hcC1tZXNzYWdlLXNlY3VyaXR5LTEuMC5wZGYi Pg0KCQkJCQk8dGl0bGVyZWY+V2ViIFNlcnZpY2VzIFNlY3VyaXR5OiBTT0FQIE1lc3NhZ2UgU2Vj dXJpdHkNCiAgICAgICAgICAxLjA8L3RpdGxlcmVmPiwgQS4gTmFkYWxpbiwgQy4gIEthbGVyLCBQ LiBIYWxsYW0tQmFrZXIgYW5kDQogICAgICAgICAgUi4gTW9uemlsbG8sIEVkaXRvcnMuIE9yZ2Fu aXphdGlvbiBmb3IgdGhlIEFkdmFuY2VtZW50IG9mDQogICAgICAgICAgU3RydWN0dXJlZCBJbmZv cm1hdGlvbiBTdGFuZGFyZHMsIE1hcmNoIDIwMDQuIEF2YWlsYWJsZSBhdA0KICAgICAgICAgIGh0 dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtc29h cC1tZXNzYWdlLXNlY3VyaXR5LTEuMC5wZGYuIDwvYmlibD4NCgkJCQk8YmlibCBpZD0iV1MtU2Vj dXJpdHlQb2xpY3kiIGtleT0iV1MtU2VjdXJpdHlQb2xpY3kiIGhyZWY9Imh0dHA6Ly9kb2NzLm9h c2lzLW9wZW4ub3JnL3dzLXN4L3dzLXNlY3VyaXR5cG9saWN5LzIwMDcwMiI+DQoJCQkJCTx0aXRs ZXJlZj5XUy1TZWN1cml0eVBvbGljeSB2MS4wPC90aXRsZXJlZj4sIEEuIE5hZGFsaW4sDQogICAg ICAgICAgTS4gR3VkZ2luLCBBLiBCYXJiaXIsIGFuZCBILiAgR3JhbnF2aXN0LA0KICAgICAgICAg IEVkaXRvcnMuIE9yZ2FuaXphdGlvbiBmb3IgdGhlIEFkdmFuY2VtZW50IG9mIFN0cnVjdHVyZWQN CiAgICAgICAgICBJbmZvcm1hdGlvbiBTdGFuZGFyZHMsIDggRGVjZW1iZXIgMjAwNS4gQXZhaWxh YmxlIGF0DQoJCQkJCWh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzLXN4L3dzLXNlY3VyaXR5 cG9saWN5LzIwMDcwMi4gPC9iaWJsPg0KCQkJCTxiaWJsIGlkPSJXUy1UcnVzdCIga2V5PSJXUy1U cnVzdCIgaHJlZj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wMi90cnVzdCI+ DQoJCQkJCTx0aXRsZXJlZj5XZWIgU2VydmljZXMgVHJ1c3QgTGFuZ3VhZ2UgKFdTLVRydXN0KTwv dGl0bGVyZWY+LA0KICAgICAgICAgIFMuIEFuZGVyc29uLCBldCBhbCwgQXV0aG9ycy4gIEFjdGlv bmFsIENvcnBvcmF0aW9uLCBCRUENCiAgICAgICAgICBTeXN0ZW1zLCBJbmMuLCBDb21wdXRlciBB c3NvY2lhdGVzIEludGVybmF0aW9uYWwsIEluYy4sDQogICAgICAgICAgSW50ZXJuYXRpb25hbCBC dXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiwgTGF5ZXIgNw0KICAgICAgICAgIFRlY2hub2xv Z2llcywgTWljcm9zb2Z0IENvcnBvcmF0aW9uLCBPYmxpeCBJbmMuLCBPcGVuTmV0d29yaw0KICAg ICAgICAgIFRlY2hub2xvZ2llcyBJbmMuLCBQaW5nIElkZW50aXR5IENvcnBvcmF0aW9uLCBSZWFj dGl2aXR5DQogICAgICAgICAgSW5jLiwgUlNBIFNlY3VyaXR5IEluYy4sIGFuZCBWZXJpU2lnbiBJ bmMuLCBGZWJydWFyeQ0KICAgICAgICAgIDIwMDUuIEF2YWlsYWJsZSBhdA0KICAgICAgICAgIGh0 dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDIvdHJ1c3QuIDwvYmlibD4NCiAgICAg IDxiaWJsIGlkPSJVRERJQVBJMjAiIGtleT0iVURESSBBUEkgMi4wIiBocmVmPSJodHRwOi8vdWRk aS5vcmcvcHVicy9Qcm9ncmFtbWVyc0FQSS1WMi4wNC1QdWJsaXNoZWQtMjAwMjA3MTkuaHRtIj4N Cgk8dGl0bGVyZWY+VURESSBWZXJzaW9uIDIuMDQgQVBJPC90aXRsZXJlZj4sIFQuIEJlbGx3b29k LA0KCUVkaXRvci4gIE9yZ2FuaXphdGlvbiBmb3IgdGhlIEFkdmFuY2VtZW50IG9mIFN0cnVjdHVy ZWQNCglJbmZvcm1hdGlvbiBTdGFuZGFyZHMsIDE5IEp1bHkgMjAwMi4gVGhpcyB2ZXJzaW9uIG9m IFVEREkNCglWZXJzaW9uIDIuMCBBUEkgaXMNCglodHRwOi8vdWRkaS5vcmcvcHVicy9Qcm9ncmFt bWVyc0FQSS1WMi4wNC1QdWJsaXNoZWQtMjAwMjA3MTkuaHRtLiBUaGUNCgk8bG9jIGhyZWY9J2h0 dHA6Ly91ZGRpLm9yZy9wdWJzL1Byb2dyYW1tZXJzQVBJX3YyLmh0bSc+bGF0ZXN0DQoJdmVyc2lv biBvZiB0aGUgVURESSAyLjAgQVBJPC9sb2M+IGlzIGF2YWlsYWJsZSBhdA0KCWh0dHA6Ly91ZGRp Lm9yZy9wdWJzL1Byb2dyYW1tZXJzQVBJX3YyLmh0bS4NCiAgICAgIDwvYmlibD4NCiAgICAgIDxi aWJsIGlkPSJVRERJRGF0YVN0cnVjdHVyZTIwIiBrZXk9IlVEREkgRGF0YSBTdHJ1Y3R1cmUgMi4w IiBocmVmPSJodHRwOi8vdWRkaS5vcmcvcHVicy9EYXRhU3RydWN0dXJlLVYyLjAzLVB1Ymxpc2hl ZC0yMDAyMDcxOS5odG0iPg0KCTx0aXRsZXJlZj5VRERJIFZlcnNpb24gMi4wMyBEYXRhIFN0cnVj dHVyZQ0KCVJlZmVyZW5jZTwvdGl0bGVyZWY+LCBDLiB2b24gUmllZ2VuLCBFZGl0b3IuIE9yZ2Fu aXphdGlvbiBmb3INCgl0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbiBT dGFuZGFyZHMsIDE5IEp1bHkNCgkyMDAyLiBUaGlzIHZlcnNpb24gb2YgVURESSBWZXJzaW9uIDIu MCBEYXRhIFN0cnVjdHVyZXMgaXMNCglodHRwOi8vdWRkaS5vcmcvcHVicy9EYXRhU3RydWN0dXJl LVYyLjAzLVB1Ymxpc2hlZC0yMDAyMDcxOS5odG0uIFRoZQ0KCTxsb2MgaHJlZj0naHR0cDovL3Vk ZGkub3JnL3B1YnMvRGF0YVN0cnVjdHVyZV92Mi5odG0nPmxhdGVzdA0KCXZlcnNpb24gb2YgdGhl IFVEREkgMi4wIERhdGEgU3RydWN0dXJlczwvbG9jPiBpcyBhdmFpbGFibGUgYXQNCglodHRwOi8v dWRkaS5vcmcvcHVicy9EYXRhU3RydWN0dXJlX3YyLmh0bS4NCiAgICAgIDwvYmlibD4NCgk8Ymli bCBpZD0iVURESTMwIiBrZXk9IlVEREkgMy4wIiBocmVmPSJodHRwOi8vdWRkaS5vcmcvcHVicy91 ZGRpLXYzLjAuMS0yMDAzMTAxNC5odG0iPg0KCSAgPHRpdGxlcmVmPlVEREkgVmVyc2lvbiAzLjAu MTwvdGl0bGVyZWY+LCBMLiBDbCYjMjMzO21lbnQsIGV0DQoJICBhbCwgRWRpdG9ycy4gT3JnYW5p emF0aW9uIGZvciB0aGUgQWR2YW5jZW1lbnQgb2YgU3RydWN0dXJlZCBJbmZvcm1hdGlvbiBTdGFu ZGFyZHMsIDE0IE9jdG9iZXIgMjAwMy4gVGhpcyB2ZXJzaW9uIG9mIHRoZQ0KCSAgVURESSBWZXJz aW9uIDMuMCBpcw0KCSAgaHR0cDovL3VkZGkub3JnL3B1YnMvdWRkaS12My4wLjEtMjAwMzEwMTQu aHRtLiBUaGUgPGxvYw0KCSAgaHJlZj0naHR0cDovL3VkZGkub3JnL3B1YnMvdWRkaV92My5odG0n PmxhdGVzdCB2ZXJzaW9uIG9mDQoJICB0aGUgVURESSAzLjA8L2xvYz4gc3BlY2lmaWNhdGlvbiBp cyBhdmFpbGFibGUgYXQNCgkgIGh0dHA6Ly91ZGRpLm9yZy9wdWJzL3VkZGlfdjMuaHRtLg0KCTwv YmlibD4NCiAgICAgICAgPGJpYmwgaWQ9IlNBV1NETCIga2V5PSJTQVdTREwiDQogICAgICAgICAg aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvc2F3c2RsLyI+DQogICAgICAgICAgPHRpdGxlcmVm PlNlbWFudGljIEFubm90YXRpb25zIGZvciBXU0RMIGFuZCBYTUwgU2NoZW1hPC90aXRsZXJlZj4g Sm9lbCBGYXJyZWxsLCBIb2xnZXIgICAgICAgICAgTGF1c2VuLCBFZGl0b3JzLiBXb3JsZCBXaWRl IFdlYiBDb25zb3J0aXVtLCAyNiBKYW51YXJ5IDIwMDcuIFRoaXMgdmVyc2lvbiBvZiB0aGUNCiAg ICAgICAgICBzcGVjaWZpY2F0aW9uIGlzIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL3Nhd3NkbC4g VGhlIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvc2F3c2RsLyI+IGxhdGVzdCB2ZXJz aW9uIG9mIFNlbWFudGljIEFubm90YXRpb25zIGZvciBXU0RMIGFuZCBYTUwgU2NoZW1hPC9sb2M+ IGlzIGF2YWlsYWJsZSBhdA0KICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL3Nhd3NkbC8u PC9iaWJsPg0KCQkJPC9ibGlzdD4NCgkJPC9kaXYxPiZhY2tub3dsZWRnZW1lbnRzOyA8aW5mb3Jt LWRpdjEgaWQ9ImNoYW5nZS1kZXNjcmlwdGlvbiI+DQoJCQk8aGVhZD5DaGFuZ2VzIGluIHRoaXMg VmVyc2lvbiBvZiB0aGUgRG9jdW1lbnQ8L2hlYWQ+DQoJCQk8cD5BIGxpc3Qgb2Ygc3Vic3RhbnRp dmUgY2hhbmdlcyBzaW5jZSB0aGUgV29ya2luZyBEcmFmdCBkYXRlZCAzMCBNYXJjaCwgDQoJCQky MDA3IGlzIGJlbG93OjwvcD4NCgkJCTx1bGlzdD4NCgkJCQk8aXRlbT4NCgkJCQkgICA8cD5SZWZv cm1hdHRlZCB0aGUgZG9jdW1lbnQgdG8gZm9sbG93IHRoZSBtb2RlbCBvZiB0aGUNCgkJCQkgICAJ PGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93ZWJhcmNoLyN1cmktYmVuZWZpdHMiPldX VyBBcmNoaXRlY3R1cmUgRG9jdW1lbnQuPC9sb2M+DQoJCQkJCTwvcD4NCgkJCQk8L2l0ZW0+DQoJ CQkJPGl0ZW0+DQoJCQkJCTxwPkNyZWF0ZWQgYSBjb25zb2xpZGF0ZWQgbGlzdCBvZiBCZXN0IFBy YWN0aWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudCANCgkJCQkJKDxzcGVjcmVm IHJlZj0iYmVzdC1wcmFjdGljZXMtbGlzdCIvPikuDQoJCQkJCTwvcD4NCgkJCQk8L2l0ZW0+DQoJ CQkJPGl0ZW0+DQoJCQkJCTxwPkluY29ycG9yYXRlZCB0aGUgQmVzdCBQcmFjdGljZXMgZnJvbSAN CgkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVi bGljLXdzLXBvbGljeS8yMDA3TWFyL2F0dC0wMDY5L2dvb2QtcHJhY3RpY2VzLTQtYXNzZXJ0aW9u LWF1dGhvcnMtMDMtMDUtMjAwNy5wZGYiPklCTS9NaWNyb3NvZnQgQ29udGlidXRpb24uPC9sb2M+ DQoJCQkJCTwvcD4NCgkJCQk8L2l0ZW0+DQoJCQkJPGl0ZW0+PHA+TWFkZSBlZGl0b3JpYWwgY2hh bmdlcyB0byBhbGlnbiB3aXRoIHRoZSBPQVNJUyBXUy1TZWN1cml0eVBvbGljeSBzcGVjaWZpY2F0 aW9uLjwvcD48L2l0ZW0+DQoJCQkJPGl0ZW0+PHA+TWFkZSBlZGl0b3JpYWwgY2hhbmdlcyB0byBh bGlnbiB3aXRoIHRoZSBXM0MgV1MtQWRkcmVzc2luZyAxLjAgTWV0YWRhdGEgc3BlY2lmaWNhdGlv bi48L3A+PC9pdGVtPg0KCQkJPC91bGlzdD4NCgkJPC9pbmZvcm0tZGl2MT4NCgkJPGluZm9ybS1k aXYxIGlkPSJjaGFuZ2UtbG9nIj4NCgkJCTxoZWFkPiZndWlkZWxpbmVzLnRpdGxlOyBDaGFuZ2Ug TG9nPC9oZWFkPg0KCQkJPHRhYmxlIGlkPSJ3cy1wb2xpY3ktcHJpbWVyLWNoYW5nZWxvZy10YWJs ZSIgYm9yZGVyPSIxIj4NCgkJCQk8dGJvZHk+DQoJCQkJCTx0cj4NCgkJCQkJCTx0aCByb3dzcGFu PSIxIiBjb2xzcGFuPSIxIj5EYXRlPC90aD4NCgkJCQkJCTx0aCByb3dzcGFuPSIxIiBjb2xzcGFu PSIxIj5BdXRob3I8L3RoPg0KCQkJCQkJPHRoIHJvd3NwYW49IjEiIGNvbHNwYW49IjEiPkRlc2Ny aXB0aW9uPC90aD4NCgkJCQkJPC90cj4NCgkJCQkJPCEtLSB0ZW1wbGF0ZQ0KICAgICAgICAgIDx0 cj4NCiAgICAgICAgICA8dGQ+MjAwNTA1PC90ZD4NCiAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAg ICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICA8L3RyPg0KICAgICAgICAtLT4NCgkJCQkJPHRyPg0K CQkJCQkJPHRkPjIwMDYwODI5PC90ZD4NCgkJCQkJCTx0ZD5VWTwvdGQ+DQoJCQkJCQk8dGQ+Q3Jl YXRlZCBmaXJzdCBkcmFmdCBiYXNlZCBvbiBhZ3JlZWQgb3V0bGluZSBhbmQgY29udGVudDwvdGQ+ DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA2MTAxMzwvdGQ+DQoJCQkJCQk8 dGQ+VVk8L3RkPg0KCQkJCQkJPHRkPkVkaXRvcmlhbCBmaXhlcyAoc3VnZ2VzdGVkIGJ5IEZyZWRl cmljayksIGZpeGVkIHJlZmVyZW5jZXMsIGJpYmwgaXRlbXMsIGZpeGVkIGRhbmdsaW5nIHBvaW50 ZXJzLCBjcmVhdGVkIGVkcyB0byBkbzwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJ CTx0ZD4yMDA2MTAxODwvdGQ+DQoJCQkJCQk8dGQ+TUg8L3RkPg0KCQkJCQkJPHRkPkVkaXRvcmlh bCBmaXhlcyBmb3IgcmVhZGFiaWxpdHksIGFkZGVkIGV4YW1wbGUgZm9yIEVuY3J5cHRlZCBwYXJ0 czwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA2MTAzMDwvdGQ+DQoJ CQkJCQk8dGQ+VVk8L3RkPg0KCQkJCQkJPHRkPkZpeGVzIGZvciBQYXVsIENvdHRvbidzIGVkaXRv cmlhbCBjb21tZW50cyAoMjAwNjEwMjApPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJ CQkJPHRkPjIwMDYxMDMxPC90ZD4NCgkJCQkJCTx0ZD5VWTwvdGQ+DQoJCQkJCQk8dGQ+Rml4ZXMg Zm9yIEZyZWRlcmljaydzIGVkaXRvcmlhbCBjb21tZW50cyAoMjAwNjEwMjUpPC90ZD4NCgkJCQkJ PC90cj4NCjx0cj4NCgkJCQkJCTx0ZD4yMDA2MTAzMTwvdGQ+DQoJCQkJCQk8dGQ+VVk8L3RkPg0K CQkJCQkJPHRkPk9wdGlvbmFsaXR5IGRpc2N1c3Npb24gZmVlZGJhY2sgaW50ZWdyYXRpb248L3Rk Pg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNjExMTU8L3RkPg0KCQkJCQkJ PHRkPk1IPC90ZD4NCgkJCQkJCTx0ZD5GaXJzdCBhdHRlbXB0IGF0IHJlc3RydWN0dXJpbmcgdG8g aW5jbHVkZSBwcmltZXIgY29udGVudDwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJ CTx0ZD4yMDA2MTEyMDwvdGQ+DQoJCQkJCQk8dGQ+TUg8L3RkPg0KCQkJCQkJPHRkPlJlc3RydWN0 dXJlIHRvIGFkZHJlc3MgYWN0aW9uIGl0ZW1zIDY0LDc3LCB3aGljaCByZWZlciB0byBidWd6aWxs YSAzNzA1IGFuZCBGMkYgUkVTT0xVVElPTiAzNzkyIDwvdGQ+IA0KCQkJCQk8L3RyPg0KCQkJCQk8 dHI+DQoJCQkJCQk8dGQ+MjAwNjExMjc8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJCQk8 dGQ+VXBkYXRlZCB0aGUgbGlzdCBvZiBlZGl0b3JzLiBBZGRlZCANCgkJCQkJCQk8bG9jIGhyZWY9 Imh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13cy1wb2xpY3ktZWRz LzIwMDZOb3YvMDAzMy5odG1sIj5GcmVkZXJpY2s8L2xvYz4gYW5kIA0KCQkJCQkJCTxsb2MgaHJl Zj0iaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS1l ZHMvMjAwNk5vdi8wMDU0Lmh0bWwiPlVtaXQ8L2xvYz4gdG8gdGhlIGxpc3Qgb2YgZWRpdG9ycy4N CgkJCQkJCQlFZGl0b3JzJyBhY3Rpb24gPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1 LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy84NiI+ODY8L2xvYz4uDQoJCQkJCQk8L3Rk Pg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCTx0ZD4yMDA2MTEyODwvdGQ+DQoJCQkJCQk8 dGQ+TUg8L3RkPg0KCQkJCQkJPHRkPlJlcGxhY2VkIHNlY3Rpb24gaW4gTGlmZWN5Y2xlIHdpdGgg cG9pbnRlciB0byB0aGUgdGV4dCBpbiB0aGUgcHJpbWVyOiByZWxhdGVkIHRvIGFjdGlvbiA3NyAN CgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+CQ0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNjExMjk8 L3RkPg0KCQkJCQkJPHRkPkZKSDwvdGQ+DQoJCQkJCQk8dGQ+RWRpdG9yaWFsIHJldmlzaW9uIChl ZGl0b3JpYWwgYWN0aW9ucyANCgkJCQkJICAgIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv MjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvODQiPjg0PC9sb2M+IGFuZCANCgkJ CQkJICAgIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9s aWN5ZWRzL2FjdGlvbnMvOTAiPjkwPC9sb2M+KSAtIA0KCQkJCQkgICAgaW5jbHVkZXMgc3VnZ2Vz dGlvbnMgZnJvbSBBc2lyOiANCgkJCQkJICAgIDxsb2MgaHJlZj0iaHR0cDovL2xpc3RzLnczLm9y Zy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS1lZHMvMjAwNk5vdi8wMTI5Lmh0bWwi PlBhcnQgMTwvbG9jPiBhbmQgDQoJCQkJCSAgICA8bG9jIGhyZWY9Imh0dHA6Ly9saXN0cy53My5v cmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13cy1wb2xpY3ktZWRzLzIwMDZOb3YvMDEzNC5odG1s Ij5QYXJ0IDI8L2xvYz4uIA0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJ CQkJPHRkPjIwMDYxMTI5PC90ZD4NCgkJCQkJCTx0ZD5BU1Y8L3RkPg0KCQkJCQkJPHRkPkZvcm1h dHRlZCBleGFtcGxlcyBpbiA8c3BlY3JlZiByZWY9ImV4dGVuZGluZy1hc3NlcnRpb25zIi8+LiAN CgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJPHRyPg0KCQkJCQkJPHRkPjIwMDYxMjE4PC90ZD4N CgkJCQkJCTx0ZD5GUzwvdGQ+DQoJCQkJCQk8dGQ+Rm9ybWF0dGVkIGV4YW1wbGVzIGluIDxzcGVj cmVmIHJlZj0iY29tcGFjdC1mdWxsIi8+IGFuZCA8c3BlY3JlZiByZWY9InNjZW5hcmlvIi8+LiAN CgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+CQkJCQkJCQkJDQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4y MDA2MTIxOTwvdGQ+DQoJCQkJCQk8dGQ+VElCPC90ZD4NCgkJCQkJCTx0ZD5FZGl0b3JpYWwgcmV2 aXNpb246IG1vc3QgcGFydHMgb2YgZWRpdG9yaWFsIGFjdGlvbg0KCQkJCQkJCTxsb2MgaHJlZj0i aHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvOTYi Pjk2PC9sb2M+Lg0KCQkJCQkJCVJlbWFpbmluZyBlZGl0b3JpYWxzIHRvIGJlIHJldmlld2VkLg0K CQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDYxMjIwPC90 ZD4NCgkJCQkJCTx0ZD5USUI8L3RkPg0KCQkJCQkJPHRkPkVkaXRvcmlhbCByZXZpc2lvbjogY29t cGxldGVkIG1pc3NpbmcgcGFydHMgb2YgZWRpdG9yaWFsIGFjdGlvbg0KCQkJCQkJCTxsb2MgaHJl Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMv OTYiPjk2PC9sb2M+DQoJCQkJCQkJYWZ0ZXIgZWRpdG9yaWFsIHJldmlld3MgYnkgY28tZWRpdG9y cy4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNjEy MjY8L3RkPg0KCQkJCQkJPHRkPk1IPC90ZD4NCgkJCQkJCTx0ZD5FZGl0b3JpYWwgcmV2aXNpb246 IHJlY29uY2lsZWQgdGVybXMgcmVsYXRlZCB0byAiQXNzZXJ0aW9uIEF1dGhvcnMiDQoJCQkJCQkJ PGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMv YWN0aW9ucy8xMDYiPjEwNjwvbG9jPg0KCQkJCQkJCWFuZCBidWcgaHR0cDovL3d3dy53My5vcmcv QnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTM5ODMNCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+ DQoNCgkJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDEwNDwvdGQ+DQoJCQkJCQk8dGQ+VVk8L3Rk Pg0KCQkJCQkJPHRkPlJlc29sdXRpb24gb2YgSXNzdWUgPGxvYyBocmVmPSJodHRwOi8vd3d3Lncz Lm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4MiI+Mzk4MjwvbG9jPg0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VkIG9uIDxs b2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNi8xMi8wNi13cy1wb2xpY3ktaXJjI1QxOC01 NS0wMCI+TWludXRlcyBmb3IgcmVzb2x1dGlvbjwvbG9jPiwgTWlub3IgZm9ybWF0dGluZyBmb3Ig Y29uc2lzdGVudCB1c2Ugb2YgdGhlIHRlcm0gIkFzc2VydGlvbiBBdXRob3IiDQoJCQkJCQk8L3Rk Pg0KCQkJCQk8L3RyPg0KPHRyPg0KCQkJCQkJPHRkPjIwMDcwMTA0PC90ZD4NCgkJCQkJCTx0ZD5V WTwvdGQ+DQoJCQkJCQk8dGQ+UmVzb2x1dGlvbiBvZiBJc3N1ZSA8bG9jIGhyZWY9Imh0dHA6Ly93 d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0zOTgwIj4zOTgwPC9sb2M+DQoJ CQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzAxMDg8L3Rk Pg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJCQk8dGQ+UmVzZXQgU2VjdGlvbiA8c3BlY3JlZiBy ZWY9ImNoYW5nZS1kZXNjcmlwdGlvbiIvPi4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJ CTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDEyMjwvdGQ+DQoJCQkJCQk8dGQ+UFk8L3RkPg0KCQkJCQkJ PHRkPkNvbXBsZXRlZCBhY3Rpb24gaXRlbToNCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzEyNyI+MTI3PC9sb2M+ DQoJCQkJCQkJUmVzb2x1dGlvbiBmb3IgaXNzdWUgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9y Zy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NDE5NyI+NDE5NzwvbG9jPjwvdGQ+DQoJCQkJ CTwvdHI+IA0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzAxMzA8L3RkPg0KCQkJCQkJPHRkPlVZ PC90ZD4NCgkJCQkJCTx0ZD5Db21wbGV0ZWQgYWN0aW9uIGl0ZW06DQoJCQkJCQkJPGxvYyBocmVm PSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8x NDQiPjE0NDwvbG9jPi4NCgkJCQkJCQlSZXNvbHV0aW9uIGZvciBpc3N1ZXMgPGxvYyBocmVmPSJo dHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4NSI+Mzk4NTwv bG9jPiBhbmQgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1 Zy5jZ2k/aWQ9Mzk4NiI+Mzk4NjwvbG9jPjwvdGQ+DQoJCQkJCTwvdHI+IA0KCQkJCQk8dHI+DQoJ CQkJCQk8dGQ+MjAwNzAxMzA8L3RkPg0KCQkJCQkJPHRkPlVZPC90ZD4NCgkJCQkJCTx0ZD5Db21w bGV0ZWQgYWN0aW9uIGl0ZW06DQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8y MDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8xMzciPjEzNzwvbG9jPi4NCgkJCQkJ CQlSZXNvbHV0aW9uIGZvciBpc3N1ZSA8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0J1Z3Mv UHVibGljL3Nob3dfYnVnLmNnaT9pZD00MTk4Ij40MTk4PC9sb2M+PC90ZD4NCgkJCQkJPC90cj4g DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDEzMDwvdGQ+DQoJCQkJCQk8dGQ+VVk8L3RkPg0K CQkJCQkJPHRkPkNvbXBsZXRlZCBhY3Rpb24gaXRlbToNCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6 Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzExOSI+MTE5 PC9sb2M+Lg0KCQkJCQkJCVJlc29sdXRpb24gZm9yIGlzc3VlIDxsb2MgaHJlZj0iaHR0cDovL3d3 dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTQxNDEiPjQxNDE8L2xvYz48L3Rk Pg0KCQkJCQk8L3RyPiANCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwMTMwPC90ZD4NCgkJCQkJ CTx0ZD5VWTwvdGQ+DQoJCQkJCQk8dGQ+Q29tcGxldGVkIGFjdGlvbiBpdGVtOg0KCQkJCQkJCTxs b2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2Fj dGlvbnMvMTI2Ij4xMjY8L2xvYz4uDQoJCQkJCQkJUmVzb2x1dGlvbiBmb3IgaXNzdWUgPGxvYyBo cmVmPSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NDE4OCI+ NDE4ODwvbG9jPjwvdGQ+DQoJCQkJCTwvdHI+IA0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzAx MzA8L3RkPg0KCQkJCQkJPHRkPlVZPC90ZD4NCgkJCQkJCTx0ZD5GaXhlZCBTQVdTREwgcmVmIG5h bWU8L3RkPg0KCQkJCQk8L3RyPiANCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwMTMxPC90ZD4N CgkJCQkJCTx0ZD5GSkg8L3RkPg0KCQkJCQkJPHRkPkZpeGVkIG51bWVyb3VzIHNwZWxsaW5nIGFu ZCB0eXBvIGVycm9ycy4gSW1wbGVtZW50IHJlc29sdXRpb24gZm9yIGlzc3VlIA0KCQkJCQkJCTxs b2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTM5 NTMiPjM5NTM8L2xvYz4NCgkJCQkJCQlhcyBub3RlZCBpbiBtZXNzYWdlIA0KCQkJCQkJCTxsb2Mg aHJlZj0iaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGlj eS8yMDA2RGVjLzAwOTAuaHRtbCI+OTA8L2xvYz4gYW5kIGFtZW5kZWQgDQoJCQkJCQkJYXMgbm90 ZWQgaW4gbWVzc2FnZQ0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo aXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS8yMDA3SmFuLzAyMTcuaHRtbCI+MjE3PC9sb2M+ LiANCgkJCQkJCQlDaGFuZ2VzIGNvcnJlc3BvbmQgdG8gZWRpdG9yJ3MgYWN0aW9uDQoJCQkJCQkJ PGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMv YWN0aW9ucy8xNTIiPjE1MjwvbG9jPi48L3RkPg0KCQkJCQk8L3RyPiANCgkJCQkJPHRyPg0KCQkJ CQkJPHRkPjIwMDcwMjIxPC90ZD4NCgkJCQkJCTx0ZD5NSDwvdGQ+DQoJCQkJCQk8dGQ+IFBhcnRp YWwgaW1wbGVtZW50YXRpb24gZm9yIGlzc3VlIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3 dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTQwNzIiPjQwNzI8L2xvYz4NCgkJ CQkJCQlpbiByZXNwb25zZSB0byBlZGl0b3IncyBhY3Rpb24gDQoJCQkJCQkJPGxvYyBocmVmPSJo dHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8xNTQi PjE1NCA8L2xvYz4uDQoJCQkJCQkJTk9URSBBTFNPLSBJIG5lZWRlZCB0byBwdXQgYmFjayBpbiB0 aGUgInByZWZpeCIgZW50aXR5IGRlZmludGlvbiBbbGluZTddIHRvIGdldCB0aGUgYnVpbGQgdG8g d29yay4NCgkJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAw NzAzMDY8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJCQk8dGQ+IEltcGxlbWVudGVkIHBh cnRpYWwgDQoJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDcvMDEvMzEtd3Mt cG9saWN5LW1pbnV0ZXMuaHRtbCNpdGVtMTAiPnJlc29sdXRpb248L2xvYz4gZm9yIGlzc3VlIA0K CQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcu Y2dpP2lkPTM5ODciPjM5ODc8L2xvYz4uDQoJCQkJCQkJUmVsYXRlZCBlZGl0b3JpYWwgYWN0aW9u IGlzIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2Vy L3dzcG9saWN5ZWRzL2FjdGlvbnMvMTUzIj4xNTM8L2xvYz4uDQoJCQkJCQk8L3RkPg0KCQkJCQk8 L3RyPiAgDQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDMwODwvdGQ+DQoJCQkJCQk8dGQ+REJP PC90ZD4NCgkJCQkJCTx0ZD5DaGFuZ2VkICJsaWZlY3ljbGUiIHNwZWMgcmVmZXJlbmNlcyB0byB2 ZXJzaW9uaW5nIHRvIGZpeCBidWlsZC4JPC90ZD4NCgkJCQkJPC90cj4gIA0KCQkJCQk8dHI+DQoJ CQkJCQk8dGQ+MjAwNzAzMTQ8L3RkPg0KCQkJCQkJPHRkPkZKSDwvdGQ+DQoJCQkJCQk8dGQ+SW1w bGVtZW50ZWQgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA3LzAzLzE0LXdzLXBvbGlj eS1pcmMjVDE4LTE0LTQ4Ij5yZXNvbHV0aW9uPC9sb2M+IGZvciBpc3N1ZSA8bG9jIGhyZWY9Imh0 dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD00MDcyIj40MDcyPC9s b2M+IA0KCQkJCQkJCSBhcyBvdXRsaW5lZCBpbiANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly9s aXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13cy1wb2xpY3kvMjAwN01hci8wMTAz Lmh0bWwiPnByb3Bvc2FsPC9sb2M+Lg0KCQkJCQkJCSBFZGl0b3JpYWwgYWN0aW9uIDxsb2MgaHJl Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMv MjA0Ij4yMDQ8L2xvYz4uCTwvdGQ+DQoJCQkJCTwvdHI+IA0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+ MjAwNzAzMTQ8L3RkPg0KCQkJCQkJPHRkPkZKSDwvdGQ+DQoJCQkJCQk8dGQ+SW1wbGVtZW50ZWQg PGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA3LzAzLzE0LXdzLXBvbGljeS1pcmMjVDE4 LTA3LTA4Ij5yZXNvbHV0aW9uPC9sb2M+IGZvciBpc3N1ZSANCgkJCQkJCQk8bG9jIGhyZWY9Imh0 dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0zOTg3Ij4zOTg3PC9s b2M+IA0KCQkJCQkJCWFzIG91dGxpbmVkIGluIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL2xp c3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS8yMDA3TWFyLzAwOTYu aHRtbCI+cHJvcG9zYWw8L2xvYz4uDQoJCQkJCQkJRWRpdG9yaWFsIGFjdGlvbiA8bG9jIGhyZWY9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzIw MyI+MjAzPC9sb2M+Lgk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAw NzAzMTU8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJCQk8dGQ+SW1wbGVtZW50ZWQgdGhl IDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lk PTM5NzkjYzEiPnJlc29sdXRpb248L2xvYz4gDQoJCQkJCQkJZm9yIDxsb2MgaHJlZj0iaHR0cDov L3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTM5NzkiPmlzc3VlIDM5Nzk8 L2xvYz4uDQoJCQkJCQkJRWRpdG9ycycgYWN0aW9uIA0KCQkJCQkJCTxsb2MNCgkJCQkJCQkJaHJl Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMv MTk4Ij4xOTg8L2xvYz4uDQoJCQkJCQk8L3RkPiAgICAgICAgICAgIA0KCQkJCQk8L3RyPg0KCQkJ CQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzAzMTU8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJ CQk8dGQ+SW1wbGVtZW50ZWQgdGhlIDxsb2MgaHJlZj0iaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo aXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS8yMDA3RmViLzAwMDAuaHRtbCI+cmVzb2x1dGlv bjwvbG9jPiANCgkJCQkJCQlmb3IgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1 YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4MSI+aXNzdWUgMzk4MTwvbG9jPi4NCgkJCQkJCQlFZGl0 b3JzJyBhY3Rpb24gDQoJCQkJCQkJPGxvYw0KCQkJCQkJCQlocmVmPSJodHRwOi8vd3d3LnczLm9y Zy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8yMDUiPjIwNTwvbG9jPi4NCgkJ CQkJCTwvdGQ+ICAgICAgICAgICAgDQoJCQkJCTwvdHI+ICAgICANCgkJCQkJPHRyPg0KCQkJCQkJ PHRkPjIwMDcwMzE1PC90ZD4NCgkJCQkJCTx0ZD5GSkg8L3RkPg0KCQkJCQkJPHRkPkltcGxlbWVu dGVkIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNy8wMy8xMy13cy1wb2xpY3ktaXJj I1QyMy0wOC0wOCI+cmVzb2x1dGlvbjwvbG9jPiBmb3IgaXNzdWUgDQoJCQkJCQkJPGxvYyBocmVm PSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNSI+NDAz NTwvbG9jPiANCgkJCQkJCQlhcyBvdXRsaW5lZCBpbiANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6 Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13cy1wb2xpY3kvMjAwN0ZlYi8w MTY5Lmh0bWwiPnByb3Bvc2FsPC9sb2M+Lg0KCQkJCQkJCUVkaXRvcmlhbCBhY3Rpb24gPGxvYyBo cmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9u cy8xOTciPjE5NzwvbG9jPi4JPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRk PjIwMDcwMzE5PC90ZD4NCgkJCQkJCTx0ZD5NSDwvdGQ+DQoJCQkJCQk8dGQ+IEltcGxlbWVudGVk IHJlc29sdXRpb24gZm9yIGlzc3VlIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5v cmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTQwNzMiPjQwNzM8L2xvYz4NCgkJCQkJCQlp biByZXNwb25zZSB0byBlZGl0b3IncyBhY3Rpb24gDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8v d3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8xOTkiPjE5OSA8 L2xvYz4NCgkJCQkJCQlhcyBvdXRsaW5lZCBpbiANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly9s aXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3B1YmxpYy13cy1wb2xpY3kvMjAwN01hci8wMDkz Lmh0bWwiPnByb3Bvc2FsIDwvbG9jPi4NCgkJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8 dHI+DQoJCQkJCQk8dGQ+MjAwNzAzMjA8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJCQk8 dGQ+SW1wbGVtZW50ZWQgdGhlIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJs aWMvc2hvd19idWcuY2dpP2lkPTQzMTkjYzEiPnJlc29sdXRpb248L2xvYz4gDQoJCQkJCQkJZm9y IDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lk PTQzMTkiPmlzc3VlIDQzMTk8L2xvYz4uDQoJCQkJCQkJRWRpdG9ycycgYWN0aW9uIA0KCQkJCQkJ CTxsb2MNCgkJCQkJCQkJaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dz cG9saWN5ZWRzL2FjdGlvbnMvMjA2Ij4yMDY8L2xvYz4uDQoJCQkJCQk8L3RkPiAgICAgICAgICAg IA0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzAzMjA8L3RkPg0KCQkJCQkJ PHRkPkFTVjwvdGQ+DQoJCQkJCQk8dGQ+SW1wbGVtZW50ZWQgdGhlIDxsb2MgaHJlZj0iaHR0cDov L3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTM5OTAjYzEiPnJlc29sdXRp b248L2xvYz4gDQoJCQkJCQkJZm9yIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9Q dWJsaWMvc2hvd19idWcuY2dpP2lkPTM5OTAiPmlzc3VlIDM5OTA8L2xvYz4uDQoJCQkJCQkJRWRp dG9ycycgYWN0aW9uIA0KCQkJCQkJCTxsb2MNCgkJCQkJCQkJaHJlZj0iaHR0cDovL3d3dy53My5v cmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvMjEwIj4yMTA8L2xvYz4uDQoJ CQkJCQk8L3RkPiAgICAgICAgICAgIA0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+ MjAwNzAzMjA8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJCQkJCQk8dGQ+SW1wbGVtZW50ZWQg dGhlIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dp P2lkPTQyMTIjYzEiPnJlc29sdXRpb248L2xvYz4gDQoJCQkJCQkJZm9yIDxsb2MgaHJlZj0iaHR0 cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTQyMTIiPmlzc3VlIDQy MTI8L2xvYz4uDQoJCQkJCQkJRWRpdG9ycycgYWN0aW9uIA0KCQkJCQkJCTxsb2MNCgkJCQkJCQkJ aHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlv bnMvMjA3Ij4yMDc8L2xvYz4uDQoJCQkJCQk8L3RkPiAgICAgICAgICAgIA0KCQkJCQk8L3RyPg0K CQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzAzMjE8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+DQoJ CQkJCQk8dGQ+VXBkYXRlZCBzZWN0aW9uIDxzcGVjcmVmIHJlZj0iY2hhbmdlLWRlc2NyaXB0aW9u Ii8+LiA8L3RkPg0KCQkJCQk8L3RyPiANCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwMzI5PC90 ZD4NCgkJCQkJCTx0ZD5EQk88L3RkPg0KCQkJCQkJPHRkPkNoYW5nZWQgYWxsICZsdDtwJmd0O0Jl c3QgUHJhY3RpY2U6ICB0byAmbHQ7cCByb2xlPSJwcmFjdGljZSImZ3Q7PC90ZD4NCgkJCQkJPC90 cj4gIA0KCQkJCQkNCgkJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDQxNjwvdGQ+DQoJCQkJCQk8 dGQ+REJPPC90ZD4NCgkJCQkJCTx0ZD5VcGRhdGVkIDYuMiBhbmQgNi4zIGZvciA8bG9jIGhyZWY9 Imh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0zOTg5Ij5pc3N1 ZSAzOTg5PC9sb2M+LiAgTm90ZSwgcmVtb3ZlZCBvbmUgYmVzdCBwcmFjdGljZSB0aGF0IHdhcyBh IGR1cC48L3RkPg0KCQkJCQk8L3RyPiAgICAgDQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDQy MzwvdGQ+DQoJCQkJCQk8dGQ+RkpIPC90ZD4NCgkJCQkJCTx0ZD5VcGRhdGVkIDUuNSBEZXNpZ25h dGluZyBPcHRpb25hbCBCZWhhdmlvcnMgZm9yIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3 dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTM5ODkiPmlzc3VlIDM5ODk8L2xv Yz4uICBBZGRlZCBpbmZvcm1hdGl2ZSByZWZlcmVuY2UgZm9yIE1UT01Qb2xpY3kuIA0KCQkJCQkJ CUFkZGVkIHR3byBiZXN0IHByYWN0aWNlcywgb25lIGlzIHNpbWlsYXIgdG8gRzE2IGJ1dCBmb2N1 c2VkIG9uIG9wdGlvbmFsLiBSZXZpc2VkIHByYWN0aWNlIHRoYXQgd2FzIHRoZXJlLjwvdGQ+DQoJ CQkJCTwvdHI+IA0KCQkJCQkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNDI1PC90ZD4NCgkJCQkJ CTx0ZD5NSDwvdGQ+DQoJCQkJCQk8dGQ+VXBkYXRlZCA1LjMgIkNvbnNpZGVyYXRpb25zIHdoZW4g TW9kZWxpbmcgTmV3IEFzc2VydGlvbnMiIHJlbGF0ZWQgdG8NCgkJCQkJCQk8bG9jIGhyZWY9Imh0 dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0zOTg5Ij5pc3N1ZSAz OTg5PC9sb2M+LiAgW0VkaXRvcmlhbCBBY3Rpb24gMjI5XSBSZXN0cnVjdHVyZWQgdGV4dCB0byBm b2xsb3cgZXhhbXBsZXM8L3RkPg0KCQkJCQk8L3RyPiAgICAgICAgIA0KCQkJCQk8dHI+DQoJCQkJ CQk8dGQ+MjAwNzA0MjU8L3RkPg0KCQkJCQkJPHRkPlRJQjwvdGQ+DQoJCQkJCQk8dGQ+VXBkYXRl ZCA1LjIgQXV0aG9yaW5nIFN0eWxlcyBmb3IgDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3 LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4OSI+aXNzdWUgMzk4OTwvbG9j Pg0KCQkJCQkJCWFuZCBlZGl0b3JzJyBhY3Rpb24gaXRlbQ0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0 cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvMjI3Ij4y Mjc8L2xvYz4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4y MDA3MDQyNjwvdGQ+DQoJCQkJCQk8dGQ+UFk8L3RkPg0KCQkJCQkJPHRkPkVkaXRvcmlhbCBjaGFu Z2VzIHRvIGFsaWduIHdpdGggdGhlIE9BU0lTIFdTLVNlY3VyaXR5UG9saWN5IHNwZWNpZmljYXRp b24uDQoJCQkJCQkJRm9yIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMv c2hvd19idWcuY2dpP2lkPTQzMTgiPmlzc3VlIDQzMTg8L2xvYz4uDQoJCQkJCQkJRWRpdG9ycycg YWN0aW9uIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFj a2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvMjQ1Ij4yNDU8L2xvYz4uDQoJCQkJCQk8L3RkPg0KCQkJ CQk8L3RyPiAgDQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDQyNzwvdGQ+DQoJCQkJCQk8dGQ+ RkpIPC90ZD4NCgkJCQkJCTx0ZD5VcGRhdGVkIDUuNS4xIE9wdGlvbmFsIGJlaGF2aW9yIGluIENv bXBhY3QgYXV0aG9yaW5nIGFkZGluZyBHNyBhbmQgRzggZm9yIA0KCQkJCQkJCTxsb2MgaHJlZj0i aHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTM5ODkiPmlzc3Vl IDM5ODk8L2xvYz4NCgkJCQkJCQlhbmQgZWRpdG9ycycgYWN0aW9uIGl0ZW0NCgkJCQkJCQk8bG9j IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rp b25zLzI1MCI+MjUwPC9sb2M+DQoJCQkJCQkJYXMgbm90ZWQgIGluIDxsb2MgaHJlZj0iaHR0cDov L2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS8yMDA3TWFyLzAw NjkuaHRtbCI+bWVzc2FnZSA2OTwvbG9jPi4NCgkJCQkJCQlBbHNvICByZXBsYWNlZCBUQkQgaW4g c2VjdGlvbiAyIHdpdGggZGVzY3JpcHRpdmUgdGV4dC4iDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3Ry PiANCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNTAxPC90ZD4NCgkJCQkJCTx0ZD5BU1Y8L3Rk Pg0KCQkJCQkJPHRkPlJlc2V0IFNlY3Rpb24gPHNwZWNyZWYgcmVmPSJjaGFuZ2UtZGVzY3JpcHRp b24iLz4uDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPiANCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIw MDcwNTA3PC90ZD4NCgkJCQkJCTx0ZD5QWTwvdGQ+DQoJCQkJCQk8dGQ+VXBkYXRlZCA1LjYgV1NE TCBndWlkZWxpbmVzIHNlY3Rpb24sIHRvIGZvbGxvdyB0aGUgbmV3IGZvcm1hdCBhbmQgYWRkZWQg RzE1LCBHMTYsIEcxNyBhbmQgRzE4Lg0KCQkJCQkJQWNjb3VudHMgZm9yIHBhcnRzIG9mIHJlc29s dXRpb24gZm9yICANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVi bGljL3Nob3dfYnVnLmNnaT9pZD0zOTg5Ij5pc3N1ZSAzOTg5PC9sb2M+DQoJCQkJCQkJY29ycmVz cG9uZGluZyB0byBlZGl0b3JzJyBhY3Rpb24gaXRlbXMNCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6 Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzIzMiI+MjMy PC9sb2M+LCANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJh Y2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzIzMiI+MjUzPC9sb2M+LCBhbmQNCgkJCQkJCQk8bG9j IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rp b25zLzIzMiI+MjU2PC9sb2M+Lg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4gDQoJCQkJCTx0cj4N CgkJCQkJCTx0ZD4yMDA3MDUwNzwvdGQ+DQoJCQkJCQk8dGQ+VElCPC90ZD4NCgkJCQkJCTx0ZD5V cGRhdGVkIDUuMSBBc3NlcnRpb25zIGFuZCB0aGVpciBUYXJnZXQgVXNlIGZvciANCgkJCQkJCQk8 bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0z OTg5Ij5pc3N1ZSAzOTg5PC9sb2M+DQoJCQkJCQkJYW5kIGVkaXRvcnMnIGFjdGlvbiBpdGVtDQoJ CQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xp Y3llZHMvYWN0aW9ucy8yMjciPjIyNzwvbG9jPi4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+IA0K CQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1MDg8L3RkPg0KCQkJCQkJPHRkPk1IPC90ZD4NCgkJ CQkJCTx0ZD5VcGRhdGVkIFNlY3Rpb24gNSBmb3IgYWRkaW5nIGd1aWRlbGluZXMgRzksIEcxMCBv biBpZ25vcmFibGUsIGFuZCBHNSAsIEc2IChnZW5lcmFsKQ0KCQkJCQkJCXRvIGFkZHJlc3MgZWRp dG9ycycgYWN0aW9uIGl0ZW1zDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8y MDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8yNTEiPjI1MTwvbG9jPi4NCgkJCQkJ CQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVk cy9hY3Rpb25zLzI1NiI+MjU2PC9sb2M+Lg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJ PHRyPg0KCQkJCQkJPHRkPjIwMDcwNTExPC90ZD4NCgkJCQkJCTx0ZD5QWTwvdGQ+DQoJCQkJCQk8 dGQ+VXBkYXRlZCA1LjYgV1NETCBndWlkZWxpbmVzIHNlY3Rpb24gdG8gYWRkIEcxOSBpZGVudGlm aWVkIGluIEFJIDI1NiAobm93IEcyNCkuDQoJCQkJCQkJQWNjb3VudHMgZm9yIHBhcnRzIG9mIHJl c29sdXRpb24gZm9yICANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0J1Z3Mv UHVibGljL3Nob3dfYnVnLmNnaT9pZD0zOTg5Ij5pc3N1ZSAzOTg5PC9sb2M+DQoJCQkJCQkJY29y cmVzcG9uZGluZyB0byBlZGl0b3JzJyBhY3Rpb24gaXRlbQ0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0 cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvMjMyIj4y NTY8L2xvYz4NCgkJCQkJCQktIG5vdyBjb21wbGV0ZS4NCgkJCQkJCTwvdGQ+CQkJCQkJDQoJCQkJ CTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDUxMzwvdGQ+DQoJCQkJCQk8dGQ+QVNW PC90ZD4NCgkJCQkJCTx0ZD5VcGRhdGVkIFNlY3Rpb24gNS40LjEgdG8gdXNlIHRoZSBuZXcgZm9y bWF0IHJlIGlzc3VlIA0KCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1 YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4OSI+aXNzdWUgMzk4OTwvbG9jPi4gDQoJCQkJCQlFZGl0 b3JzJyBhY3Rpb24NCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYv dHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzIzMCI+MjMwPC9sb2M+Lg0KCQkJCQkJPC90ZD4N CgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNTE0PC90ZD4NCgkJCQkJCTx0 ZD5BU1Y8L3RkPg0KCQkJCQkJPHRkPlVwZGF0ZWQgU2VjdGlvbiA1LjQuMiB0byB1c2UgdGhlIG5l dyBmb3JtYXQgcmUgaXNzdWUgDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9C dWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4OSI+aXNzdWUgMzk4OTwvbG9jPi4gDQoJCQkJ CQkJRWRpdG9ycycgYWN0aW9uDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8y MDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8yMzAiPjIzMDwvbG9jPi4gDQoJCQkJ CQkJQ29sbGFwc2VkIFNlY3Rpb24gNS40LjIgYW5kIDUuNC4zLiANCgkJCQkJCTwvdGQ+DQoJCQkJ CTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDUxNDwvdGQ+DQoJCQkJCQk8dGQ+QVNW PC90ZD4NCgkJCQkJCTx0ZD5BZGRlZCBHMTEgYW5kIEcxMyB0byBTZWN0aW9uIDUuNC4xIGFuZCA1 LjQuMiByZSBpc3N1ZSANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL0J1Z3Mv UHVibGljL3Nob3dfYnVnLmNnaT9pZD0zOTg5Ij5pc3N1ZSAzOTg5PC9sb2M+LiANCgkJCQkJCQlF ZGl0b3JzJyBhY3Rpb24NCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUv MDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzI1MiI+MjUyPC9sb2M+IGFuZA0KCQkJCQkJ CTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRz L2FjdGlvbnMvMjU1Ij4yNTU8L2xvYz4uIA0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJ PHRyPg0KCQkJCQkJPHRkPjIwMDcwNTE2PC90ZD4NCgkJCQkJCTx0ZD5QWTwvdGQ+DQoJCQkJCQk8 dGQ+RWRpdG9yaWFsIGNoYW5nZSB0byBzZWN0aW9uIDUuNyB0byBwbGFjZSBiZXN0IHByYWN0aWNl cyBhZnRlciB0aGUgYXNzb2NpYXRlZCANCgkJCQkJCSAgICBleHBsYW5hdG9yeSB0ZXh0IGFuZCB0 byBmaXggZ3JhbW1hci4gDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJ CQk8dGQ+MjAwNzA1MTg8L3RkPg0KCQkJCQkJPHRkPlBZPC90ZD4NCgkJCQkJCTx0ZD5FbnN1cmVk IEJlc3QgUHJhY3RpY2VzIEcxLCBHMyBhbmQgRzIwIG9mDQoJCQkJCQkJPGxvYyBocmVmPSJodHRw Oi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9wdWJsaWMtd3MtcG9saWN5LzIwMDdNYXIv YXR0LTAwNjkvZ29vZC1wcmFjdGljZXMtNC1hc3NlcnRpb24tYXV0aG9ycy0wMy0wNS0yMDA3LnBk ZiI+b3JpZ2luYWwgSUJNL01TIENvbnRyaWJ1dGlvbjwvbG9jPiANCgkJCQkJCSAgICBhcmUgcmVm bGVjdGVkLiANCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4y MDA3MDUxODwvdGQ+DQoJCQkJCQk8dGQ+UFk8L3RkPg0KCQkJCQkJPHRkPlVwZGF0ZWQgQXBwZW5k aXggRSwgQ2hhbmdlcyBpbiB0aGlzIFZlcnNpb24gb2YgdGhlIERvY3VtZW50DQoJCQkJCQkJKDxz cGVjcmVmIHJlZj0iY2hhbmdlLWRlc2NyaXB0aW9uIi8+KS4gDQoJCQkJCQk8L3RkPg0KCQkJCQk8 L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1MjA8L3RkPg0KCQkJCQkJPHRkPkFTVjwv dGQ+DQoJCQkJCQk8dGQ+QWRkZWQgQmVzdCBQcmFjdGljZSA8c3BlY3JlZiByZWY9ImJwLXNwZWNp ZnktY29tcG9zaXRpb24iLz4gKGZyb20NCgkJCQkJCQl0aGUgPGxvYyBocmVmPSJodHRwOi8vbGlz dHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy9wdWJsaWMtd3MtcG9saWN5LzIwMDdNYXIvYXR0LTAw NjkvZ29vZC1wcmFjdGljZXMtNC1hc3NlcnRpb24tYXV0aG9ycy0wMy0wNS0yMDA3LnBkZiI+SUJN IA0KCQkJCQkJCWFuZCBNUyBDb250cmlidXRpb248L2xvYz4gdG8gDQoJCQkJCQkJPHNwZWNyZWYg cmVmPSJpbnRlcnJlbGF0ZWQtZG9tYWlucyIvPi4gQWRkZWQgYW4gZWQgbm90ZSB0aGF0IA0KCQkJ CQkJCVNlY3Rpb24gPHNwZWNyZWYgcmVmPSJpbnRlcnJlbGF0ZWQtZG9tYWlucyIvPiBuZWVkcyB0 byBiZSByZS1zdHJ1Y3R1cmVkLg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0K CQkJCQkJPHRkPjIwMDcwNTIwPC90ZD4NCgkJCQkJCTx0ZD5BU1Y8L3RkPg0KCQkJCQkJPHRkPkFk ZGVkIEJlc3QgUHJhY3RpY2UgPHNwZWNyZWYgcmVmPSJicC1ub3QtbmVjZXNzYXJ5LXRvLXVuZGVy c3RhbmQtYS1tZXNzYWdlIi8+IChmcm9tDQoJCQkJCQkJdGhlIDxsb2MgaHJlZj0iaHR0cDovL2xp c3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvcHVibGljLXdzLXBvbGljeS8yMDA3TWFyL2F0dC0w MDY5L2dvb2QtcHJhY3RpY2VzLTQtYXNzZXJ0aW9uLWF1dGhvcnMtMDMtMDUtMjAwNy5wZGYiPklC TSANCgkJCQkJCQkJYW5kIE1TIENvbnRyaWJ1dGlvbjwvbG9jPiB0byANCgkJCQkJCQk8c3BlY3Jl ZiByZWY9InNlbGYtZGVzY3JpYmluZyIvPi4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJ CTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDUyMDwvdGQ+DQoJCQkJCQk8dGQ+QVNWPC90ZD4NCgkJCQkJ CTx0ZD5BZGRlZCBhbiBlZCBub3RlIHRoYXQgDQoJCQkJCQkJU2VjdGlvbiA8c3BlY3JlZiByZWY9 Iklnbm9yYWJsZSIvPiBsb29rcyBpbmNvbXBsZXRlLg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4N CgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNTIwPC90ZD4NCgkJCQkJCTx0ZD5BU1Y8L3RkPg0K CQkJCQkJPHRkPkZpeGVkIHR5cG9zLg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRy Pg0KCQkJCQkJPHRkPjIwMDcwNTIwPC90ZD4NCgkJCQkJCTx0ZD5BU1Y8L3RkPg0KCQkJCQkJPHRk PkFkZGVkIGFuIGVkIG5vdGUgaW4gU2VjdGlvbiA8c3BlY3JlZiByZWY9ImFzc2VydGlvbi10YXJn ZXQiLz4gdGhhdCANCgkJCQkJCXRoZXJlIGlzIGFuIG9wZW4gaXNzdWUgYWdhaW5zdCBCZXN0IFBy YWN0aWNlIEcyLg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgk8dHI+CQkJCQ0KICAgIDx0ZD4y MDA3MDUyNDwvdGQ+DQogICAgPHRkPkRCTzwvdGQ+DQogICAgPHRkPkVkaXRvcmlhbCBjaGFuZ2Vz IHRvIGFsaWduIHdpdGggdGhlIFczQyBXUy1BZGRyZXNzaW5nIE1ldGFkYXRhIHNwZWNpZmljYXRp b24uDQogICAgICBGb3IgPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9z aG93X2J1Zy5jZ2k/aWQ9NDM3NSI+aXNzdWUgNDM3NTwvbG9jPi4NCiAgICAgIEVkaXRvcnMnIGFj dGlvbiANCiAgICAgIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2Vy L3dzcG9saWN5ZWRzL2FjdGlvbnMvMjg0Ij4yODQ8L2xvYz4uDQogICAgPC90ZD4NCiAgPC90cj4g ICAgIA0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1Mjk8L3RkPg0KCQkJCQkJPHRkPlBZPC90 ZD4NCgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBSZXNvbHV0aW9uIGZvciA8bG9jIGhyZWY9Imh0dHA6 Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD00NTczIj5pc3N1ZSA0NTcz PC9sb2M+Lg0KCQkJCQkJCUFwcGx5ICJCZXN0IFByYWN0aWNlcyIgY29uc2lzdGVudGx5Lg0KCQkJ CQkJPC90ZD4NCgkJCQkJPC90cj4gDQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDUyOTwvdGQ+ DQoJCQkJCQk8dGQ+UFk8L3RkPg0KCQkJCQkJPHRkPkltcGxlbWVudGVkIFJlc29sdXRpb24gaW4g RWRpdG9ycycgYWN0aW9uIA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAw NS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMvMjkwIj4yOTA8L2xvYz4uDQoJCQkJCQkJ Q29uc2lzdGVudCB1c2Ugb2YgQXNzZXJ0aW9uIEF1dGhvcnMuDQoJCQkJCQk8L3RkPg0KCQkJCQk8 L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1Mjk8L3RkPg0KCQkJCQkJPHRkPlBZPC90 ZD4NCgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBSZXNvbHV0aW9uIGluIEVkaXRvcnMnIGFjdGlvbiAN CgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3Bv bGljeWVkcy9hY3Rpb25zLzI5MSI+MjkxPC9sb2M+Lg0KCQkJCQkJCUNvbnNpc3RlbnQgdXNlIG9m IHNob3VsZCBpbiBwbGFjZSBvZiBtdXN0IGluIHRoZSBiZXN0IHByYWN0aWNlIHN0YXRlbWVudHMu DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1Mjk8 L3RkPg0KCQkJCQkJPHRkPlBZPC90ZD4NCgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBSZXNvbHV0aW9u IGluIEVkaXRvcnMnIGFjdGlvbiANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn LzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzI5NCI+Mjk0PC9sb2M+Lg0KCQkJ CQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQk8dGQ+MjAwNzA1MzA8L3RkPg0K CQkJCQk8dGQ+UFk8L3RkPg0KCQkJCQk8dGQ+SW1wbGVtZW50ZWQgUmVzb2x1dGlvbiBpbiBFZGl0 b3JzJyBhY3Rpb24gDQoJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYv dHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzMwMyI+MzAzPC9sb2M+Lg0KCQkJCQk8L3RkPg0K CQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1MzA8L3RkPg0KCQkJCQkJPHRk PlBZPC90ZD4NCgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBSZXNvbHV0aW9uIGluIEVkaXRvcnMnIGFj dGlvbiANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tl ci93c3BvbGljeWVkcy9hY3Rpb25zLzMwNCI+MzA0PC9sb2M+Lg0KCQkJCQkJPC90ZD4NCgkJCQkJ PC90cj4gDQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4yMDA3MDUzMDwvdGQ+DQoJCQkJCQk8dGQ+UFk8 L3RkPg0KCQkJCQkJPHRkPkltcGxlbWVudGVkIFJlc29sdXRpb24gaW4gRWRpdG9ycycgYWN0aW9u IA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dz cG9saWN5ZWRzL2FjdGlvbnMvMzA1Ij4zMDU8L2xvYz4uDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3Ry Pg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA1MzA8L3RkPg0KCQkJCQkJPHRkPlBZPC90ZD4N CgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBSZXNvbHV0aW9uIGluIEVkaXRvcnMnIGFjdGlvbiANCgkJ CQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGlj eWVkcy9hY3Rpb25zLzMwNiI+MzA2PC9sb2M+Lg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJ CQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNTMwPC90ZD4NCgkJCQkJCTx0ZD5QWTwvdGQ+DQoJCQkJ CQk8dGQ+SW1wbGVtZW50ZWQgUmVzb2x1dGlvbiBpbiBFZGl0b3JzJyBhY3Rpb24gDQoJCQkJCQkJ PGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMv YWN0aW9ucy8zMDciPjMwNzwvbG9jPi4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+IA0KCQkJCQk8 dHI+DQoJCQkJCQk8dGQ+MjAwNzA1MzA8L3RkPg0KCQkJCQkJPHRkPlBZPC90ZD4NCgkJCQkJCTx0 ZD5JbXBsZW1lbnRlZCBSZXNvbHV0aW9uIGluIEVkaXRvcnMnIGFjdGlvbiANCgkJCQkJCQk8bG9j IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rp b25zLzMwODciPjMwODwvbG9jPi4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+ICAgICAgICAgICAg ICAgCQkJIA0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA2MDE8L3RkPg0KCQkJCQkJPHRkPlRJ QjwvdGQ+DQoJCQkJCQk8dGQ+SW1wbGVtZW50ZWQgUmVzb2x1dGlvbiBpbiBFZGl0b3JzJyBhY3Rp b25zICANCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDYvdHJhY2tl ci93c3BvbGljeWVkcy9hY3Rpb25zLzMxMCI+MzEwPC9sb2M+IGFuZA0KCQkJCQkJCTxsb2MgaHJl Zj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlvbnMv MzExIj4zMTE8L2xvYz4uDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPiANCgkJCQkJPHRyPg0KCQkJ CQkJPHRkPjIwMDcwNjAxMzwvdGQ+DQoJCQkJCQk8dGQ+TUg8L3RkPg0KCQkJCQkJPHRkPkltcGxl bWVudGVkIFJlc29sdXRpb24gaW4gRWRpdG9ycycgYWN0aW9ucyAgDQoJCQkJCQkJPGxvYyBocmVm PSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8y OTIiPjI5MjwvbG9jPiBhbmQNCgkJCQkJCQk8bG9jIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnLzIw MDUvMDYvdHJhY2tlci93c3BvbGljeWVkcy9hY3Rpb25zLzI5MyI+MjkzPC9sb2M+Lg0KCQkJCQkJ PC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNjAxNjwvdGQ+DQoJ CQkJCQk8dGQ+QVNWPC90ZD4NCgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBFZGl0b3JzJyBhY3Rpb24g IA0KCQkJCQkJCTxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dz cG9saWN5ZWRzL2FjdGlvbnMvMjg5Ij4yODk8L2xvYz4uDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3Ry Pg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+MjAwNzA2MTY8L3RkPg0KCQkJCQkJPHRkPkFTVjwvdGQ+ DQoJCQkJCQk8dGQ+SW1wbGVtZW50ZWQgdGhlIHJlc29sdXRpb24NCgkJCQkJCQlmb3IgaXNzdWUg PGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9 NDA3NCI+NDA3NDwvbG9jPi4gDQoJCQkJCQkJRWRpdG9ycycgYWN0aW9uIA0KCQkJCQkJCTxsb2Mg aHJlZj0iaHR0cDovL3d3dy53My5vcmcvMjAwNS8wNi90cmFja2VyL3dzcG9saWN5ZWRzL2FjdGlv bnMvMjg2Ij4yODY8L2xvYz4uDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJ CQkJCQk8dGQ+MjAwNzA2MDE4PC90ZD4NCgkJCQkJCTx0ZD5BU1Y8L3RkPg0KCQkJCQkJPHRkPklt cGxlbWVudGVkIEVkaXRvcnMnIGFjdGlvbiAgDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3 LnczLm9yZy8yMDA1LzA2L3RyYWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8yOTUiPjI5NTwvbG9j Pi4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+ICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAg ICAgIAkJCSANCgkJCQkJPHRyPg0KCQkJCQkJPHRkPjIwMDcwNjAxODwvdGQ+DQoJCQkJCQk8dGQ+ VElCPC90ZD4NCgkJCQkJCTx0ZD5JbXBsZW1lbnRlZCBwbGFjZSBob2xkZXIgZm9yIEVkaXRvcnMn IGFjdGlvbiAgDQoJCQkJCQkJPGxvYyBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8yMDA1LzA2L3Ry YWNrZXIvd3Nwb2xpY3llZHMvYWN0aW9ucy8yNDkiPjI0OTwvbG9jPiBmb3IgbG9ja2luZyB0aGUg ZG9jdW1lbnQuDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPiAgICAgICAgICAgICAgICAgIAkJICAg ICAgICAgICAgICAJCQkgDQoJCQkJPC90Ym9keT4NCgkJCTwvdGFibGU+DQoJCTwvaW5mb3JtLWRp djE+DQoJPC9iYWNrPg0KPC9zcGVjPg0K