SOAP over Java™ Message Service 1.0

Editors' copy $Date: 2008-05-01 19:16:48 $ @@ @@@@ @@@@

This version:
soapjms.html
Latest version:
http://dev.w3.org/cvsweb/~checkout~/2008/ws/soapjms/soapjms.html?content-type=text/html;charset=utf-8
Editor:
Jabba Desilijic Tiure, Criminal

Abstract

This document specifies how SOAP should bind to a messaging system that supports the Java™ Message Service (JMS) [Java Message Service]. Binding is specified for both SOAP 1.1 [SOAP 1.1] and SOAP 1.2 [SOAP 1.2 Messaging Framework] using the SOAP 1.2 Protocol Binding Framework.

Status of this Document

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

Table of Contents

1. Introduction
    1.1 Background
    1.2 Out of Scope
    1.3 Context
    1.4 Notational Conventions
        1.4.1 XML Namespaces
    1.5 Conformance
2. The SOAP/JMS Underlying Protocol Binding
    2.1 Introduction
    2.2 Properties Affecting Binding
        2.2.1 Connection to a destination
        2.2.2 JMS Message Header properties
        2.2.3 JMS Message properties
        2.2.4 Binding of Properties to IRI
        2.2.5 Other Properties
    2.3 Authentication for SOAP/JMS
    2.4 The JMS Message Body
    2.5 Supported Message Exchange Patterns
        2.5.1 Support for Topic destinations
    2.6 Request-Response MEP
        2.6.1 Behaviour of Requesting SOAP Node
            2.6.1.1 Init
            2.6.1.2 Requesting
            2.6.1.3 Sending + Receiving
            2.6.1.4 Success and Fail
        2.6.2 Behaviour of Responding SOAP Node
            2.6.2.1 Init
            2.6.2.2 Receiving
            2.6.2.3 Receiving + Sending
            2.6.2.4 Success and Fail
    2.7 One-way Message Exchange Pattern
        2.7.1 Behaviour of Sending SOAP Node
        2.7.2 Behaviour of Receiving SOAP Node
    2.8 Faults
3. WSDL Usage
    3.1 Overview
    3.2 WSDL 1.1 Extensions Overview
    3.3 WSDL 2.0 Extensions Overview
    3.4 WSDL 1.1 Extensions Detail
        3.4.1 Example
        3.4.2 WSDL 1.1 Transport Identification
        3.4.3 WSDL 1.1 SOAP Action
        3.4.4 Specifying Properties In WSDL 1.1
        3.4.5 Specifying Properties Via the JMS IRI
    3.5 WSDL 2.0 Extensions Detail
    3.6 Properties
        3.6.1 Relationship to WSDL 2.0 Component Model
            3.6.1.1 Precedence

Appendices

A. References
B. SOAP/JMS Underlying Protocol Binding Examples (Non-Normative)
    B.1 SOAP Request without attachments
    B.2 SOAP Request with attachments
C. Acknowledgements (Non-Normative)
D. Change Log (Non-Normative)


1. Introduction

1.1 Background

The work described in this and related documents is aimed at a set of standards for the transport of SOAP messages over JMS [Java Message Service]. The main purpose is to ensure interoperability between the implementations of different Web services vendors. It should also enable customers to implement their own Web services for part of their infrastructure, and to have this interoperate with vendor provided Web services. The main audience will be implementers of Web services stacks; in particular people who wish to extend a Web services stack with an implementation of SOAP/JMS. It should enable them to write a SOAP/JMS implementation that will interoperate with other SOAP/JMS implementations, and that will not be dependent on any specific JMS implementation.

A motivational example is a customer who has different departments that use Web services infrastructure from two different vendors, VendorA and VendorB. The customer has a need for reliable Web services interaction between the departments. Where both these vendors provide support for SOAP/JMS according to this standard, it should be possible for a client running using VendorA to interoperate with a service using VendorB.

The standards will also be of interest to providers of Web services intermediary services such as routing gateways; or SOAP/HTTP to SOAP/JMS gateways. We do not discuss any details of how such gateways should be designed and configured, but adherence to the standard will help the gateway ensure proper interoperation with SOAP/JMS clients and services.

The documents cover three major areas.

  • The JMS calls that must be made to construct and interpret SOAP/JMS messages in 2. The SOAP/JMS Underlying Protocol Binding.

    Editorial note: pse20080521
    Note that we never actually specify JMS calls in our documentation. Do we want to add "must be implicitly made". Later on we mention "implicitly"
  • The WSDL binding that may be used to describe SOAP/JMS services in 3. WSDL Usage.

  • The IRI specification for JMS endpoints [URI Scheme for JMS] to be used by SOAP/JMS implementations (and potentially in other areas where a JMS IRI is required).

    Editorial note: pse20080521
    Minor Is "to be" weak? Is "that must be" better?.

Note that the IRI specification is in a separate document.

1.2 Out of Scope

It is important to stress what this standard does NOT provide.

  • It does NOT provide any mechanism for interoperation between two different JMS providers. In the example above, VendorA and VendorB are different providers of a Web services infrastructure, but the customer must still use a single implementation of JMS at both client and service side.

  • It does NOT define any (wire) format for SOAP/JMS messages.

    Editorial note: pse20080521
    Testing Angle: So, unlike other standards that specify wire-format and that validate conformance by intermediarys e.g. TCP proxys for WS-I SOAP/HTTP, we need to have some kind of facade/interceptor at the JMS level probably at the points in which messages are published and consumed - i.e. send, receive, onMessage listener at which to record and verify the interractions and properties.
  • It does NOT define how the Web services themselves will be presented to the application programmer. For example, it does not describe how the programmer will characterise a one-way message.

1.3 Context

This document specifies how SOAP should bind to a messaging system that supports the Java™ Message Service (JMS) [Java Message Service]. Binding is specified for both SOAP 1.1 [SOAP 1.1] and SOAP 1.2 [SOAP 1.2 Messaging Framework] using the SOAP 1.2 Protocol Binding Framework.

The approach taken for this specification is to model it on the binding specifications that have been created for SOAP 1.2. The first of these was for a SOAP HTTP Binding, described in section 7, SOAP HTTP binding, [SOAP 1.2 Part 2: Adjuncts]. A second binding for Email [SOAP 1.2 Email Binding] is also available.

1.4 Notational Conventions

The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [IETF RFC 2119].

Parenthetic remarks about fault subcodes are mentioned throughout the document where a conformance issue may result in a error. How these subcodes should be treated is dealt with in the section "Faults".

1.4.1 XML Namespaces

This specification uses a number of namespace prefixes throughout; they are listed in Table 1-1. Properties are named with XML qualified names. Property values are determined by the Schema type of the property, as defined in the specification which introduces the property. Note that the choice of any namespace prefix is arbitrary and not semantically significant (see [XML Namespaces]).

Table 1-1. Prefixes and Namespaces used in this specification
PrefixNamespaceSpecification
soapjmshttp://www.w3.org/@@@@/@@/soapjmsDefined by this specification
xsd http://www.w3.org/2001/XMLSchema [XML Schema Structures]
wsdl11http://schemas.xmlsoap.org/wsdl/[WSDL 1.1]
wsdl20http://www.w3.org/ns/wsdl[WSDL 2.0 Core Language]
wsoaphttp://www.w3.org/ns/wsdl/soap[WSDL 2.0 Adjuncts]
wsdl11soap11http://schemas.xmlsoap.org/wsdl/soap/[WSDL 1.1]
wsdl11soap12http://schemas.xmlsoap.org/wsdl/soap12/[WSDL 1.1 for SOAP 1.2]

The binding defined by this specification is identified by the XML namespace URI [XML Namespaces] http://www.w3.org/@@@@/@@/soapjms.

It is the intent of the W3C SOAP JMS Binding Working Group that the SOAP over Java™ Message Service 1.0 XML namespace URI will not change arbitrarily with each subsequent revision of the corresponding XML Schema documents as the specifications transition through Candidate Recommendation, Proposed Recommendation and Recommendation status. However, should the specifications revert to Working Draft status, and a subsequent revision, published as a WD, CR or PR draft, results in non-backwardly compatible changes from a previously published WD, CR or PR draft of the specification, the namespace URI will be changed accordingly.

Editorial note: plh20080501
The above paragraph will need to be removed for the publication of the Recommendation.

1.5 Conformance

A conforming implementation MUST implement the requirements as specified in 2. The SOAP/JMS Underlying Protocol Binding. To the extent required by that section, conforming implementations MUST support the [URI Scheme for JMS], specifically the syntax manipulations required therein.

Editorial note: pse20080521
2 strong assertions.
A conforming implementation MAY implement the requirements in 3. WSDL Usage portion of this document, and if it does so, it MUST fully support the JMS IRI scheme, including its syntax, and the implications for invoking JMS related APIs.
Editorial note: pse20080521
So this is an optional section for our test suite. It's not spelt out what "support" means - e.g. I suspect the first answer is the ability to consume WSDL a SOAP/JMS WS Client. The ability to publish these WSDLs if that's what your framework claims testable is next.

2. The SOAP/JMS Underlying Protocol Binding

2.1 Introduction

This section covers the SOAP/JMS binding, and implicitly the JMS calls that must be made. Many people may think of the JMS calls as the SOAP/JMS message format. This is almost correct, but not completely. JMS is strictly an API and does not define a message format. Also, this document covers how the SOAP/JMS implementation connects to the JMS service and selects the appropriate destination.

This part covers details such as how JMS connections and destinations should be handled. It also covers the message content, including how properties and headers such as priority, soapAction and targetService should be handled within the SOAP/JMS implementation.

2.2 Properties Affecting Binding

There are a number of properties that affect how the binding behaves. The following properties are grouped into related sets. A conforming implementation must support all these properties.

Editorial note: pse20080521
Strong assertion.

Properties can be obtained from a number of sources:

  • The JMS IRI (which may be specified in the WSDL, programmatically, on the command line etc.);

  • WSDL elements or attributes (in addition to the endpoint IRI), and;

  • The environment (for example local program variables, system environment variables etc).

If a property is specified in more than one of these places then a property in the Environment will be used in preference to one specified in WSDL that will itself be used in preference to the JMS IRI.
Editorial note: pse20080521
Strong assertions.
If the property is specified more than once on the JMS IRI the last instance of the property will be used.

Editorial note: pse20080521
Strong assertion.

2.2.1 Connection to a destination

Since the underlying JMS IRI scheme defines an open-ended scheme for identifying and connecting to destination, it is not possible to enumerate all the ways that connection information may be set. However, in the interest of specifying context information such as JNDI connection properties in such a way that they can apply to multiple services or endpoints, this specification enumerates specific properties.

[Definition: soapjms:lookupVariant ](xsd:string)
  • Specifies the technique to use for looking up the given destination name.

  • Must be specified in the JMS IRI, as the jms-variant portion of the syntax.

    Editorial note: pse20080521
    Strong assertion.
[Definition: soapjms:destinationName ] (xsd:string)
  • Specifies the name of the destination, for lookup as per the lookupVariant. If the variant is "jndi", this is the Java Naming and Directory Interface (JNDI) name of the destination (queue or topic). If the variant is "context", then the name is discovered via application context.

  • MUST be specified in JMS IRI, as the jms-dest portion of the syntax.

    Editorial note: pse20080521
    Strong assertion.
[Definition: soapjms:jndiConnectionFactoryName ] (xsd:string)
  • Specifies the JNDI name of the connection factory.

  • an optional property

  • MAY be specified in JMS IRI, WSDL, or somewhere else in the environment

    Editorial note: pse20080521
    Optional property, Testable.
[Definition: soapjms:jndiInitialContextFactory ] (xsd:string)
  • Specifies the fully qualified Java class name of the InitialContextFactory to use. This is mapped to the javax.naming.Context.INITIAL_CONTEXT_FACTORY property to be set in the HashMap sent to an InitialContext constructor.

  • an optional property

  • MAY be specified in JMS IRI, WSDL, or somewhere else in the environment

Editorial note: pse20080521
Optional property, Testable
[Definition: soapjms:jndiURL ] (xsd:anyURI)
  • Specifies the JNDI provider URL, which is mapped to the java.naming.provider.url property to be set in the HashMap sent to an InitialContextconstructor.

  • an optional property

  • MAY be specified in JMS IRI, WSDL, or somewhere else in the environment

Editorial note: pse20080521
Optional property, Testable

2.2.2 JMS Message Header properties

This set of properties provide information that will set the values of corresponding JMS Header fields. This specification assumes that the JMS provider validates the values set for the respective message header properties, rather than being explicitly constrained by this specification.

[Definition: soapjms:deliveryMode] (xsd:string)
  • indicates whether the request message is persistent or not. The valid values are "PERSISTENT" and "NONPERSISTENT". The default value is "PERSISTENT" (defaulted by JMS)

  • optional in IRI, optional in WSDL, optional in environment

  • if specified MUST appear in the JMS message in the header named JMSDeliveryMode. If the value of this property is "PERSISTENT" then the JMSDeliveryMode integer value must be set to DeliveryMode.PERSISTENT. If the value of this property is "NONPERSISTENT" then the JMSDeliveryMode integer value must be set to DeliveryMode.NONPERSISTENT.

Editorial note: pse20080521
Although "optional" strong statements on how the JMS Message property is assigned and defaults. Very testable
[Definition: soapjms:timeToLive] (xsd:long)
  • the lifetime, in milliseconds, of the request message. A value of 0 indicates an infinite lifetime. The default value is 0 (defaulted by JMS).

  • optional in IRI, optional in WSDL, optional in environment.

  • if specified, this is used to generate the value of the JMS header JMSExpiration.

    Editorial note: pse20080521
    Although "optional" strong statements on how the JMS Message property is assigned and defaults(I suppose that if the default is wrong it could be a JMS provider defect or a SOAP/JMS provider defect. Very testable
[Definition: soapjms:priority] (xsd:int)
  • the JMS priority associated with the request message. Valid values are integers between 0 (lowest priority) and 9 (highest priority). The default value is 4 (defaulted by JMS).

  • optional in IRI, optional in WSDL, optional in environment

  • if specified MUST appear in the JMS message in the header named JMSPriority.

Editorial note: pse20080521
Although "optional" strong statements on how the JMS Message property is assigned and defaults. Very testable
[Definition: soapjms:replyToName] (xsd:string)
  • Specifies the name of the destination to which a response message should be sent. If the replyToName property has a value it is used to lookup a destination using the lookupVariant. If the variant is "jndi", this is the Java Naming and Directory Interface (JNDI) name of the destination (queue or topic). If the variant is "context", then the name is discovered via application context.

  • optional in IRI, optional in WSDL, optional in environment

  • if specified, this is used to derive the value to be used in the JMS header JMSReplyTo

Editorial note: pse20080521
We have to test all the variants just like the original request. Do we mandate that JMSReplyTo is only for 2-Way MEPS

2.2.3 JMS Message properties

[Definition: soapjms:targetService] (xsd:string)
  • Used by the service implementation to dispatch the service request.

  • optional in IRI

  • if specified MUST appear in the JMS message in the JMS property named SOAPJMS_targetService.

Editorial note: pse20080521
Although "optional" but strong statement on how the JMS Message property is assigned. Testable
[Definition: soapjms:bindingVersion] (xsd:string)
  • Specifies the version of SOAP JMS binding that is being used.

  • fixed value "1.0" in the implementation, MUST appear in a JMS property named SOAPJMS_bindingVersion. [Definition: Fault subcode unrecognizedBindingVersion if the value of this property does not match the fixed value.]

Editorial note: pse20080521
2 strong statements. Testable
[Definition: soapjms:contentType] (xsd:string)

Note that the contentType value also indicates the MIME type of the primary message payload. This message property, then, identifies whether the message payload uses SOAP 1.1, SOAP 1.2, SOAP Messages With Attachments [SOAP Messages with Attachments] or MTOM [SOAP 1.1 Binding for MTOM 1.0] [SOAP MTOM] as the primary payload.

  • Describes the content of the SOAP message, this has the same values as the MIME Content-Type specified for a SOAP message over HTTP [IETF RFC 2045].

  • If the value of the property is text/xml or application/soap+xml, a charset parameter may be present; if the value of the property is multipart/related, a type parameter may be present.

  • if the charset parameter is specified it is checked to ensure that it matches the encoding value from the supplied XML. If there is a mismatch then a fault is generated. [Definition: Use fault subcode contentTypeMismatch in the event that the values do not match.]

  • if no charset parameter is supplied the charset MUST be inferred using the rules defined in appendix F, Autodetection of Character Encodings , [XML 1.0].

  • the type parameter MUST reflect the value specified in the Content-type part header for the first part (the SOAP body, so text/xml or application/xop+xml).

  • MUST appear in the JMS message in the JMS property named SOAPJMS_contentType. [Definition: Use fault subcode missingContentType if the SOAPJMS_contentType property is missing.]

Editorial note: pse20080521
Several strong statements. Potentially a lot of testing. Do we need statements on minimal support for UTF-8. UTF-16, ByteOrderMark etc etc
[Definition: soapjms:soapAction] (xsd:anyURI)
  • as with SOAP/HTTP

  • optional in WSDL, optional in environment

  • if specified MUST appear in the JMS message in the JMS property named SOAPJMS_soapAction

  • if using SOAP 1.2, and the contentType property has an action parameter, that parameter value MUST match this SOAPJMS_soapAction value. [Definition: Use fault subcode mismatchedSoapAction if the SOAP 1.2 action does not match]

Editorial note: pse20080521
Several strong statements. Testable
[Definition: soapjms:isFault] (xsd:boolean)
  • This property indicates whether a SOAP/JMS message is a fault. For senders, this property should be set to true when responding with a SOAP fault. When this property is true, the sending software should include a JMS property named SOAPJMS_isFault with a value of 1.

  • For receivers, this property is derived from the JMS property named SOAPJMS_isFault — if present and containing a value of 1, the value of soapjms:isFault is true. If omitted, or present with a value of 0, the value of soapjms:isFault is false.

Editorial note: pse20080521
Strong statements. Testable
[Definition: soapjms:requestIRI] (xsd:string)
  • Specifies the JMS IRI of the service. The client MUST create this property which is derived from the supplied IRI. The client MUST remove the targetService query parameter if specified; SHOULD remove JMS Message Header properties; and MAY remove other query parameters (for example client security related properties).

  • a required property

  • MUST appear in the JMS message in the JMS property named SOAPJMS_requestIRI. [Definition: Use fault subcode missingRequestIRI if the SOAPJMS_requestIRI is missing from the message.]

Editorial note: pse20080521
Strong statements. Testable

2.2.4 Binding of Properties to IRI

Implementations of this specification need to allow for the setting of the above properties. Some properties, as mentioned above can be inferred from context, or provided by the application environment. Some might be put into WSDL. In many cases, it is desirable to represent those properties as part of a URL-like representation. To conform to the latest enhancements to support internationalization, this specification references the [URI Scheme for JMS]. In particular, this section describes how the properties above are used in the IRI [IETF RFC 3987]. Note that the IRI scheme also defines query parameters, and where the query parameter names are the same, the same meaning is intended here.

For brevity, properties are shown without the SOAPJMS prefix. The "IRI representation" column describes how the property is carried in the IRI. The "Client treatment" column describes how the property should be treated in the process of forming the soapjms:requestIRI property. There are three options for this column:

  • As-is — the client SHOULD leave the information in the IRI as is.

  • Should exclude — the client SHOULD exclude the information from the generated requestIRI .

  • Must exclude — the client MUST not include the information in the generated requestIRI.

Table 2-1. Binding of Properties to IRI
Specification PropertyIRI RepresentationClient Treatment
deliveryMode as deliveryMode query parameterShould exclude
destinationNameas jms-dest portion of IRI syntax As-is
jndiConnectionFactoryName as jndiConnectionFactoryName query parameterShould exclude
jndiInitialContextFactory as jndiInitialContextFactory query parameterShould exclude
jndiURL as jndiURL query parameterShould exclude
replyToName as replyToName query parameterMust exclude
priority as priority query parameterShould exclude
targetService as targetService query parameterMust exclude
timeToLive as timeToLive query parameterShould exclude

Editorial note: pse20080521
Lots of must statements as to what is left-over in the requestIRI by the client side. Lots of statements on how the IRI representation maps to properties. Testable on these 2 levels

[Definition: Use fault subcode malformedRequestIRI when the IRI violates the expected syntax.]. [Definition: Use fault subcode targetServiceNotAllowedInRequestIRI when targetService parameter is included in the requestIRI).]

Editorial note: pse20080521
2 strong statements. Testable

2.2.5 Other Properties

It is possible to specify other properties on the IRI but they do not affect processing. Any such properties will be included in the JMS Message property requestIRI unless explicitly removed by the client.

Editorial note: pse20080521
Untestable ? Do we mean this ?

2.3 Authentication for SOAP/JMS

Security, and in particular authentication, is a critical concern in most if not all environments where this binding will be utilized. There are at least two places where authentication may need to occur — 1) authenticating to the registry (i.e. JNDI) where JMS Destinations are located, and 2) authenticating to the JMS system itself. Credentials such as usernames and passwords may be required to access directories and to obtain JMS Connections from ConnectionFactories. This specification does not mandate how an implementation should obtain these credentials, although typically they may be available as API parameters, environment variables, or in thread context storage.

Implementers of this binding should consider how to most appropriately expose authentication functionality to their users in a way that meshes smoothly with the models exposed by their environments.

Note:

Although technically possible, the specification of userid and/or password related properties in the IRI is not recommended.

Editorial note: pse20080521
Untestable?

2.4 The JMS Message Body

The contents of the JMS Message body MUST be the SOAP payload as a JMS BytesMessage. [Definition: Use fault subcode unsupportedJMSMessageFormat when the arriving message format is not supported by the application.]. The encoding will depend on whether the payload is simply a SOAP Envelope or whether there are any attachments, and the JMS "Content-type" header (section 3.3) will reflect this appropriately.

Editorial note: plh20080501
"section 3.3" (in paragraph above) doesn't seem to lead to the right place?!?
Editorial note: pse20080521
Strong statements. Testable

In the case of a message without any attachments, the JMS Message Body will contain the properly encoded bytes of the XML SOAP message, and nothing else. In this case the Content-type will be "text/xml" (for SOAP 1.1) or "application/soap+xml" (for SOAP 1.2).

Editorial note: pse20080521
Strong statements. Testable

In the case that there are attachments, the JMS Message Body will contain a multipart MIME message. The first thing encountered in byte stream MUST be the MIME boundary for the start of the first part — what MIME Part One [IETF RFC 2045] section 2.5 calls a "Body Part". The message will be encoded using SOAP Messages with Attachments [SOAP Messages with Attachments] or XOP [SOAP 1.1 Binding for MTOM 1.0] [SOAP MTOM], in either case with a Content-type of "multipart/related".

Editorial note: pse20080521
Strong statements. Testable

2.5 Supported Message Exchange Patterns

An instance of a binding to JMS conforming to this binding specification MUST support the following message exchange patterns:

  • Request-Response

  • One-way

In the case of SOAP 1.2 a conforming SOAP-JMS Binding instance MUST support the following message exchange patterns:

In the case of SOAP 1.1 there is no formal specification of Message Exchange Patterns. A conforming SOAP-JMS Binding instance MUST support both the generic "request/response" and "one-way" patterns and in the case of SOAP 1.1 are specified in this document. Relevant information on how SOAP 1.1 should bind to HTTP is specified in that specification [SOAP 1.1].

Editorial note: pse20080521
"should bind to HTTP" is this relevant?

There are tables of JMS properties, and explanations of their values, in the remainder of this section. Note that only the relevant properties (i.e. ones affected by this specification) have been included — other properties will continue to follow the normal JMS specification. For instance, the JMSMessageID header will be present on all messages, and automatically generated by the underlying JMS implementation.

2.5.1 Support for Topic destinations

Topics may be used as destinations for SOAP messages over JMS. However, due to the potential complexities around how topics might interact with message-exchange patterns, this specification provides no guidelines as to how that message exchange might work. In particular, the "request-response" exchange clearly means something different when an unknown number of responses might be received. Even the "one-way" exchange over a JMS topic differs in subtle ways from the same exchange over HTTP, including the fundamental question of whether the message is received at all, by any listeners.

Editorial note: pse20080521
Testing optional - 1-ways perhaps

For these reasons, implementers and clients of this specification are advised to use caution when dealing with JMS topics. We strongly encourage implementers to carefully document their choices around the use and support of topic destinations.

2.6 Request-Response MEP

The http://www.w3.org/2003/05/soap/mep/request-response/ message pattern is described in section 6.2, Request-Response Message Exchange Pattern, [SOAP 1.2 Part 2: Adjuncts].

For binding instances conforming to this specification:

  • A SOAP Node instantiated at the JMS interface (sending and receiving) may take on the role (i.e. the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role) of RequestingSOAPNode.

    Editorial note: pse20080521
    "sending and receiving" confuses - omit ? Same comment below.
  • A SOAP Node instantiated at the JMS interface (sending and receiving) may take on the role (i.e. the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role) of RespondingSOAPNode.

The remainder of this section consists of descriptions of the MEP state machine. In the state descriptions following, the states are defined as values for the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State.

Failure reasons as specified in the tables represent values of the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason - their values are qualified names. If an implementation enters the "Fail" state, the http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason property will contain the value specified for the particular transition.

2.6.1 Behaviour of Requesting SOAP Node

The overall flow of the behaviour of a Requesting SOAP Node follows the outline state machine description contained in section 6.2, Request-Response Message Exchange Pattern, [SOAP 1.2 Part 2: Adjuncts]. The following subsections describe each state in more detail and apply to both SOAP 1.1 and SOAP 1.2 until stated otherwise.

2.6.1.1 Init

In the "Init" state, a JMS request is formulated and transmission of the request is initiated. The message must be created as a JMS BytesMessage as per section 4 above. A number of the message header properties are implicitly created by the use of the JMS api, the following table specifies how the properties described earlier explicitly affect the message constructed.

Editorial note: plh20080501
"section 4" (in paragraph above) doesn't seem to lead to the right place?!?
Table 2-2. Init State Values
FieldValue Set by Conforming Client
JMS Message Header
JMSDeliveryModethe value of the deliveryMode property or not set if not specified
JMSExpirationcalculated from the value of the timeToLive property or not set if not specified
JMSPrioritythe value of the priority property or not set if not specified
JMSDestinationderived from the destinationName property
JMSReplyToif the replyToName property is specified, this is the JMS Destination object derived from that name. Otherwise the implementation must determine the reply queue, and use the JMS Destination object which represents that queue; the queue may be a temporary queue generated as described in the JMS specification.
JMS Message properties
SOAPJMS_requestIRIthis is derived from the requestIRI property
SOAPJMS_bindingVersionthis is copied from the bindingVersion property
SOAPJMS_soapActionthe value of the soapAction property or not set if not specified
SOAPJMS_targetServicethe value of the targetService property or not set if not specified
SOAPJMS_contentTypeinferred from the SOAP Envelope and presence of attachments
JMS Message Body
bodyA SOAP envelope is serialized according to the media type specified in the JMS Message property SOAPJMS_contentType

Editorial note: pse20080521
Strong testable statements.
2.6.1.2 Requesting

In the "Requesting" state, sending of the request continues while waiting for the start of the correlated response message. A correlated response message is one where the value of the JMSCorrelationID header field is the same as the value of the JMSMessageID of the request message. The response message will be received on the JMS Destination specified in the JMSReplyTo header above, and that Destination is where implementations should be listening.

Editorial note: pse20080521
Strong statement that JMSCorrelationID is required.

If a correlated response message is received then a transition to "Sending + Receiving" is made.

If, for whatever reason (for example a timeout), no correlated response message is received then a failure reason receptionFailure is set and a transition to "Fail" is made.

Editorial note: pse20080521
Strong statement. In practice the JMS receive call gets a timeout. Testable
2.6.1.3 Sending + Receiving

Receive a correlated message body that is assumed to contain a SOAP envelope serialised according to the rules for carrying a SOAP message in the media type specified in the JMS Message property SOAPJMS_contentType.

If a well formed response message is received a transition to "Success" is made.

Editorial note: pse20080521
Strong statement about well formed. Testable.
2.6.1.4 Success and Fail

"Success" and "Fail" are the terminal states of the Request-Response MEP. Control over the message exchange context returns to the local SOAP node.

Editorial note: pse20080521
Strong statement. Testable.

2.6.2 Behaviour of Responding SOAP Node

The overall flow of the behaviour of a Responding SOAP Node follows the outline state machine description contained in section 6.2, Request-Response Message Exchange Pattern, [SOAP 1.2 Part 2: Adjuncts]. The following subsections describe each state in more detail and apply to both SOAP 1.1 and SOAP 1.2 until stated otherwise.

2.6.2.1 Init

Receive and validate the inbound request message.

If a well formed request message is received a transition to the local SOAP node is made followed by a transition to the "Receiving" state.

If a malformed request message is received a transition to "Fail" is made.

2.6.2.2 Receiving

Waiting for Response Message to become available in Message Exchange Context as a result of processing the Request Message (note Request Message fully received on exit from Init state).

2.6.2.3 Receiving + Sending

Completing Request Message reception and Response Message transmission. (Response Message sent on exit from Receiving State).

The JMS request is formulated and transmission of the response is initiated. The message must be created as a JMS BytesMessage. A number of the message header properties are implicitly created by the use of the JMS api, the following table specifies how the properties described earlier explicitly affect the message constructed. The message MUST be sent to the JMS Destination in the JMSReplyTo header of the Request Message. The value of the JMSCorrelationID header field MUST be set to the same as the value of the JMSMessageID of the request message.

Table 2-3. Receiving + Sending State Values
FieldValue Set by Conforming Client
JMS Message Header
JMSDeliveryModethis SHOULD be the same as that specified on the request
JMSExpirationthis is derived from the request. It is up to the responding node to decide whether to degrade for processing time.
JMSPrioritythis is copied from the request
JMSCorrelationIDthis is copied from the request JMSMessageID
JMSDestinationthis is copied from the JMSReplyTo property in the request
JMS Message properties
SOAPJMS_requestIRIthis is copied from the requestIRI property in the request message
SOAPJMS_bindingVersionthis is copied from the bindingVersion property
SOAPJMS_contentTypeinferred from the SOAP Envelope and presence of attachments.
JMS Message Body
bodyA SOAP envelope is serialized according to the media type specified in the JMS Message property SOAPJMS_contentType.

Editorial note: pse20080521
Strong testable statements.

If a response message is successfully sent a transition to the "Success" state is made.

If there is a failure to send a response message then failure reason transmissionFailure is set and a transition to "Fail" is made.

2.6.2.4 Success and Fail

"Success" and "Fail" are the terminal states for the Request-Response MEP. From the point-of-view of the local node this message exchange has completed.

2.7 One-way Message Exchange Pattern

The SOAP One-way MEP [SOAP 1.2 Part 3: One-Way MEP] defines properties for the exchange of a SOAP/JMS message which does not solicit a response. For JMS messages sent to a Queue destination this MEP results in a SOAP message which may be received by zero or one receiver. For JMS messages sent to a Topic destination this MEP results in SOAP message(s) which may be received by zero, one, or many receivers.

This message exchange pattern is identified by the URI http://www.w3.org/2006/08/soap/mep/one-way/.

For binding instances conforming to this specification:

  • A SOAP Node instantiated at the sending JMS interface may take on the role (i.e. the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role, defined in Table 2, Property definitions supporting the description of MEPs), of SendingSOAPNode.

  • A SOAP Node instantiated at the receiving JMS interface takes on the role (i.e. the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role) of ReceivingSOAPNode.

The remainder of this section consists of descriptions of the MEP. Failure reasons represent values of the property http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason — their values are qualified names. If a MEP instance terminates with an fault, then the http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason property will contain an value identifying the fault.

2.7.1 Behaviour of Sending SOAP Node

The sending node MUST formulate a JMS request, make it available in the http://www.w3.org/2003/05/soap/mep/OutboundMessage property, and send it to the destination identified by http://www.w3.org/2003/05/soap/mep/ImmediateDestination.

The message must be created as a JMS BytesMessage as per section 4 above. A number of the message header properties are implicitly created by the use of the JMS API, the following table specifies how the properties described earlier explicitly affect the message constructed.

If the Sender receives a message transmission failure, then the http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason property is set to transmissionFailure and the message exchange is terminated with a fault.

Editorial note: pse20080521
Strong statement. I'm familiar with the SOAP1.1 1-way can a SOAP 1.2 1-way return faults to the client, or is it fire and forget
Table 2-4. Sending SOAP Node Values
FieldValue Set by Conforming Client
JMS Message Header
JMSDeliveryModethe value of the deliveryMode property or not set if not specified
JMSExpirationcalculated from the value of the timeToLive property or not set if not specified
JMSPrioritythe value of the priority property or not set if not specified
JMSDestinationderived from the destinationName property
JMS Message properties
SOAPJMS_requestIRIthis is derived from the requestIRI property
SOAPJMS_bindingVersionthis is copied from the bindingVersion property
SOAPJMS_soapActionthe value of the soapAction property or not set if not specified
SOAPJMS_targetServicethe value of the targetService property or not set if not specified
SOAPJMS_contentTypeinferred from the SOAP Envelope and presence of attachments.
JMS Message Body
bodyA SOAP envelope is serialized according to the media type specified in the JMS Message property SOAPJMS_contentType.

Editorial note: pse20080521
Strong testable statements.

2.7.2 Behaviour of Receiving SOAP Node

A receiving node MUST validate an inbound message, and if it determines that the message is successfully received, it MUST populate http://www.w3.org/2003/05/soap/mep/InboundMessage with the received message. It MUST then process the message in http://www.w3.org/2003/05/soap/mep/InboundMessage

If the Receiving SOAP Node receives a message receipt failure, or the inbound message is not valid then the http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason property MAY be set to transmissionFailure. The message exchange should terminate, and control over the message exchange context should return to the local SOAP node. (Note, however, that in many cases where receipt is unsuccessful, information identifying the message or its sender may be unreliable, in which case there may be little if any value in reflecting a message-specific fault.)

Editorial note: pse20080521
Untestable?

2.8 Faults

The SOAP fault subcodes listed throughout this document, and consolidated here, include:

Editorial note: pse20080521
No strong statements here about whether they are required? All testable however

The above subcodes are the local name in the soapjms namespace, appearing, for example, as soapjms:malformedRequestIRI.

In SOAP 1.2, the subcodes above are used as-is in the env:Value element of the env:Subcode for a SOAP Fault. The following shows an example of a SOAP 1.2 Fault payload with the contentTypeMismatch subcode:

Example 2-1. SOAP 1.2 Fault payload with the contentTypeMismatch subcode

<env:Envelope
   xmlns:env="http://www.w3.org/2003/05/soap-envelope"
   xmlns:soapjms="http://www.w3.org/@@@@/@@/soapjms"
   xmlns:xml="http://www.w3.org/XML/1998/namespace">
 <env:Body>
  <env:Fault>
   <env:Code>
     <env:Value>env:Sender</env:Value>
     <env:Subcode>
      <env:Value>soapjms:contentTypeMismatch</env:Value>
     </env:Subcode>
   </env:Code>
   <env:Reason>
     <env:Text xml:lang="en">The content type of the JMS payload does 
                             not match the XML.</env:Text>
   </env:Reason>
   <env:Detail>
     <m:MaxTime>P5M</m:MaxTime>
   </env:Detail>    
  </env:Fault>
 </env:Body>
</env:Envelope>

This specification does not mandate any particular text for the env:Text child element of the env:Reason element.

The SOAP 1.1 specification does not support subcodes directly. In that scenario, the detail element should have a single child element with the namespace and local name of that matches the subcode for SOAP 1.2. The same error as above, shown in SOAP 1.1:

Example 2-2. SOAP 1.1 Fault payload with the contentTypeMismatch subcode

<env:Envelope
     xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Body>
       <env:Fault>
           <faultcode>SOAP-ENV:Client</faultcode>
           <faultstring>Client Error</faultstring>
           <detail>
               <soapjms:contentTypeMismatch 
                  xmlns:soapjms="http://www.w3.org/@@@@/@@/soapjms" />
           </detail>
       </env:Fault>
   </env:Body>
</env:Envelope>

An implementation MAY choose to put a textual description as the contents of the element within the detail section. A portion of the above example with this change follows:

<env:detail>
   <soapjms:contentTypeMismatch 
        xmlns:soapjms="http://www.w3.org/@@@@/@@/soapjms">
     The content type of the JMS payload does not match the XML.
   </soapjms:contentTypeMismatch>
</env:detail>

3. WSDL Usage

3.1 Overview

These next sections describe how to indicate the use of SOAP over JMS in WSDL. We begin with complete examples, and then describe the individual pieces and parts in the sections which follow.

The associated SOAP Underlying Transport Binding above contains the actual rules by which SOAP messages are sent and received using the Java Message Service. This section indicates how WSDL can be used to indicate the use and control the operation of that binding.

For general information on extending SOAP bindings in WSDL, please refer section 3, SOAP Binding, WSDL 1.1. For information about accepted SOAP 1.2 bindings, see WSDL 1.1 for SOAP 1.2. For information about SOAP bindings in WSDL 2.0 see [WSDL 2.0 Adjuncts].

3.2 WSDL 1.1 Extensions Overview

  • The transport attribute of the wsdl11soap11:binding or wsdl11soap12:binding element gets a new URL reflecting a JMS transport.

  • Allows use of SOAPAction header, even though it is explicitly disallowed by WSDL specification.

  • Defines how to set various properties to control the behavior (connection parameters, runtime setting) of the binding.

  • Locates the service using a JMS IRI.

3.3 WSDL 2.0 Extensions Overview

  • The wsoap:protocol attribute of the binding element gets a new URL reflecting a JMS transport.

  • Defines how to set various properties to control the behavior (connection parameters, runtime setting) of the binding.

  • Locates the service using a JMS IRI.

3.4 WSDL 1.1 Extensions Detail

3.4.1 Example

Note:

This section is non-normative.

The [WSDL 1.1] specification includes in section 1.2, WSDL Document Example, the example Example 1 SOAP 1.1 Request/Response via HTTP.

The following example illustrates a new service description which assumes the original service available over HTTP is also made available over JMS.

Lines 14-33 are a new binding for specifying that JMS is to be used, line 15 shows the transport URI in <wsdl11soap11:binding>, and lines 17-22 show the extension properties in the <wsdl11soap11:binding>.

Lines 40-42 are also additions to specify the location at which this new implementation exists. Line 41 shows the JMS IRI Scheme jms: in the <wsdl11soap11::address>.

Example 3-1. WSDL 1.1 JMS Binding

1     <wsdl11:binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
2        <wsdl11soap11:binding style="document" 
                transport="http://schemas.xmlsoap.org/soap/http"/>
3         <wsdl11:operation name="GetLastTradePrice">
4            <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
5           <wsdl11:input>
6               <wsdl11soap11:body use="literal"/>
7            </wsdl11:input>
8           <wsdl11:output>
9               <wsdl11soap11:body use="literal"/>
10          </wsdl11:output>
11        </wsdl11:operation>
12    </wsdl11:binding>
13
14   <wsdl11:binding name="StockQuoteSoapJMSBinding" type="tns:StockQuotePortType" 
              xmlns:soapjms="http://www.w3.org/@@@@/@@/soapjms">
15       <wsdl11soap11:binding style="document" 
              transport="http://www.w3.org/@@@@/@@/soapjms"/>
16
17       <!-- We want this binding to use a particular CF class -->
18       <soapjms:jndiConnectionFactoryName>
19         sample.jms.ConnectionFactory
20       </soapjms:jndiConnectionFactoryName>
21       <!-- Specify PERSISTENT delivery mode -->
22       <soapjms:deliveryMode>PERSISTENT</soapjms:deliveryMode>
23
24       <wsdl11:operation name="GetLastTradePrice">
25         <wsdl11soap11:operation soapAction="http://example.com/GetLastTradePrice"/>
26         <wsdl11:input>
27             <wsdl11soap11:body use="literal"/>
28         </wsdl11:input>
29         <wsdl11:output>
30             <wsdl11soap11:body use="literal"/>
31          </wsdl11:output>
32       </wsdl11:operation>
33   </wsdl11:binding>
34
35   <wsdl11:service name="StockQuoteService">
36       <wsdl11:documentation>My first service</wsdl11:documentation>
37       <wsdl11:port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
38           <wsdl11soap11:address location="http://example.com/stockquote"/>
39       </wsdl11:port>
40       <wsdl11:port name="StockQuotePort_jms" binding="tns:StockQuoteSoapJMSBinding">
41           <wsdl11soap11:address location="jms:jndi:myQueue?targetService=stockquote"/>
42       </wsdl11:port>
43   </wsdl11:service>

The key points to notice are:

  • The transport URI in <wsdl11soap11:binding> (line 15)

  • The jms: IRI in the <wsdl11soap11:address> (line 41)

  • The extension properties in the <wsdl11soap11:binding> (lines 17-22)

3.4.2 WSDL 1.1 Transport Identification

The wsdl11soap11:binding element has a transport attribute. The developer indicates the use of the SOAP/JMS binding by putting http://www.w3.org/@@@@/@@/soapjms as the value of the transport.

Example 3-2. SOAP 1.1 Binding for WSDL 1.1 Transport Identification

<wsdl11soap11:binding style="document" 
                 transport="http://www.w3.org/@@@@/@@/soapjms"/>

3.4.3 WSDL 1.1 SOAP Action

The wsdl11soap11:operation portion of the WSDL specification explicitly disallows use of the soapAction attribute in non-HTTP bindings. This specification supersedes that requirement, and allows the use of soapAction in the wsdl11soap11:operation element for SOAP/JMS bindings. This value corresponds to the property soapAction.

3.4.4 Specifying Properties In WSDL 1.1

Various JMS properties described in the SOAP/JMS binding specification may be set in three places in the WSDL — the binding, the service, and the port. Values specified at the service will propagate to all ports/endpoints. Values specified at the binding will propagate to all ports/endpoints using that binding. For example, the jndiInitialContextFactory may be indicated for a wsdl11:service, and it is then implied for all of the contained wsdl11:port elements.

If a property is specified at multiple levels, the most specific setting will take precedence (port first, then service, then binding). In the following example, notice the timeToLive property — for the quickPort port, the value will be 10 (specified at the port level). For the slowPort port, the value will be 100 (specified at the service level). The setting in the binding is, in this example, always overridden.

Example 3-3. Specifying Properties in WSDL 1.1

<wsdl11:binding name="exampleBinding">
  ...
  <soapjms:timeToLive>200</soapjms:timeToLive>
</wsdl11:binding>

<wsdl11:service name="exampleService">
  <soapjms:jndiInitialContextFactory>
    com.example.jndi.InitialContextFactory
  </soapjms:jndiInitialContextFactory>
  <soapjms:timeTolive>100</soapjms:timeToLive>
  ...
  <wsdl11:port name="quickPort" binding="tns:exampleBinding">
    ...
    <soapjms:timeToLive>10</soapjms:timeToLive>
  </wsdl11:port>
  <wsdl11:port name="slowPort" binding="tns:exampleBinding">
    ...
  </wsdl11:port>
</wsdl11:service>

3.4.5 Specifying Properties Via the JMS IRI

Some of the above information can be put in the IRI [URI Scheme for JMS]. When expressing properties from the SOAP/JMS binding in the IRI, you do not need the namespace prefix — just use the property name, such as "priority".

This IRI, in turn, is represented as the location attribute on the <wsdl11soap11:address> element. Note that with SOAP 1.2, the same pattern applies, although the "soap" prefix corresponds to the SOAP 1.2 binding namespace http://schemas.xmlsoap.org/wsdl/soap12/ as established by [WSDL 1.1 for SOAP 1.2]

Properties expressed in the IRI [IETF RFC 3987] override any values set in the markup as described above.

Example 3-4. Specifying WSDL 1.1 Properties Via the JMS IRI

<wsdl11:port .... >
       <wsdl11soap11:address location="jms:jndi:destinationName?targetService=service1"/> 
</wsdl11:port>

3.5 WSDL 2.0 Extensions Detail

Section 3.4 WSDL 1.1 Extensions Detail illustrates how a service originally available over HTTP is made available over JMS using WSDL 1.1. This section illustrates how to indicate the configuration for using SOAP over JMS with WSDL 2.0

(01) <wsdl20:binding
(02)    name="StockQuoteSoapJMSBinding" interface="tns:StockQuoteInterface" 
(03)    type="http://www.w3.org/2006/01/wsdl/soap"
(04)    wsoap:protocol="http://www.w3.org/@@@@/@@/soapjms"
   xmlns:soapjms="http://www.w3.org/@@@@/@@/soapjms">
(05)   
(06)   <!-- We want this binding to use a particular CF class -->
(07)   <soapjms:jndiConnectionFactoryName>
(08)     sample.jms.ConnectionFactory
(09)   </soapjms:jndiConnectionFactoryName>
(10)   <!-- Specify PERSISTENT delivery mode -->
(11)   <soapjms:deliveryMode>PERSISTENT</soapjms:deliveryMode>
(12) </wsdl20:binding>
(13) 
(14) <wsdl20:service name="StockQuoteService" interface="tns:StockQuoteInterface">
(15)   <wsdl20:documentation>My first service</wsdl20:documentation>
(16)   <wsdl20:endpoint name="SOAPHTTP" binding="tns:StockQuoteSoapHTTPBinding"
(17) 	    address="http://example.com/stockquote"/>
(18)   <wsdl20:endpoint name="JMS" binding="tns:StockQuoteSoapJMSBinding"
(19) 	    address="jms:jndi:myQueue/stockquote"/>
(20) </wsdl20:service>

Line 4 shows the protocol URI in the wsoap:protocol attribute of the <binding>, which indicates that this SOAP over JMS binding is in use.

Lines 7-11 show the use of WSDL 2.0 extension elements to set some of the properties of the connection. In this case, you see the <soapjms:jndiConnectionFactoryName> and <soapjms:deliveryMode> elements defining the values for the jndiConnectionFactoryName and deliveryMode properties. More generally, each allowed property may be expressed as a WSDL 2.0 extension element, typed appropriately for that property's value space. For example, on line 11 above, <soapjms:deliveryMode> is of type xsd:string. This XML representation then surfaces in the WSDL 2.0 Component Model (see next section) as an extension property.

Lines 18-19 are also additions to specify the location at which this new implementation exists. Line 19 showing the JMS IRI Scheme jms: in the address attribute of the <endpoint> element. As with the WSDL 1.1 binding, you may also set connection properties in the IRI.

3.6 Properties

Table 3-1 lists the SOAP/JMS properties which are declarable in WSDL documents.

Table 3-1. SOAP/JMS properties which are declarable in WSDL 1.1 and WSDL 2.0 documents
Property localNameValid WSDL Locations
jndiConnectionFactoryNameservice, port/endpoint, binding
jndiInitialContextFactoryservice, port/endpoint, binding
jndiURLservice, port/endpoint, binding
deliveryModeservice, port/endpoint, binding
priorityservice, port/endpoint, binding
timeToLiveservice, port/endpoint, binding
replyToNameservice, port/endpoint, binding
soapActionbinding operation

3.6.1 Relationship to WSDL 2.0 Component Model

WSDL 2.0 is described abstractly in terms of a component model. Extensions such as the SOAP/JMS binding extend the predefined components with new properties and/or components.

For this specification, each property in the table above adds a WSDL Component Model Property with the same name to the containing WSDL 2.0 component. For instance, if the <deliveryMode> extension element appeared underneath the <service> element in a WSDL 2.0 description, it would result in a deliveryMode property added to the Service component.

3.6.1.1 Precedence

Since the same property can be specified in multiple places, we need precedence rules, and in fact they are exactly as specified in section 3.4.4 Specifying Properties In WSDL 1.1. The most-specific setting overrides less-specific ones, so endpoint wins over service, which wins over binding. For a particular interaction, you may search for a given property on the Endpoint component, then Service, then Binding, taking whichever value you find first.

A. References

[IETF RFC 2045]
Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, N. Freed, N. Borenstein, Authors. Internet Engineering Task Force, November 1996. Available at http://www.ietf.org/rfc/rfc2045.txt.
[IETF RFC 2119]
Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, Author. Internet Engineering Task Force, March 1997. Available at http://www.ietf.org/rfc/rfc2119.txt.
[IETF RFC 3987]
Internationalized Resource Identifiers (IRIs) , M. Duerst and M. Suignard, Authors. Internet Engineering Task Force, January 2005. Available at http://www.ietf.org/rfc/rfc3987.txt.
[Java Message Service]
Java Message Service (JMS) 1.1, M. Hapner, et. al., Authors. Sun Microsystems, Inc., 12 April 2002. Available at http://java.sun.com/products/jms/docs.html
[URI Scheme for JMS]
URI Scheme for Java™ Message Service 1.0, D. Xiao, R. Merrick, P. Easton, and D. Rokicki, Authors. Internet Engineering Task Force, 22 April 2008. Available at http://www.ietf.org/internet-drafts/draft-merrick-jms-iri-03.txt
[SOAP Messages with Attachments]
SOAP Messages with Attachments, John Barton, Satish Thatte, and Henrik Frystyk Nielsen, Authors. Hewlett Packard Labs, Microsoft Corporation, 11 December 2000. Available at http://www.w3.org/TR/SOAP-attachments
[SOAP 1.1 Binding for MTOM 1.0]
SOAP 1.1 Binding for MTOM 1.0, Dimitar Angelov, et. al., Authors. International Business Machines Corporation, Microsoft Corporation, Inc., Oracle Corp. and SAP AG, 5 April 2006. Available at http://www.w3.org/Submission/soap11mtom10/
[SOAP MTOM]
SOAP Message Transmission Optimization Mechanism, N. Mendelsohn, M. Nottingham, and H. Ruellan, Editors. World Wide Web Consortium, W3C Recommendation, 25 January 2005. This version of SOAP Message Transmission Optimization Mechanism is http://www.w3.org/TR/2005/REC-soap12-mtom-20050125/. The latest version of the "SOAP Message Transmission Optimization Mechanism" document is available from http://www.w3.org/TR/soap12-mtom/.
[SOAP 1.2 Email Binding]
SOAP Version 1.2 Email Binding, Highland Mary Mountain, Jacek Kopecky, Stuart Williams, Glen Daniels, and Noah Mendelsohn, Authors. World Wide Web Consortium, 3 July 2002. Available at http://www.w3.org/TR/2002/NOTE-soap12-email-20020703
[SOAP 1.1]
Simple Object Access Protocol (SOAP) 1.1, D. Box, et al, Editors. DevelopMentor, International Business Machines Corporation, Lotus Development Corporation, Microsoft, and UserLand Software, 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, revised 27 April 2007. This version of the SOAP Version 1.2 Part 1: Messaging Framework Recommendation is http://www.w3.org/TR/2007/REC-soap12-part1-20070427/. The latest version of SOAP Version 1.2 Part 1: Messaging Framework is available at http://www.w3.org/TR/soap12-part1/.
[SOAP 1.2 Part 2: Adjuncts]
SOAP Version 1.2 Part 2: Adjuncts (Second Edition), M. Gudgin, et al., Editors. World Wide Web Consortium, 24 June 2006, revised 27 April 2007. This version of the "SOAP Version 1.2 Part 2: Adjuncts (Second Edition)" Recommendation is http://www.w3.org/TR/2007/REC-soap12-part2-20070427/. The latest version of "SOAP Version 1.2 Part 2: Adjuncts" is available at http://www.w3.org/TR/soap12-part2/.
[SOAP 1.2 Part 3: One-Way MEP]
SOAP 1.2 Part 3: One-Way MEP, David Orchard, Author. World Wide Web Consortium, 2 July 2007. Available at http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702/
[WSDL 1.1]
Web Services Description Language (WSDL) 1.1, E. Christensen, et al, Authors. Ariba, International Business Machines Corporation, and Microsoft, 15 March 2001. Available at http://www.w3.org/TR/2001/NOTE-wsdl-20010315.
[WSDL 1.1 for SOAP 1.2]
WSDL 1.1 Binding Extension for SOAP 1.2, D. Angelov, et al, Authors. International Business Machines Corporation, Microsoft Corporation, Inc., Oracle Corp. and SAP AG, 5 April 2006.  Available at http://www.w3.org/Submission/2006/SUBM-wsdl11soap12-20060405/.
[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, 26 June 2007. This version of the WSDL 2.0 specification is http://www.w3.org/TR/2007/REC-wsdl20-20070626/. The latest version of WSDL 2.0 is available at http://www.w3.org/TR/wsdl20/.
[WSDL 2.0 Adjuncts]
Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts, R. Chinnici, H. Haas, A. Lewis, J-J. Moreau, D. Orchard, S. Weerawarana, Editors. World Wide Web Consortium, 26 June 2007. This version of the "Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts" Recommendation is available at http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626. The latest version of "Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts" is available at http://www.w3.org/TR/wsdl20-adjuncts.
[XML 1.0]
Extensible Markup Language (XML) 1.0 (Fourth Edition), T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, and François Yergeau, Editors. World Wide Web Consortium, 10 February 1998, revised 16 August 2006. This version of the XML 1.0 Recommendation is http://www.w3.org/TR/2006/REC-xml-20060816. The latest version of XML 1.0 is available at http://www.w3.org/TR/REC-xml.
[XML Namespaces]
Namespaces in XML 1.0, T. Bray, D. Hollander, A. Layman, and R. Tobin, Editors. World Wide Web Consortium, 14 January 1999, revised 16 August 2006. This version of the Namespaces in XML Recommendation is http://www.w3.org/TR/2006/REC-xml-names-20060816/. The latest version of Namespaces in XML is available at http://www.w3.org/TR/REC-xml-names.
[XML Schema Structures]
XML Schema Part 1: Structures Second Edition, H. Thompson, D. Beech, M. Maloney, and N. Mendelsohn, Editors. World Wide Web Consortium, 2 May 2001, revised 28 October 2004. This version of the XML Schema Part 1 Recommendation is http://www.w3.org/TR/2004/REC-xmlschema-1-20041028. The latest version of XML Schema Part 1 is available at http://www.w3.org/TR/xmlschema-1.
[XML Schema Datatypes]
XML Schema Part 2: Datatypes Second Edition, P. Byron and A. Malhotra, Editors. World Wide Web Consortium, 2 May 2001, revised 28 October 2004. This version of the XML Schema Part 2 Recommendation is http://www.w3.org/TR/2004/REC-xmlschema-2-20041028. The latest version of XML Schema Part 2 is available at http://www.w3.org/TR/xmlschema-2.

B. SOAP/JMS Underlying Protocol Binding Examples (Non-Normative)

The JMS message consists of three parts, the first of these is the Message Header that contains a set of fields defined in the JMS specification, the second part is a set of properties that represent optional header fields the last part is the Message Body.

Example B-1. JMS IRI

jms:jndi:news?targetService=current-affairs
        &jndiConnectionFactory=SOAPJMSFactory
        &deliveryMode=PERSISTENT
        &priority=8
        &replyToName=interested
        &userprop=mystuff

B.1 SOAP Request without attachments

The IRI in Example B-1 will become:

Table B-1. JMS Message Header Values
Fieldvaluecomments
JMSMessage classjms_bytesa fixed value
JMSTypenull
JMSDeliveryMode2
JMSExpiration0
JMSPriority8
JMSMessageIDID:d438e0000001
JMSTimestamp1092110476167
JMSCorrelationIDnull
JMSDestinationA Destination objectresolved by JNDI from the destination name news
JMSReplyToA Destination objectresolved by JNDI from the destination name interested
JMSRedeliveredfalse

Table B-2. JMS Message Properties Values
Fieldvaluecomments
SOAPJMS_bindingVersion1.0
SOAPJMS_targetServicecurrent-affairsthis is derived from the targetService property
SOAPJMS_requestIRIjms:jndi:news?userprop=mystuffthis is derived from the requestIRI property
SOAPJMS_contentTypeapplication/soap+xmlinferred from the SOAP Envelope and absence of attachments. In this case it is SOAP 1.2

The following represents a human readable version of the JMS message body:

Example B-2. Representation of a JMS SOAP 1.2 Request without attachments

<env:Envelope
      xmlns:env="http://www.w3.org/2003/05/soap-envelope" 
      xmlns='http://example.org/MyApplication'
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <env:Body env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
       <postMessage>
         <ngName xsi:type="xsd:string">news.current.events</ngName>
         <msg xsi:type="xsd:string">This is a sample news item.</msg>
       </postMessage>
    </env:Body>
</env:Envelope>

B.2 SOAP Request with attachments

The IRI in Example B-1 will become:

Table B-3. JMS Message Header Values
Fieldvaluecomments
JMSMessage classjms_bytesa fixed value
JMSTypenull
JMSDeliveryMode2
JMSExpiration0
JMSPriority8
JMSMessageIDID:d438e0000001
JMSTimestamp1092110476167
JMSCorrelationIDnull
JMSDestinationA Destination object resolved by JNDI from the destination name news
JMSReplyToA Destination object resolved by JNDI from the destination name interested
JMSRedeliveredfalse

Table B-4. JMS Message Properties Values
Fieldvaluecomments
SOAPJMS_bindingVersion1.0
SOAPJMS_targetServicecurrent-affairsderived from the targetService property
SOAPJMS_requestIRIjms:jndi:news?userprop=mystuffderived from the requestIRI property
SOAPJMS_contentTypemultipart/related type="application/xop+xml"; boundary="--MIME_boundary"inferred from the SOAP Envelope and presence attachments. In this case it is SOAP 1.2

The following represents a human readable version of the JMS message body:

Example B-3. Representation of a JMS SOAP 1.2 Request with attachments

MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
    type="application/xop+xml";
    start="<945414389.1092086011970>";
    startinfo="application/soap+xml"

--MIME_boundary
Content-Type: application/xop+xml; 
    charset=UTF-8; 
    type="application/soap+xml"
Content-Transfer-Encoding: 8bit
Content-ID: <945414389.1092086011970>

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" 
  xmlns:xop='http://www.w3.org/2004/08/xop/include' 
  xmlns='http://example.org/MyApplication'
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xmlmime="http://www.w3.org/2005/05/xmlmime"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <env:Body env:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <postMessage>
      <ngName xsi:type="xsd:string">news.current.events</ngName>
      <msg xsi:type="xsd:string">This is a sample news item.</msg>
      <photo xmlmime:contentType='image/png'><xop:Include 
        href='cid:http://example.org/photo.png'/></photo>
    </postMessage>
  </env:Body>
</env:Envelope>
--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-Id: <http://example.org/photo.png>

[n lines omitted]
--MIME_boundary

C. Acknowledgements (Non-Normative)

This document is the work of the W3C SOAP-JMS Binding Working Group.

Members of the Working Group are (at the time of writing, and by alphabetical order): Phil Adams (IBM Corporation), Glen Daniels (WSO2), Peter Easton (Progress Software), Mark Hapner (Sun Microsystems, Inc.), Eric Johnson (TIBCO Software, Inc.), Yves Lafon (W3C/ERCIM), Philippe Le Hégaret (W3C/MIT), Amelia Lewis (TIBCO Software, Inc.), Bhakti Mehta (Sun Microsystems, Inc.), Roland Merrick (IBM Corporation), Mark Phillips (IBM Corporation), Derek Rokicki (Software AG).

Previous members of the Working Group were: Dongbo Xiao.

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

The original contributors to the SOAP over Java™ Message Service 1.0 W3C Member Submission: Phil Adams (IBM); Glen Daniels (WSO2); Peter Easton (Progress Software); Tim Frank (Software AG); Lei Jin (BEA Systems, Inc.); Eric Johnson (TIBCO Software Inc.); Vinod Kumar (BEA Systems, Inc.); Amelia A. Lewis (TIBCO Software Inc.); David Orchard (BEA Systems, Inc.); Roland Merrick (IBM); Mark Phillips (IBM); Stephen Todd (IBM); Dongbo Xiao (BEA Systems, Inc.) and Prasad Yendluri (Software AG).

D. Change Log (Non-Normative)

DateEditorDescription
2008-05-01plehegar Using latest version for WSDL 2.0 references
2008-05-01plehegar Added support for CVS changelog
2008-05-01plehegar Moved section 2.9 into non-normative appendix. Updated the references section (now normative). Added table and example headers. Fixed/added bibref. Using SOAP 1.2 instead of SOAP 1.1 in example. Added XML Namespaces section.
2008-04-22plehegar New
--=_mixed 004927BE80257451_Content-Type: application/octet-stream; name="soapjms.xml" Content-Disposition: attachment; filename="soapjms.xml" Content-Transfer-Encoding: base64 77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhLS0gJElkOiBzb2Fw am1zLnhtbCx2IDEuNCAyMDA4LTA1LTAxIDE5OjE2OjQ4IHBsZWhlZ2FyIEV4cCAkIC0tPg0KPCFE T0NUWVBFIHNwZWMgUFVCTElDICItLy9XM0MvL0RURCBTcGVjaWZpY2F0aW9uIFYyLjEwLy9FTiIg InhtbHNwZWMuZHRkIiBbDQo8IUVOVElUWSBwcmVmaXggInNvYXBqbXMiPg0KPCFFTlRJVFkgJSBl bnRpdGllcyBTWVNURU0gImVudGl0aWVzLmR0ZCIgPg0KJWVudGl0aWVzOw0KPCFFTlRJVFkgc3Rh dHVzIFNZU1RFTSAic3RhdHVzLnhtbCI+DQo8IUVOVElUWSBkb2N1bWVudC5zdGF0dXMgIkVkaXRv cnMnIGNvcHkgJERhdGU6IDIwMDgtMDUtMDEgMTk6MTY6NDggJCI+DQo8IUVOVElUWSB0aXRsZSAi JnRpdGxlOyI+DQo8IUVOVElUWSBwcmV2bG9jICJAQEAiPg0KPCFFTlRJVFkgaGVsbGlwICImIzgy MzA7Ij4NCjwhRU5USVRZIHRyYWRlICImI3gyMTIyOyI+DQo8IUVOVElUWSBtZGFzaCAiJiN4MjAx NDsiPg0KXT4NCjw/eG1sLXN0eWxlc2hlZXQgdHlwZT0ndGV4dC94c2wnIGhyZWY9J3htbHNwZWMt c29hcGptcy54c2wnPz4NCjxzcGVjIHczYy1kb2N0eXBlPSImZG9jdHlwZTsiIHJvbGU9IiZkb2N1 bWVudC5yb2xlOyI+DQogIDxoZWFkZXI+DQogICAgPHRpdGxlPiZ0aXRsZTs8L3RpdGxlPg0KICAg IDx3M2MtZGVzaWduYXRpb24+JnczYy1kZXNpZ25hdGlvbjs8L3czYy1kZXNpZ25hdGlvbj4NCiAg ICA8dzNjLWRvY3R5cGU+JmRvY3VtZW50LnN0YXR1czs8L3czYy1kb2N0eXBlPg0KICAgIDxwdWJk YXRlPg0KICAgICAgPGRheT4mZHJhZnQuZGF5OzwvZGF5Pg0KICAgICAgPG1vbnRoPiZkcmFmdC5t b250aDs8L21vbnRoPg0KICAgICAgPHllYXI+JmRyYWZ0LnllYXI7PC95ZWFyPg0KICAgIDwvcHVi ZGF0ZT4NCiAgICA8cHVibG9jPg0KICAgICAgPGxvYyBocmVmPSImdzNjLWRlc2lnbmF0aW9uOyI+ JnczYy1kZXNpZ25hdGlvbjs8L2xvYz4NCiAgICA8L3B1YmxvYz4NCjwhLS0NCgk8cHJldmxvY3M+ DQoJICA8bG9jIGhyZWY9IiZwcmV2bG9jOyI+JnByZXZsb2M7PC9sb2M+DQogICAgICAgIDwvcHJl dmxvY3M+DQotLT4NCiAgICA8bGF0ZXN0bG9jPg0KICAgICAgPGxvYyBocmVmPSImbGF0ZXN0OyI+ JmxhdGVzdDs8L2xvYz4NCiAgICA8L2xhdGVzdGxvYz4NCiAgICA8YXV0aGxpc3QgaWQ9ImF1dGhv cnMiPg0KICAgICAgPGF1dGhvcj48bmFtZT5KYWJiYSBEZXNpbGlqaWMgVGl1cmU8L25hbWU+DQog ICAgICA8YWZmaWxpYXRpb24+Q3JpbWluYWw8L2FmZmlsaWF0aW9uPg0KICAgICAgPC9hdXRob3I+ DQogICAgPC9hdXRobGlzdD4NCiAgICANCiAgICA8YWJzdHJhY3Q+DQogICAgICA8cD4NCglUaGlz IGRvY3VtZW50IHNwZWNpZmllcyBob3cgU09BUCBzaG91bGQgYmluZCB0byBhIG1lc3NhZ2luZw0K CXN5c3RlbSB0aGF0IHN1cHBvcnRzIHRoZSBKYXZhJnRyYWRlOyBNZXNzYWdlIFNlcnZpY2UgKEpN UykNCglbPGJpYnJlZiByZWY9ImptcyIgLz5dLiBCaW5kaW5nIGlzIHNwZWNpZmllZCBmb3IgYm90 aCBTT0FQIDEuMQ0KCVs8YmlicmVmIHJlZj0ic29hcDExIiAvPl0gYW5kIFNPQVAgMS4yIFs8Ymli cmVmIHJlZj0ic29hcDEyIiAvPl0NCgl1c2luZyB0aGUgU09BUCAxLjIgUHJvdG9jb2wgQmluZGlu ZyBGcmFtZXdvcmsuDQogICAgPC9wPg0KICAgIA0KICAgIDwvYWJzdHJhY3Q+DQogICAgDQogICAg JnN0YXR1czsNCiAgICANCiAgICA8bGFuZ3VzYWdlPg0KICAgICAgPGxhbmd1YWdlPkVuZ2xpc2g8 L2xhbmd1YWdlPg0KICAgIDwvbGFuZ3VzYWdlPg0KICAgIDxyZXZpc2lvbmRlc2M+DQogICAgICA8 cD5MYXN0IE1vZGlmaWVkOiAkRGF0ZTogMjAwOC0wNS0wMSAxOToxNjo0OCAkPC9wPg0KICAgIDwv cmV2aXNpb25kZXNjPg0KICA8L2hlYWRlcj4NCiAgDQogIDxib2R5Pg0KICAgIA0KICAgIDxkaXYx IGlkPSJpbnRyb2R1Y3Rpb24iPg0KICAgICAgPGhlYWQ+SW50cm9kdWN0aW9uPC9oZWFkPg0KICAg ICAgDQogICAgICA8ZGl2MiBpZD0iaW50cm9kdWN0aW9uLWJhY2tncm91bmQiPg0KCTxoZWFkPkJh Y2tncm91bmQ8L2hlYWQ+DQoJPHA+VGhlIHdvcmsgZGVzY3JpYmVkIGluIHRoaXMgYW5kIHJlbGF0 ZWQgZG9jdW1lbnRzIGlzIGFpbWVkDQoJYXQgYSBzZXQgb2Ygc3RhbmRhcmRzIGZvciB0aGUgdHJh bnNwb3J0IG9mIFNPQVAgbWVzc2FnZXMgb3Zlcg0KCUpNUyBbPGJpYnJlZiByZWY9ImptcyIgLz5d LiBUaGUgbWFpbiBwdXJwb3NlIGlzIHRvIGVuc3VyZQ0KCWludGVyb3BlcmFiaWxpdHkgYmV0d2Vl biB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGRpZmZlcmVudCBXZWINCglzZXJ2aWNlcyB2ZW5kb3Jz LiBJdCBzaG91bGQgYWxzbyBlbmFibGUgY3VzdG9tZXJzIHRvIGltcGxlbWVudA0KCXRoZWlyIG93 biBXZWIgc2VydmljZXMgZm9yIHBhcnQgb2YgdGhlaXIgaW5mcmFzdHJ1Y3R1cmUsIGFuZA0KCXRv IGhhdmUgdGhpcyBpbnRlcm9wZXJhdGUgd2l0aCB2ZW5kb3IgcHJvdmlkZWQgV2ViDQoJc2Vydmlj ZXMuIFRoZSBtYWluIGF1ZGllbmNlIHdpbGwgYmUgaW1wbGVtZW50ZXJzIG9mIFdlYg0KCXNlcnZp Y2VzIHN0YWNrczsgaW4gcGFydGljdWxhciBwZW9wbGUgd2hvIHdpc2ggdG8gZXh0ZW5kIGEgV2Vi DQoJc2VydmljZXMgc3RhY2sgd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBTT0FQL0pNUy4gSXQg c2hvdWxkDQoJZW5hYmxlIHRoZW0gdG8gd3JpdGUgYSBTT0FQL0pNUyBpbXBsZW1lbnRhdGlvbiB0 aGF0IHdpbGwNCglpbnRlcm9wZXJhdGUgd2l0aCBvdGhlciBTT0FQL0pNUyBpbXBsZW1lbnRhdGlv bnMsIGFuZCB0aGF0DQoJd2lsbCBub3QgYmUgZGVwZW5kZW50IG9uIGFueSBzcGVjaWZpYyBKTVMg aW1wbGVtZW50YXRpb24uPC9wPg0KDQoJPHA+QSBtb3RpdmF0aW9uYWwgZXhhbXBsZSBpcyBhIGN1 c3RvbWVyIHdobyBoYXMgZGlmZmVyZW50DQoJZGVwYXJ0bWVudHMgdGhhdCB1c2UgV2ViIHNlcnZp Y2VzIGluZnJhc3RydWN0dXJlIGZyb20gdHdvDQoJZGlmZmVyZW50IHZlbmRvcnMsIFZlbmRvckEg YW5kIFZlbmRvckIuIFRoZSBjdXN0b21lciBoYXMgYQ0KCW5lZWQgZm9yIHJlbGlhYmxlIFdlYiBz ZXJ2aWNlcyBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZQ0KCWRlcGFydG1lbnRzLiBXaGVyZSBib3Ro IHRoZXNlIHZlbmRvcnMgcHJvdmlkZSBzdXBwb3J0IGZvcg0KCVNPQVAvSk1TIGFjY29yZGluZyB0 byB0aGlzIHN0YW5kYXJkLCBpdCBzaG91bGQgYmUgcG9zc2libGUgZm9yDQoJYSBjbGllbnQgcnVu bmluZyB1c2luZyBWZW5kb3JBIHRvIGludGVyb3BlcmF0ZSB3aXRoIGEgc2VydmljZQ0KCXVzaW5n IFZlbmRvckIuPC9wPg0KDQoJPHA+VGhlIHN0YW5kYXJkcyB3aWxsIGFsc28gYmUgb2YgaW50ZXJl c3QgdG8gcHJvdmlkZXJzIG9mIFdlYg0KCXNlcnZpY2VzIGludGVybWVkaWFyeSBzZXJ2aWNlcyBz dWNoIGFzIHJvdXRpbmcgZ2F0ZXdheXM7IG9yDQoJU09BUC9IVFRQIHRvIFNPQVAvSk1TIGdhdGV3 YXlzLiBXZSBkbyBub3QgZGlzY3VzcyBhbnkgZGV0YWlscw0KCW9mIGhvdyBzdWNoIGdhdGV3YXlz IHNob3VsZCBiZSBkZXNpZ25lZCBhbmQgY29uZmlndXJlZCwgYnV0DQoJYWRoZXJlbmNlIHRvIHRo ZSBzdGFuZGFyZCB3aWxsIGhlbHAgdGhlIGdhdGV3YXkgZW5zdXJlIHByb3Blcg0KCWludGVyb3Bl cmF0aW9uIHdpdGggU09BUC9KTVMgY2xpZW50cyBhbmQgc2VydmljZXMuPC9wPg0KDQoJPHA+VGhl IGRvY3VtZW50cyBjb3ZlciB0aHJlZSBtYWpvciBhcmVhcy48L3A+DQoJPHVsaXN0Pg0KCSAgPGl0 ZW0+PHA+VGhlIEpNUyBjYWxscyB0aGF0IG11c3QgYmUgbWFkZSB0byBjb25zdHJ1Y3QgYW5kDQoJ ICBpbnRlcnByZXQgU09BUC9KTVMgbWVzc2FnZXMgaW4gPHNwZWNyZWYNCgkgIHJlZj0nc29hcC1i aW5kaW5nJy8+LjwvcD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJ ICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5Ob3RlIHRoYXQgd2Ug bmV2ZXIgYWN0dWFsbHkgc3BlY2lmeSBKTVMgY2FsbHMgaW4gb3VyIGRvY3VtZW50YXRpb24uIERv IHdlIHdhbnQgdG8gYWRkICJtdXN0IGJlIGltcGxpY2l0bHkgbWFkZSIuIExhdGVyIG9uIHdlIG1l bnRpb24gImltcGxpY2l0bHkiPC9lZHRleHQ+DQoJICAgIDwvZWRub3RlPg0KCTwvaXRlbT4NCgkg IDxpdGVtPjxwPlRoZSBXU0RMIGJpbmRpbmcgdGhhdCBtYXkgYmUgdXNlZCB0byBkZXNjcmliZQ0K CSAgU09BUC9KTVMgc2VydmljZXMgaW4gPHNwZWNyZWYNCgkgIHJlZj0nd3NkbC1leHRlbnNpb25z Jy8+LjwvcD48L2l0ZW0+DQoJICA8aXRlbT48cD5UaGUgSVJJIHNwZWNpZmljYXRpb24gZm9yIEpN UyBlbmRwb2ludHMgWzxiaWJyZWYNCgkgIHJlZj0nam1zaXJpJyAvPl0gdG8gYmUgdXNlZCBieSBT T0FQL0pNUyBpbXBsZW1lbnRhdGlvbnMgKGFuZA0KCSAgcG90ZW50aWFsbHkgaW4gb3RoZXIgYXJl YXMgd2hlcmUgYSBKTVMgSVJJIGlzDQoJICByZXF1aXJlZCkuDQoJPC9wPg0KCSAgICA8ZWRub3Rl Pg0KCSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4N CgkgICAgICA8ZWR0ZXh0Pk1pbm9yIElzICJ0byBiZSIgd2Vhaz8gSXMgInRoYXQgbXVzdCBiZSIg YmV0dGVyPy48L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQoJPC9pdGVtPg0KCTwvdWxpc3Q+DQoN Cgk8cD5Ob3RlIHRoYXQgdGhlIElSSSBzcGVjaWZpY2F0aW9uIGlzIGluIGEgc2VwYXJhdGUgZG9j dW1lbnQuPC9wPg0KICAgICAgPC9kaXYyPg0KICAgICAgDQogICAgICA8ZGl2MiBpZD0iaW50cm9k dWN0aW9uLW91dG9mc2NvcGUiPg0KCTxoZWFkPk91dCBvZiBTY29wZTwvaGVhZD4NCgk8cD5JdCBp cyBpbXBvcnRhbnQgdG8gc3RyZXNzIHdoYXQgdGhpcyBzdGFuZGFyZCBkb2VzIE5PVCBwcm92aWRl LjwvcD4NCgk8dWxpc3Q+DQoJICA8aXRlbT48cD5JdCBkb2VzIE5PVCBwcm92aWRlIGFueSBtZWNo YW5pc20gZm9yDQoJICBpbnRlcm9wZXJhdGlvbiBiZXR3ZWVuIHR3byBkaWZmZXJlbnQgSk1TIHBy b3ZpZGVycy4gIEluIHRoZQ0KCSAgZXhhbXBsZSBhYm92ZSwgVmVuZG9yQSBhbmQgVmVuZG9yQiBh cmUgZGlmZmVyZW50IHByb3ZpZGVycw0KCSAgb2YgYSBXZWIgc2VydmljZXMgaW5mcmFzdHJ1Y3R1 cmUsIGJ1dCB0aGUgY3VzdG9tZXIgbXVzdA0KCSAgc3RpbGwgdXNlIGEgc2luZ2xlIGltcGxlbWVu dGF0aW9uIG9mIEpNUyBhdCBib3RoIGNsaWVudCBhbmQNCgkgIHNlcnZpY2Ugc2lkZS48L3A+PC9p dGVtPg0KCSAgPGl0ZW0+PHA+SXQgZG9lcyBOT1QgZGVmaW5lIGFueSAod2lyZSkgZm9ybWF0IGZv ciBTT0FQL0pNUw0KCSAgbWVzc2FnZXMuPC9wPg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1l PnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0 PlRlc3RpbmcgQW5nbGU6IFNvLCB1bmxpa2Ugb3RoZXIgc3RhbmRhcmRzIHRoYXQgc3BlY2lmeSB3 aXJlLWZvcm1hdCBhbmQgdGhhdCB2YWxpZGF0ZSBjb25mb3JtYW5jZSBieSBpbnRlcm1lZGlhcnlz IGUuZy4gVENQIHByb3h5cyBmb3IgV1MtSSBTT0FQL0hUVFAsIHdlIG5lZWQgdG8gaGF2ZSBzb21l IGtpbmQgb2YgZmFjYWRlL2ludGVyY2VwdG9yIGF0IHRoZSBKTVMgbGV2ZWwgcHJvYmFibHkgYXQg dGhlIHBvaW50cyBpbiB3aGljaCBtZXNzYWdlcyBhcmUgcHVibGlzaGVkIGFuZCBjb25zdW1lZCAt IGkuZS4gc2VuZCwgcmVjZWl2ZSwgb25NZXNzYWdlIGxpc3RlbmVyIGF0IHdoaWNoIHRvIHJlY29y ZCBhbmQgdmVyaWZ5IHRoZSBpbnRlcnJhY3Rpb25zIGFuZCBwcm9wZXJ0aWVzLjwvZWR0ZXh0Pg0K CSAgICA8L2Vkbm90ZT4NCgkgPC9pdGVtPg0KCSAgPGl0ZW0+PHA+SXQgZG9lcyBOT1QgZGVmaW5l IGhvdyB0aGUgV2ViIHNlcnZpY2VzIHRoZW1zZWx2ZXMNCgkgIHdpbGwgYmUgcHJlc2VudGVkIHRv IHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyLiAgRm9yDQoJICBleGFtcGxlLCBpdCBkb2VzIG5v dCBkZXNjcmliZSBob3cgdGhlIHByb2dyYW1tZXIgd2lsbA0KCSAgY2hhcmFjdGVyaXNlIGEgb25l LXdheSBtZXNzYWdlLjwvcD48L2l0ZW0+DQoJPC91bGlzdD4NCiAgICAgIDwvZGl2Mj4NCg0KICAg ICAgPGRpdjIgaWQ9ImludHJvZHVjdGlvbi1jb250ZXh0Ij4NCgk8aGVhZD5Db250ZXh0PC9oZWFk Pg0KCTxwPlRoaXMgZG9jdW1lbnQgc3BlY2lmaWVzIGhvdyBTT0FQIHNob3VsZCBiaW5kIHRvIGEg bWVzc2FnaW5nDQoJc3lzdGVtIHRoYXQgc3VwcG9ydHMgdGhlIEphdmEmdHJhZGU7IE1lc3NhZ2Ug U2VydmljZSAoSk1TKQ0KCVs8YmlicmVmIHJlZj0iam1zIiAvPl0uIEJpbmRpbmcgaXMgc3BlY2lm aWVkIGZvciBib3RoIFNPQVAgMS4xDQoJWzxiaWJyZWYgcmVmPSJzb2FwMTEiIC8+XSBhbmQgU09B UCAxLjIgWzxiaWJyZWYgcmVmPSJzb2FwMTIiIC8+XQ0KCXVzaW5nIHRoZSBTT0FQIDEuMiBQcm90 b2NvbCBCaW5kaW5nIEZyYW1ld29yay48L3A+DQoJCQ0KCTxwPlRoZSBhcHByb2FjaCB0YWtlbiBm b3IgdGhpcyBzcGVjaWZpY2F0aW9uIGlzIHRvIG1vZGVsIGl0IG9uDQoJdGhlIGJpbmRpbmcgc3Bl Y2lmaWNhdGlvbnMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBmb3IgU09BUA0KCTEuMi4gVGhlIGZp cnN0IG9mIHRoZXNlIHdhcyBmb3IgYSBTT0FQIEhUVFAgQmluZGluZywgZGVzY3JpYmVkDQoJaW4g c2VjdGlvbiA3LCA8eHNwZWNyZWYNCglocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9zb2FwMTIt cGFydDIvI3NvYXBpbmh0dHAiPlNPQVAgSFRUUA0KCWJpbmRpbmc8L3hzcGVjcmVmPiwgWzxiaWJy ZWYgcmVmPSJzb2FwMTJwMiIgLz5dLiBBIHNlY29uZA0KCWJpbmRpbmcgZm9yIEVtYWlsIFs8Ymli cmVmIHJlZj0iU09BUC1FTUFJTCIgLz5dIGlzIGFsc28NCglhdmFpbGFibGUuPC9wPg0KCQkNCiAg ICAgIDwvZGl2Mj4JCQ0KICAgICAgPGRpdjIgaWQ9ImludHJvZHVjdGlvbi1ub3RhdGlvbiI+DQoJ PGhlYWQ+Tm90YXRpb25hbCBDb252ZW50aW9uczwvaGVhZD4NCgkNCgk8cD4NCgkgIFRoZSBrZXl3 b3JkcyAiPHJmYzIxMTk+TVVTVDwvcmZjMjExOT4iLCAiPHJmYzIxMTk+TVVTVA0KCSAgTk9UPC9y ZmMyMTE5PiIsICI8cmZjMjExOT5SRVFVSVJFRDwvcmZjMjExOT4iLA0KCSAgIjxyZmMyMTE5PlNI QUxMPC9yZmMyMTE5PiIsICI8cmZjMjExOT5TSEFMTA0KCSAgTk9UPC9yZmMyMTE5PiIsICI8cmZj MjExOT5TSE9VTEQ8L3JmYzIxMTk+IiwNCgkgICI8cmZjMjExOT5TSE9VTEQgTk9UPC9yZmMyMTE5 PiIsDQoJICAiPHJmYzIxMTk+UkVDT01NRU5ERUQ8L3JmYzIxMTk+IiwNCgkgICI8cmZjMjExOT5N QVk8L3JmYzIxMTk+IiwgYW5kDQoJICAiPHJmYzIxMTk+T1BUSU9OQUw8L3JmYzIxMTk+IiBpbiB0 aGlzIGRvY3VtZW50IGFyZSB0byBiZQ0KCSAgaW50ZXJwcmV0ZWQgYXMgZGVzY3JpYmVkIGluIFJG QyAyMTE5IFs8YmlicmVmIHJlZj0icmZjMjExOSIvPl0uDQoJPC9wPg0KDQoJPHA+UGFyZW50aGV0 aWMgcmVtYXJrcyBhYm91dCBmYXVsdCBzdWJjb2RlcyBhcmUgbWVudGlvbmVkIHRocm91Z2hvdXQN Cgl0aGUgZG9jdW1lbnQgd2hlcmUgYSBjb25mb3JtYW5jZSBpc3N1ZSBtYXkgcmVzdWx0IGluIGEg ZXJyb3IuIEhvdw0KCXRoZXNlIHN1YmNvZGVzIHNob3VsZCBiZSB0cmVhdGVkIGlzIGRlYWx0IHdp dGggaW4gdGhlIHNlY3Rpb24NCgkiRmF1bHRzIi48L3A+DQoNCgk8ZGl2MyBpZD0iWE1MX05hbWVz cGFjZXMiPg0KCSAgICA8aGVhZD5YTUwgTmFtZXNwYWNlczwvaGVhZD4NCg0KCSAgICA8cD4NCgkg ICAgICBUaGlzIHNwZWNpZmljYXRpb24gdXNlcyBhIG51bWJlciBvZiBuYW1lc3BhY2UgcHJlZml4 ZXMNCgkgICAgICB0aHJvdWdob3V0OyB0aGV5IGFyZSBsaXN0ZWQgaW4gPHNwZWNyZWYNCgkgICAg ICByZWY9Im5zcHJlZml4Ii8+LiBQcm9wZXJ0aWVzIGFyZSBuYW1lZCB3aXRoIDx4c3BlY3JlZg0K CSAgICAgIGhyZWY9J2h0dHA6Ly93d3cudzMub3JnL1RSL3htbC1uYW1lcy8jbnMtcXVhbG5hbWVz Jz5YTUwNCgkgICAgICBxdWFsaWZpZWQgbmFtZXM8L3hzcGVjcmVmPi4gUHJvcGVydHkgdmFsdWVz IGFyZQ0KCSAgICAgIGRldGVybWluZWQgYnkgdGhlIFNjaGVtYSB0eXBlIG9mIHRoZSBwcm9wZXJ0 eSwgYXMNCgkgICAgICBkZWZpbmVkIGluIHRoZSBzcGVjaWZpY2F0aW9uIHdoaWNoIGludHJvZHVj ZXMgdGhlDQoJICAgICAgcHJvcGVydHkuIE5vdGUgdGhhdCB0aGUgY2hvaWNlIG9mIGFueSBuYW1l c3BhY2UgcHJlZml4DQoJICAgICAgaXMgYXJiaXRyYXJ5IGFuZCBub3Qgc2VtYW50aWNhbGx5IHNp Z25pZmljYW50IChzZWUNCgkgICAgICBbPGJpYnJlZiByZWY9IlhNTC1OUyIgLz5dKS4NCgkgICAg PC9wPg0KCSAgDQoJICAgIDx0YWJsZSBzdW1tYXJ5PSJOYW1lc3BhY2UgcHJlZml4ZXMgdXNhZ2Ug aW4gdGhpcyBzcGVjaWZpY2F0aW9uIiBpZD0ibnNwcmVmaXgiDQoJCSBib3JkZXI9IjEiIGNlbGxz cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNSI+DQoJICAgIDxjYXB0aW9uPlByZWZpeGVzIGFuZCBO YW1lc3BhY2VzIHVzZWQgaW4gdGhpcyBzcGVjaWZpY2F0aW9uPC9jYXB0aW9uPg0KCSAgICA8dGhl YWQ+DQoJICAgICAgPHRyPg0KCQk8dGg+UHJlZml4PC90aD4NCgkJPHRoPk5hbWVzcGFjZTwvdGg+ DQoJCTx0aD5TcGVjaWZpY2F0aW9uPC90aD4NCgkgICAgICA8L3RyPg0KCSAgICA8L3RoZWFkPg0K CSAgICA8dGJvZHk+DQoJICAgICAgPHRyPg0KCQk8dGQ+c29hcGptczwvdGQ+DQoJCTx0ZD4mbnN1 cmk7PC90ZD4NCgkJPHRkPkRlZmluZWQgYnkgdGhpcyBzcGVjaWZpY2F0aW9uPC90ZD4NCgkgICAg ICA8L3RyPg0KCSAgICAgIDx0cj4NCgkJPHRkPg0KCQkgIDxjb2RlPnhzZDwvY29kZT4NCgkJPC90 ZD4NCgkJPHRkPg0KCQk8Y29kZT5odHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYTwvY29k ZT4NCgkJPC90ZD4NCgkJPHRkPls8YmlicmVmIHJlZj0iWE1MU2NoZW1hUGFydDEiLz5dPC90ZD4N CgkgICAgICA8L3RyPg0KCSAgICAgIDx0cj4NCgkJPHRkPndzZGwxMTwvdGQ+DQoJCTx0ZD5odHRw Oi8vc2NoZW1hcy54bWxzb2FwLm9yZy93c2RsLzwvdGQ+DQoJCTx0ZD5bPGJpYnJlZiByZWY9Indz ZGwxMSIvPl08L3RkPg0KCSAgICAgIDwvdHI+DQoJICAgICAgPHRyPg0KCQk8dGQ+d3NkbDIwPC90 ZD4NCgkJPHRkPmh0dHA6Ly93d3cudzMub3JnL25zL3dzZGw8L3RkPg0KCQk8dGQ+WzxiaWJyZWYg cmVmPSJ3c2RsMjAiLz5dPC90ZD4NCgkgICAgICA8L3RyPg0KCSAgICAgIDx0cj4NCgkJPHRkPndz b2FwPC90ZD4NCgkJPHRkPmh0dHA6Ly93d3cudzMub3JnL25zL3dzZGwvc29hcDwvdGQ+DQoJCTx0 ZD5bPGJpYnJlZiByZWY9IndzZGwyMGZvcnNvYXAiLz5dPC90ZD4NCgkgICAgICA8L3RyPg0KCSAg ICAgIDx0cj4NCgkJPHRkPndzZGwxMXNvYXAxMTwvdGQ+DQoJICAgICAgPHRkPmh0dHA6Ly9zY2hl bWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcC88L3RkPg0KCSAgICAgIDx0ZD5bPGJpYnJlZiByZWY9 IndzZGwxMSIvPl08L3RkPg0KCSAgICAgIDwvdHI+DQoJICAgICAgPHRyPg0KCQk8dGQ+d3NkbDEx c29hcDEyPC90ZD4NCgkJPHRkPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcDEy LzwvdGQ+DQoJCTx0ZD5bPGJpYnJlZiByZWY9IndzZGwxMWZvcnNvYXAxMiIgLz5dPC90ZD4NCgkg ICAgICA8L3RyPg0KCSAgICA8L3Rib2R5Pg0KCSAgICA8L3RhYmxlPg0KCSAgICA8cD4NCgkgICAg ICBUaGUgYmluZGluZyBkZWZpbmVkIGJ5IHRoaXMgc3BlY2lmaWNhdGlvbiBpcyBpZGVudGlmaWVk DQoJICAgICAgYnkgdGhlIFhNTCBuYW1lc3BhY2UgVVJJIFs8YmlicmVmIHJlZj0iWE1MLU5TIi8+ XQ0KCSAgICAgIDxjb2RlPiZuc3VyaTs8L2NvZGU+Lg0KCSAgICA8L3A+DQoJICAgIA0KCSAgICA8 cD5JdCBpcyB0aGUgaW50ZW50IG9mIHRoZSBXM0MgU09BUCBKTVMgQmluZGluZyBXb3JraW5nDQoJ ICAgIEdyb3VwIHRoYXQgdGhlICZ0aXRsZTsgWE1MIG5hbWVzcGFjZSBVUkkgd2lsbCBub3QgY2hh bmdlDQoJICAgIGFyYml0cmFyaWx5IHdpdGggZWFjaCBzdWJzZXF1ZW50IHJldmlzaW9uIG9mIHRo ZQ0KCSAgICBjb3JyZXNwb25kaW5nIFhNTCBTY2hlbWEgZG9jdW1lbnRzIGFzIHRoZSBzcGVjaWZp Y2F0aW9ucw0KCSAgICB0cmFuc2l0aW9uIHRocm91Z2ggQ2FuZGlkYXRlIFJlY29tbWVuZGF0aW9u LCBQcm9wb3NlZA0KCSAgICBSZWNvbW1lbmRhdGlvbiBhbmQgUmVjb21tZW5kYXRpb24gc3RhdHVz LiBIb3dldmVyLCBzaG91bGQNCgkgICAgdGhlIHNwZWNpZmljYXRpb25zIHJldmVydCB0byBXb3Jr aW5nIERyYWZ0IHN0YXR1cywgYW5kIGENCgkgICAgc3Vic2VxdWVudCByZXZpc2lvbiwgcHVibGlz aGVkIGFzIGEgV0QsIENSIG9yIFBSIGRyYWZ0LA0KCSAgICByZXN1bHRzIGluIG5vbi1iYWNrd2Fy ZGx5IGNvbXBhdGlibGUgY2hhbmdlcyBmcm9tIGENCgkgICAgcHJldmlvdXNseSBwdWJsaXNoZWQg V0QsIENSIG9yIFBSIGRyYWZ0IG9mIHRoZQ0KCSAgICBzcGVjaWZpY2F0aW9uLCB0aGUgbmFtZXNw YWNlIFVSSSB3aWxsIGJlIGNoYW5nZWQNCgkgICAgYWNjb3JkaW5nbHkuPC9wPg0KCSAgICA8ZWRu b3RlPg0KCSAgICAgIDxuYW1lPnBsaDwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUwMTwvZGF0 ZT4NCgkgICAgICA8ZWR0ZXh0PlRoZSBhYm92ZSBwYXJhZ3JhcGggd2lsbCBuZWVkIHRvIGJlIHJl bW92ZWQgZm9yIHRoZSBwdWJsaWNhdGlvbiBvZiB0aGUgUmVjb21tZW5kYXRpb24uPC9lZHRleHQ+ DQoJICAgIDwvZWRub3RlPg0KDQoJPC9kaXYzPg0KCQ0KICAgICAgPC9kaXYyPg0KICAgICAgDQog ICAgICA8ZGl2MiBpZD0iaW50cm9kdWN0aW9uLWNvbmZvcm1hbmNlIj4NCgk8aGVhZD5Db25mb3Jt YW5jZTwvaGVhZD4NCgk8cD5BIGNvbmZvcm1pbmcgaW1wbGVtZW50YXRpb24gPHJmYzIxMTk+TVVT VDwvcmZjMjExOT4NCglpbXBsZW1lbnQgdGhlIHJlcXVpcmVtZW50cyBhcyBzcGVjaWZpZWQgaW4g PHNwZWNyZWYNCglyZWY9InNvYXAtYmluZGluZyIvPi4gIFRvIHRoZSBleHRlbnQgcmVxdWlyZWQg YnkgdGhhdCBzZWN0aW9uLA0KCWNvbmZvcm1pbmcgaW1wbGVtZW50YXRpb25zIDxyZmMyMTE5Pk1V U1Q8L3JmYzIxMTk+IHN1cHBvcnQgdGhlDQoJWzxiaWJyZWYgcmVmPSJqbXNpcmkiIC8+XSwgc3Bl Y2lmaWNhbGx5IHRoZSBzeW50YXgNCgltYW5pcHVsYXRpb25zIHJlcXVpcmVkIHRoZXJlaW4uIA0K CSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4 MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PjIgc3Ryb25nIGFzc2VydGlvbnMuPC9lZHRleHQ+ DQoJICAgIDwvZWRub3RlPg0KIEEgY29uZm9ybWluZyBpbXBsZW1lbnRhdGlvbg0KCTxyZmMyMTE5 Pk1BWTwvcmZjMjExOT4gaW1wbGVtZW50IHRoZSByZXF1aXJlbWVudHMgaW4gPHNwZWNyZWYNCgly ZWY9IndzZGwtZXh0ZW5zaW9ucyIgLz4gcG9ydGlvbiBvZiB0aGlzIGRvY3VtZW50LCBhbmQgaWYg aXQNCglkb2VzIHNvLCBpdCA8cmZjMjExOT5NVVNUPC9yZmMyMTE5PiBmdWxseSBzdXBwb3J0IHRo ZSBKTVMgSVJJDQoJc2NoZW1lLCBpbmNsdWRpbmcgaXRzIHN5bnRheCwgYW5kIHRoZSBpbXBsaWNh dGlvbnMgZm9yDQoJaW52b2tpbmcgSk1TIHJlbGF0ZWQgQVBJcy4NCgkgICAgPGVkbm90ZT4NCgkg ICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAg ICAgPGVkdGV4dD5TbyB0aGlzIGlzIGFuIG9wdGlvbmFsIHNlY3Rpb24gZm9yIG91ciB0ZXN0IHN1 aXRlLiBJdCdzIG5vdCBzcGVsdCBvdXQgd2hhdCAic3VwcG9ydCIgbWVhbnMgLSBlLmcuIEkgc3Vz cGVjdCB0aGUgZmlyc3QgYW5zd2VyIGlzIHRoZSBhYmlsaXR5IHRvIGNvbnN1bWUgV1NETCBhIFNP QVAvSk1TIFdTIENsaWVudC4gVGhlIGFiaWxpdHkgdG8gcHVibGlzaCB0aGVzZSBXU0RMcyBpZiB0 aGF0J3Mgd2hhdCB5b3VyIGZyYW1ld29yayBjbGFpbXMgdGVzdGFibGUgaXMgbmV4dC48L2VkdGV4 dD4NCgkgICAgPC9lZG5vdGU+DQoNCgk8L3A+DQogICAgICA8L2RpdjI+DQogICAgPC9kaXYxPg0K ICAgIDxkaXYxIGlkPSJzb2FwLWJpbmRpbmciPg0KICAgICAgPGhlYWQ+VGhlIFNPQVAvSk1TIFVu ZGVybHlpbmcgUHJvdG9jb2wgQmluZGluZzwvaGVhZD4NCg0KICAgICAgPGRpdjIgaWQ9ImJpbmRp bmctaW50cm8iPg0KCTxoZWFkPkludHJvZHVjdGlvbjwvaGVhZD4NCgk8cD5UaGlzIHNlY3Rpb24g Y292ZXJzIHRoZSBTT0FQL0pNUyBiaW5kaW5nLCBhbmQgaW1wbGljaXRseQ0KCXRoZSBKTVMgY2Fs bHMgdGhhdCBtdXN0IGJlIG1hZGUuIE1hbnkgcGVvcGxlIG1heSB0aGluayBvZiB0aGUNCglKTVMg Y2FsbHMgYXMgdGhlIFNPQVAvSk1TIG1lc3NhZ2UgZm9ybWF0LiBUaGlzIGlzIGFsbW9zdA0KCWNv cnJlY3QsIGJ1dCBub3QgY29tcGxldGVseS4gSk1TIGlzIHN0cmljdGx5IGFuIEFQSSBhbmQgZG9l cw0KCW5vdCBkZWZpbmUgYSBtZXNzYWdlIGZvcm1hdC4gQWxzbywgdGhpcyBkb2N1bWVudCBjb3Zl cnMgaG93DQoJdGhlIFNPQVAvSk1TIGltcGxlbWVudGF0aW9uIGNvbm5lY3RzIHRvIHRoZSBKTVMg c2VydmljZSBhbmQNCglzZWxlY3RzIHRoZSBhcHByb3ByaWF0ZSBkZXN0aW5hdGlvbi48L3A+DQoN Cgk8cD5UaGlzIHBhcnQgY292ZXJzIGRldGFpbHMgc3VjaCBhcyBob3cgSk1TIGNvbm5lY3Rpb25z IGFuZA0KCWRlc3RpbmF0aW9ucyBzaG91bGQgYmUgaGFuZGxlZC4gSXQgYWxzbyBjb3ZlcnMgdGhl IG1lc3NhZ2UNCgljb250ZW50LCBpbmNsdWRpbmcgaG93IHByb3BlcnRpZXMgYW5kIGhlYWRlcnMg c3VjaCBhcw0KCXByaW9yaXR5LCBzb2FwQWN0aW9uIGFuZCB0YXJnZXRTZXJ2aWNlIHNob3VsZCBi ZSBoYW5kbGVkDQoJd2l0aGluIHRoZSBTT0FQL0pNUyBpbXBsZW1lbnRhdGlvbi48L3A+DQoNCiAg ICA8L2RpdjI+IDwhLS0gaW50cm9kdWN0aW9uIC0tPg0KDQogICAgPGRpdjIgaWQ9ImJpbmRpbmct cHJvcGVydGllcyI+DQogICAgPGhlYWQ+UHJvcGVydGllcyBBZmZlY3RpbmcgQmluZGluZzwvaGVh ZD4NCg0KICAgIDxwPlRoZXJlIGFyZSBhIG51bWJlciBvZiBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0 IGhvdyB0aGUgYmluZGluZyBiZWhhdmVzLg0KICAgIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBh cmUgZ3JvdXBlZCBpbnRvIHJlbGF0ZWQgc2V0cy4gQSBjb25mb3JtaW5nDQogICAgaW1wbGVtZW50 YXRpb24gbXVzdCBzdXBwb3J0IGFsbCB0aGVzZSBwcm9wZXJ0aWVzLjwvcD4NCgkgICAgPGVkbm90 ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+ DQoJICAgICAgPGVkdGV4dD5TdHJvbmcgYXNzZXJ0aW9uLjwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90 ZT4NCg0KICAgIDxwPiAgICANCiAgICBQcm9wZXJ0aWVzIGNhbiBiZSBvYnRhaW5lZCBmcm9tIGEg bnVtYmVyIG9mIHNvdXJjZXM6IA0KICAgIDx1bGlzdD4NCiAgICAgIDxpdGVtPjxwPlRoZSBKTVMg SVJJICh3aGljaCBtYXkgYmUgc3BlY2lmaWVkIGluIHRoZSBXU0RMLCBwcm9ncmFtbWF0aWNhbGx5 LCANCiAgICAgICAgICAgICAgIG9uIHRoZSBjb21tYW5kIGxpbmUgZXRjLik7IDwvcD48L2l0ZW0+ DQogICAgICA8aXRlbT48cD5XU0RMIGVsZW1lbnRzIG9yIGF0dHJpYnV0ZXMgKGluIGFkZGl0aW9u IHRvIHRoZSBlbmRwb2ludCBJUkkpLCANCiAgICAgICAgICAgICAgIGFuZDs8L3A+PC9pdGVtPg0K ICAgICAgPGl0ZW0+PHA+VGhlIGVudmlyb25tZW50IChmb3IgZXhhbXBsZSBsb2NhbCBwcm9ncmFt IHZhcmlhYmxlcywgc3lzdGVtIGVudmlyb25tZW50IA0KICAgICAgICAgICAgICAgdmFyaWFibGVz IGV0YykuIDwvcD48L2l0ZW0+DQogICAgPC91bGlzdD4NCiAgICBJZiBhIHByb3BlcnR5IGlzIHNw ZWNpZmllZCBpbiBtb3JlIHRoYW4gb25lIG9mIHRoZXNlIHBsYWNlcyB0aGVuIGEgcHJvcGVydHkg aW4gdGhlIA0KICAgIEVudmlyb25tZW50IHdpbGwgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIG9u ZSBzcGVjaWZpZWQgaW4gV1NETCB0aGF0IHdpbGwgaXRzZWxmIGJlIHVzZWQgDQogICAgaW4gcHJl ZmVyZW5jZSB0byB0aGUgSk1TIElSSS4gDQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNl PC9uYW1lPg0KCSAgICAgIDxkYXRlPjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U3Ry b25nIGFzc2VydGlvbnMuPC9lZHRleHQ+DQoJICAgIDwvZWRub3RlPg0KSWYgdGhlIHByb3BlcnR5 IGlzIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSBvbiB0aGUgSk1TIA0KICAgIElSSSB0aGUgbGFz dCBpbnN0YW5jZSBvZiB0aGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLjwvcD4NCgkgICAgPGVkbm90 ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+ DQoJICAgICAgPGVkdGV4dD5TdHJvbmcgYXNzZXJ0aW9uLjwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90 ZT4NCg0KICAgICAgPGRpdjMgaWQ9ImJpbmRpbmctY29ubmVjdGlvbiI+DQogICAgICA8aGVhZD5D b25uZWN0aW9uIHRvIGEgZGVzdGluYXRpb248L2hlYWQ+DQogICAgICANCiAgICAgIDxwPlNpbmNl IHRoZSB1bmRlcmx5aW5nIEpNUyBJUkkgc2NoZW1lIGRlZmluZXMgYW4gb3Blbi1lbmRlZCBzY2hl bWUgZm9yIGlkZW50aWZ5aW5nIGFuZCBjb25uZWN0aW5nIHRvIGRlc3RpbmF0aW9uLCBpdCBpcyBu b3QNCiAgICAgIHBvc3NpYmxlIHRvIGVudW1lcmF0ZSBhbGwgdGhlIHdheXMgdGhhdCBjb25uZWN0 aW9uIGluZm9ybWF0aW9uIG1heSBiZSBzZXQuICBIb3dldmVyLCBpbiB0aGUgaW50ZXJlc3Qgb2Yg c3BlY2lmeWluZw0KICAgICAgY29udGV4dCBpbmZvcm1hdGlvbiBzdWNoIGFzIEpOREkgY29ubmVj dGlvbiBwcm9wZXJ0aWVzIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGV5IGNhbiBhcHBseSB0byBtdWx0 aXBsZSBzZXJ2aWNlcyBvciBlbmRwb2ludHMsDQogICAgICB0aGlzIHNwZWNpZmljYXRpb24gZW51 bWVyYXRlcyBzcGVjaWZpYyBwcm9wZXJ0aWVzLjwvcD4NCg0KICAgICAgPGdsaXN0Pg0KICAgICAg DQogICAgICA8Z2l0ZW0+DQogICAgICA8bGFiZWw+PHRlcm1kZWYgdGVybT0ic29hcGptczpsb29r dXBWYXJpYW50IiBpZD0ibG9va3VwVmFyaWFudCI+PHRlcm0+c29hcGptczpsb29rdXBWYXJpYW50 PC90ZXJtPg0KCQk8L3Rlcm1kZWY+KHhzZDpzdHJpbmcpPC9sYWJlbD4NCgkJPGRlZj4NCgkJCTx1 bGlzdD4NCgkJCQk8aXRlbT48cD4NCgkJCQkJU3BlY2lmaWVzIHRoZSB0ZWNobmlxdWUgdG8gdXNl IGZvciBsb29raW5nIHVwIHRoZSBnaXZlbiBkZXN0aW5hdGlvbiBuYW1lLg0KCQkJCTwvcD48L2l0 ZW0+DQoJCQkJPGl0ZW0+PHA+DQoJCQkJCU11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSBKTVMgSVJJ LCBhcyB0aGUgPGNvZGU+am1zLXZhcmlhbnQ8L2NvZGU+IHBvcnRpb24gb2YgdGhlIHN5bnRheC4N CgkJCQk8L3A+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1lPg0KCSAgICAg IDxkYXRlPjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U3Ryb25nIGFzc2VydGlvbi48 L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+PC9pdGVtPg0KCQkJPC91bGlzdD4NCgkJPC9kZWY+DQoJ ICA8L2dpdGVtPg0KCQ0KCQk8Z2l0ZW0+DQogICAgICA8bGFiZWw+PHRlcm1kZWYgdGVybT0ic29h cGptczpkZXN0aW5hdGlvbk5hbWUiDQogICAgICAgICAgICAgIGlkPSJkZXN0aW5hdGlvbk5hbWUi Pjx0ZXJtPnNvYXBqbXM6ZGVzdGluYXRpb25OYW1lPC90ZXJtPg0KICAgICAgICAgICAgICA8L3Rl cm1kZWY+ICh4c2Q6c3RyaW5nKTwvbGFiZWw+DQogICAgICA8ZGVmPjx1bGlzdD4gICAgICANCiAg ICAgIDxpdGVtPg0KCSAgICAgIDxwPlNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRp b24sIGZvciBsb29rdXAgYXMgcGVyIHRoZSA8dGVybXJlZiBkZWY9Imxvb2t1cFZhcmlhbnQiPmxv b2t1cFZhcmlhbnQ8L3Rlcm1yZWY+Lg0KCSAgICAgIElmIHRoZSB2YXJpYW50IGlzICJqbmRpIiwg dGhpcyBpcyB0aGUgSmF2YSBOYW1pbmcgYW5kIERpcmVjdG9yeSBJbnRlcmZhY2UgKEpOREkpDQoJ ICAgICAgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gKHF1ZXVlIG9yIHRvcGljKS4gIElmIHRoZSB2 YXJpYW50IGlzICJjb250ZXh0IiwgdGhlbiB0aGUgbmFtZSBpcyBkaXNjb3ZlcmVkIHZpYQ0KCSAg ICAgIGFwcGxpY2F0aW9uIGNvbnRleHQuPC9wPg0KICAgICAgPC9pdGVtPg0KICAgICAgPGl0ZW0+ PHA+PHJmYzIxMTk+TVVTVDwvcmZjMjExOT4gYmUgc3BlY2lmaWVkIGluIEpNUyBJUkksIGFzIHRo ZSA8Y29kZT5qbXMtZGVzdDwvY29kZT4gcG9ydGlvbiBvZiB0aGUgc3ludGF4LjwvcD4NCgkgICAg PGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8 L2RhdGU+DQoJICAgICAgPGVkdGV4dD5TdHJvbmcgYXNzZXJ0aW9uLjwvZWR0ZXh0Pg0KCSAgICA8 L2Vkbm90ZT48L2l0ZW0+DQogICAgICA8L3VsaXN0PjwvZGVmPg0KICAgICAgPC9naXRlbT4NCg0K ICAgICAgPGdpdGVtPg0KICAgICAgPGxhYmVsPjx0ZXJtZGVmIHRlcm09InNvYXBqbXM6am5kaUNv bm5lY3Rpb25GYWN0b3J5TmFtZSINCiAgICAgICAgICAgICAgaWQ9ImpuZGlDb25uZWN0aW9uRmFj dG9yeU5hbWUiPjx0ZXJtPnNvYXBqbXM6am5kaUNvbm5lY3Rpb25GYWN0b3J5TmFtZTwvdGVybT4N CiAgICAgICAgICAgICAgPC90ZXJtZGVmPiAoeHNkOnN0cmluZyk8L2xhYmVsPg0KICAgICAgPGRl Zj48dWxpc3Q+DQogICAgICA8aXRlbT48cD5TcGVjaWZpZXMgdGhlIEpOREkgbmFtZSBvZiB0aGUg Y29ubmVjdGlvbiBmYWN0b3J5LjwvcD48L2l0ZW0+DQogICAgICA8aXRlbT48cD5hbiBvcHRpb25h bCBwcm9wZXJ0eTwvcD48L2l0ZW0+DQogICAgICA8aXRlbT48cD48cmZjMjExOT5NQVk8L3JmYzIx MTk+IGJlIHNwZWNpZmllZCBpbiBKTVMgSVJJLCBXU0RMLCBvciBzb21ld2hlcmUgZWxzZSBpbiB0 aGUNCiAgICAgIGVudmlyb25tZW50PC9wPg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBz ZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0Pk9w dGlvbmFsIHByb3BlcnR5LCBUZXN0YWJsZS48L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+PC9pdGVt Pg0KICAgICAgPC91bGlzdD48L2RlZj4NCiAgICAgIDwvZ2l0ZW0+DQoNCiAgICAgIDxnaXRlbT4N CiAgICAgIDxsYWJlbD48dGVybWRlZiB0ZXJtPSJzb2Fwam1zOmpuZGlJbml0aWFsQ29udGV4dEZh Y3RvcnkiDQogICAgICAgICAgICAgIGlkPSJqbmRpSW5pdGlhbENvbnRleHRGYWN0b3J5Ij48dGVy bT5zb2Fwam1zOmpuZGlJbml0aWFsQ29udGV4dEZhY3Rvcnk8L3Rlcm0+DQogICAgICAgICAgICAg IDwvdGVybWRlZj4gKHhzZDpzdHJpbmcpPC9sYWJlbD4NCiAgICAgIDxkZWY+PHVsaXN0Pg0KICAg ICAgPGl0ZW0+PHA+U3BlY2lmaWVzIHRoZSBmdWxseSBxdWFsaWZpZWQgSmF2YSBjbGFzcyBuYW1l IG9mIHRoZQ0KICAgICAgPGNvZGU+SW5pdGlhbENvbnRleHRGYWN0b3J5PC9jb2RlPiB0byB1c2Uu ICBUaGlzIGlzIG1hcHBlZCB0byB0aGUNCiAgICAgIDxjb2RlPmphdmF4Lm5hbWluZy5Db250ZXh0 LklOSVRJQUxfQ09OVEVYVF9GQUNUT1JZPC9jb2RlPiBwcm9wZXJ0eSB0byBiZSBzZXQgaW4NCiAg ICAgIHRoZSA8Y29kZT5IYXNoTWFwPC9jb2RlPiBzZW50IHRvIGFuIDxjb2RlPkluaXRpYWxDb250 ZXh0PC9jb2RlPg0KICAgICAgY29uc3RydWN0b3IuPC9wPjwvaXRlbT4NCiAgICAgIDxpdGVtPjxw PmFuIG9wdGlvbmFsIHByb3BlcnR5PC9wPjwvaXRlbT4NCiAgICAgIDxpdGVtPjxwPjxyZmMyMTE5 Pk1BWTwvcmZjMjExOT4gYmUgc3BlY2lmaWVkIGluIEpNUyBJUkksIFdTREwsIG9yIHNvbWV3aGVy ZSBlbHNlIGluIHRoZQ0KICAgICAgZW52aXJvbm1lbnQ8L3A+PC9pdGVtPg0KICAgICAgPC91bGlz dD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+ MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5PcHRpb25hbCBwcm9wZXJ0eSwgVGVzdGFi bGU8L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+PC9kZWY+DQogICAgICA8L2dpdGVtPg0KDQogICAg ICA8Z2l0ZW0+DQogICAgICA8bGFiZWw+PHRlcm1kZWYgdGVybT0ic29hcGptczpqbmRpVVJMIg0K ICAgICAgICAgICAgICBpZD0iam5kaVVSTCI+PHRlcm0+c29hcGptczpqbmRpVVJMPC90ZXJtPg0K ICAgICAgICAgICAgICA8L3Rlcm1kZWY+ICh4c2Q6YW55VVJJKTwvbGFiZWw+DQogICAgICA8ZGVm Pjx1bGlzdD4NCiAgICAgIDxpdGVtPjxwPlNwZWNpZmllcyB0aGUgSk5ESSBwcm92aWRlciBVUkws IHdoaWNoIGlzIG1hcHBlZCB0byB0aGUNCiAgICAgIDxjb2RlPmphdmEubmFtaW5nLnByb3ZpZGVy LnVybDwvY29kZT4gcHJvcGVydHkgdG8gYmUgc2V0IGluIHRoZSA8Y29kZT5IYXNoTWFwPC9jb2Rl PiBzZW50IHRvIGFuIDxjb2RlPkluaXRpYWxDb250ZXh0PC9jb2RlPmNvbnN0cnVjdG9yLjwvcD48 L2l0ZW0+DQogICAgICA8aXRlbT48cD5hbiBvcHRpb25hbCBwcm9wZXJ0eTwvcD48L2l0ZW0+DQog ICAgICA8aXRlbT48cD48cmZjMjExOT5NQVk8L3JmYzIxMTk+IGJlIHNwZWNpZmllZCBpbiBKTVMg SVJJLCBXU0RMLCBvciBzb21ld2hlcmUgZWxzZSBpbiB0aGUNCiAgICAgIGVudmlyb25tZW50PC9w PjwvaXRlbT4NCiAgICAgIA0KICAgICAgPC91bGlzdD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8 bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVk dGV4dD5PcHRpb25hbCBwcm9wZXJ0eSwgVGVzdGFibGU8L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+ PC9kZWY+DQogICAgICA8L2dpdGVtPiAgICANCiAgICAgIDwvZ2xpc3Q+ICAgIA0KDQogICAgICA8 L2RpdjM+IDwhLS0gY29ubmVjdGlvbiB0byBkZXN0aW5hdGlvbiAtLT4NCg0KICAgICAgPGRpdjMg aWQ9ImJpbmRpbmctaGVhZGVyLXByb3BzIj4NCiAgICAgIDxoZWFkPkpNUyBNZXNzYWdlIEhlYWRl ciBwcm9wZXJ0aWVzPC9oZWFkPg0KICAgICAgDQogICAgICA8cD5UaGlzIHNldCBvZiBwcm9wZXJ0 aWVzIHByb3ZpZGUgaW5mb3JtYXRpb24gdGhhdCB3aWxsIHNldCB0aGUgdmFsdWVzDQogICAgICBv ZiBjb3JyZXNwb25kaW5nIEpNUyBIZWFkZXIgZmllbGRzLiAgVGhpcyBzcGVjaWZpY2F0aW9uIGFz c3VtZXMgdGhhdCB0aGUgSk1TDQogICAgICBwcm92aWRlciB2YWxpZGF0ZXMgdGhlIHZhbHVlcyBz ZXQgZm9yIHRoZSByZXNwZWN0aXZlIG1lc3NhZ2UgaGVhZGVyIHByb3BlcnRpZXMsIHJhdGhlciB0 aGFuDQogICAgICBiZWluZyBleHBsaWNpdGx5IGNvbnN0cmFpbmVkIGJ5IHRoaXMgc3BlY2lmaWNh dGlvbi48L3A+DQoNCiAgICA8Z2xpc3Q+DQogICAgICAgIDxnaXRlbT4NCiAgICAgICAgICAgIDxs YWJlbD48dGVybWRlZiBpZD0iZGVsaXZlcnlNb2RlIiB0ZXJtPSJzb2Fwam1zOmRlbGl2ZXJ5TW9k ZSI+PHRlcm0+c29hcGptczpkZWxpdmVyeU1vZGU8L3Rlcm0+PC90ZXJtZGVmPiAoeHNkOnN0cmlu ZykgPC9sYWJlbD4NCiAgICAgICAgICAgIDxkZWY+DQogICAgICAgICAgICAgICAgPHVsaXN0Pg0K ICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPmlu ZGljYXRlcyB3aGV0aGVyIHRoZSByZXF1ZXN0IG1lc3NhZ2UgaXMgcGVyc2lzdGVudCBvciBub3Qu IFRoZSB2YWxpZCB2YWx1ZXMgYXJlICJQRVJTSVNURU5UIiBhbmQgIk5PTlBFUlNJU1RFTlQiLiAg VGhlIGRlZmF1bHQgdmFsdWUgaXMgIlBFUlNJU1RFTlQiIChkZWZhdWx0ZWQgYnkgSk1TKTwvcD4N CiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4N CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPm9wdGlvbmFsIGluIElSSSwgb3B0aW9uYWwgaW4g V1NETCwgb3B0aW9uYWwgaW4gZW52aXJvbm1lbnQ8L3A+DQogICAgICAgICAgICAgICAgICAgIDwv aXRlbT4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAg ICA8cD5pZiBzcGVjaWZpZWQgPHJmYzIxMTk+TVVTVDwvcmZjMjExOT4gYXBwZWFyIGluIHRoZSBK TVMgbWVzc2FnZSBpbiB0aGUgaGVhZGVyIG5hbWVkIDxjb2RlPkpNU0RlbGl2ZXJ5TW9kZTwvY29k ZT4uDQogICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBvZiB0aGlzIHByb3Bl cnR5IGlzICJQRVJTSVNURU5UIiB0aGVuIHRoZSA8Y29kZT5KTVNEZWxpdmVyeU1vZGU8L2NvZGU+ IGludGVnZXIgdmFsdWUgbXVzdCBiZSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRv IDxjb2RlPkRlbGl2ZXJ5TW9kZS5QRVJTSVNURU5UPC9jb2RlPi4gIElmIHRoZSB2YWx1ZSBvZiB0 aGlzIHByb3BlcnR5IGlzICJOT05QRVJTSVNURU5UIiB0aGVuIHRoZSANCiAgICAgICAgICAgICAg ICAgICAgICAgICAgPGNvZGU+Sk1TRGVsaXZlcnlNb2RlPC9jb2RlPiBpbnRlZ2VyIHZhbHVlIG11 c3QgYmUgc2V0IHRvIDxjb2RlPkRlbGl2ZXJ5TW9kZS5OT05QRVJTSVNURU5UPC9jb2RlPi4gDQog ICAgICAgICAgICAgICAgICAgICAgICA8L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4N CiAgICAgICAgICAgICAgICA8L3VsaXN0Pg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBz ZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PkFs dGhvdWdoICJvcHRpb25hbCIgc3Ryb25nIHN0YXRlbWVudHMgb24gaG93IHRoZSBKTVMgTWVzc2Fn ZSBwcm9wZXJ0eSBpcyBhc3NpZ25lZCBhbmQgZGVmYXVsdHMuIFZlcnkgdGVzdGFibGU8L2VkdGV4 dD4NCgkgICAgPC9lZG5vdGU+DQogICAgICAgICAgICA8L2RlZj4NCiAgICAgICAgPC9naXRlbT4N CiAgICAgICAgPGdpdGVtPg0KICAgICAgICAgICAgPGxhYmVsPg0KICAgICAgICAgICAgICAgIDx0 ZXJtZGVmIGlkPSJ0aW1lVG9MaXZlIiB0ZXJtPSJzb2Fwam1zOnRpbWVUb0xpdmUiPjx0ZXJtPnNv YXBqbXM6dGltZVRvTGl2ZTwvdGVybT48L3Rlcm1kZWY+ICh4c2Q6bG9uZykNCiAgICAgICAgICAg IDwvbGFiZWw+DQogICAgICAgICAgICA8ZGVmPg0KICAgICAgICAgICAgICAgIDx1bGlzdD4NCiAg ICAgICAgICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD50aGUg bGlmZXRpbWUsIGluIG1pbGxpc2Vjb25kcywgb2YgdGhlIHJlcXVlc3QgbWVzc2FnZS4gQSB2YWx1 ZSBvZiAwIGluZGljYXRlcyBhbiBpbmZpbml0ZSBsaWZldGltZS4gVGhlIGRlZmF1bHQgdmFsdWUg aXMgMCAoZGVmYXVsdGVkIGJ5IEpNUykuPC9wPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+ DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHA+ b3B0aW9uYWwgaW4gSVJJLCBvcHRpb25hbCBpbiBXU0RMLCBvcHRpb25hbCBpbiBlbnZpcm9ubWVu dC48L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgICAg PGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5pZiBzcGVjaWZpZWQsIHRoaXMgaXMg dXNlZCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgb2YgdGhlIEpNUyBoZWFkZXIgPGNvZGU+Sk1TRXhw aXJhdGlvbjwvY29kZT4uPC9wPg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFt ZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PkFsdGhvdWdo ICJvcHRpb25hbCIgc3Ryb25nIHN0YXRlbWVudHMgb24gaG93IHRoZSBKTVMgTWVzc2FnZSBwcm9w ZXJ0eSBpcyBhc3NpZ25lZCBhbmQgZGVmYXVsdHMoSSBzdXBwb3NlIHRoYXQgaWYgdGhlIGRlZmF1 bHQgaXMgd3JvbmcgaXQgY291bGQgYmUgYSBKTVMgcHJvdmlkZXIgZGVmZWN0IG9yIGEgU09BUC9K TVMgcHJvdmlkZXIgZGVmZWN0LiBWZXJ5IHRlc3RhYmxlPC9lZHRleHQ+DQoJICAgIDwvZWRub3Rl Pg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgPC91bGlzdD4N CiAgICAgICAgICAgIDwvZGVmPg0KDQogICAgICAgIDwvZ2l0ZW0+DQogICAgICAgIDxnaXRlbT4N CiAgICAgICAgICAgIDxsYWJlbD4NCiAgICAgICAgICAgICAgICA8dGVybWRlZiBpZD0icHJpb3Jp dHkiIHRlcm09InNvYXBqbXM6cHJpb3JpdHkiPjx0ZXJtPnNvYXBqbXM6cHJpb3JpdHk8L3Rlcm0+ PC90ZXJtZGVmPiAoeHNkOmludCkNCiAgICAgICAgICAgIDwvbGFiZWw+DQogICAgICAgICAgICA8 ZGVmPg0KICAgICAgICAgICAgICAgIDx1bGlzdD4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+ DQogICAgICAgICAgICAgICAgICAgICAgICA8cD50aGUgSk1TIHByaW9yaXR5IGFzc29jaWF0ZWQg d2l0aCB0aGUgcmVxdWVzdCBtZXNzYWdlLiBWYWxpZCB2YWx1ZXMgYXJlIGludGVnZXJzIGJldHdl ZW4gMCAobG93ZXN0IHByaW9yaXR5KSBhbmQgOSAoaGlnaGVzdCBwcmlvcml0eSkuIFRoZSBkZWZh dWx0IHZhbHVlIGlzIDQgKGRlZmF1bHRlZCBieSBKTVMpLjwvcD4NCiAgICAgICAgICAgICAgICAg ICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAg ICAgICAgIDxwPm9wdGlvbmFsIGluIElSSSwgb3B0aW9uYWwgaW4gV1NETCwgb3B0aW9uYWwgaW4g ZW52aXJvbm1lbnQ8L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAg ICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5pZiBzcGVjaWZpZWQg PHJmYzIxMTk+TVVTVDwvcmZjMjExOT4gYXBwZWFyIGluIHRoZSBKTVMgbWVzc2FnZSBpbiB0aGUg aGVhZGVyIG5hbWVkIDxjb2RlPkpNU1ByaW9yaXR5PC9jb2RlPi48L3A+DQogICAgICAgICAgICAg ICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICA8L3VsaXN0Pg0KCSAgICA8ZWRub3RlPg0K CSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkg ICAgICA8ZWR0ZXh0PkFsdGhvdWdoICJvcHRpb25hbCIgc3Ryb25nIHN0YXRlbWVudHMgb24gaG93 IHRoZSBKTVMgTWVzc2FnZSBwcm9wZXJ0eSBpcyBhc3NpZ25lZCBhbmQgZGVmYXVsdHMuIFZlcnkg dGVzdGFibGU8L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQogICAgICAgICAgICA8L2RlZj4NCiAg ICAgICAgPC9naXRlbT4NCiAgICAgICAgPGdpdGVtPg0KICAgICAgICAgICAgPGxhYmVsPg0KICAg ICAgICAgICAgICAgIDx0ZXJtZGVmIGlkPSJyZXBseVRvTmFtZSIgdGVybT0ic29hcGptczpyZXBs eVRvTmFtZSI+PHRlcm0+c29hcGptczpyZXBseVRvTmFtZTwvdGVybT48L3Rlcm1kZWY+ICh4c2Q6 c3RyaW5nKQ0KICAgICAgICAgICAgPC9sYWJlbD4NCiAgICAgICAgICAgIDxkZWY+DQogICAgICAg ICAgICAgICAgPHVsaXN0Pg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCgkJICAgICAgPHA+ U3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBkZXN0aW5hdGlvbiB0byB3aGljaCBhIHJlc3BvbnNl IG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQuIA0KCQkgICAgICBJZiB0aGUgPHRlcm1yZWYgZGVmPSJy ZXBseVRvTmFtZSI+cmVwbHlUb05hbWU8L3Rlcm1yZWY+IHByb3BlcnR5IGhhcyBhIHZhbHVlIGl0 IGlzIHVzZWQgdG8gbG9va3VwIGEgZGVzdGluYXRpb24gdXNpbmcgdGhlIDx0ZXJtcmVmIGRlZj0i bG9va3VwVmFyaWFudCI+bG9va3VwVmFyaWFudDwvdGVybXJlZj4uIA0KCQkgICAgICBJZiB0aGUg dmFyaWFudCBpcyAiam5kaSIsIHRoaXMgaXMgdGhlIEphdmEgTmFtaW5nIGFuZCBEaXJlY3Rvcnkg SW50ZXJmYWNlIChKTkRJKSBuYW1lIG9mIHRoZSBkZXN0aW5hdGlvbiAocXVldWUgb3IgdG9waWMp LiAgDQoJCSAgICAgIElmIHRoZSB2YXJpYW50IGlzICJjb250ZXh0IiwgdGhlbiB0aGUgbmFtZSBp cyBkaXNjb3ZlcmVkIHZpYSBhcHBsaWNhdGlvbiBjb250ZXh0LjwvcD4NCiAgICAgICAgICAgICAg ICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAg ICAgICAgICAgIDxwPm9wdGlvbmFsIGluIElSSSwgb3B0aW9uYWwgaW4gV1NETCwgb3B0aW9uYWwg aW4gZW52aXJvbm1lbnQ8L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAg ICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5pZiBzcGVjaWZp ZWQsIHRoaXMgaXMgdXNlZCB0byBkZXJpdmUgdGhlIHZhbHVlIHRvIGJlIHVzZWQgaW4gdGhlIEpN UyBoZWFkZXIgPGNvZGU+Sk1TUmVwbHlUbzwvY29kZT48L3A+DQogICAgICAgICAgICAgICAgICAg IDwvaXRlbT4NCiAgICAgICAgICAgICAgICA8L3VsaXN0Pg0KCSAgICA8ZWRub3RlPg0KCSAgICAg IDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8 ZWR0ZXh0PldlIGhhdmUgdG8gdGVzdCBhbGwgdGhlIHZhcmlhbnRzIGp1c3QgbGlrZSB0aGUgb3Jp Z2luYWwgcmVxdWVzdC4gRG8gd2UgbWFuZGF0ZSB0aGF0IEpNU1JlcGx5VG8gaXMgb25seSBmb3Ig Mi1XYXkgTUVQUzwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90ZT4NCiAgICAgICAgICAgIDwvZGVmPg0K ICAgICAgICA8L2dpdGVtPg0KICAgIDwvZ2xpc3Q+DQoNCiAgICAgIDwvZGl2Mz4gPCEtLSBoZWFk ZXIgcHJvcHMgLS0+DQogICAgICANCiAgICAgIDxkaXYzIGlkPSJiaW5kaW5nLW1lc3NhZ2UtcHJv cHMiPg0KICAgICAgPGhlYWQ+Sk1TIE1lc3NhZ2UgcHJvcGVydGllczwvaGVhZD4NCg0KICAgIDxn bGlzdD4NCiAgICAgICAgPGdpdGVtPg0KICAgICAgICAgICAgPGxhYmVsPg0KICAgICAgICAgICAg ICAgIDx0ZXJtZGVmIGlkPSJ0YXJnZXRTZXJ2aWNlIiB0ZXJtPSJzb2Fwam1zOnRhcmdldFNlcnZp Y2UiPjx0ZXJtPnNvYXBqbXM6dGFyZ2V0U2VydmljZTwvdGVybT48L3Rlcm1kZWY+ICh4c2Q6c3Ry aW5nKQ0KICAgICAgICAgICAgPC9sYWJlbD4NCiAgICAgICAgICAgIDxkZWY+DQogICAgICAgICAg ICAgICAgPHVsaXN0Pg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAg ICAgICAgICAgIDxwPlVzZWQgYnkgdGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdG8gZGlzcGF0 Y2ggdGhlIHNlcnZpY2UgcmVxdWVzdC4gPC9wPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+ DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHA+ b3B0aW9uYWwgaW4gSVJJPC9wPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAg ICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHA+aWYgc3BlY2lm aWVkIDxyZmMyMTE5Pk1VU1Q8L3JmYzIxMTk+IGFwcGVhciBpbiB0aGUgSk1TIG1lc3NhZ2UgaW4g dGhlIEpNUyBwcm9wZXJ0eSBuYW1lZCA8Y29kZT5TT0FQSk1TX3RhcmdldFNlcnZpY2U8L2NvZGU+ LjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgIDwvdWxp c3Q+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1lPg0KCSAgICAgIDxkYXRl PjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+QWx0aG91Z2ggIm9wdGlvbmFsIiBidXQg c3Ryb25nIHN0YXRlbWVudCBvbiBob3cgdGhlIEpNUyBNZXNzYWdlIHByb3BlcnR5IGlzIGFzc2ln bmVkLiBUZXN0YWJsZTwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90ZT4NCiAgICAgICAgICAgIDwvZGVm Pg0KICAgICAgICA8L2dpdGVtPg0KICAgICAgICA8Z2l0ZW0+DQogICAgICAgICAgICA8bGFiZWw+ DQogICAgICAgICAgICAgICAgPHRlcm1kZWYgaWQ9ImJpbmRpbmdWZXJzaW9uIiB0ZXJtPSJzb2Fw am1zOmJpbmRpbmdWZXJzaW9uIj48dGVybT5zb2Fwam1zOmJpbmRpbmdWZXJzaW9uPC90ZXJtPjwv dGVybWRlZj4gKHhzZDpzdHJpbmcpDQogICAgICAgICAgICA8L2xhYmVsPg0KICAgICAgICAgICAg PGRlZj4NCiAgICAgICAgICAgICAgICA8dWxpc3Q+DQogICAgICAgICAgICAgICAgICAgIDxpdGVt Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPHA+U3BlY2lmaWVzIHRoZSB2ZXJzaW9uIG9mIFNP QVAgSk1TIGJpbmRpbmcgdGhhdCBpcyBiZWluZyB1c2VkLjwvcD4NCiAgICAgICAgICAgICAgICAg ICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAg ICAgICAgIDxwPmZpeGVkIHZhbHVlICIxLjAiIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgPHJmYzIx MTk+TVVTVDwvcmZjMjExOT4gYXBwZWFyIGluIGEgSk1TIHByb3BlcnR5IG5hbWVkIDxjb2RlPlNP QVBKTVNfYmluZGluZ1ZlcnNpb248L2NvZGU+Lg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRl cm1kZWYgaWQ9InVucmVjb2duaXplZEJpbmRpbmdWZXJzaW9uIiB0ZXJtPSJ1bnJlY29nbml6ZWRC aW5kaW5nVmVyc2lvbiI+ICBGYXVsdCBzdWJjb2RlIDx0ZXJtPnVucmVjb2duaXplZEJpbmRpbmdW ZXJzaW9uPC90ZXJtPg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHZhbHVlIG9mIHRo aXMgcHJvcGVydHkgZG9lcyBub3QgbWF0Y2ggdGhlIGZpeGVkIHZhbHVlLjwvdGVybWRlZj48L3A+ DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICA8L3VsaXN0Pg0K CSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4 MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PjIgc3Ryb25nIHN0YXRlbWVudHMuIFRlc3RhYmxl PC9lZHRleHQ+DQoJICAgIDwvZWRub3RlPg0KICAgICAgICAgICAgPC9kZWY+DQogICAgICAgIDwv Z2l0ZW0+DQogICAgICAgIDxnaXRlbT4NCiAgICAgICAgICAgIDxsYWJlbD4NCiAgICAgICAgICAg ICAgICA8dGVybWRlZiBpZD0iY29udGVudFR5cGUiIHRlcm09InNvYXBqbXM6Y29udGVudFR5cGUi Pjx0ZXJtPnNvYXBqbXM6Y29udGVudFR5cGU8L3Rlcm0+PC90ZXJtZGVmPiAoeHNkOnN0cmluZykN CiAgICAgICAgICAgIDwvbGFiZWw+DQogICAgICAgICAgICA8ZGVmPg0KICAgICAgICAgICAgICAg IDxwPk5vdGUgdGhhdCB0aGUgPGNvZGU+Y29udGVudFR5cGU8L2NvZGU+IHZhbHVlIGFsc28gaW5k aWNhdGVzIHRoZSBNSU1FIHR5cGUgb2YgdGhlIHByaW1hcnkgbWVzc2FnZSBwYXlsb2FkLiAgVGhp cyBtZXNzYWdlIHByb3BlcnR5LCB0aGVuLCBpZGVudGlmaWVzIHdoZXRoZXINCiAgICB0aGUgbWVz c2FnZSBwYXlsb2FkIHVzZXMgU09BUCAxLjEsIFNPQVAgMS4yLCBTT0FQIE1lc3NhZ2VzIFdpdGgg QXR0YWNobWVudHMNCls8YmlicmVmIHJlZj0iU3dBIiAvPl0gb3IgTVRPTSBbPGJpYnJlZiByZWY9 IlNPQVAxMS1NVE9NIiAvPl0gWzxiaWJyZWYgcmVmPSJTT0FQMTItTVRPTSIgLz5dIGFzIHRoZSBw cmltYXJ5IHBheWxvYWQuPC9wPg0KICAgICAgICAgICAgICAgIDx1bGlzdD4NCiAgICAgICAgICAg ICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5EZXNjcmliZXMgdGhl IGNvbnRlbnQgb2YgdGhlIFNPQVAgbWVzc2FnZSwgdGhpcyBoYXMgdGhlIHNhbWUgdmFsdWVzIGFz IHRoZSBNSU1FIENvbnRlbnQtVHlwZSBzcGVjaWZpZWQgZm9yIGEgU09BUCBtZXNzYWdlIG92ZXIg SFRUUA0KWzxiaWJyZWYgcmVmPSJtaW1lIiAvPl0uPC9wPg0KICAgICAgICAgICAgICAgICAgICA8 L2l0ZW0+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAg ICAgPHA+SWYgdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpcyB0ZXh0L3htbCBvciBhcHBsaWNh dGlvbi9zb2FwK3htbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY2hhcnNldCBwYXJh bWV0ZXIgbWF5IGJlIHByZXNlbnQ7IGlmIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaXMgDQog ICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBhcnQvcmVsYXRlZCwgYSB0eXBlIHBhcmFt ZXRlciBtYXkgYmUgcHJlc2VudC48L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAg ICAgICAgICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5pZiB0 aGUgPGNvZGU+Y2hhcnNldDwvY29kZT4gcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBpdCBpcyBjaGVj a2VkIHRvIGVuc3VyZSB0aGF0IGl0IG1hdGNoZXMNCiAgICAgICAgICAgICAgICAgICAgICAgIHRo ZSBlbmNvZGluZyB2YWx1ZSBmcm9tIHRoZSBzdXBwbGllZCBYTUwuIElmIHRoZXJlIGlzIGEgbWlz bWF0Y2ggdGhlbiBhIGZhdWx0IGlzIGdlbmVyYXRlZC4NCgkJCQkJICAgIDx0ZXJtZGVmIGlkPSJj b250ZW50VHlwZU1pc21hdGNoIiB0ZXJtPSJjb250ZW50VHlwZU1pc21hdGNoIj4gVXNlIGZhdWx0 IHN1YmNvZGUNCgkJCQkJICAgIDx0ZXJtPmNvbnRlbnRUeXBlTWlzbWF0Y2g8L3Rlcm0+IGluIHRo ZSBldmVudCB0aGF0IHRoZSB2YWx1ZXMgZG8gbm90IG1hdGNoLjwvdGVybWRlZj48L3A+DQogICAg ICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+DQogICAg ICAgICAgICAgICAgICAgICAgICA8cD5pZiBubyA8Y29kZT5jaGFyc2V0PC9jb2RlPiBwYXJhbWV0 ZXIgaXMgc3VwcGxpZWQgdGhlIGNoYXJzZXQgPHJmYzIxMTk+TVVTVDwvcmZjMjExOT4gYmUgaW5m ZXJyZWQgdXNpbmcgdGhlIHJ1bGVzIGRlZmluZWQgaW4gYXBwZW5kaXggRiwgDQogICAgICAgICAg ICAgICAgICAgICAgICA8eHNwZWNyZWYgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sLyNz ZWMtZ3Vlc3NpbmciPkF1dG9kZXRlY3Rpb24gb2YgQ2hhcmFjdGVyIEVuY29kaW5ncw0KICAgICAg ICAgICAgICAgICAgICAgICAgPC94c3BlY3JlZj4sIFs8YmlicmVmIHJlZj0ieG1sIi8+XS48L3A+ DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+ DQogICAgICAgICAgICAgICAgICAgICAgICA8cD50aGUgdHlwZSBwYXJhbWV0ZXIgPHJmYzIxMTk+ TVVTVDwvcmZjMjExOT4gcmVmbGVjdCB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSANCiAgICAg ICAgICAgICAgICAgICAgICAgIENvbnRlbnQtdHlwZSBwYXJ0IGhlYWRlciBmb3IgdGhlIGZpcnN0 IHBhcnQgKHRoZSBTT0FQIGJvZHksIHNvIA0KICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC94 bWwgb3IgYXBwbGljYXRpb24veG9wK3htbCkuPC9wPg0KICAgICAgICAgICAgICAgICAgICA8L2l0 ZW0+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgICAg PHA+PHJmYzIxMTk+TVVTVDwvcmZjMjExOT4gYXBwZWFyIGluIHRoZSBKTVMgbWVzc2FnZSBpbiB0 aGUgSk1TIHByb3BlcnR5IG5hbWVkIDxjb2RlPlNPQVBKTVNfY29udGVudFR5cGU8L2NvZGU+Lg0K ICAgICAgICAgICAgICAgICAgICAgICAgPHRlcm1kZWYgaWQ9Im1pc3NpbmdDb250ZW50VHlwZSIg dGVybT0ibWlzc2luZ0NvbnRlbnRUeXBlIj5Vc2UgZmF1bHQgc3ViY29kZSA8dGVybT5taXNzaW5n Q29udGVudFR5cGU8L3Rlcm0+DQogICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgPGNvZGU+ U09BUEpNU19jb250ZW50VHlwZTwvY29kZT4gcHJvcGVydHkgaXMgbWlzc2luZy48L3Rlcm1kZWY+ PC9wPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgPC91bGlz dD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+ MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5TZXZlcmFsIHN0cm9uZyBzdGF0ZW1lbnRz LiBQb3RlbnRpYWxseSBhIGxvdCBvZiB0ZXN0aW5nLiBEbyB3ZSBuZWVkIHN0YXRlbWVudHMgb24g bWluaW1hbCBzdXBwb3J0IGZvciBVVEYtOC4gVVRGLTE2LCBCeXRlT3JkZXJNYXJrIGV0YyBldGM8 L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQogICAgICAgICAgICA8L2RlZj4NCiAgICAgICAgPC9n aXRlbT4NCiAgIA0KICAgICA8Z2l0ZW0+DQogICAgICAgICAgICA8bGFiZWw+DQogICAgICAgICAg ICAgICAgPHRlcm1kZWYgaWQ9InNvYXBBY3Rpb24iIHRlcm09InNvYXBqbXM6c29hcEFjdGlvbiI+ PHRlcm0+c29hcGptczpzb2FwQWN0aW9uPC90ZXJtPjwvdGVybWRlZj4gKHhzZDphbnlVUkkpDQog ICAgICAgICAgICA8L2xhYmVsPg0KICAgICAgICAgICAgPGRlZj4NCiAgICAgICAgICAgICAgICA8 dWxpc3Q+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAg ICAgPHA+YXMgd2l0aCBTT0FQL0hUVFA8L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4N CiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5v cHRpb25hbCBpbiBXU0RMLCBvcHRpb25hbCBpbiBlbnZpcm9ubWVudDwvcD4NCiAgICAgICAgICAg ICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAg ICAgICAgICAgICAgIDxwPmlmIHNwZWNpZmllZCA8cmZjMjExOT5NVVNUPC9yZmMyMTE5PiBhcHBl YXIgaW4gdGhlIEpNUyBtZXNzYWdlIGluIHRoZSBKTVMgcHJvcGVydHkgbmFtZWQgPGNvZGU+U09B UEpNU19zb2FwQWN0aW9uPC9jb2RlPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPg0K ICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAgICAgCTxwPmlmIHVz aW5nIFNPQVAgMS4yLCBhbmQgdGhlIDx0ZXJtcmVmIGRlZj0iY29udGVudFR5cGUiPmNvbnRlbnRU eXBlPC90ZXJtcmVmPg0KICAgICAgICAgICAgICAgICAgICAJcHJvcGVydHkgaGFzIGFuIDxjb2Rl PmFjdGlvbjwvY29kZT4gcGFyYW1ldGVyLCB0aGF0IHBhcmFtZXRlciB2YWx1ZSA8cmZjMjExOT5N VVNUPC9yZmMyMTE5PiBtYXRjaCB0aGlzDQogICAgICAgICAgICAgICAgICAgIAk8Y29kZT5TT0FQ Sk1TX3NvYXBBY3Rpb248L2NvZGU+IHZhbHVlLiAgPHRlcm1kZWYgdGVybT0ibWlzbWF0Y2hlZFNv YXBBY3Rpb24iIGlkPSJtaXNtYXRjaGVkU29hcEFjdGlvbiI+VXNlIGZhdWx0IHN1YmNvZGUNCiAg ICAgICAgICAgICAgICAgICAgCTx0ZXJtPm1pc21hdGNoZWRTb2FwQWN0aW9uPC90ZXJtPiBpZiB0 aGUgU09BUCAxLjIgPGNvZGU+YWN0aW9uPC9jb2RlPiBkb2VzIG5vdA0KICAgICAgICAgICAgICAg ICAgICAJbWF0Y2g8L3Rlcm1kZWY+IDwvcD4NCiAgICAgICAgICAgICAgICAgICAgPC9pdGVtPg0K ICAgICAgICAgICAgICAgIDwvdWxpc3Q+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNl PC9uYW1lPg0KCSAgICAgIDxkYXRlPjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U2V2 ZXJhbCBzdHJvbmcgc3RhdGVtZW50cy4gVGVzdGFibGU8L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+ DQogICAgICAgICAgICA8L2RlZj4NCiAgICAgICAgPC9naXRlbT4NCiAgICAgICAgPGdpdGVtPg0K ICAgICAgICAgICAgPGxhYmVsPg0KICAgICAgICAgICAgICAgIDx0ZXJtZGVmIGlkPSJpc0ZhdWx0 IiB0ZXJtPSJzb2Fwam1zOmlzRmF1bHQiPjx0ZXJtPnNvYXBqbXM6aXNGYXVsdDwvdGVybT48L3Rl cm1kZWY+ICh4c2Q6Ym9vbGVhbikNCiAgICAgICAgICAgIDwvbGFiZWw+DQogICAgICAgICAgICA8 ZGVmPg0KICAgICAgICAgICAgICAgIDx1bGlzdD4NCiAgICAgICAgICAgICAgICAgICAgPGl0ZW0+ DQogICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGlzIHByb3BlcnR5IGluZGljYXRlcyB3aGV0 aGVyIGEgU09BUC9KTVMgbWVzc2FnZSBpcyBhIGZhdWx0LiAgRm9yIHNlbmRlcnMsIHRoaXMgcHJv cGVydHkgc2hvdWxkDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgc2V0IHRvIHRydWUg d2hlbiByZXNwb25kaW5nIHdpdGggYSBTT0FQIGZhdWx0LiAgV2hlbiB0aGlzIHByb3BlcnR5IGlz IHRydWUsIHRoZSBzZW5kaW5nIHNvZnR3YXJlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg c2hvdWxkIGluY2x1ZGUgYSBKTVMgcHJvcGVydHkgbmFtZWQgPGNvZGU+U09BUEpNU19pc0ZhdWx0 PC9jb2RlPiB3aXRoIGEgdmFsdWUgb2YgPGNvZGU+MTwvY29kZT4uPC9wPg0KICAgICAgICAgICAg ICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAg ICAgICAgICAgICAgPHA+Rm9yIHJlY2VpdmVycywgdGhpcyBwcm9wZXJ0eSBpcyBkZXJpdmVkIGZy b20gdGhlIEpNUyBwcm9wZXJ0eSBuYW1lZCA8Y29kZT5TT0FQSk1TX2lzRmF1bHQ8L2NvZGU+ICZt ZGFzaDsgaWYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50IGFuZCBjb250YWlu aW5nIGEgdmFsdWUgb2YgPGNvZGU+MTwvY29kZT4sIHRoZSB2YWx1ZSBvZiA8dGVybXJlZiBkZWY9 ImlzRmF1bHQiPnNvYXBqbXM6aXNGYXVsdDwvdGVybXJlZj4gaXMgdHJ1ZS4gIElmIG9taXR0ZWQs DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgcHJlc2VudCB3aXRoIGEgdmFsdWUgb2Yg PGNvZGU+MDwvY29kZT4sIHRoZSB2YWx1ZSBvZiBzb2Fwam1zOmlzRmF1bHQgaXMgZmFsc2UuPC9w Pg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgPC91bGlzdD4N CgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAw ODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5TdHJvbmcgc3RhdGVtZW50cy4gVGVzdGFibGU8 L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQogICAgICAgICAgICA8L2RlZj4NCiAgICAgICAgPC9n aXRlbT4NCiAgICAgICAgPGdpdGVtPg0KICAgICAgICAgICAgPGxhYmVsPg0KICAgICAgICAgICAg ICAgIDx0ZXJtZGVmIGlkPSJyZXF1ZXN0SVJJIiB0ZXJtPSJzb2Fwam1zOnJlcXVlc3RJUkkiPjx0 ZXJtPnNvYXBqbXM6cmVxdWVzdElSSTwvdGVybT48L3Rlcm1kZWY+ICh4c2Q6c3RyaW5nKQ0KICAg ICAgICAgICAgPC9sYWJlbD4NCiAgICAgICAgICAgIDxkZWY+DQogICAgICAgICAgICAgICAgPHVs aXN0Pg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAgICAgICAg IDxwPlNwZWNpZmllcyB0aGUgSk1TIElSSSBvZiB0aGUgc2VydmljZS4gVGhlIGNsaWVudCA8cmZj MjExOT5NVVNUPC9yZmMyMTE5PiBjcmVhdGUgdGhpcyBwcm9wZXJ0eSB3aGljaCBpcyBkZXJpdmVk IGZyb20gdGhlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQgSVJJLiAgVGhl IGNsaWVudCA8cmZjMjExOT5NVVNUPC9yZmMyMTE5PiByZW1vdmUgdGhlIHRhcmdldFNlcnZpY2Ug cXVlcnkgcGFyYW1ldGVyIGlmIHNwZWNpZmllZDsgPHJmYzIxMTk+U0hPVUxEPC9yZmMyMTE5PiBy ZW1vdmUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBKTVMgTWVzc2FnZSBIZWFkZXIgcHJv cGVydGllczsgYW5kIDxyZmMyMTE5Pk1BWTwvcmZjMjExOT4gcmVtb3ZlIG90aGVyIHF1ZXJ5IHBh cmFtZXRlcnMgKGZvciBleGFtcGxlIGNsaWVudCBzZWN1cml0eQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlbGF0ZWQgcHJvcGVydGllcykuPC9wPg0KICAgICAgICAgICAgICAgICAgICA8 L2l0ZW0+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAg ICAgPHA+YSByZXF1aXJlZCBwcm9wZXJ0eTwvcD4NCiAgICAgICAgICAgICAgICAgICAgPC9pdGVt Pg0KICAgICAgICAgICAgICAgICAgICA8aXRlbT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxw PjxyZmMyMTE5Pk1VU1Q8L3JmYzIxMTk+IGFwcGVhciBpbiB0aGUgSk1TIG1lc3NhZ2UgaW4gdGhl IEpNUyBwcm9wZXJ0eSBuYW1lZCA8Y29kZT5TT0FQSk1TX3JlcXVlc3RJUkk8L2NvZGU+Lg0KICAg ICAgICAgICAgICAgICAgICAgICAgPHRlcm1kZWYgaWQ9Im1pc3NpbmdSZXF1ZXN0SVJJIiB0ZXJt PSJtaXNzaW5nUmVxdWVzdElSSSI+VXNlIGZhdWx0IHN1YmNvZGUgPHRlcm0+bWlzc2luZ1JlcXVl c3RJUkk8L3Rlcm0+IGlmDQogICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGNvZGU+U09BUEpN U19yZXF1ZXN0SVJJPC9jb2RlPiBpcyBtaXNzaW5nIGZyb20gdGhlIG1lc3NhZ2UuPC90ZXJtZGVm PiA8L3A+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICA8L3Vs aXN0Pg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0 ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PlN0cm9uZyBzdGF0ZW1lbnRzLiBUZXN0 YWJsZTwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90ZT4NCiAgICAgICAgICAgIDwvZGVmPg0KICAgICAg ICA8L2dpdGVtPg0KICAgIDwvZ2xpc3Q+DQoNCiAgICAgIDwvZGl2Mz4gPCEtLSBtZXNzYWdlIHBy b3BlcnRpZXMgLS0+DQoNCiAgICAgIDxkaXYzIGlkPSJiaW5kaW5nLXByb3BzLWlyaSI+DQogICAg ICA8aGVhZD5CaW5kaW5nIG9mIFByb3BlcnRpZXMgdG8gSVJJPC9oZWFkPg0KDQogICAgICA8cD5J bXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBzcGVjaWZpY2F0aW9uIG5lZWQgdG8gYWxsb3cgZm9yIHRo ZSBzZXR0aW5nDQogICAgICBvZiB0aGUgYWJvdmUgcHJvcGVydGllcy4gIFNvbWUgcHJvcGVydGll cywgYXMgbWVudGlvbmVkIGFib3ZlIGNhbiBiZQ0KICAgICAgaW5mZXJyZWQgZnJvbSBjb250ZXh0 LCBvciBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24gZW52aXJvbm1lbnQuIA0KICAgICAgU29t ZSBtaWdodCBiZSBwdXQgaW50byBXU0RMLiAgSW4gbWFueSBjYXNlcywgaXQgaXMgZGVzaXJhYmxl IHRvDQogICAgICByZXByZXNlbnQgdGhvc2UgcHJvcGVydGllcyBhcyBwYXJ0IG9mIGEgVVJMLWxp a2UgcmVwcmVzZW50YXRpb24uICBUbw0KICAgICAgY29uZm9ybSB0byB0aGUgbGF0ZXN0IGVuaGFu Y2VtZW50cyB0byBzdXBwb3J0IGludGVybmF0aW9uYWxpemF0aW9uLA0KICAgICAgdGhpcyBzcGVj aWZpY2F0aW9uIHJlZmVyZW5jZXMgdGhlIFs8YmlicmVmIHJlZj0iam1zaXJpIiAvPl0uIEluIHBh cnRpY3VsYXIsDQogICAgICB0aGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyB0aGUgcHJvcGVydGll cyBhYm92ZSBhcmUgdXNlZCBpbiB0aGUgSVJJICBbPGJpYnJlZiByZWY9InJmYzM5ODciIC8+XS4N CiAgICAgIE5vdGUgdGhhdCB0aGUgSVJJIHNjaGVtZSBhbHNvIGRlZmluZXMgcXVlcnkgcGFyYW1l dGVycywgYW5kIHdoZXJlIHRoZQ0KICAgICAgcXVlcnkgcGFyYW1ldGVyIG5hbWVzIGFyZSB0aGUg c2FtZSwgdGhlIHNhbWUgbWVhbmluZyBpcyBpbnRlbmRlZCBoZXJlLjwvcD4NCg0KICAgICAgPHA+ Rm9yIGJyZXZpdHksIHByb3BlcnRpZXMgYXJlIHNob3duIHdpdGhvdXQgdGhlIDxjb2RlPlNPQVBK TVM8L2NvZGU+IHByZWZpeC4NCiAgICAgIFRoZSAiSVJJIHJlcHJlc2VudGF0aW9uIiBjb2x1bW4g ZGVzY3JpYmVzIGhvdyB0aGUgcHJvcGVydHkgaXMgY2FycmllZA0KICAgICAgaW4gdGhlIElSSS4g IFRoZSAiQ2xpZW50IHRyZWF0bWVudCIgY29sdW1uIGRlc2NyaWJlcyBob3cgdGhlIHByb3BlcnR5 DQogICAgICBzaG91bGQgYmUgdHJlYXRlZCBpbiB0aGUgcHJvY2VzcyBvZiBmb3JtaW5nIHRoZQ0K ICAgICAgPHRlcm1yZWYgZGVmPSJyZXF1ZXN0SVJJIj5zb2Fwam1zOnJlcXVlc3RJUkk8L3Rlcm1y ZWY+IHByb3BlcnR5LiAgVGhlcmUgYXJlIHRocmVlIG9wdGlvbnMgZm9yIHRoaXMNCiAgICAgIGNv bHVtbjo8L3A+DQoNCiAgICAgIDx1bGlzdD4gDQogICAgICA8aXRlbT48cD5Bcy1pcyAmbWRhc2g7 IHRoZSBjbGllbnQgPHJmYzIxMTk+U0hPVUxEPC9yZmMyMTE5PiBsZWF2ZSB0aGUgaW5mb3JtYXRp b24gaW4gdGhlIElSSSBhcw0KICAgICAgaXMuPC9wPjwvaXRlbT4NCiAgICAgIDxpdGVtPjxwPlNo b3VsZCBleGNsdWRlICZtZGFzaDsgdGhlIGNsaWVudCA8cmZjMjExOT5TSE9VTEQ8L3JmYzIxMTk+ IGV4Y2x1ZGUgdGhlIGluZm9ybWF0aW9uDQogICAgICBmcm9tIHRoZSBnZW5lcmF0ZWQgPHRlcm1y ZWYgZGVmPSJyZXF1ZXN0SVJJIj5yZXF1ZXN0SVJJPC90ZXJtcmVmPiAuPC9wPjwvaXRlbT4NCiAg ICAgIDxpdGVtPjxwPk11c3QgZXhjbHVkZSAmbWRhc2g7IHRoZSBjbGllbnQgPHJmYzIxMTk+TVVT VDwvcmZjMjExOT4gbm90IGluY2x1ZGUgdGhlIGluZm9ybWF0aW9uIGluDQogICAgICB0aGUgZ2Vu ZXJhdGVkIDx0ZXJtcmVmIGRlZj0icmVxdWVzdElSSSI+cmVxdWVzdElSSTwvdGVybXJlZj4uPC9w PjwvaXRlbT4NCiAgICAgIDwvdWxpc3Q+DQogICAgICANCiAgICAgIDx0YWJsZSBzdW1tYXJ5PSJw cm9wZXJ0aWVzIGFyZSBzaG93biB3aXRob3V0IHRoZSBTT0FQSk1TIHByZWZpeC4gVGhlICdJUkkg cmVwcmVzZW50YXRpb24nIGNvbHVtbiBkZXNjcmliZXMgaG93IHRoZSBwcm9wZXJ0eSBpcyBjYXJy aWVkIGluIHRoZSBJUkkuICBUaGUgJ0NsaWVudCB0cmVhdG1lbnQnIGNvbHVtbiBkZXNjcmliZXMg aG93IHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgdHJlYXRlZCBpbiB0aGUgcHJvY2VzcyBvZiBmb3Jt aW5nIHRoZSBzb2Fwam1zOnJlcXVlc3RJUkkgcHJvcGVydHkuIg0KCSAgICAgaWQ9InByb3BlcnRp ZXMySVJJIg0KCSAgICAgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjUi Pg0KCTxjYXB0aW9uPkJpbmRpbmcgb2YgUHJvcGVydGllcyB0byBJUkk8L2NhcHRpb24+DQogICAg ICA8dGhlYWQ+PHRyPjx0aD5TcGVjaWZpY2F0aW9uIFByb3BlcnR5PC90aD48dGg+SVJJIFJlcHJl c2VudGF0aW9uPC90aD48dGg+Q2xpZW50IFRyZWF0bWVudDwvdGg+PC90cj48L3RoZWFkPg0KICAg ICAgPHRib2R5Pg0KICAgICAgPHRyPjx0ZD5kZWxpdmVyeU1vZGU8L3RkPjx0ZD4gYXMgPGNvZGU+ ZGVsaXZlcnlNb2RlPC9jb2RlPiBxdWVyeSBwYXJhbWV0ZXI8L3RkPjx0ZD5TaG91bGQgZXhjbHVk ZTwvdGQ+PC90cj4NCiAgICAgIDx0cj48dGQ+ZGVzdGluYXRpb25OYW1lPC90ZD48dGQ+YXMgPGNv ZGU+am1zLWRlc3Q8L2NvZGU+IHBvcnRpb24gb2YgSVJJIHN5bnRheDwvdGQ+PHRkPiBBcy1pczwv dGQ+PC90cj4NCiAgICAgIDx0cj48dGQ+am5kaUNvbm5lY3Rpb25GYWN0b3J5TmFtZTwvdGQ+PHRk PiBhcyA8Y29kZT5qbmRpQ29ubmVjdGlvbkZhY3RvcnlOYW1lPC9jb2RlPiBxdWVyeSBwYXJhbWV0 ZXI8L3RkPjx0ZD5TaG91bGQgZXhjbHVkZTwvdGQ+PC90cj4NCiAgICAgIDx0cj48dGQ+am5kaUlu aXRpYWxDb250ZXh0RmFjdG9yeTwvdGQ+PHRkPiBhcyA8Y29kZT5qbmRpSW5pdGlhbENvbnRleHRG YWN0b3J5PC9jb2RlPiBxdWVyeSBwYXJhbWV0ZXI8L3RkPjx0ZD5TaG91bGQgZXhjbHVkZTwvdGQ+ PC90cj4NCiAgICAgIDx0cj48dGQ+am5kaVVSTDwvdGQ+PHRkPiBhcyA8Y29kZT5qbmRpVVJMPC9j b2RlPiBxdWVyeSBwYXJhbWV0ZXI8L3RkPjx0ZD5TaG91bGQgZXhjbHVkZTwvdGQ+PC90cj4NCiAg ICAgIDx0cj48dGQ+cmVwbHlUb05hbWU8L3RkPjx0ZD4gYXMgPGNvZGU+cmVwbHlUb05hbWU8L2Nv ZGU+IHF1ZXJ5IHBhcmFtZXRlcjwvdGQ+PHRkPk11c3QgZXhjbHVkZTwvdGQ+PC90cj4NCiAgICAg IDx0cj48dGQ+cHJpb3JpdHk8L3RkPjx0ZD4gYXMgPGNvZGU+cHJpb3JpdHk8L2NvZGU+IHF1ZXJ5 IHBhcmFtZXRlcjwvdGQ+PHRkPlNob3VsZCBleGNsdWRlPC90ZD48L3RyPg0KICAgICAgPHRyPjx0 ZD50YXJnZXRTZXJ2aWNlPC90ZD48dGQ+IGFzIDxjb2RlPnRhcmdldFNlcnZpY2U8L2NvZGU+IHF1 ZXJ5IHBhcmFtZXRlcjwvdGQ+PHRkPk11c3QgZXhjbHVkZTwvdGQ+PC90cj4NCiAgICAgIDx0cj48 dGQ+dGltZVRvTGl2ZTwvdGQ+PHRkPiBhcyA8Y29kZT50aW1lVG9MaXZlPC9jb2RlPiBxdWVyeSBw YXJhbWV0ZXI8L3RkPjx0ZD5TaG91bGQgZXhjbHVkZTwvdGQ+PC90cj4NCiAgICAgIA0KICAgICAg PCEtLSByZW1vdmVkIDIwMDctMDYtMjEgUkFNDQogICAgICA8dHI+PHRkPmRlc3RpbmF0aW9uVHlw ZTwvdGQ+PHRkPiBhcyA8Y29kZT5kZXN0aW5hdGlvblR5cGU8L2NvZGU+IHF1ZXJ5IHBhcmFtZXRl cjwvdGQ+PHRkPlNob3VsZCBleGNsdWRlPC90ZD48L3RyPg0KICAgICAgLS0+DQogICAgICANCiAg ICAgIDwvdGJvZHk+PC90YWJsZT4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25h bWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5Mb3RzIG9m IG11c3Qgc3RhdGVtZW50cyBhcyB0byB3aGF0IGlzIGxlZnQtb3ZlciBpbiB0aGUgcmVxdWVzdElS SSBieSB0aGUgY2xpZW50IHNpZGUuIExvdHMgb2Ygc3RhdGVtZW50cyBvbiBob3cgdGhlIElSSSBy ZXByZXNlbnRhdGlvbiBtYXBzIHRvIHByb3BlcnRpZXMuIFRlc3RhYmxlIG9uIHRoZXNlIDIgbGV2 ZWxzPC9lZHRleHQ+DQoJICAgIDwvZWRub3RlPg0KDQogICAgICA8cD48dGVybWRlZiBpZD0ibWFs Zm9ybWVkUmVxdWVzdElSSSIgdGVybT0ibWFsZm9ybWVkUmVxdWVzdElSSSI+VXNlIGZhdWx0IHN1 YmNvZGUgPHRlcm0+bWFsZm9ybWVkUmVxdWVzdElSSTwvdGVybT4NCiAgICAgIHdoZW4gdGhlIElS SSB2aW9sYXRlcyB0aGUgZXhwZWN0ZWQgc3ludGF4LjwvdGVybWRlZj4uICA8dGVybWRlZiBpZD0i dGFyZ2V0U2VydmljZU5vdEFsbG93ZWRJblJlcXVlc3RJUkkiDQogICAgICAJdGVybT0idGFyZ2V0 U2VydmljZU5vdEFsbG93ZWRJblJlcXVldElSSSI+IFVzZSBmYXVsdCBzdWJjb2RlIA0KICAgICAg PHRlcm0+dGFyZ2V0U2VydmljZU5vdEFsbG93ZWRJblJlcXVlc3RJUkk8L3Rlcm0+IHdoZW4gPGNv ZGU+dGFyZ2V0U2VydmljZTwvY29kZT4gcGFyYW1ldGVyIGlzDQogICAgICBpbmNsdWRlZCBpbiB0 aGUgPHRlcm1yZWYgZGVmPSJyZXF1ZXN0SVJJIj5yZXF1ZXN0SVJJPC90ZXJtcmVmPikuPC90ZXJt ZGVmPjwvcD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAg PGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD4yIHN0cm9uZyBzdGF0ZW1lbnRz LiBUZXN0YWJsZTwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90ZT4NCg0KICAgICAgPC9kaXYzPiA8IS0t IGlyaSBwcm9wZXJ0aWVzIC0tPg0KDQogICAgICA8ZGl2MyBpZD0iYmluZGluZy1vdGhlci1wcm9w cyI+DQogICAgICA8aGVhZD5PdGhlciBQcm9wZXJ0aWVzPC9oZWFkPg0KICAgICAgDQogICAgICA8 cD5JdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG90aGVyIHByb3BlcnRpZXMgb24gdGhlIElSSSBi dXQgdGhleSBkbw0KICAgICAgbm90IGFmZmVjdCBwcm9jZXNzaW5nLiBBbnkgc3VjaCBwcm9wZXJ0 aWVzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIEpNUw0KICAgICAgTWVzc2FnZSBwcm9wZXJ0eSBy ZXF1ZXN0SVJJIHVubGVzcyBleHBsaWNpdGx5IHJlbW92ZWQgYnkgdGhlIGNsaWVudC4NCiAgICAg IDwvcD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRh dGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5VbnRlc3RhYmxlID8gRG8gd2UgbWVh biB0aGlzID88L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQoNCiAgICAgIDwvZGl2Mz4gPCEtLSBv dGhlciBwcm9wcyAtLT4NCiAgICA8L2RpdjI+IDwhLS0gcHJvcGVydGllcyAtLT4NCg0KICAgIDxk aXYyIGlkPSJhdXRoZW50aWNhdGlvbiI+DQogICAgPGhlYWQ+QXV0aGVudGljYXRpb24gZm9yIFNP QVAvSk1TPC9oZWFkPg0KDQogICAgICAgIDxwPlNlY3VyaXR5LCBhbmQgaW4gcGFydGljdWxhciBh dXRoZW50aWNhdGlvbiwgaXMgYSBjcml0aWNhbCBjb25jZXJuIGluIG1vc3QgaWYgbm90IGFsbA0K ICAgICAgICAgICAgZW52aXJvbm1lbnRzIHdoZXJlIHRoaXMgYmluZGluZyB3aWxsIGJlIHV0aWxp emVkLiAgVGhlcmUgYXJlIGF0IGxlYXN0IHR3byBwbGFjZXMgd2hlcmUNCiAgICAgICAgICAgYXV0 aGVudGljYXRpb24gbWF5IG5lZWQgdG8gb2NjdXIgJm1kYXNoOyAxKSBhdXRoZW50aWNhdGluZyB0 byB0aGUgcmVnaXN0cnkgKGkuZS4gSk5ESSkgd2hlcmUNCiAgICAgICAgICAgSk1TIERlc3RpbmF0 aW9ucyBhcmUgbG9jYXRlZCwgYW5kIDIpIGF1dGhlbnRpY2F0aW5nIHRvIHRoZSBKTVMgc3lzdGVt IGl0c2VsZi4NCiAgICAgICAgICAgQ3JlZGVudGlhbHMgc3VjaCBhcyB1c2VybmFtZXMgYW5kIHBh c3N3b3JkcyBtYXkgYmUgcmVxdWlyZWQgdG8gYWNjZXNzIGRpcmVjdG9yaWVzIGFuZA0KICAgICAg ICAgICB0byBvYnRhaW4gSk1TIENvbm5lY3Rpb25zIGZyb20gQ29ubmVjdGlvbkZhY3Rvcmllcy4g IFRoaXMgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYW5kYXRlDQogICAgICAgICAgIGhvdyBhbiBp bXBsZW1lbnRhdGlvbiBzaG91bGQgb2J0YWluIHRoZXNlIGNyZWRlbnRpYWxzLCBhbHRob3VnaCB0 eXBpY2FsbHkgdGhleSBtYXkgYmUNCiAgICAgICAgICAgYXZhaWxhYmxlIGFzIEFQSSBwYXJhbWV0 ZXJzLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9yIGluIHRocmVhZCBjb250ZXh0IHN0b3JhZ2Uu DQogICAgICAgIDwvcD4NCg0KICAgICAgICA8cD5JbXBsZW1lbnRlcnMgb2YgdGhpcyBiaW5kaW5n IHNob3VsZCBjb25zaWRlciBob3cgdG8gbW9zdCBhcHByb3ByaWF0ZWx5IGV4cG9zZQ0KICAgICAg ICBhdXRoZW50aWNhdGlvbiBmdW5jdGlvbmFsaXR5IHRvIHRoZWlyIHVzZXJzIGluIGEgd2F5IHRo YXQgbWVzaGVzIHNtb290aGx5IHdpdGggdGhlDQogICAgICAgIG1vZGVscyBleHBvc2VkIGJ5IHRo ZWlyIGVudmlyb25tZW50cy48L3A+DQoNCiAgICAgICAgPG5vdGU+PHA+QWx0aG91Z2ggdGVjaG5p Y2FsbHkgcG9zc2libGUsIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHVzZXJpZCBhbmQvb3IgcGFzc3dv cmQgcmVsYXRlZA0KICAgICAgICAgICAgcHJvcGVydGllcyBpbiB0aGUgSVJJIGlzIG5vdCByZWNv bW1lbmRlZC48L3A+PC9ub3RlPg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFt ZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PlVudGVzdGFi bGU/PC9lZHRleHQ+DQoJICAgIDwvZWRub3RlPg0KDQogICAgPC9kaXYyPg0KDQogICAgPGRpdjIg aWQ9ImJpbmRpbmctbWVzc2FnZS1ib2R5Ij4NCiAgICA8aGVhZD5UaGUgSk1TIE1lc3NhZ2UgQm9k eTwvaGVhZD4NCg0KICAgIDxwPlRoZSBjb250ZW50cyBvZiB0aGUgSk1TIE1lc3NhZ2UgYm9keSA8 cmZjMjExOT5NVVNUPC9yZmMyMTE5PiBiZSB0aGUgU09BUCBwYXlsb2FkIGFzIGENCiAgICBKTVMg PGNvZGU+Qnl0ZXNNZXNzYWdlPC9jb2RlPi4gIDx0ZXJtZGVmIHRlcm09InVuc3VwcG9ydGVkSk1T TWVzc2FnZUZvcm1hdCIgaWQ9InVuc3VwcG9ydGVkSk1TTWVzc2FnZUZvcm1hdCI+DQogICAgVXNl IGZhdWx0IHN1YmNvZGUgPHRlcm0+dW5zdXBwb3J0ZWRKTVNNZXNzYWdlRm9ybWF0PC90ZXJtPiB3 aGVuIHRoZSBhcnJpdmluZyBtZXNzYWdlIGZvcm1hdCBpcw0KICAgIG5vdCBzdXBwb3J0ZWQgYnkg dGhlIGFwcGxpY2F0aW9uLjwvdGVybWRlZj4uICBUaGUgZW5jb2Rpbmcgd2lsbCBkZXBlbmQgb24g d2hldGhlciB0aGUgcGF5bG9hZCBpcyBzaW1wbHkgYSBTT0FQDQogICAgRW52ZWxvcGUgb3Igd2hl dGhlciB0aGVyZSBhcmUgYW55IGF0dGFjaG1lbnRzLCBhbmQgdGhlIEpNUw0KICAgICJDb250ZW50 LXR5cGUiIGhlYWRlciAoc2VjdGlvbiAzLjMpIHdpbGwgcmVmbGVjdCB0aGlzIGFwcHJvcHJpYXRl bHkuPC9wPg0KICAgIDxlZG5vdGUgcm9sZT0nZWRpdG9yJz4NCiAgICAgIDxuYW1lPnBsaDwvbmFt ZT4NCiAgICAgIDxkYXRlPjIwMDgwNTAxPC9kYXRlPg0KICAgICAgPGVkdGV4dD4ic2VjdGlvbiAz LjMiIChpbiBwYXJhZ3JhcGggYWJvdmUpIGRvZXNuJ3Qgc2VlbSB0byBsZWFkIHRvIHRoZSByaWdo dCBwbGFjZT8hPzwvZWR0ZXh0Pg0KICAgIDwvZWRub3RlPg0KCSAgICA8ZWRub3RlPg0KCSAgICAg IDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8 ZWR0ZXh0PlN0cm9uZyBzdGF0ZW1lbnRzLiBUZXN0YWJsZTwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90 ZT4NCg0KICAgIDxwPkluIHRoZSBjYXNlIG9mIGEgbWVzc2FnZSB3aXRob3V0IGFueSBhdHRhY2ht ZW50cywgdGhlIEpNUyBNZXNzYWdlDQogICAgQm9keSB3aWxsIGNvbnRhaW4gdGhlIHByb3Blcmx5 IGVuY29kZWQgYnl0ZXMgb2YgdGhlIFhNTCBTT0FQIG1lc3NhZ2UsDQogICAgYW5kIG5vdGhpbmcg ZWxzZS4gIEluIHRoaXMgY2FzZSB0aGUgQ29udGVudC10eXBlIHdpbGwgYmUgInRleHQveG1sIiAo Zm9yDQogICAgU09BUCAxLjEpIG9yICJhcHBsaWNhdGlvbi9zb2FwK3htbCIgKGZvciBTT0FQIDEu MikuPC9wPg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8 ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PlN0cm9uZyBzdGF0ZW1lbnRzLiBU ZXN0YWJsZTwvZWR0ZXh0Pg0KCSAgICA8L2Vkbm90ZT4NCg0KICAgIDxwPkluIHRoZSBjYXNlIHRo YXQgdGhlcmUgYXJlIGF0dGFjaG1lbnRzLCB0aGUgSk1TIE1lc3NhZ2UgQm9keSB3aWxsDQogICAg Y29udGFpbiBhIG11bHRpcGFydCBNSU1FIG1lc3NhZ2UuICBUaGUgZmlyc3QgdGhpbmcgZW5jb3Vu dGVyZWQgaW4gYnl0ZQ0KICAgIHN0cmVhbSA8cmZjMjExOT5NVVNUPC9yZmMyMTE5PiBiZSB0aGUg TUlNRSBib3VuZGFyeSBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBwYXJ0ICZtZGFzaDsgd2hh dA0KICAgIE1JTUUgUGFydCBPbmUgWzxiaWJyZWYgcmVmPSJtaW1lIiAvPl0gc2VjdGlvbiAyLjUg Y2FsbHMgYSAiQm9keSBQYXJ0Ii4gIFRoZSANCiAgICBtZXNzYWdlIHdpbGwgYmUgZW5jb2RlZCB1 c2luZyBTT0FQIE1lc3NhZ2VzIHdpdGggQXR0YWNobWVudHMgWzxiaWJyZWYgcmVmPSJTd0EiIC8+ XSBvciBYT1AgWzxiaWJyZWYgcmVmPSJTT0FQMTEtTVRPTSIgLz5dIFs8YmlicmVmIHJlZj0iU09B UDEyLU1UT00iIC8+XSwgDQogICAgaW4gZWl0aGVyIGNhc2Ugd2l0aCBhIENvbnRlbnQtdHlwZSBv ZiAibXVsdGlwYXJ0L3JlbGF0ZWQiLjwvcD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5w c2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5T dHJvbmcgc3RhdGVtZW50cy4gVGVzdGFibGU8L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQoNCiAg ICA8L2RpdjI+IDwhLS0gbWVzc2FnZSBib2R5IC0tPg0KDQogICAgPGRpdjIgaWQ9ImJpbmRpbmct c3VwcG9ydGVkLW1lcHMiPg0KICAgIDxoZWFkPlN1cHBvcnRlZCBNZXNzYWdlIEV4Y2hhbmdlIFBh dHRlcm5zPC9oZWFkPg0KDQogICAgPHA+QW4gaW5zdGFuY2Ugb2YgYSBiaW5kaW5nIHRvIEpNUyBj b25mb3JtaW5nIHRvIHRoaXMgYmluZGluZw0KICAgIHNwZWNpZmljYXRpb24gPHJmYzIxMTk+TVVT VDwvcmZjMjExOT4gc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UgZXhjaGFuZ2UgcGF0dGVy bnM6PC9wPg0KDQogICAgPHVsaXN0Pg0KICAgIDxpdGVtPjxwPlJlcXVlc3QtUmVzcG9uc2U8L3A+ PC9pdGVtPg0KICAgIDxpdGVtPjxwPk9uZS13YXk8L3A+PC9pdGVtPg0KICAgIDwvdWxpc3Q+DQoN CiAgICA8cD5JbiB0aGUgY2FzZSBvZiBTT0FQIDEuMiBhIGNvbmZvcm1pbmcgU09BUC1KTVMgQmlu ZGluZyBpbnN0YW5jZSA8cmZjMjExOT5NVVNUPC9yZmMyMTE5Pg0KICAgIHN1cHBvcnQgdGhlIGZv bGxvd2luZyBtZXNzYWdlIGV4Y2hhbmdlIHBhdHRlcm5zOjwvcD4NCg0KCTx1bGlzdD4NCgkJPGl0 ZW0+DQoJCQk8cD4NCgkJCTxjb2RlPmh0dHA6Ly93d3cudzMub3JnLzIwMDMvMDUvc29hcC9tZXAv cmVxdWVzdC1yZXNwb25zZS88L2NvZGU+DQoJCQkoZGVmaW5lZCBpbiBzZWN0aW9uIDYuMiwgPHhz cGVjcmVmDQoJCQlocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9zb2FwMTItcGFydDIvI3Npbmds ZXJlcXJlc3BtZXAiPlJlcXVlc3QtUmVzcG9uc2UNCgkJCU1lc3NhZ2UgRXhjaGFuZ2UgUGF0dGVy bjwveHNwZWNyZWY+LA0KCQkJWzxiaWJyZWYgcmVmPSJzb2FwMTJwMiIgLz5dKQ0KCQkJPC9wPg0K CQk8L2l0ZW0+DQoJCTxpdGVtPg0KCQkgICAgPHA+IDxjb2RlPmh0dHA6Ly93d3cudzMub3JnLzIw MDYvMDgvc29hcC9tZXAvb25lLXdheS88L2NvZGU+IChkZWZpbmVkIGluDQoJCSAgICBbPGJpYnJl ZiByZWY9InNvYXAtb25lLXdheS1tZXAiIC8+XSkNCgkJICAgIDwvcD4JICAgIAkNCgkJPC9pdGVt Pg0KCTwvdWxpc3Q+DQoNCiAgICA8cD5JbiB0aGUgY2FzZSBvZiBTT0FQIDEuMSB0aGVyZSBpcyBu byBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZg0KICAgIE1lc3NhZ2UgRXhjaGFuZ2UgUGF0dGVybnMu IEEgY29uZm9ybWluZyBTT0FQLUpNUyBCaW5kaW5nIGluc3RhbmNlDQogICAgPHJmYzIxMTk+TVVT VDwvcmZjMjExOT4gc3VwcG9ydCBib3RoIHRoZSBnZW5lcmljDQogICAgInJlcXVlc3QvcmVzcG9u c2UiIGFuZCAib25lLXdheSIgcGF0dGVybnMgYW5kIGluIHRoZSBjYXNlIG9mIFNPQVANCiAgICAx LjEgYXJlIHNwZWNpZmllZCBpbiB0aGlzIGRvY3VtZW50LiBSZWxldmFudCBpbmZvcm1hdGlvbiBv biBob3cNCiAgICBTT0FQIDEuMSBzaG91bGQgYmluZCB0byBIVFRQIGlzIHNwZWNpZmllZCBpbiB0 aGF0IHNwZWNpZmljYXRpb24NCiAgICBbPGJpYnJlZiByZWY9InNvYXAxMSIgLz5dLjwvcD4NCgkg ICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1 MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD4ic2hvdWxkIGJpbmQgdG8gSFRUUCIgaXMgdGhpcyBy ZWxldmFudD88L2VkdGV4dD4NCgkgICAgPC9lZG5vdGU+DQoNCiAgICA8cD5UaGVyZSBhcmUgdGFi bGVzIG9mIEpNUyBwcm9wZXJ0aWVzLCBhbmQgZXhwbGFuYXRpb25zIG9mIHRoZWlyIHZhbHVlcywN CiAgICBpbiB0aGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbi4gIE5vdGUgdGhhdCBvbmx5IHRo ZSByZWxldmFudA0KICAgIHByb3BlcnRpZXMgKGkuZS4gb25lcyBhZmZlY3RlZCBieSB0aGlzIHNw ZWNpZmljYXRpb24pIGhhdmUgYmVlbiBpbmNsdWRlZA0KICAgICZtZGFzaDsgb3RoZXIgcHJvcGVy dGllcyB3aWxsIGNvbnRpbnVlIHRvIGZvbGxvdyB0aGUgbm9ybWFsIEpNUyBzcGVjaWZpY2F0aW9u LiANCiAgICBGb3IgaW5zdGFuY2UsIHRoZSBKTVNNZXNzYWdlSUQgaGVhZGVyIHdpbGwgYmUgcHJl c2VudCBvbiBhbGwgbWVzc2FnZXMsDQogICAgYW5kIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5 IHRoZSB1bmRlcmx5aW5nIEpNUyBpbXBsZW1lbnRhdGlvbi48L3A+DQoNCiAgICAgIDxkaXYzIGlk PSJiaW5kaW5nLXN1cHBvcnQtdG9waWNzIj4NCiAgICAgIDxoZWFkPlN1cHBvcnQgZm9yIFRvcGlj IGRlc3RpbmF0aW9uczwvaGVhZD4NCiAgICAgIA0KICAgICAgPHA+VG9waWNzIG1heSBiZSB1c2Vk IGFzIGRlc3RpbmF0aW9ucyBmb3IgU09BUCBtZXNzYWdlcyBvdmVyIEpNUy4gDQogICAgICBIb3dl dmVyLCBkdWUgdG8gdGhlIHBvdGVudGlhbCBjb21wbGV4aXRpZXMgYXJvdW5kIGhvdyB0b3BpY3Mg bWlnaHQNCiAgICAgIGludGVyYWN0IHdpdGggbWVzc2FnZS1leGNoYW5nZSBwYXR0ZXJucywgdGhp cyBzcGVjaWZpY2F0aW9uIHByb3ZpZGVzDQogICAgICBubyBndWlkZWxpbmVzIGFzIHRvIGhvdyB0 aGF0IG1lc3NhZ2UgZXhjaGFuZ2UgbWlnaHQgd29yay4gIEluDQogICAgICBwYXJ0aWN1bGFyLCB0 aGUgInJlcXVlc3QtcmVzcG9uc2UiIGV4Y2hhbmdlIGNsZWFybHkgbWVhbnMgc29tZXRoaW5nDQog ICAgICBkaWZmZXJlbnQgd2hlbiBhbiB1bmtub3duIG51bWJlciBvZiByZXNwb25zZXMgbWlnaHQg YmUgcmVjZWl2ZWQuICBFdmVuDQogICAgICB0aGUgIm9uZS13YXkiIGV4Y2hhbmdlIG92ZXIgYSBK TVMgdG9waWMgZGlmZmVycyBpbiBzdWJ0bGUgd2F5cyBmcm9tDQogICAgICB0aGUgc2FtZSBleGNo YW5nZSBvdmVyIEhUVFAsIGluY2x1ZGluZyB0aGUgZnVuZGFtZW50YWwgcXVlc3Rpb24gb2YNCiAg ICAgIHdoZXRoZXIgdGhlIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYXQgYWxsLCBieSBhbnkgbGlzdGVu ZXJzLjwvcD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAg PGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5UZXN0aW5nIG9wdGlvbmFsIC0g MS13YXlzIHBlcmhhcHM8L2VkdGV4dD4gDQoJICAgIDwvZWRub3RlPg0KDQogICAgICA8cD5Gb3Ig dGhlc2UgcmVhc29ucywgaW1wbGVtZW50ZXJzIGFuZCBjbGllbnRzIG9mIHRoaXMgc3BlY2lmaWNh dGlvbg0KICAgICAgYXJlIGFkdmlzZWQgdG8gdXNlIGNhdXRpb24gd2hlbiBkZWFsaW5nIHdpdGgg Sk1TIHRvcGljcy4gIFdlIHN0cm9uZ2x5DQogICAgICBlbmNvdXJhZ2UgaW1wbGVtZW50ZXJzIHRv IGNhcmVmdWxseSBkb2N1bWVudCB0aGVpciBjaG9pY2VzIGFyb3VuZCB0aGUNCiAgICAgIHVzZSBh bmQgc3VwcG9ydCBvZiB0b3BpYyBkZXN0aW5hdGlvbnMuPC9wPg0KDQogICAgICA8L2RpdjM+IDwh LS0gdG9waWMgZGVzdGluYXRpb25zIC0tPg0KICAgIDwvZGl2Mj4gPCEtLSBzdXBwb3J0ZWQgbWVw cyAtLT4NCg0KICAgIDxkaXYyIGlkPSJiaW5kaW5nLXJlcXVlc3QtcmVzcG9uc2UiPg0KICAgIDxo ZWFkPlJlcXVlc3QtUmVzcG9uc2UgTUVQPC9oZWFkPg0KDQogICAgPHA+VGhlDQogICAgPGNvZGU+ aHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwL21lcC9yZXF1ZXN0LXJlc3BvbnNlLzwvY29k ZT4NCiAgICBtZXNzYWdlIHBhdHRlcm4gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gNi4yLCA8eHNw ZWNyZWYNCiAgICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9zb2FwMTItcGFydDIvI3Npbmds ZXJlcXJlc3BtZXAiPlJlcXVlc3QtUmVzcG9uc2UNCiAgICBNZXNzYWdlIEV4Y2hhbmdlIFBhdHRl cm48L3hzcGVjcmVmPiwgWzxiaWJyZWYgcmVmPSJzb2FwMTJwMiINCiAgICAvPl0uPC9wPg0KDQog ICAgPHA+Rm9yIGJpbmRpbmcgaW5zdGFuY2VzIGNvbmZvcm1pbmcgdG8gdGhpcyBzcGVjaWZpY2F0 aW9uOjwvcD4NCg0KICAgIDx1bGlzdD4NCiAgICA8aXRlbT48cD5BIFNPQVAgTm9kZSBpbnN0YW50 aWF0ZWQgYXQgdGhlIEpNUyBpbnRlcmZhY2UgKHNlbmRpbmcgYW5kDQogICAgcmVjZWl2aW5nKSBt YXkgdGFrZSBvbiB0aGUgcm9sZSAoaS5lLiB0aGUgcHJvcGVydHkgPGNvZGU+aHR0cDovL3d3dy53 My5vcmcvMjAwMy8wNS9zb2FwL2JpbmRpbmdGcmFtZXdvcmsvRXhjaGFuZ2VDb250ZXh0L1JvbGU8 L2NvZGU+KQ0KICAgIG9mIDxjb2RlPlJlcXVlc3RpbmdTT0FQTm9kZTwvY29kZT4uPC9wPg0KCSAg ICA8ZWRub3RlPg0KCSAgICAgIDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUy MTwvZGF0ZT4NCgkgICAgICA8ZWR0ZXh0PiJzZW5kaW5nIGFuZCByZWNlaXZpbmciIGNvbmZ1c2Vz IC0gb21pdCA/IFNhbWUgY29tbWVudCBiZWxvdy48L2VkdGV4dD4gDQoJICAgIDwvZWRub3RlPiA8 L2l0ZW0+DQoNCiAgICA8aXRlbT48cD5BIFNPQVAgTm9kZSBpbnN0YW50aWF0ZWQgYXQgdGhlIEpN UyBpbnRlcmZhY2UgKHNlbmRpbmcgYW5kDQogICAgcmVjZWl2aW5nKSBtYXkgdGFrZSBvbiB0aGUg cm9sZSAoaS5lLiB0aGUgcHJvcGVydHkgPGNvZGU+aHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9z b2FwL2JpbmRpbmdGcmFtZXdvcmsvRXhjaGFuZ2VDb250ZXh0L1JvbGU8L2NvZGU+KSBvZg0KICAg IDxjb2RlPlJlc3BvbmRpbmdTT0FQTm9kZTwvY29kZT4uPC9wPjwvaXRlbT4NCiAgICA8L3VsaXN0 Pg0KDQogICAgPHA+VGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gY29uc2lzdHMgb2YgZGVz Y3JpcHRpb25zIG9mIHRoZSBNRVANCiAgICBzdGF0ZSBtYWNoaW5lLiBJbiB0aGUgc3RhdGUgZGVz Y3JpcHRpb25zIGZvbGxvd2luZywgdGhlIHN0YXRlcyBhcmUNCiAgICBkZWZpbmVkIGFzIHZhbHVl cyBmb3IgdGhlIHByb3BlcnR5IDxjb2RlPmh0dHA6Ly93d3cudzMub3JnLzIwMDMvMDUvc29hcC9i aW5kaW5nRnJhbWV3b3JrL0V4Y2hhbmdlQ29udGV4dC9TdGF0ZTwvY29kZT4uPC9wPg0KDQogICAg PHA+RmFpbHVyZSByZWFzb25zIGFzIHNwZWNpZmllZCBpbiB0aGUgdGFibGVzIHJlcHJlc2VudCB2 YWx1ZXMgb2YgdGhlDQogICAgcHJvcGVydHkgPGNvZGU+aHR0cDovL3d3dy53My5vcmcvMjAwMy8w NS9zb2FwL2JpbmRpbmdGcmFtZXdvcmsvRXhjaGFuZ2VDb250ZXh0L0ZhaWx1cmVSZWFzb248L2Nv ZGU+IC0NCiAgICB0aGVpciB2YWx1ZXMgYXJlIHF1YWxpZmllZCBuYW1lcy4gSWYgYW4gaW1wbGVt ZW50YXRpb24gZW50ZXJzIHRoZSAiRmFpbCIgc3RhdGUsDQogICAgdGhlIDxjb2RlPmh0dHA6Ly93 d3cudzMub3JnLzIwMDMvMDUvc29hcC9iaW5kaW5nRnJhbWV3b3JrL0V4Y2hhbmdlQ29udGV4dC9G YWlsdXJlUmVhc29uPC9jb2RlPg0KICAgIHByb3BlcnR5IHdpbGwgY29udGFpbiB0aGUgdmFsdWUg c3BlY2lmaWVkIGZvciB0aGUgcGFydGljdWxhciB0cmFuc2l0aW9uLjwvcD4NCg0KICAgICAgPGRp djMgaWQ9InJlcXVlc3Rlci1zdGF0ZXMiPg0KICAgICAgPGhlYWQ+QmVoYXZpb3VyIG9mIFJlcXVl c3RpbmcgU09BUCBOb2RlPC9oZWFkPg0KICAgICAgDQogICAgICA8cD5UaGUgb3ZlcmFsbCBmbG93 IG9mIHRoZSBiZWhhdmlvdXIgb2YgYSBSZXF1ZXN0aW5nIFNPQVAgTm9kZQ0KICAgICAgZm9sbG93 cyB0aGUgb3V0bGluZSBzdGF0ZSBtYWNoaW5lIGRlc2NyaXB0aW9uIGNvbnRhaW5lZCBpbg0KICAg ICAgc2VjdGlvbiA2LjIsIDx4c3BlY3JlZg0KICAgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv VFIvc29hcDEyLXBhcnQyLyNzaW5nbGVyZXFyZXNwbWVwIj5SZXF1ZXN0LVJlc3BvbnNlDQogICAg ICBNZXNzYWdlIEV4Y2hhbmdlIFBhdHRlcm48L3hzcGVjcmVmPiwgWzxiaWJyZWYgcmVmPSJzb2Fw MTJwMiINCiAgICAgIC8+XS4gIFRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgZGVzY3JpYmUgZWFj aCBzdGF0ZSBpbiBtb3JlDQogICAgICBkZXRhaWwgYW5kIGFwcGx5IHRvIGJvdGggU09BUCAxLjEg YW5kIFNPQVAgMS4yIHVudGlsIHN0YXRlZA0KICAgICAgb3RoZXJ3aXNlLjwvcD4NCg0KICAgICAg ICA8ZGl2NCBpZD0icnItcmVxdWVzdGVyLWluaXQiPg0KICAgICAgICA8aGVhZD5Jbml0PC9oZWFk Pg0KDQogICAgICAgIDxwPkluIHRoZSAiSW5pdCIgc3RhdGUsIGEgSk1TIHJlcXVlc3QgaXMgZm9y bXVsYXRlZCBhbmQgdHJhbnNtaXNzaW9uDQogICAgICAgIG9mIHRoZSByZXF1ZXN0IGlzIGluaXRp YXRlZC4gVGhlIG1lc3NhZ2UgbXVzdCBiZSBjcmVhdGVkIGFzIGEgSk1TDQogICAgICAgIDxjb2Rl PkJ5dGVzTWVzc2FnZTwvY29kZT4gYXMgcGVyIHNlY3Rpb24gNCBhYm92ZS4gIEEgbnVtYmVyIG9m IHRoZSBtZXNzYWdlDQogICAgICAgIGhlYWRlciBwcm9wZXJ0aWVzIGFyZSBpbXBsaWNpdGx5IGNy ZWF0ZWQgYnkgdGhlIHVzZSBvZiB0aGUgSk1TIGFwaSwNCiAgICAgICAgdGhlIGZvbGxvd2luZyB0 YWJsZSBzcGVjaWZpZXMgaG93IHRoZSBwcm9wZXJ0aWVzIGRlc2NyaWJlZCBlYXJsaWVyDQogICAg ICAgIGV4cGxpY2l0bHkgYWZmZWN0IHRoZSBtZXNzYWdlIGNvbnN0cnVjdGVkLjwvcD4NCg0KICAg IDxlZG5vdGUgcm9sZT0nZWRpdG9yJz4NCiAgICAgIDxuYW1lPnBsaDwvbmFtZT4NCiAgICAgIDxk YXRlPjIwMDgwNTAxPC9kYXRlPg0KICAgICAgPGVkdGV4dD4ic2VjdGlvbiA0IiAoaW4gcGFyYWdy YXBoIGFib3ZlKSBkb2Vzbid0IHNlZW0gdG8gbGVhZCB0byB0aGUgcmlnaHQgcGxhY2U/IT88L2Vk dGV4dD4NCiAgICA8L2Vkbm90ZT4NCg0KICAgICAgICA8dGFibGUgaWQ9J3RhYmxlMjInIGJvcmRl cj0iMSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI1Ij4NCgkgIDxjYXB0aW9uPkluaXQg U3RhdGUgVmFsdWVzPC9jYXB0aW9uPg0KCSAgPHRoZWFkPjx0cj48dGg+RmllbGQ8L3RoPjx0aD5W YWx1ZSBTZXQgYnkgQ29uZm9ybWluZyBDbGllbnQ8L3RoPjwvdHI+PC90aGVhZD4NCiAgICAgICAg PHRib2R5Pg0KICAgICAgICA8dHI+PHRoIGNvbHNwYW49IjIiPkpNUyBNZXNzYWdlIEhlYWRlcjwv dGg+PC90cj4NCg0KICAgICAgICA8dHI+PHRkPkpNU0RlbGl2ZXJ5TW9kZTwvdGQ+PHRkPnRoZSB2 YWx1ZSBvZiB0aGUgPHRlcm1yZWYgZGVmPSJkZWxpdmVyeU1vZGUiPmRlbGl2ZXJ5TW9kZTwvdGVy bXJlZj4gcHJvcGVydHkgb3Igbm90IHNldCBpZiBub3Qgc3BlY2lmaWVkPC90ZD48L3RyPg0KICAg ICAgICA8dHI+PHRkPkpNU0V4cGlyYXRpb248L3RkPjx0ZD5jYWxjdWxhdGVkIGZyb20gdGhlIHZh bHVlIG9mIHRoZSA8dGVybXJlZiBkZWY9InRpbWVUb0xpdmUiPnRpbWVUb0xpdmU8L3Rlcm1yZWY+ IHByb3BlcnR5IG9yIG5vdCBzZXQgaWYgbm90IHNwZWNpZmllZDwvdGQ+PC90cj4NCiAgICAgICAg PHRyPjx0ZD5KTVNQcmlvcml0eTwvdGQ+PHRkPnRoZSB2YWx1ZSBvZiB0aGUgPHRlcm1yZWYgZGVm PSJwcmlvcml0eSI+cHJpb3JpdHk8L3Rlcm1yZWY+IHByb3BlcnR5IG9yIG5vdCBzZXQgaWYgbm90 IHNwZWNpZmllZDwvdGQ+PC90cj4NCiAgICAgICAgPHRyPjx0ZD5KTVNEZXN0aW5hdGlvbjwvdGQ+ PHRkPmRlcml2ZWQgZnJvbSB0aGUgPHRlcm1yZWYgZGVmPSJkZXN0aW5hdGlvbk5hbWUiPmRlc3Rp bmF0aW9uTmFtZTwvdGVybXJlZj4gcHJvcGVydHk8L3RkPjwvdHI+DQogICAgICAgIDx0cj4NCiAg ICAgICAgCTx0ZD5KTVNSZXBseVRvPC90ZD4NCiAgICAgICAgCTx0ZD5pZiB0aGUgPHRlcm1yZWYg ZGVmPSJyZXBseVRvTmFtZSI+cmVwbHlUb05hbWU8L3Rlcm1yZWY+IHByb3BlcnR5IGlzIHNwZWNp ZmllZCwgdGhpcw0KICAgICAgICAJaXMgdGhlIEpNUyBEZXN0aW5hdGlvbiBvYmplY3QgZGVyaXZl ZCBmcm9tIHRoYXQgbmFtZS4gT3RoZXJ3aXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0DQogICAg ICAgIAlkZXRlcm1pbmUgdGhlIHJlcGx5IHF1ZXVlLCBhbmQgdXNlIHRoZSBKTVMgRGVzdGluYXRp b24gb2JqZWN0IHdoaWNoIHJlcHJlc2VudHMgdGhhdCBxdWV1ZTsNCiAgICAgICAgCXRoZSBxdWV1 ZSBtYXkgYmUgYSB0ZW1wb3JhcnkgcXVldWUgZ2VuZXJhdGVkIGFzIGRlc2NyaWJlZCBpbiB0aGUg Sk1TIHNwZWNpZmljYXRpb24uIDwvdGQ+DQogICAgICAgCTwvdHI+DQoNCiAgICAgICAgPHRyPjx0 aCBjb2xzcGFuPSIyIj5KTVMgTWVzc2FnZSBwcm9wZXJ0aWVzPC90aD48L3RyPg0KICAgICAgICA8 dHI+PHRkPlNPQVBKTVNfcmVxdWVzdElSSTwvdGQ+PHRkPnRoaXMgaXMgZGVyaXZlZCBmcm9tIHRo ZSA8dGVybXJlZiBkZWY9InJlcXVlc3RJUkkiPnJlcXVlc3RJUkk8L3Rlcm1yZWY+IHByb3BlcnR5 PC90ZD48L3RyPg0KICAgICAgICA8dHI+PHRkPlNPQVBKTVNfYmluZGluZ1ZlcnNpb248L3RkPjx0 ZD50aGlzIGlzIGNvcGllZCBmcm9tIHRoZSA8dGVybXJlZiBkZWY9ImJpbmRpbmdWZXJzaW9uIj5i aW5kaW5nVmVyc2lvbjwvdGVybXJlZj4gcHJvcGVydHk8L3RkPjwvdHI+DQogICAgICAgIDx0cj48 dGQ+U09BUEpNU19zb2FwQWN0aW9uPC90ZD48dGQ+dGhlIHZhbHVlIG9mIHRoZSA8dGVybXJlZiBk ZWY9InNvYXBBY3Rpb24iPnNvYXBBY3Rpb248L3Rlcm1yZWY+IHByb3BlcnR5IG9yIG5vdCBzZXQg aWYgbm90IHNwZWNpZmllZDwvdGQ+PC90cj4NCiAgICAgICAgPHRyPjx0ZD5TT0FQSk1TX3Rhcmdl dFNlcnZpY2U8L3RkPjx0ZD50aGUgdmFsdWUgb2YgdGhlIDx0ZXJtcmVmIGRlZj0idGFyZ2V0U2Vy dmljZSI+dGFyZ2V0U2VydmljZTwvdGVybXJlZj4gcHJvcGVydHkgb3Igbm90IHNldCBpZiBub3Qg c3BlY2lmaWVkPC90ZD48L3RyPg0KICAgICAgICA8dHI+PHRkPlNPQVBKTVNfY29udGVudFR5cGU8 L3RkPjx0ZD5pbmZlcnJlZCBmcm9tIHRoZSBTT0FQIEVudmVsb3BlIGFuZCBwcmVzZW5jZSBvZiBh dHRhY2htZW50czwvdGQ+PC90cj4NCg0KICAgICAgICA8dHI+PHRoIGNvbHNwYW49IjIiPkpNUyBN ZXNzYWdlIEJvZHk8L3RoPjwvdHI+DQogICAgICAgIDx0cj48dGQ+Ym9keTwvdGQ+PHRkPkEgU09B UCBlbnZlbG9wZSBpcyBzZXJpYWxpemVkIGFjY29yZGluZyB0byB0aGUgbWVkaWEgdHlwZSBzcGVj aWZpZWQgaW4gdGhlIEpNUyBNZXNzYWdlIHByb3BlcnR5IDxjb2RlPlNPQVBKTVNfY29udGVudFR5 cGU8L2NvZGU+PC90ZD48L3RyPg0KICAgICAgICA8L3Rib2R5PjwvdGFibGU+DQoJICAgIDxlZG5v dGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1lPg0KCSAgICAgIDxkYXRlPjIwMDgwNTIxPC9kYXRl Pg0KCSAgICAgIDxlZHRleHQ+U3Ryb25nIHRlc3RhYmxlIHN0YXRlbWVudHMuPC9lZHRleHQ+IA0K CSAgICA8L2Vkbm90ZT4NCg0KICAgICAgICA8L2RpdjQ+IDwhLS0gcmVxdWVzdGVyIGluaXQgLS0+ DQoNCiAgICAgICAgPGRpdjQgaWQ9InJyLXJlcXVlc3Rlci1yZXF1ZXN0Ij4NCiAgICAgICAgPGhl YWQ+UmVxdWVzdGluZzwvaGVhZD4NCg0KICAgICAgICA8cD5JbiB0aGUgIlJlcXVlc3RpbmciIHN0 YXRlLCBzZW5kaW5nIG9mIHRoZSByZXF1ZXN0IGNvbnRpbnVlcyB3aGlsZQ0KICAgICAgICB3YWl0 aW5nIGZvciB0aGUgc3RhcnQgb2YgdGhlIGNvcnJlbGF0ZWQgcmVzcG9uc2UgbWVzc2FnZS4gQQ0K ICAgICAgICBjb3JyZWxhdGVkIHJlc3BvbnNlIG1lc3NhZ2UgaXMgb25lIHdoZXJlIHRoZSB2YWx1 ZSBvZiB0aGUNCiAgICAgICAgPGNvZGU+Sk1TQ29ycmVsYXRpb25JRDwvY29kZT4gaGVhZGVyIGZp ZWxkIGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZSBvZiB0aGUNCiAgICAgICAgPGNvZGU+Sk1TTWVz c2FnZUlEPC9jb2RlPiBvZiB0aGUgcmVxdWVzdCBtZXNzYWdlLiAgVGhlIHJlc3BvbnNlIG1lc3Nh Z2UNCiAgICAgICAgd2lsbCBiZSByZWNlaXZlZCBvbiB0aGUgSk1TIERlc3RpbmF0aW9uIHNwZWNp ZmllZCBpbiB0aGUNCiAgICAgICAgPGNvZGU+Sk1TUmVwbHlUbzwvY29kZT4gaGVhZGVyIGFib3Zl LCBhbmQgdGhhdCBEZXN0aW5hdGlvbiBpcyB3aGVyZQ0KICAgICAgICBpbXBsZW1lbnRhdGlvbnMg c2hvdWxkIGJlIGxpc3RlbmluZy48L3A+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNl PC9uYW1lPg0KCSAgICAgIDxkYXRlPjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U3Ry b25nIHN0YXRlbWVudCB0aGF0IEpNU0NvcnJlbGF0aW9uSUQgaXMgcmVxdWlyZWQuPC9lZHRleHQ+ IA0KCSAgICA8L2Vkbm90ZT4NCg0KICAgICAgICA8cD5JZiBhIGNvcnJlbGF0ZWQgcmVzcG9uc2Ug bWVzc2FnZSBpcyByZWNlaXZlZCB0aGVuIGEgdHJhbnNpdGlvbiB0bw0KICAgICAgICAiU2VuZGlu ZyArIFJlY2VpdmluZyIgaXMgbWFkZS48L3A+DQoNCiAgICAgICAgPHA+SWYsIGZvciB3aGF0ZXZl ciByZWFzb24gKGZvciBleGFtcGxlIGEgdGltZW91dCksIG5vIGNvcnJlbGF0ZWQNCiAgICAgICAg cmVzcG9uc2UgbWVzc2FnZSBpcyByZWNlaXZlZCB0aGVuIGEgZmFpbHVyZSByZWFzb24NCiAgICAg ICAgPGNvZGU+cmVjZXB0aW9uRmFpbHVyZTwvY29kZT4gaXMgc2V0IGFuZCBhIHRyYW5zaXRpb24g dG8gIkZhaWwiIGlzDQogICAgICAgIG1hZGUuPC9wPg0KCSAgICA8ZWRub3RlPg0KCSAgICAgIDxu YW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8ZWR0 ZXh0PlN0cm9uZyBzdGF0ZW1lbnQuIEluIHByYWN0aWNlIHRoZSBKTVMgcmVjZWl2ZSBjYWxsIGdl dHMgYSB0aW1lb3V0LiBUZXN0YWJsZTwvZWR0ZXh0PiANCgkgICAgPC9lZG5vdGU+DQogICAgICAg IA0KICAgICAgICA8L2RpdjQ+IDwhLS0gcmVxdWVzdGVyIHJlcXVlc3QgLS0+DQoNCiAgICAgICAg PGRpdjQgaWQ9InJyLXJlcXVlc3Rlci10cmFuc2l0aW9uIj4NCiAgICAgICAgPGhlYWQ+U2VuZGlu ZyArIFJlY2VpdmluZzwvaGVhZD4NCg0KICAgICAgICA8cD5SZWNlaXZlIGEgY29ycmVsYXRlZCBt ZXNzYWdlIGJvZHkgdGhhdCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gYQ0KICAgICAgICBTT0FQIGVu dmVsb3BlIHNlcmlhbGlzZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBmb3IgY2FycnlpbmcgYSBT T0FQDQogICAgICAgIG1lc3NhZ2UgaW4gdGhlIG1lZGlhIHR5cGUgc3BlY2lmaWVkIGluIHRoZSBK TVMgTWVzc2FnZSBwcm9wZXJ0eQ0KICAgICAgICA8Y29kZT5TT0FQSk1TX2NvbnRlbnRUeXBlPC9j b2RlPi48L3A+DQoNCiAgICAgICAgPHA+SWYgYSB3ZWxsIGZvcm1lZCByZXNwb25zZSBtZXNzYWdl IGlzIHJlY2VpdmVkIGEgdHJhbnNpdGlvbiB0bw0KICAgICAgICAiU3VjY2VzcyIgaXMgbWFkZS48 L3A+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1lPg0KCSAgICAgIDxkYXRl PjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U3Ryb25nIHN0YXRlbWVudCBhYm91dCB3 ZWxsIGZvcm1lZC4gVGVzdGFibGUuPC9lZHRleHQ+IA0KCSAgICA8L2Vkbm90ZT4NCg0KICAgICAg ICA8L2RpdjQ+IDwhLS0gcmVxdWVzdGVyIHRyYW5zaXRpb24gLS0+DQogICAgICAgIA0KICAgICAg ICA8ZGl2NCBpZD0icnItcmVxdWVzdGVyLWNvbXBsZXRlIj4NCiAgICAgICAgPGhlYWQ+U3VjY2Vz cyBhbmQgRmFpbDwvaGVhZD4NCiAgICAgICAgDQogICAgICAgIDxwPiJTdWNjZXNzIiBhbmQgIkZh aWwiIGFyZSB0aGUgdGVybWluYWwgc3RhdGVzIG9mIHRoZQ0KICAgICAgICBSZXF1ZXN0LVJlc3Bv bnNlIE1FUC4gQ29udHJvbCBvdmVyIHRoZSBtZXNzYWdlIGV4Y2hhbmdlIGNvbnRleHQNCiAgICAg ICAgcmV0dXJucyB0byB0aGUgbG9jYWwgU09BUCBub2RlLjwvcD4NCgkgICAgPGVkbm90ZT4NCgkg ICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAg ICAgPGVkdGV4dD5TdHJvbmcgc3RhdGVtZW50LiBUZXN0YWJsZS48L2VkdGV4dD4gDQoJICAgIDwv ZWRub3RlPg0KICAgICAgICANCiAgICAgICAgPC9kaXY0PiA8IS0tIHJlcXVlc3RlciBjb21wbGV0 ZSAtLT4NCiAgICAgIDwvZGl2Mz4gPCEtLSByZXF1ZXN0ZXIgInN0YXRlcyIgLS0+DQoNCiAgICAg IDxkaXYzIGlkPSJyZXNwb25kZXItc3RhdGVzIj4NCiAgICAgIDxoZWFkPkJlaGF2aW91ciBvZiBS ZXNwb25kaW5nIFNPQVAgTm9kZTwvaGVhZD4NCiAgICAgIA0KICAgICAgPHA+VGhlIG92ZXJhbGwg ZmxvdyBvZiB0aGUgYmVoYXZpb3VyIG9mIGEgUmVzcG9uZGluZyBTT0FQIE5vZGUgZm9sbG93cw0K ICAgICAgdGhlIG91dGxpbmUgc3RhdGUgbWFjaGluZSBkZXNjcmlwdGlvbiBjb250YWluZWQgaW4g c2VjdGlvbiA2LjIsDQogICAgICA8eHNwZWNyZWYgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv c29hcDEyLXBhcnQyLyNzaW5nbGVyZXFyZXNwbWVwIj5SZXF1ZXN0LVJlc3BvbnNlIE1lc3NhZ2Ug RXhjaGFuZ2UgUGF0dGVybjwveHNwZWNyZWY+LCBbPGJpYnJlZiByZWY9InNvYXAxMnAyIiAvPl0u DQogICAgICBUaGUgZm9sbG93aW5nIHN1YnNlY3Rpb25zIGRlc2NyaWJlIGVhY2ggc3RhdGUgaW4g bW9yZSBkZXRhaWwgYW5kIGFwcGx5DQogICAgICB0byBib3RoIFNPQVAgMS4xIGFuZCBTT0FQIDEu MiB1bnRpbCBzdGF0ZWQgb3RoZXJ3aXNlLjwvcD4NCg0KICAgICAgICA8ZGl2NCBpZD0icnItcmVz cG9uZGVyLWluaXQiPg0KICAgICAgICA8aGVhZD5Jbml0PC9oZWFkPg0KICAgICAgICANCiAgICAg ICAgPHA+UmVjZWl2ZSBhbmQgdmFsaWRhdGUgdGhlIGluYm91bmQgcmVxdWVzdCBtZXNzYWdlLjwv cD4NCg0KICAgICAgICA8cD5JZiBhIHdlbGwgZm9ybWVkIHJlcXVlc3QgbWVzc2FnZSBpcyByZWNl aXZlZCBhIHRyYW5zaXRpb24gdG8gdGhlDQogICAgICAgIGxvY2FsIFNPQVAgbm9kZSBpcyBtYWRl IGZvbGxvd2VkIGJ5IGEgdHJhbnNpdGlvbiB0byB0aGUgIlJlY2VpdmluZyINCiAgICAgICAgc3Rh dGUuPC9wPg0KDQogICAgICAgIDxwPklmIGEgbWFsZm9ybWVkIHJlcXVlc3QgbWVzc2FnZSBpcyBy ZWNlaXZlZCBhIHRyYW5zaXRpb24gdG8gIkZhaWwiDQogICAgICAgIGlzIG1hZGUuPC9wPg0KDQog ICAgICAgIDwvZGl2ND4gPCEtLSByZXNwb25kZXIgaW5pdCAtLT4NCg0KICAgICAgICA8ZGl2NCBp ZD0icnItcmVzcG9uZGVyLXJlY2VpdmluZyI+DQogICAgICAgIDxoZWFkPlJlY2VpdmluZzwvaGVh ZD4NCg0KICAgICAgICA8cD5XYWl0aW5nIGZvciBSZXNwb25zZSBNZXNzYWdlIHRvIGJlY29tZSBh dmFpbGFibGUgaW4gTWVzc2FnZQ0KICAgICAgICBFeGNoYW5nZSBDb250ZXh0IGFzIGEgcmVzdWx0 IG9mIHByb2Nlc3NpbmcgdGhlIFJlcXVlc3QgTWVzc2FnZSAobm90ZQ0KICAgICAgICBSZXF1ZXN0 IE1lc3NhZ2UgZnVsbHkgcmVjZWl2ZWQgb24gZXhpdCBmcm9tIEluaXQgc3RhdGUpLjwvcD4NCg0K ICAgICAgICA8L2RpdjQ+IDwhLS0gcmVzcG9uZGVyIHJlY2VpdmluZyAtLT4NCg0KICAgICAgICA8 ZGl2NCBpZD0icmVzcG9uZGVyLXRyYW5zaXRpb24iPg0KICAgICAgICA8aGVhZD5SZWNlaXZpbmcg KyBTZW5kaW5nPC9oZWFkPg0KICAgICAgICANCiAgICAgICAgPHA+Q29tcGxldGluZyBSZXF1ZXN0 IE1lc3NhZ2UgcmVjZXB0aW9uIGFuZCBSZXNwb25zZSBNZXNzYWdlDQogICAgICAgIHRyYW5zbWlz c2lvbi4gKFJlc3BvbnNlIE1lc3NhZ2Ugc2VudCBvbiBleGl0IGZyb20gUmVjZWl2aW5nIFN0YXRl KS48L3A+DQoNCiAgICAgICAgPHA+VGhlIEpNUyByZXF1ZXN0IGlzIGZvcm11bGF0ZWQgYW5kIHRy YW5zbWlzc2lvbiBvZiB0aGUgcmVzcG9uc2UgaXMNCiAgICAgICAgaW5pdGlhdGVkLiBUaGUgbWVz c2FnZSBtdXN0IGJlIGNyZWF0ZWQgYXMgYSBKTVMgPGNvZGU+Qnl0ZXNNZXNzYWdlPC9jb2RlPi4N CiAgICAgICAgQSBudW1iZXIgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIHByb3BlcnRpZXMgYXJlIGlt cGxpY2l0bHkgY3JlYXRlZCBieQ0KICAgICAgICB0aGUgdXNlIG9mIHRoZSBKTVMgYXBpLCB0aGUg Zm9sbG93aW5nIHRhYmxlIHNwZWNpZmllcyBob3cgdGhlDQogICAgICAgIHByb3BlcnRpZXMgZGVz Y3JpYmVkIGVhcmxpZXIgZXhwbGljaXRseSBhZmZlY3QgdGhlIG1lc3NhZ2UNCiAgICAgICAgY29u c3RydWN0ZWQuIFRoZSBtZXNzYWdlIDxyZmMyMTE5Pk1VU1Q8L3JmYzIxMTk+IGJlIHNlbnQgdG8g dGhlIEpNUyBEZXN0aW5hdGlvbiBpbiB0aGUNCiAgICAgICAgPGNvZGU+Sk1TUmVwbHlUbzwvY29k ZT4gaGVhZGVyIG9mIHRoZSBSZXF1ZXN0IE1lc3NhZ2UuIFRoZSB2YWx1ZSBvZiB0aGUNCiAgICAg ICAgPGNvZGU+Sk1TQ29ycmVsYXRpb25JRDwvY29kZT4gaGVhZGVyIGZpZWxkIDxyZmMyMTE5Pk1V U1Q8L3JmYzIxMTk+IGJlIHNldCB0byB0aGUgc2FtZSBhcyB0aGUNCiAgICAgICAgdmFsdWUgb2Yg dGhlIDxjb2RlPkpNU01lc3NhZ2VJRDwvY29kZT4gb2YgdGhlIHJlcXVlc3QgbWVzc2FnZS48L3A+ DQoNCiAgICAgICAgPHRhYmxlIGlkPSd0YWJsZTIzJyBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIw IiBjZWxscGFkZGluZz0iNSI+DQoJICA8Y2FwdGlvbj5SZWNlaXZpbmcgKyBTZW5kaW5nIFN0YXRl IFZhbHVlczwvY2FwdGlvbj4NCgkgIDx0aGVhZD48dHI+PHRoPkZpZWxkPC90aD48dGg+VmFsdWUg U2V0IGJ5IENvbmZvcm1pbmcgQ2xpZW50PC90aD48L3RyPjwvdGhlYWQ+DQogICAgICAgIDx0Ym9k eT4NCg0KICAgICAgICA8dHI+PHRoIGNvbHNwYW49IjIiPkpNUyBNZXNzYWdlIEhlYWRlcjwvdGg+ PC90cj4NCiAgICAgICAgPHRyPjx0ZD5KTVNEZWxpdmVyeU1vZGU8L3RkPjx0ZD50aGlzIDxyZmMy MTE5PlNIT1VMRDwvcmZjMjExOT4gYmUgdGhlIHNhbWUgYXMgdGhhdCBzcGVjaWZpZWQgb24gdGhl IHJlcXVlc3Q8L3RkPjwvdHI+DQogICAgICAgIDx0cj48dGQ+Sk1TRXhwaXJhdGlvbjwvdGQ+PHRk PnRoaXMgaXMgZGVyaXZlZCBmcm9tIHRoZSByZXF1ZXN0LiBJdCBpcyB1cCB0byB0aGUgcmVzcG9u ZGluZyBub2RlIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGRlZ3JhZGUgZm9yIHByb2Nlc3NpbmcgdGlt ZS48L3RkPjwvdHI+DQogICAgICAgIDx0cj48dGQ+Sk1TUHJpb3JpdHk8L3RkPjx0ZD50aGlzIGlz IGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0PC90ZD48L3RyPg0KICAgICAgICA8dHI+PHRkPkpNU0Nv cnJlbGF0aW9uSUQ8L3RkPjx0ZD50aGlzIGlzIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0IDxjb2Rl PkpNU01lc3NhZ2VJRDwvY29kZT48L3RkPjwvdHI+DQogICAgICAgIDx0cj48dGQ+Sk1TRGVzdGlu YXRpb248L3RkPjx0ZD50aGlzIGlzIGNvcGllZCBmcm9tIHRoZSA8Y29kZT5KTVNSZXBseVRvPC9j b2RlPiBwcm9wZXJ0eSBpbiB0aGUgcmVxdWVzdDwvdGQ+PC90cj4NCg0KICAgICAgICA8dHI+PHRo IGNvbHNwYW49IjIiPkpNUyBNZXNzYWdlIHByb3BlcnRpZXM8L3RoPjwvdHI+DQogICAgICAgIDx0 cj48dGQ+U09BUEpNU19yZXF1ZXN0SVJJPC90ZD48dGQ+dGhpcyBpcyBjb3BpZWQgZnJvbSB0aGUg PHRlcm1yZWYgZGVmPSJyZXF1ZXN0SVJJIj5yZXF1ZXN0SVJJPC90ZXJtcmVmPiBwcm9wZXJ0eSBp biB0aGUgcmVxdWVzdCBtZXNzYWdlPC90ZD48L3RyPg0KICAgICAgICA8dHI+PHRkPlNPQVBKTVNf YmluZGluZ1ZlcnNpb248L3RkPjx0ZD50aGlzIGlzIGNvcGllZCBmcm9tIHRoZSA8dGVybXJlZiBk ZWY9ImJpbmRpbmdWZXJzaW9uIj5iaW5kaW5nVmVyc2lvbjwvdGVybXJlZj4gcHJvcGVydHk8L3Rk PjwvdHI+DQogICAgICAgIDx0cj48dGQ+U09BUEpNU19jb250ZW50VHlwZTwvdGQ+PHRkPmluZmVy cmVkIGZyb20gdGhlIFNPQVAgRW52ZWxvcGUgYW5kIHByZXNlbmNlIG9mIGF0dGFjaG1lbnRzLjwv dGQ+PC90cj4NCg0KICAgICAgICA8dHI+PHRoIGNvbHNwYW49IjIiPkpNUyBNZXNzYWdlIEJvZHk8 L3RoPjwvdHI+DQogICAgICAgIDx0cj48dGQ+Ym9keTwvdGQ+PHRkPkEgU09BUCBlbnZlbG9wZSBp cyBzZXJpYWxpemVkIGFjY29yZGluZyB0byB0aGUgbWVkaWEgdHlwZSBzcGVjaWZpZWQgaW4gdGhl IEpNUyBNZXNzYWdlIHByb3BlcnR5IDxjb2RlPlNPQVBKTVNfY29udGVudFR5cGU8L2NvZGU+Ljwv dGQ+PC90cj4NCiAgICAgICAgPC90Ym9keT48L3RhYmxlPg0KCSAgICA8ZWRub3RlPg0KCSAgICAg IDxuYW1lPnBzZTwvbmFtZT4NCgkgICAgICA8ZGF0ZT4yMDA4MDUyMTwvZGF0ZT4NCgkgICAgICA8 ZWR0ZXh0PlN0cm9uZyB0ZXN0YWJsZSBzdGF0ZW1lbnRzLjwvZWR0ZXh0PiANCgkgICAgPC9lZG5v dGU+DQoNCiAgICAgICAgPHA+SWYgYSByZXNwb25zZSBtZXNzYWdlIGlzIHN1Y2Nlc3NmdWxseSBz ZW50IGEgdHJhbnNpdGlvbiB0byB0aGUNCiAgICAgICAgIlN1Y2Nlc3MiIHN0YXRlIGlzIG1hZGUu PC9wPg0KDQogICAgICAgIDxwPklmIHRoZXJlIGlzIGEgZmFpbHVyZSB0byBzZW5kIGEgcmVzcG9u c2UgbWVzc2FnZSB0aGVuIGZhaWx1cmUNCiAgICAgICAgcmVhc29uIDxjb2RlPnRyYW5zbWlzc2lv bkZhaWx1cmU8L2NvZGU+IGlzIHNldCBhbmQgYSB0cmFuc2l0aW9uIHRvDQogICAgICAgICJGYWls IiBpcyBtYWRlLjwvcD4NCiAgICAgICAgDQogICAgICAgIDwvZGl2ND4gPCEtLSByZXNwb25kZXIg dHJhbnNpdGlvbiAtLT4NCg0KICAgICAgICA8ZGl2NCBpZD0icmVzcG9uZGVyLWNvbXBsZXRlIj4N CiAgICAgICAgPGhlYWQ+U3VjY2VzcyBhbmQgRmFpbDwvaGVhZD4NCiAgICAgICAgDQogICAgICAg IDxwPiJTdWNjZXNzIiBhbmQgIkZhaWwiIGFyZSB0aGUgdGVybWluYWwgc3RhdGVzIGZvciB0aGUN CiAgICAgICAgUmVxdWVzdC1SZXNwb25zZSBNRVAuIEZyb20gdGhlIHBvaW50LW9mLXZpZXcgb2Yg dGhlIGxvY2FsIG5vZGUgdGhpcw0KICAgICAgICBtZXNzYWdlIGV4Y2hhbmdlIGhhcyBjb21wbGV0 ZWQuPC9wPg0KICAgICAgICANCiAgICAgICAgPC9kaXY0PiA8IS0tIHJlc3BvbmRlci1jb21wbGV0 ZSAtLT4NCg0KICAgICAgPC9kaXYzPiA8IS0tIHJlc3BvbmRlciAic3RhdGVzIiAtLT4NCiAgICA8 L2RpdjI+IDwhLS0gcmVxdWVzdC9yZXNwb25zZSAtLT4NCg0KICAgIDxkaXYyIGlkPSJiaW5kaW5n LW9uZS13YXkiPg0KICAgIDxoZWFkPk9uZS13YXkgTWVzc2FnZSBFeGNoYW5nZSBQYXR0ZXJuPC9o ZWFkPg0KICAgIDxwPlRoZSBTT0FQIE9uZS13YXkgTUVQIFs8YmlicmVmIHJlZj0ic29hcC1vbmUt d2F5LW1lcCIgLz5dDQogICAgZGVmaW5lcyBwcm9wZXJ0aWVzIGZvciB0aGUgZXhjaGFuZ2Ugb2Yg YSBTT0FQL0pNUyBtZXNzYWdlIHdoaWNoDQogICAgZG9lcyBub3Qgc29saWNpdCBhIHJlc3BvbnNl LiAgRm9yIEpNUyBtZXNzYWdlcyBzZW50IHRvIGEgUXVldWUNCiAgICBkZXN0aW5hdGlvbiB0aGlz IE1FUCByZXN1bHRzIGluIGEgU09BUCBtZXNzYWdlIHdoaWNoIG1heSBiZQ0KICAgIHJlY2VpdmVk IGJ5IHplcm8gb3Igb25lIHJlY2VpdmVyLiAgRm9yIEpNUyBtZXNzYWdlcyBzZW50IHRvIGENCiAg ICBUb3BpYyBkZXN0aW5hdGlvbiB0aGlzIE1FUCByZXN1bHRzIGluIFNPQVAgbWVzc2FnZShzKSB3 aGljaCBtYXkgYmUNCiAgICByZWNlaXZlZCBieSB6ZXJvLCBvbmUsIG9yIG1hbnkgcmVjZWl2ZXJz LjwvcD4NCg0KICAgIDxwPlRoaXMgbWVzc2FnZSBleGNoYW5nZSBwYXR0ZXJuIGlzIGlkZW50aWZp ZWQgYnkgdGhlIFVSSQ0KICAgIDxjb2RlPmh0dHA6Ly93d3cudzMub3JnLzIwMDYvMDgvc29hcC9t ZXAvb25lLXdheS88L2NvZGU+Lg0KICAgIDwvcD4NCg0KICAgIDxwPkZvciBiaW5kaW5nIGluc3Rh bmNlcyBjb25mb3JtaW5nIHRvIHRoaXMgc3BlY2lmaWNhdGlvbjo8L3A+DQoNCiAgICA8dWxpc3Q+ IA0KICAgIDxpdGVtPjxwPkEgU09BUCBOb2RlIGluc3RhbnRpYXRlZCBhdCB0aGUgc2VuZGluZyBK TVMgaW50ZXJmYWNlIG1heQ0KICAgIHRha2Ugb24gdGhlIHJvbGUgKGkuZS4gdGhlIHByb3BlcnR5 DQogICAgPGNvZGU+aHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwL2JpbmRpbmdGcmFtZXdv cmsvRXhjaGFuZ2VDb250ZXh0L1JvbGU8L2NvZGU+LA0KICAgIGRlZmluZWQgaW4gVGFibGUgMiwg PHhzcGVjcmVmDQogICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvc29hcDEyLXBhcnQyLyN0 YWJtZXBwcm9wZGVmcyI+UHJvcGVydHkNCiAgICBkZWZpbml0aW9ucyBzdXBwb3J0aW5nIHRoZSBk ZXNjcmlwdGlvbiBvZiBNRVBzPC94c3BlY3JlZj4pLCBvZg0KICAgIDxjb2RlPlNlbmRpbmdTT0FQ Tm9kZTwvY29kZT4uPC9wPjwvaXRlbT4NCg0KICAgIDxpdGVtPjxwPkEgU09BUCBOb2RlIGluc3Rh bnRpYXRlZCBhdCB0aGUgcmVjZWl2aW5nIEpNUyBpbnRlcmZhY2UgdGFrZXMNCiAgICBvbiB0aGUg cm9sZSAoaS5lLiB0aGUgcHJvcGVydHkNCiAgICA8Y29kZT5odHRwOi8vd3d3LnczLm9yZy8yMDAz LzA1L3NvYXAvYmluZGluZ0ZyYW1ld29yay9FeGNoYW5nZUNvbnRleHQvUm9sZTwvY29kZT4pDQog ICAgb2YgPGNvZGU+UmVjZWl2aW5nU09BUE5vZGU8L2NvZGU+LjwvcD48L2l0ZW0+DQogICAgPC91 bGlzdD4NCg0KICAgIDxwPlRoZSByZW1haW5kZXIgb2YgdGhpcyBzZWN0aW9uIGNvbnNpc3RzIG9m IGRlc2NyaXB0aW9ucyBvZiB0aGUgTUVQLiAgRmFpbHVyZSByZWFzb25zIHJlcHJlc2VudCB2YWx1 ZXMgb2YgdGhlDQogICAgcHJvcGVydHkgPGNvZGU+aHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9z b2FwL2JpbmRpbmdGcmFtZXdvcmsvRXhjaGFuZ2VDb250ZXh0L0ZhaWx1cmVSZWFzb248L2NvZGU+ DQogICAgJm1kYXNoOyB0aGVpciB2YWx1ZXMgYXJlIHF1YWxpZmllZCBuYW1lcy4gSWYgYSBNRVAg aW5zdGFuY2UgdGVybWluYXRlcyB3aXRoIGFuIGZhdWx0LCB0aGVuIHRoZQ0KICAgIDxjb2RlPmh0 dHA6Ly93d3cudzMub3JnLzIwMDMvMDUvc29hcC9iaW5kaW5nRnJhbWV3b3JrL0V4Y2hhbmdlQ29u dGV4dC9GYWlsdXJlUmVhc29uPC9jb2RlPg0KICAgIHByb3BlcnR5IHdpbGwgY29udGFpbiBhbiB2 YWx1ZSBpZGVudGlmeWluZyB0aGUgZmF1bHQuPC9wPg0KDQogICAgICA8ZGl2MyBpZD0ic2VuZGVy LXN0YXRlcyI+DQogICAgICA8aGVhZD5CZWhhdmlvdXIgb2YgU2VuZGluZyBTT0FQIE5vZGU8L2hl YWQ+DQogICAgDQogICAgICA8cD5UaGUgc2VuZGluZyBub2RlIDxyZmMyMTE5Pk1VU1Q8L3JmYzIx MTk+IGZvcm11bGF0ZSBhIEpNUyByZXF1ZXN0LCBtYWtlIGl0IGF2YWlsYWJsZSBpbiB0aGUgDQog ICAgICAgICBodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAvbWVwL091dGJvdW5kTWVzc2Fn ZSBwcm9wZXJ0eSwgYW5kIHNlbmQgaXQgdG8gdGhlIGRlc3RpbmF0aW9uIA0KICAgICAgICAgaWRl bnRpZmllZCBieSBodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAvbWVwL0ltbWVkaWF0ZURl c3RpbmF0aW9uLiA8L3A+DQogICAgICAgIDxwPlRoZSBtZXNzYWdlIG11c3QgYmUgY3JlYXRlZCBh cyBhIEpNUyA8Y29kZT5CeXRlc01lc3NhZ2U8L2NvZGU+IGFzIHBlciBzZWN0aW9uIA0KICAgICAg ICA0IGFib3ZlLiAgQSBudW1iZXIgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIHByb3BlcnRpZXMgYXJl IGltcGxpY2l0bHkgY3JlYXRlZCBieSANCiAgICAgICAgdGhlIHVzZSBvZiB0aGUgSk1TIEFQSSwg dGhlIGZvbGxvd2luZyB0YWJsZSBzcGVjaWZpZXMgaG93IHRoZSBwcm9wZXJ0aWVzIGRlc2NyaWJl ZCANCiAgICAgICAgZWFybGllciBleHBsaWNpdGx5IGFmZmVjdCB0aGUgbWVzc2FnZSBjb25zdHJ1 Y3RlZC48L3A+DQoNCiAgICAgICA8cD5JZiB0aGUgU2VuZGVyIHJlY2VpdmVzIGEgbWVzc2FnZSB0 cmFuc21pc3Npb24gZmFpbHVyZSwgdGhlbiB0aGUNCiAgICAgICA8Y29kZT5odHRwOi8vd3d3Lncz Lm9yZy8yMDAzLzA1L3NvYXAvYmluZGluZ0ZyYW1ld29yay9FeGNoYW5nZUNvbnRleHQvRmFpbHVy ZVJlYXNvbjwvY29kZT4gcHJvcGVydHkgDQogICAgICAgaXMgc2V0IHRvIDxjb2RlPnRyYW5zbWlz c2lvbkZhaWx1cmU8L2NvZGU+IGFuZCB0aGUgbWVzc2FnZSBleGNoYW5nZSBpcyB0ZXJtaW5hdGVk IHdpdGggYSBmYXVsdC48L3A+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1l Pg0KCSAgICAgIDxkYXRlPjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U3Ryb25nIHN0 YXRlbWVudC4gSSdtIGZhbWlsaWFyIHdpdGggdGhlIFNPQVAxLjEgMS13YXkgY2FuIGEgU09BUCAx LjIgMS13YXkgcmV0dXJuIGZhdWx0cyB0byB0aGUgY2xpZW50LCBvciBpcyBpdCBmaXJlIGFuZCBm b3JnZXQ8L2VkdGV4dD4gDQoJICAgIDwvZWRub3RlPg0KICAgICAgIA0KICAgICAgICA8dGFibGUg aWQ9J3RhYmxlMjQnIGJvcmRlcj0iMSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI1Ij4N CgkgIDxjYXB0aW9uPlNlbmRpbmcgU09BUCBOb2RlIFZhbHVlczwvY2FwdGlvbj4NCgkgIDx0aGVh ZD48dHI+PHRoPkZpZWxkPC90aD48dGg+VmFsdWUgU2V0IGJ5IENvbmZvcm1pbmcgQ2xpZW50PC90 aD48L3RyPjwvdGhlYWQ+DQogICAgICAgIDx0Ym9keT4NCg0KICAgICAgICA8dHI+PHRoIGNvbHNw YW49IjIiPkpNUyBNZXNzYWdlIEhlYWRlcjwvdGg+PC90cj4NCiAgICAgICAgPHRyPjx0ZD5KTVNE ZWxpdmVyeU1vZGU8L3RkPjx0ZD50aGUgdmFsdWUgb2YgdGhlIDx0ZXJtcmVmIGRlZj0iZGVsaXZl cnlNb2RlIj5kZWxpdmVyeU1vZGU8L3Rlcm1yZWY+IHByb3BlcnR5IG9yIG5vdCBzZXQgaWYgbm90 IHNwZWNpZmllZDwvdGQ+PC90cj4NCiAgICAgICAgPHRyPjx0ZD5KTVNFeHBpcmF0aW9uPC90ZD48 dGQ+Y2FsY3VsYXRlZCBmcm9tIHRoZSB2YWx1ZSBvZiB0aGUgPHRlcm1yZWYgZGVmPSJ0aW1lVG9M aXZlIj50aW1lVG9MaXZlPC90ZXJtcmVmPiBwcm9wZXJ0eSBvciBub3Qgc2V0IGlmIG5vdCBzcGVj aWZpZWQ8L3RkPjwvdHI+DQogICAgICAgIDx0cj48dGQ+Sk1TUHJpb3JpdHk8L3RkPjx0ZD50aGUg dmFsdWUgb2YgdGhlIDx0ZXJtcmVmIGRlZj0icHJpb3JpdHkiPnByaW9yaXR5PC90ZXJtcmVmPiBw cm9wZXJ0eSBvciBub3Qgc2V0IGlmIG5vdCBzcGVjaWZpZWQ8L3RkPjwvdHI+DQogICAgICAgIDx0 cj48dGQ+Sk1TRGVzdGluYXRpb248L3RkPjx0ZD5kZXJpdmVkIGZyb20gdGhlIDx0ZXJtcmVmIGRl Zj0iZGVzdGluYXRpb25OYW1lIj5kZXN0aW5hdGlvbk5hbWU8L3Rlcm1yZWY+IHByb3BlcnR5PC90 ZD48L3RyPg0KDQogICAgICAgIDx0cj48dGggY29sc3Bhbj0iMiI+Sk1TIE1lc3NhZ2UgcHJvcGVy dGllczwvdGg+PC90cj4NCiAgICAgICAgPHRyPjx0ZD5TT0FQSk1TX3JlcXVlc3RJUkk8L3RkPjx0 ZD50aGlzIGlzIGRlcml2ZWQgZnJvbSB0aGUgPHRlcm1yZWYgZGVmPSJyZXF1ZXN0SVJJIj5yZXF1 ZXN0SVJJPC90ZXJtcmVmPiBwcm9wZXJ0eTwvdGQ+PC90cj4NCiAgICAgICAgPHRyPjx0ZD5TT0FQ Sk1TX2JpbmRpbmdWZXJzaW9uPC90ZD48dGQ+dGhpcyBpcyBjb3BpZWQgZnJvbSB0aGUgPHRlcm1y ZWYgZGVmPSJiaW5kaW5nVmVyc2lvbiI+YmluZGluZ1ZlcnNpb248L3Rlcm1yZWY+IHByb3BlcnR5 PC90ZD48L3RyPg0KICAgICAgICA8dHI+PHRkPlNPQVBKTVNfc29hcEFjdGlvbjwvdGQ+PHRkPnRo ZSB2YWx1ZSBvZiB0aGUgPHRlcm1yZWYgZGVmPSJzb2FwQWN0aW9uIj5zb2FwQWN0aW9uPC90ZXJt cmVmPiBwcm9wZXJ0eSBvciBub3Qgc2V0IGlmIG5vdCBzcGVjaWZpZWQ8L3RkPjwvdHI+DQogICAg ICAgIDx0cj48dGQ+U09BUEpNU190YXJnZXRTZXJ2aWNlPC90ZD48dGQ+dGhlIHZhbHVlIG9mIHRo ZSA8dGVybXJlZiBkZWY9InRhcmdldFNlcnZpY2UiPnRhcmdldFNlcnZpY2U8L3Rlcm1yZWY+IHBy b3BlcnR5IG9yIG5vdCBzZXQgaWYgbm90IHNwZWNpZmllZDwvdGQ+PC90cj4NCiAgICAgICAgPHRy Pjx0ZD5TT0FQSk1TX2NvbnRlbnRUeXBlPC90ZD48dGQ+aW5mZXJyZWQgZnJvbSB0aGUgU09BUCBF bnZlbG9wZSBhbmQgcHJlc2VuY2Ugb2YgYXR0YWNobWVudHMuPC90ZD48L3RyPg0KDQogICAgICAg IDx0cj48dGggY29sc3Bhbj0iMiI+Sk1TIE1lc3NhZ2UgQm9keTwvdGg+PC90cj4NCiAgICAgICAg PHRyPjx0ZD5ib2R5PC90ZD48dGQ+QSBTT0FQIGVudmVsb3BlIGlzIHNlcmlhbGl6ZWQgYWNjb3Jk aW5nIHRvIHRoZSBtZWRpYSB0eXBlIHNwZWNpZmllZCBpbiB0aGUgSk1TIE1lc3NhZ2UgcHJvcGVy dHkgPGNvZGU+U09BUEpNU19jb250ZW50VHlwZTwvY29kZT4uPC90ZD48L3RyPg0KICAgICAgICA8 L3Rib2R5PjwvdGFibGU+DQoJICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1lPg0K CSAgICAgIDxkYXRlPjIwMDgwNTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+U3Ryb25nIHRlc3Rh YmxlIHN0YXRlbWVudHMuPC9lZHRleHQ+IA0KCSAgICA8L2Vkbm90ZT4NCiAgICAgIDwvZGl2Mz4g PCEtLSBzZW5kZXIgInN0YXRlcyIgLS0+DQoNCiAgICAgIDxkaXYzIGlkPSJyZWNlaXZlci1zdGF0 ZXMiPg0KICAgICAgPGhlYWQ+QmVoYXZpb3VyIG9mIFJlY2VpdmluZyBTT0FQIE5vZGU8L2hlYWQ+ DQogICAgIA0KDQogICAgICAgIDxwPkEgcmVjZWl2aW5nIG5vZGUgPHJmYzIxMTk+TVVTVDwvcmZj MjExOT4gdmFsaWRhdGUgYW4gaW5ib3VuZCBtZXNzYWdlLCBhbmQgaWYgaXQgZGV0ZXJtaW5lcyAN CiAgICAgICAgdGhhdCB0aGUgbWVzc2FnZSBpcyBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQsIGl0IDxy ZmMyMTE5Pk1VU1Q8L3JmYzIxMTk+IHBvcHVsYXRlIA0KICAgICAgICBodHRwOi8vd3d3LnczLm9y Zy8yMDAzLzA1L3NvYXAvbWVwL0luYm91bmRNZXNzYWdlIHdpdGggdGhlIHJlY2VpdmVkIG1lc3Nh Z2UuICAgDQogICAgICAgIEl0IDxyZmMyMTE5Pk1VU1Q8L3JmYzIxMTk+IHRoZW4gcHJvY2VzcyB0 aGUgbWVzc2FnZSBpbiBodHRwOi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAvbWVwL0luYm91bmRN ZXNzYWdlPC9wPg0KICAgICAgICANCiAgICAgICAgPHA+SWYgdGhlIFJlY2VpdmluZyBTT0FQIE5v ZGUgcmVjZWl2ZXMgYSBtZXNzYWdlIHJlY2VpcHQgZmFpbHVyZSwgb3IgdGhlIGluYm91bmQgbWVz c2FnZSBpcyBub3QgdmFsaWQNCiAgICAgICAgdGhlbiB0aGUgPGNvZGU+aHR0cDovL3d3dy53My5v cmcvMjAwMy8wNS9zb2FwL2JpbmRpbmdGcmFtZXdvcmsvRXhjaGFuZ2VDb250ZXh0L0ZhaWx1cmVS ZWFzb248L2NvZGU+IA0KICAgICAgICBwcm9wZXJ0eSA8cmZjMjExOT5NQVk8L3JmYzIxMTk+IGJl IHNldCB0byA8Y29kZT50cmFuc21pc3Npb25GYWlsdXJlPC9jb2RlPi4gIFRoZSBtZXNzYWdlIGV4 Y2hhbmdlIHNob3VsZCB0ZXJtaW5hdGUsIGFuZCANCiAgICAgICAgY29udHJvbCBvdmVyIHRoZSBt ZXNzYWdlIGV4Y2hhbmdlIGNvbnRleHQgc2hvdWxkIHJldHVybiB0byB0aGUgbG9jYWwgU09BUCBu b2RlLiAoTm90ZSwgaG93ZXZlciwgdGhhdCBpbiBtYW55IA0KICAgICAgICBjYXNlcyB3aGVyZSBy ZWNlaXB0IGlzIHVuc3VjY2Vzc2Z1bCwgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIG1lc3Nh Z2Ugb3IgaXRzIHNlbmRlciBtYXkgYmUgdW5yZWxpYWJsZSwgDQogICAgICAgIGluIHdoaWNoIGNh c2UgdGhlcmUgbWF5IGJlIGxpdHRsZSBpZiBhbnkgdmFsdWUgaW4gcmVmbGVjdGluZyBhIG1lc3Nh Z2Utc3BlY2lmaWMgZmF1bHQuKTwvcD4NCgkgICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8 L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5VbnRl c3RhYmxlPzwvZWR0ZXh0PiANCgkgICAgPC9lZG5vdGU+DQogICAgICAgIA0KICAgICAgPC9kaXYz PiA8IS0tIHJlY2VpdmVyICJzdGF0ZXMiIC0tPg0KICAgIDwvZGl2Mj4gPCEtLSBvbmUtd2F5IC0t Pg0KDQogICAgPGRpdjIgaWQ9ImJpbmRpbmctZmF1bHRzIj4NCiAgICA8aGVhZD5GYXVsdHM8L2hl YWQ+DQoNCiAgICA8cD5UaGUgU09BUCBmYXVsdCBzdWJjb2RlcyBsaXN0ZWQgdGhyb3VnaG91dCB0 aGlzIGRvY3VtZW50LCBhbmQNCiAgICBjb25zb2xpZGF0ZWQgaGVyZSwgaW5jbHVkZTo8L3A+DQoN CiAgICA8dWxpc3Q+DQogICAgPGl0ZW0+PHA+PHRlcm1yZWYgZGVmPSJjb250ZW50VHlwZU1pc21h dGNoIj5jb250ZW50VHlwZU1pc21hdGNoPC90ZXJtcmVmPiA8L3A+PC9pdGVtPg0KICAgIDxpdGVt PjxwPmluY29uc2lzdGVudE1FUDwvcD48L2l0ZW0+DQogICAgPGl0ZW0+PHA+PHRlcm1yZWYgZGVm PSJtYWxmb3JtZWRSZXF1ZXN0SVJJIj5tYWxmb3JtZWRSZXF1ZXN0SVJJPC90ZXJtcmVmPjwvcD48 L2l0ZW0+DQogICAgPGl0ZW0+PHA+PHRlcm1yZWYgZGVmPSJtaXNtYXRjaGVkU29hcEFjdGlvbiI+ bWlzbWF0Y2hlZFNvYXBBY3Rpb248L3Rlcm1yZWY+IDwvcD48L2l0ZW0+DQogICAgPGl0ZW0+PHA+ PHRlcm1yZWYgZGVmPSJtaXNzaW5nQ29udGVudFR5cGUiPm1pc3NpbmdDb250ZW50VHlwZTwvdGVy bXJlZj48L3A+PC9pdGVtPg0KICAgIDxpdGVtPjxwPjx0ZXJtcmVmIGRlZj0ibWlzc2luZ1JlcXVl c3RJUkkiPm1pc3NpbmdSZXF1ZXN0SVJJPC90ZXJtcmVmPiA8L3A+PC9pdGVtPg0KICAgIDxpdGVt PjxwPjx0ZXJtcmVmIGRlZj0idGFyZ2V0U2VydmljZU5vdEFsbG93ZWRJblJlcXVlc3RJUkkiPnRh cmdldFNlcnZpY2VOb3RBbGxvd2VkSW5SZXF1ZXN0SVJJPC90ZXJtcmVmPiA8L3A+PC9pdGVtPg0K ICAgIDxpdGVtPjxwPjx0ZXJtcmVmIGRlZj0idW5yZWNvZ25pemVkQmluZGluZ1ZlcnNpb24iPnVu cmVjb2duaXplZEJpbmRpbmdWZXJzaW9uPC90ZXJtcmVmPiA8L3A+PC9pdGVtPg0KICAgIDxpdGVt PjxwPjx0ZXJtcmVmIGRlZj0idW5zdXBwb3J0ZWRKTVNNZXNzYWdlRm9ybWF0Ij51bnN1cHBvcnRl ZEpNU01lc3NhZ2VGb3JtYXQ8L3Rlcm1yZWY+IDwvcD48L2l0ZW0+DQogICAgPC91bGlzdD4NCgkg ICAgPGVkbm90ZT4NCgkgICAgICA8bmFtZT5wc2U8L25hbWU+DQoJICAgICAgPGRhdGU+MjAwODA1 MjE8L2RhdGU+DQoJICAgICAgPGVkdGV4dD5ObyBzdHJvbmcgc3RhdGVtZW50cyBoZXJlIGFib3V0 IHdoZXRoZXIgdGhleSBhcmUgcmVxdWlyZWQ/IEFsbCB0ZXN0YWJsZSBob3dldmVyPC9lZHRleHQ+ IA0KCSAgICA8L2Vkbm90ZT4NCg0KICAgIDxwPlRoZSBhYm92ZSBzdWJjb2RlcyBhcmUgdGhlIGxv Y2FsIG5hbWUgaW4gdGhlIDxjb2RlPnNvYXBqbXM8L2NvZGU+IG5hbWVzcGFjZSwNCiAgICBhcHBl YXJpbmcsIGZvciBleGFtcGxlLCBhcyA8dGVybXJlZiBkZWY9Im1hbGZvcm1lZFJlcXVlc3RJUkki PiBzb2Fwam1zOm1hbGZvcm1lZFJlcXVlc3RJUkk8L3Rlcm1yZWY+LjwvcD4NCg0KICAgIDxwPklu IFNPQVAgMS4yLCB0aGUgc3ViY29kZXMgYWJvdmUgYXJlIHVzZWQgYXMtaXMgaW4gdGhlIDxjb2Rl PmVudjpWYWx1ZTwvY29kZT4NCiAgICBlbGVtZW50IG9mIHRoZSA8Y29kZT5lbnY6U3ViY29kZTwv Y29kZT4gZm9yIGEgU09BUCBGYXVsdC4gIFRoZSBmb2xsb3dpbmcgc2hvd3MNCiAgICBhbiBleGFt cGxlIG9mIGEgU09BUCAxLjIgRmF1bHQgcGF5bG9hZCB3aXRoIHRoZQ0KICAgIDxjb2RlPmNvbnRl bnRUeXBlTWlzbWF0Y2g8L2NvZGU+IHN1YmNvZGU6PC9wPg0KDQo8ZXhhbXBsZSBpZD0nU09BUDEy RmF1bHRQYXlsb2FkJz4NCjxoZWFkPlNPQVAgMS4yIEZhdWx0IHBheWxvYWQgd2l0aCB0aGUgY29u dGVudFR5cGVNaXNtYXRjaCBzdWJjb2RlPC9oZWFkPg0KPGVnPjwhW0NEQVRBWzxlbnY6RW52ZWxv cGUNCiAgIHhtbG5zOmVudj0iaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3Bl Ig0KICAgeG1sbnM6c29hcGptcz0iXV0+Jm5zdXJpOzwhW0NEQVRBWyINCiAgIHhtbG5zOnhtbD0i aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIj4NCiA8ZW52OkJvZHk+DQogIDxl bnY6RmF1bHQ+DQogICA8ZW52OkNvZGU+DQogICAgIDxlbnY6VmFsdWU+ZW52OlNlbmRlcjwvZW52 OlZhbHVlPg0KICAgICA8ZW52OlN1YmNvZGU+DQogICAgICA8ZW52OlZhbHVlPnNvYXBqbXM6Y29u dGVudFR5cGVNaXNtYXRjaDwvZW52OlZhbHVlPg0KICAgICA8L2VudjpTdWJjb2RlPg0KICAgPC9l bnY6Q29kZT4NCiAgIDxlbnY6UmVhc29uPg0KICAgICA8ZW52OlRleHQgeG1sOmxhbmc9ImVuIj5U aGUgY29udGVudCB0eXBlIG9mIHRoZSBKTVMgcGF5bG9hZCBkb2VzIA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub3QgbWF0Y2ggdGhlIFhNTC48L2VudjpUZXh0Pg0KICAgPC9lbnY6UmVh c29uPg0KICAgPGVudjpEZXRhaWw+DQogICAgIDxtOk1heFRpbWU+UDVNPC9tOk1heFRpbWU+DQog ICA8L2VudjpEZXRhaWw+ICAgIA0KICA8L2VudjpGYXVsdD4NCiA8L2VudjpCb2R5Pg0KPC9lbnY6 RW52ZWxvcGU+XV0+PC9lZz4NCjwvZXhhbXBsZT4NCg0KICAgIDxwPlRoaXMgc3BlY2lmaWNhdGlv biBkb2VzIG5vdCBtYW5kYXRlIGFueSBwYXJ0aWN1bGFyIHRleHQgZm9yIHRoZQ0KICAgIDxjb2Rl PmVudjpUZXh0PC9jb2RlPiBjaGlsZCBlbGVtZW50IG9mIHRoZSA8Y29kZT5lbnY6UmVhc29uPC9j b2RlPiBlbGVtZW50LjwvcD4NCg0KICAgIDxwPlRoZSBTT0FQIDEuMSBzcGVjaWZpY2F0aW9uIGRv ZXMgbm90IHN1cHBvcnQgc3ViY29kZXMgZGlyZWN0bHkuICBJbg0KICAgIHRoYXQgc2NlbmFyaW8s IHRoZSA8Y29kZT5kZXRhaWw8L2NvZGU+IGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBzaW5nbGUgY2hp bGQNCiAgICBlbGVtZW50IHdpdGggdGhlIG5hbWVzcGFjZSBhbmQgbG9jYWwgbmFtZSBvZiB0aGF0 IG1hdGNoZXMgdGhlIHN1YmNvZGUNCiAgICBmb3IgU09BUCAxLjIuICBUaGUgc2FtZSBlcnJvciBh cyBhYm92ZSwgc2hvd24gaW4gU09BUCAxLjE6PC9wPg0KDQo8ZXhhbXBsZSBpZD0nU09BUDExRmF1 bHRQYXlsb2FkJz4NCjxoZWFkPlNPQVAgMS4xIEZhdWx0IHBheWxvYWQgd2l0aCB0aGUgY29udGVu dFR5cGVNaXNtYXRjaCBzdWJjb2RlPC9oZWFkPg0KPGVnPjwhW0NEQVRBWzxlbnY6RW52ZWxvcGUN CiAgICAgeG1sbnM6ZW52PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3Bl LyI+DQogICA8ZW52OkJvZHk+DQogICAgICAgPGVudjpGYXVsdD4NCiAgICAgICAgICAgPGZhdWx0 Y29kZT5TT0FQLUVOVjpDbGllbnQ8L2ZhdWx0Y29kZT4NCiAgICAgICAgICAgPGZhdWx0c3RyaW5n PkNsaWVudCBFcnJvcjwvZmF1bHRzdHJpbmc+DQogICAgICAgICAgIDxkZXRhaWw+DQogICAgICAg ICAgICAgICA8c29hcGptczpjb250ZW50VHlwZU1pc21hdGNoIA0KICAgICAgICAgICAgICAgICAg eG1sbnM6c29hcGptcz0iXV0+Jm5zdXJpOzwhW0NEQVRBWyIgLz4NCiAgICAgICAgICAgPC9kZXRh aWw+DQogICAgICAgPC9lbnY6RmF1bHQ+DQogICA8L2VudjpCb2R5Pg0KPC9lbnY6RW52ZWxvcGU+ XV0+PC9lZz48L2V4YW1wbGU+DQoNCiAgICA8cD5BbiBpbXBsZW1lbnRhdGlvbiA8cmZjMjExOT5N QVk8L3JmYzIxMTk+IGNob29zZSB0byBwdXQgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIGFzIHRoZQ0K ICAgIGNvbnRlbnRzIG9mIHRoZSBlbGVtZW50IHdpdGhpbiB0aGUgPGNvZGU+ZGV0YWlsPC9jb2Rl PiBzZWN0aW9uLiAgQSBwb3J0aW9uIG9mDQogICAgdGhlIGFib3ZlIGV4YW1wbGUgd2l0aCB0aGlz IGNoYW5nZSBmb2xsb3dzOjwvcD4NCg0KPGVnPjwhW0NEQVRBWzxlbnY6ZGV0YWlsPg0KICAgPHNv YXBqbXM6Y29udGVudFR5cGVNaXNtYXRjaCANCiAgICAgICAgeG1sbnM6c29hcGptcz0iXV0+Jm5z dXJpOzwhW0NEQVRBWyI+DQogICAgIFRoZSBjb250ZW50IHR5cGUgb2YgdGhlIEpNUyBwYXlsb2Fk IGRvZXMgbm90IG1hdGNoIHRoZSBYTUwuDQogICA8L3NvYXBqbXM6Y29udGVudFR5cGVNaXNtYXRj aD4NCjwvZW52OmRldGFpbD5dXT48L2VnPg0KICAgIDwvZGl2Mj4gPCEtLSBmYXVsdHMgLS0+DQoJ ICAgIDxlZG5vdGU+DQoJICAgICAgPG5hbWU+cHNlPC9uYW1lPg0KCSAgICAgIDxkYXRlPjIwMDgw NTIxPC9kYXRlPg0KCSAgICAgIDxlZHRleHQ+VGhlc2UgbG9vayBsaWtlIHN0YW5kYXJkIFNPQVAg ZmF1bHQgZm9ybWF0dGluZyBkZXRhaWxzLkFsbCBUZXN0YWJsZTwvZWR0ZXh0Pg0KCSAgICA8L2Vk bm90ZT4NCg0KICA8L2RpdjE+IDwhLS0gc29hcCBiaW5kaW5nIC0tPg0KDQogIDxkaXYxIGlkPSJ3 c2RsLWV4dGVuc2lvbnMiPg0KICA8aGVhZD5XU0RMIFVzYWdlPC9oZWFkPg0KDQogICAgPGRpdjIg aWQ9IndzZGwtb3ZlcnZpZXciPg0KICAgIDxoZWFkPk92ZXJ2aWV3PC9oZWFkPg0KDQogICAgPHA+ VGhlc2UgbmV4dCBzZWN0aW9ucyBkZXNjcmliZSBob3cgdG8gaW5kaWNhdGUgdGhlIHVzZSBvZiBT T0FQIG92ZXIgSk1TDQogICAgaW4gV1NETC4gIFdlIGJlZ2luIHdpdGggY29tcGxldGUgZXhhbXBs ZXMsIGFuZCB0aGVuIGRlc2NyaWJlIHRoZQ0KICAgIGluZGl2aWR1YWwgcGllY2VzIGFuZCBwYXJ0 cyBpbiB0aGUgc2VjdGlvbnMgd2hpY2ggZm9sbG93LjwvcD4NCg0KICAgIDxwPlRoZSBhc3NvY2lh dGVkIFNPQVAgVW5kZXJseWluZyBUcmFuc3BvcnQgQmluZGluZyBhYm92ZSBjb250YWlucyB0aGUN CiAgICBhY3R1YWwgcnVsZXMgYnkgd2hpY2ggU09BUCBtZXNzYWdlcyBhcmUgc2VudCBhbmQgcmVj ZWl2ZWQgdXNpbmcgdGhlIEphdmENCiAgICBNZXNzYWdlIFNlcnZpY2UuICBUaGlzIHNlY3Rpb24g aW5kaWNhdGVzIGhvdyBXU0RMIGNhbiBiZSB1c2VkIHRvDQogICAgaW5kaWNhdGUgdGhlIHVzZSBh bmQgY29udHJvbCB0aGUgb3BlcmF0aW9uIG9mIHRoYXQgYmluZGluZy48L3A+DQoNCiAgICA8cD5G b3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbiBleHRlbmRpbmcgU09BUCBiaW5kaW5ncyBpbiBXU0RM LA0KICAgIHBsZWFzZSByZWZlciBzZWN0aW9uIDMsIDx4c3BlY3JlZiBocmVmPSJodHRwOi8vd3d3 LnczLm9yZy9UUi93c2RsI19zb2FwLWIiPlNPQVAgQmluZGluZzwveHNwZWNyZWY+LA0KICAgIDxi aWJyZWYgcmVmPSJ3c2RsMTEiIC8+LiAgRm9yIGluZm9ybWF0aW9uIGFib3V0IGFjY2VwdGVkDQog ICAgU09BUCAxLjIgYmluZGluZ3MsIHNlZSA8YmlicmVmIHJlZj0id3NkbDExZm9yc29hcDEyIiAv Pi4gIA0KICAgIEZvciBpbmZvcm1hdGlvbiBhYm91dCBTT0FQIGJpbmRpbmdzIGluIFdTREwgMi4w IHNlZSBbPGJpYnJlZiByZWY9IndzZGwyMGZvcnNvYXAiIC8+XS48L3A+DQoNCiAgICA8L2RpdjI+ IDwhLS0gb3ZlcnZpZXcgLS0+DQoNCiAgICA8ZGl2MiBpZD0id3NkbC0xMS1vdmVydmlldyI+DQog ICAgPGhlYWQ+V1NETCAxLjEgRXh0ZW5zaW9ucyBPdmVydmlldzwvaGVhZD4NCg0KICAgIDx1bGlz dD4NCiAgICA8aXRlbT48cD5UaGUgdHJhbnNwb3J0IGF0dHJpYnV0ZSBvZiB0aGUgPGNvZGU+d3Nk bDExc29hcDExOmJpbmRpbmc8L2NvZGU+IG9yDQogICAgPGNvZGU+d3NkbDExc29hcDEyOmJpbmRp bmc8L2NvZGU+IGVsZW1lbnQgZ2V0cyBhIG5ldyBVUkwgcmVmbGVjdGluZyBhIEpNUyB0cmFuc3Bv cnQuPC9wPjwvaXRlbT4NCg0KICAgIDxpdGVtPjxwPkFsbG93cyB1c2Ugb2YgU09BUEFjdGlvbiBo ZWFkZXIsIGV2ZW4gdGhvdWdoIGl0IGlzIGV4cGxpY2l0bHkNCiAgICBkaXNhbGxvd2VkIGJ5IFdT REwgc3BlY2lmaWNhdGlvbi48L3A+PC9pdGVtPg0KDQogICAgPGl0ZW0+PHA+RGVmaW5lcyBob3cg dG8gc2V0IHZhcmlvdXMgcHJvcGVydGllcyB0byBjb250cm9sIHRoZSBiZWhhdmlvcg0KICAgIChj b25uZWN0aW9uIHBhcmFtZXRlcnMsIHJ1bnRpbWUgc2V0dGluZykgb2YgdGhlIGJpbmRpbmcuPC9w PjwvaXRlbT4NCg0KICAgIDxpdGVtPjxwPkxvY2F0ZXMgdGhlIHNlcnZpY2UgdXNpbmcgYSBKTVMg SVJJLjwvcD48L2l0ZW0+DQogICAgPC91bGlzdD4NCg0KICAgIDwvZGl2Mj4gPCEtLSB3c2RsIDEu MSAtLT4NCg0KICAgIDxkaXYyIGlkPSJ3c2RsLTIwLW92ZXJ2aWV3Ij4NCiAgICA8aGVhZD5XU0RM IDIuMCBFeHRlbnNpb25zIE92ZXJ2aWV3PC9oZWFkPg0KDQogICAgPHVsaXN0Pg0KICAgIDxpdGVt PjxwPlRoZSA8Y29kZT53c29hcDpwcm90b2NvbDwvY29kZT4gYXR0cmlidXRlIG9mIHRoZSBiaW5k aW5nIGVsZW1lbnQgZ2V0cyBhIG5ldw0KICAgIFVSTCByZWZsZWN0aW5nIGEgSk1TIHRyYW5zcG9y dC48L3A+PC9pdGVtPg0KDQogICAgPGl0ZW0+PHA+RGVmaW5lcyBob3cgdG8gc2V0IHZhcmlvdXMg cHJvcGVydGllcyB0byBjb250cm9sIHRoZSBiZWhhdmlvcg0KICAgIChjb25uZWN0aW9uIHBhcmFt ZXRlcnMsIHJ1bnRpbWUgc2V0dGluZykgb2YgdGhlIGJpbmRpbmcuPC9wPjwvaXRlbT4NCg0KICAg IDxpdGVtPjxwPkxvY2F0ZXMgdGhlIHNlcnZpY2UgdXNpbmcgYSBKTVMgSVJJLjwvcD48L2l0ZW0+ DQogICAgPC91bGlzdD4NCg0KICAgIDwvZGl2Mj4gPCEtLSB3c2RsIDIuMCAtLT4NCg0KICAgIDxk aXYyIGlkPSJ3c2RsLTExLWRldGFpbCI+DQogICAgPGhlYWQ+V1NETCAxLjEgRXh0ZW5zaW9ucyBE ZXRhaWw8L2hlYWQ+DQoNCiAgICAgIDxkaXYzIGlkPSJ3c2RsLTExLWV4YW1wbGUiPg0KICAgICAg PGhlYWQ+RXhhbXBsZTwvaGVhZD4NCg0KICAgICAgPG5vdGU+DQoJPHA+VGhpcyBzZWN0aW9uIGlz IG5vbi1ub3JtYXRpdmUuPC9wPg0KICAgICAgPC9ub3RlPg0KICAgIA0KICAgICAgPHA+VGhlIFs8 YmlicmVmIHJlZj0id3NkbDExIiAvPl0gc3BlY2lmaWNhdGlvbiBpbmNsdWRlcyBpbg0KICAgICAg c2VjdGlvbiAxLjIsIDx4c3BlY3JlZg0KICAgICAgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv d3NkbCNfd3NkbCI+V1NETCBEb2N1bWVudA0KICAgICAgRXhhbXBsZTwveHNwZWNyZWY+LCB0aGUg ZXhhbXBsZSA8eHNwZWNyZWYNCiAgICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3dzZGwj X2V4YW1wbGUxIj5FeGFtcGxlIDEgU09BUCAxLjENCiAgICAgIFJlcXVlc3QvUmVzcG9uc2Ugdmlh IEhUVFA8L3hzcGVjcmVmPi48L3A+DQoNCiAgICAgIDxwPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBp bGx1c3RyYXRlcyBhIG5ldyBzZXJ2aWNlIGRlc2NyaXB0aW9uIHdoaWNoDQogICAgICBhc3N1bWVz IHRoZSBvcmlnaW5hbCBzZXJ2aWNlIGF2YWlsYWJsZSBvdmVyIEhUVFAgaXMgYWxzbyBtYWRlDQog ICAgICBhdmFpbGFibGUgb3ZlciBKTVMuPC9wPg0KDQogICAgICA8cD5MaW5lcyAxNC0zMyBhcmUg YSBuZXcgYmluZGluZyBmb3Igc3BlY2lmeWluZyB0aGF0IEpNUyBpcyB0byBiZQ0KICAgICAgdXNl ZCwgbGluZSAxNSBzaG93cyB0aGUgdHJhbnNwb3J0IFVSSSBpbiA8Y29kZT4mbHQ7d3NkbDExc29h cDExOmJpbmRpbmc+PC9jb2RlPiwgYW5kICAgDQogICAgICBsaW5lcyAxNy0yMiAgc2hvdyB0aGUg ZXh0ZW5zaW9uIHByb3BlcnRpZXMgaW4gdGhlIDxjb2RlPiZsdDt3c2RsMTFzb2FwMTE6YmluZGlu Zz48L2NvZGU+Lg0KICAgICAgPC9wPg0KICAgICAgPHA+TGluZXMgNDAtNDIgYXJlIGFsc28gYWRk aXRpb25zIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIGF0IHdoaWNoDQogICAgICB0aGlzIG5ldyBp bXBsZW1lbnRhdGlvbiBleGlzdHMuICANCiAgICAgIExpbmUgNDEgc2hvd3MgdGhlIEpNUyBJUkkg U2NoZW1lIDxjb2RlPmptczo8L2NvZGU+IGluIHRoZSA8Y29kZT4mbHQ7d3NkbDExc29hcDExOjph ZGRyZXNzPjwvY29kZT4uPC9wPg0KDQoNCg0KPGV4YW1wbGUgaWQ9J3dzZGwxMWptcyc+DQo8aGVh ZD5XU0RMIDEuMSBKTVMgQmluZGluZzwvaGVhZD4NCjxlZz48IVtDREFUQVsxICAgICA8d3NkbDEx OmJpbmRpbmcgbmFtZT0iU3RvY2tRdW90ZVNvYXBCaW5kaW5nIiB0eXBlPSJ0bnM6U3RvY2tRdW90 ZVBvcnRUeXBlIj4NCjIgICAgICAgIDx3c2RsMTFzb2FwMTE6YmluZGluZyBzdHlsZT0iZG9jdW1l bnQiIA0KICAgICAgICAgICAgICAgIHRyYW5zcG9ydD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5v cmcvc29hcC9odHRwIi8+DQozICAgICAgICAgPHdzZGwxMTpvcGVyYXRpb24gbmFtZT0iR2V0TGFz dFRyYWRlUHJpY2UiPg0KNCAgICAgICAgICAgIDx3c2RsMTFzb2FwMTE6b3BlcmF0aW9uIHNvYXBB Y3Rpb249Imh0dHA6Ly9leGFtcGxlLmNvbS9HZXRMYXN0VHJhZGVQcmljZSIvPg0KNSAgICAgICAg ICAgPHdzZGwxMTppbnB1dD4NCjYgICAgICAgICAgICAgICA8d3NkbDExc29hcDExOmJvZHkgdXNl PSJsaXRlcmFsIi8+DQo3ICAgICAgICAgICAgPC93c2RsMTE6aW5wdXQ+DQo4ICAgICAgICAgICA8 d3NkbDExOm91dHB1dD4NCjkgICAgICAgICAgICAgICA8d3NkbDExc29hcDExOmJvZHkgdXNlPSJs aXRlcmFsIi8+DQoxMCAgICAgICAgICA8L3dzZGwxMTpvdXRwdXQ+DQoxMSAgICAgICAgPC93c2Rs MTE6b3BlcmF0aW9uPg0KMTIgICAgPC93c2RsMTE6YmluZGluZz4NCjEzDQoxNCAgIDx3c2RsMTE6 YmluZGluZyBuYW1lPSJTdG9ja1F1b3RlU29hcEpNU0JpbmRpbmciIHR5cGU9InRuczpTdG9ja1F1 b3RlUG9ydFR5cGUiIA0KICAgICAgICAgICAgICB4bWxuczpzb2Fwam1zPSJdXT4mbnN1cmk7PCFb Q0RBVEFbIj4NCjE1ICAgICAgIDx3c2RsMTFzb2FwMTE6YmluZGluZyBzdHlsZT0iZG9jdW1lbnQi IA0KICAgICAgICAgICAgICB0cmFuc3BvcnQ9Il1dPiZuc3VyaTs8IVtDREFUQVsiLz4NCjE2DQox NyAgICAgICA8IS0tIFdlIHdhbnQgdGhpcyBiaW5kaW5nIHRvIHVzZSBhIHBhcnRpY3VsYXIgQ0Yg Y2xhc3MgLS0+DQoxOCAgICAgICA8c29hcGptczpqbmRpQ29ubmVjdGlvbkZhY3RvcnlOYW1lPg0K MTkgICAgICAgICBzYW1wbGUuam1zLkNvbm5lY3Rpb25GYWN0b3J5DQoyMCAgICAgICA8L3NvYXBq bXM6am5kaUNvbm5lY3Rpb25GYWN0b3J5TmFtZT4NCjIxICAgICAgIDwhLS0gU3BlY2lmeSBQRVJT SVNURU5UIGRlbGl2ZXJ5IG1vZGUgLS0+DQoyMiAgICAgICA8c29hcGptczpkZWxpdmVyeU1vZGU+ UEVSU0lTVEVOVDwvc29hcGptczpkZWxpdmVyeU1vZGU+DQoyMw0KMjQgICAgICAgPHdzZGwxMTpv cGVyYXRpb24gbmFtZT0iR2V0TGFzdFRyYWRlUHJpY2UiPg0KMjUgICAgICAgICA8d3NkbDExc29h cDExOm9wZXJhdGlvbiBzb2FwQWN0aW9uPSJodHRwOi8vZXhhbXBsZS5jb20vR2V0TGFzdFRyYWRl UHJpY2UiLz4NCjI2ICAgICAgICAgPHdzZGwxMTppbnB1dD4NCjI3ICAgICAgICAgICAgIDx3c2Rs MTFzb2FwMTE6Ym9keSB1c2U9ImxpdGVyYWwiLz4NCjI4ICAgICAgICAgPC93c2RsMTE6aW5wdXQ+ DQoyOSAgICAgICAgIDx3c2RsMTE6b3V0cHV0Pg0KMzAgICAgICAgICAgICAgPHdzZGwxMXNvYXAx MTpib2R5IHVzZT0ibGl0ZXJhbCIvPg0KMzEgICAgICAgICAgPC93c2RsMTE6b3V0cHV0Pg0KMzIg ICAgICAgPC93c2RsMTE6b3BlcmF0aW9uPg0KMzMgICA8L3dzZGwxMTpiaW5kaW5nPg0KMzQNCjM1 ICAgPHdzZGwxMTpzZXJ2aWNlIG5hbWU9IlN0b2NrUXVvdGVTZXJ2aWNlIj4NCjM2ICAgICAgIDx3 c2RsMTE6ZG9jdW1lbnRhdGlvbj5NeSBmaXJzdCBzZXJ2aWNlPC93c2RsMTE6ZG9jdW1lbnRhdGlv bj4NCjM3ICAgICAgIDx3c2RsMTE6cG9ydCBuYW1lPSJTdG9ja1F1b3RlUG9ydCIgYmluZGluZz0i dG5zOlN0b2NrUXVvdGVTb2FwQmluZGluZyI+DQozOCAgICAgICAgICAgPHdzZGwxMXNvYXAxMTph ZGRyZXNzIGxvY2F0aW9uPSJodHRwOi8vZXhhbXBsZS5jb20vc3RvY2txdW90ZSIvPg0KMzkgICAg ICAgPC93c2RsMTE6cG9ydD4NCjQwICAgICAgIDx3c2RsMTE6cG9ydCBuYW1lPSJTdG9ja1F1b3Rl UG9ydF9qbXMiIGJpbmRpbmc9InRuczpTdG9ja1F1b3RlU29hcEpNU0JpbmRpbmciPg0KNDEgICAg ICAgICAgIDx3c2RsMTFzb2FwMTE6YWRkcmVzcyBsb2NhdGlvbj0iam1zOmpuZGk6bXlRdWV1ZT90 YXJnZXRTZXJ2aWNlPXN0b2NrcXVvdGUiLz4NCjQyICAgICAgIDwvd3NkbDExOnBvcnQ+DQo0MyAg IDwvd3NkbDExOnNlcnZpY2U+XV0+PC9lZz48L2V4YW1wbGU+DQoNCiAgICAgIDxwPlRoZSBrZXkg cG9pbnRzIHRvIG5vdGljZSBhcmU6PC9wPg0KDQogICAgICA8dWxpc3Q+DQogICAgICA8aXRlbT48 cD5UaGUgdHJhbnNwb3J0IFVSSSBpbiA8Y29kZT4mbHQ7d3NkbDExc29hcDExOmJpbmRpbmc+PC9j b2RlPiAobGluZSAxNSk8L3A+PC9pdGVtPg0KICAgICAgPGl0ZW0+PHA+VGhlIGptczogSVJJIGlu IHRoZSA8Y29kZT4mbHQ7d3NkbDExc29hcDExOmFkZHJlc3M+PC9jb2RlPiAobGluZSA0MSk8L3A+ PC9pdGVtPg0KICAgICAgPGl0ZW0+PHA+VGhlIGV4dGVuc2lvbiBwcm9wZXJ0aWVzIGluIHRoZSA8 Y29kZT4mbHQ7d3NkbDExc29hcDExOmJpbmRpbmc+PC9jb2RlPiAobGluZXMgMTctMjIpPC9wPjwv aXRlbT4NCiAgICAgIDwvdWxpc3Q+DQoNCiAgICAgIDwvZGl2Mz4gPCEtLSB3c2RsIDExIGV4YW1w bGUgLS0+DQoNCiAgICAgIDxkaXYzIGlkPSJ3c2RsLTExLXRyYW5zcG9ydC1pZCI+DQogICAgICA8 aGVhZD5XU0RMIDEuMSBUcmFuc3BvcnQgSWRlbnRpZmljYXRpb248L2hlYWQ+DQoNCiAgICAgIDxw PlRoZSA8eHNwZWNyZWYgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbCNfc29hcC1iIiA+ d3NkbDExc29hcDExOmJpbmRpbmc8L3hzcGVjcmVmPiANCiAgICAgIGVsZW1lbnQgaGFzIGEgPGF0 dD50cmFuc3BvcnQ8L2F0dD4gYXR0cmlidXRlLiAgVGhlIGRldmVsb3Blcg0KICAgICAgaW5kaWNh dGVzIHRoZSB1c2Ugb2YgdGhlIFNPQVAvSk1TIGJpbmRpbmcgYnkgcHV0dGluZw0KICAgICAgPGNv ZGU+Jm5zdXJpOzwvY29kZT4gYXMgdGhlIHZhbHVlDQogICAgICBvZiB0aGUgdHJhbnNwb3J0Ljwv cD4NCg0KDQo8ZXhhbXBsZSBpZD0nd3NkbDExc29hcDExdHJhbnNwb3J0Jz4NCjxoZWFkPlNPQVAg MS4xIEJpbmRpbmcgZm9yIFdTREwgMS4xIFRyYW5zcG9ydCBJZGVudGlmaWNhdGlvbjwvaGVhZD4N CjxlZz4mbHQ7d3NkbDExc29hcDExOmJpbmRpbmcgc3R5bGU9ImRvY3VtZW50IiANCiAgICAgICAg ICAgICAgICAgdHJhbnNwb3J0PSImbnN1cmk7Ii8+PC9lZz4NCjwvZXhhbXBsZT4NCiAgICAgIDwv ZGl2Mz4gPCEtLSB0cmFuc3BvcnQgaWRlbnRpZmljYXRpb24gLS0+DQoNCiAgICAgIDxkaXYzIGlk PSJ3c2RsLTExLXNvYXBhY3Rpb24iPg0KICAgICAgPGhlYWQ+V1NETCAxLjEgU09BUCBBY3Rpb248 L2hlYWQ+DQoNCiAgICAgIDxwPlRoZSA8eHNwZWNyZWYgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv VFIvd3NkbCNfc29hcDpvcGVyYXRpb24iPndzZGwxMXNvYXAxMTpvcGVyYXRpb248L3hzcGVjcmVm Pg0KICAgICAgcG9ydGlvbiBvZiB0aGUgV1NETCBzcGVjaWZpY2F0aW9uIGV4cGxpY2l0bHkgZGlz YWxsb3dzIHVzZSBvZiB0aGUNCiAgICAgIDxhdHQ+c29hcEFjdGlvbjwvYXR0PiBhdHRyaWJ1dGUg aW4gbm9uLUhUVFAgYmluZGluZ3MuICBUaGlzIHNwZWNpZmljYXRpb24NCiAgICAgIHN1cGVyc2Vk ZXMgdGhhdCByZXF1aXJlbWVudCwgYW5kIGFsbG93cyB0aGUgdXNlIG9mIDxhdHQ+c29hcEFjdGlv bjwvYXR0PiBpbg0KICAgICAgdGhlIDxjb2RlPndzZGwxMXNvYXAxMTpvcGVyYXRpb248L2NvZGU+ IGVsZW1lbnQgZm9yIFNPQVAvSk1TIGJpbmRpbmdzLiAgVGhpcyB2YWx1ZQ0KICAgICAgY29ycmVz cG9uZHMgdG8gdGhlIHByb3BlcnR5IDx0ZXJtcmVmIGRlZj0ic29hcEFjdGlvbiI+c29hcEFjdGlv bjwvdGVybXJlZj4uPC9wPg0KDQogICAgICA8L2RpdjM+IDwhLS0gc29hcCBhY3Rpb24gLS0+DQoN CiAgICAgIDxkaXYzIGlkPSJ3c2RsLTExLXByb3BlcnRpZXMiPg0KICAgICAgPGhlYWQ+U3BlY2lm eWluZyBQcm9wZXJ0aWVzIEluIFdTREwgMS4xPC9oZWFkPg0KDQogICAgICA8cD5WYXJpb3VzIEpN UyBwcm9wZXJ0aWVzIGRlc2NyaWJlZCBpbiB0aGUgU09BUC9KTVMgYmluZGluZw0KICAgICAgc3Bl Y2lmaWNhdGlvbiBtYXkgYmUgc2V0IGluIHRocmVlIHBsYWNlcyBpbiB0aGUgV1NETCAmbWRhc2g7 IHRoZSBiaW5kaW5nLA0KICAgICAgdGhlIHNlcnZpY2UsIGFuZCB0aGUgcG9ydC4gIFZhbHVlcyBz cGVjaWZpZWQgYXQgdGhlIHNlcnZpY2Ugd2lsbA0KICAgICAgcHJvcGFnYXRlIHRvIGFsbCBwb3J0 cy9lbmRwb2ludHMuICBWYWx1ZXMgc3BlY2lmaWVkIGF0IHRoZSBiaW5kaW5nDQogICAgICB3aWxs IHByb3BhZ2F0ZSB0byBhbGwgcG9ydHMvZW5kcG9pbnRzIHVzaW5nIHRoYXQgYmluZGluZy4gIEZv cg0KICAgICAgZXhhbXBsZSwgdGhlIDx0ZXJtcmVmIGRlZj0iam5kaUluaXRpYWxDb250ZXh0RmFj dG9yeSI+am5kaUluaXRpYWxDb250ZXh0RmFjdG9yeTwvdGVybXJlZj4gbWF5IGJlIGluZGljYXRl ZCBmb3IgYQ0KICAgICAgPGNvZGU+d3NkbDExOnNlcnZpY2U8L2NvZGU+LCBhbmQgaXQgaXMgdGhl biBpbXBsaWVkIGZvciBhbGwgb2YgdGhlIGNvbnRhaW5lZA0KICAgICAgPGNvZGU+d3NkbDExOnBv cnQ8L2NvZGU+IGVsZW1lbnRzLjwvcD4NCg0KICAgICAgPHA+SWYgYSBwcm9wZXJ0eSBpcyBzcGVj aWZpZWQgYXQgbXVsdGlwbGUgbGV2ZWxzLCB0aGUgbW9zdCBzcGVjaWZpYw0KICAgICAgc2V0dGlu ZyB3aWxsIHRha2UgcHJlY2VkZW5jZSAocG9ydCBmaXJzdCwgdGhlbiBzZXJ2aWNlLCB0aGVuIGJp bmRpbmcpLiANCiAgICAgIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgbm90aWNlIHRoZSA8dGVy bXJlZiBkZWY9InRpbWVUb0xpdmUiPnRpbWVUb0xpdmU8L3Rlcm1yZWY+IHByb3BlcnR5ICZtZGFz aDsgZm9yDQogICAgICB0aGUgPGNvZGU+cXVpY2tQb3J0PC9jb2RlPiBwb3J0LCB0aGUgdmFsdWUg d2lsbCBiZSAxMCAoc3BlY2lmaWVkIGF0IHRoZSBwb3J0DQogICAgICBsZXZlbCkuICBGb3IgdGhl IDxjb2RlPnNsb3dQb3J0PC9jb2RlPiBwb3J0LCB0aGUgdmFsdWUgd2lsbCBiZSAxMDAgKHNwZWNp ZmllZCBhdA0KICAgICAgdGhlIHNlcnZpY2UgbGV2ZWwpLiAgVGhlIHNldHRpbmcgaW4gdGhlIGJp bmRpbmcgaXMsIGluIHRoaXMgZXhhbXBsZSwNCiAgICAgIGFsd2F5cyBvdmVycmlkZGVuLjwvcD4N Cg0KPGV4YW1wbGUgaWQ9J3dzZGwxMXByb3BlcnRpZXMnPg0KPGhlYWQ+U3BlY2lmeWluZyBQcm9w ZXJ0aWVzIGluIFdTREwgMS4xPC9oZWFkPg0KPGVnPg0KPCFbQ0RBVEFbPHdzZGwxMTpiaW5kaW5n IG5hbWU9ImV4YW1wbGVCaW5kaW5nIj4NCiAgLi4uDQogIDxzb2Fwam1zOnRpbWVUb0xpdmU+MjAw PC9zb2Fwam1zOnRpbWVUb0xpdmU+DQo8L3dzZGwxMTpiaW5kaW5nPg0KDQo8d3NkbDExOnNlcnZp Y2UgbmFtZT0iZXhhbXBsZVNlcnZpY2UiPg0KICA8c29hcGptczpqbmRpSW5pdGlhbENvbnRleHRG YWN0b3J5Pg0KICAgIGNvbS5leGFtcGxlLmpuZGkuSW5pdGlhbENvbnRleHRGYWN0b3J5DQogIDwv c29hcGptczpqbmRpSW5pdGlhbENvbnRleHRGYWN0b3J5Pg0KICA8c29hcGptczp0aW1lVG9saXZl PjEwMDwvc29hcGptczp0aW1lVG9MaXZlPg0KICAuLi4NCiAgPHdzZGwxMTpwb3J0IG5hbWU9InF1 aWNrUG9ydCIgYmluZGluZz0idG5zOmV4YW1wbGVCaW5kaW5nIj4NCiAgICAuLi4NCiAgICA8c29h cGptczp0aW1lVG9MaXZlPjEwPC9zb2Fwam1zOnRpbWVUb0xpdmU+DQogIDwvd3NkbDExOnBvcnQ+ DQogIDx3c2RsMTE6cG9ydCBuYW1lPSJzbG93UG9ydCIgYmluZGluZz0idG5zOmV4YW1wbGVCaW5k aW5nIj4NCiAgICAuLi4NCiAgPC93c2RsMTE6cG9ydD4NCjwvd3NkbDExOnNlcnZpY2U+XV0+PC9l Zz4NCjwvZXhhbXBsZT4NCiAgICAgIDwvZGl2Mz4gPCEtLSB3c2RsIDExIHByb3BlcnRpZXMgLS0+ DQoNCiAgICAgIDxkaXYzIGlkPSJ3c2RsLTExLXVybCI+DQogICAgICA8aGVhZD5TcGVjaWZ5aW5n IFByb3BlcnRpZXMgVmlhIHRoZSBKTVMgSVJJPC9oZWFkPg0KDQogICAgICA8cD5Tb21lIG9mIHRo ZSBhYm92ZSBpbmZvcm1hdGlvbiBjYW4gYmUgcHV0IGluIHRoZSBJUkkgWzxiaWJyZWYgcmVmPSJq bXNpcmkiIC8+XS4gV2hlbiBleHByZXNzaW5nIHByb3BlcnRpZXMgZnJvbSB0aGUgU09BUC9KTVMg YmluZGluZw0KICAgICAgaW4gdGhlIElSSSwgeW91IGRvIG5vdCBuZWVkIHRoZSBuYW1lc3BhY2Ug cHJlZml4ICZtZGFzaDsganVzdCB1c2UgdGhlDQogICAgICBwcm9wZXJ0eSBuYW1lLCBzdWNoIGFz ICI8Y29kZT5wcmlvcml0eTwvY29kZT4iLjwvcD4NCg0KICAgICAgPHA+VGhpcyBJUkksIGluIHR1 cm4sIGlzIHJlcHJlc2VudGVkIGFzIHRoZSA8YXR0PmxvY2F0aW9uPC9hdHQ+IGF0dHJpYnV0ZQ0K ICAgICAgb24gdGhlIDx4c3BlY3JlZiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi93c2RsI19z b2FwOmFkZHJlc3MiPjxwaHJhc2U+PGNvZGU+Jmx0O3dzZGwxMXNvYXAxMTphZGRyZXNzPjwvY29k ZT48L3BocmFzZT48L3hzcGVjcmVmPg0KICAgICAgZWxlbWVudC4gIE5vdGUgdGhhdCB3aXRoIFNP QVAgMS4yLCB0aGUgc2FtZSBwYXR0ZXJuIGFwcGxpZXMsIGFsdGhvdWdoDQogICAgICB0aGUgInNv YXAiIHByZWZpeCBjb3JyZXNwb25kcyB0byB0aGUgU09BUCAxLjIgYmluZGluZyBuYW1lc3BhY2UN CiAgICAgIDxjb2RlPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzZGwvc29hcDEyLzwvY29k ZT4gYXMgZXN0YWJsaXNoZWQgYnkNCiAgICAgIFs8YmlicmVmIHJlZj0id3NkbDExZm9yc29hcDEy IiAvPl08L3A+DQoNCiAgICAgIDxwPlByb3BlcnRpZXMgZXhwcmVzc2VkIGluIHRoZSBJUkkgWzxi aWJyZWYgcmVmPSdyZmMzOTg3Jy8+XSBvdmVycmlkZSBhbnkgdmFsdWVzIHNldCBpbiB0aGUNCiAg ICAgIG1hcmt1cCBhcyBkZXNjcmliZWQgYWJvdmUuPC9wPg0KDQo8ZXhhbXBsZSBpZD0nam1zSVJJ cHJvcGVydGllcyc+DQo8aGVhZD5TcGVjaWZ5aW5nIFdTREwgMS4xIFByb3BlcnRpZXMgVmlhIHRo ZSBKTVMgSVJJPC9oZWFkPg0KPGVnPjwhW0NEQVRBWzx3c2RsMTE6cG9ydCAuLi4uID4NCiAgICAg ICA8d3NkbDExc29hcDExOmFkZHJlc3MgbG9jYXRpb249ImptczpqbmRpOmRlc3RpbmF0aW9uTmFt ZT90YXJnZXRTZXJ2aWNlPXNlcnZpY2UxIi8+IA0KPC93c2RsMTE6cG9ydD5dXT48L2VnPjwvZXhh bXBsZT4NCg0KICAgICAgPC9kaXYzPiA8IS0tIHdzZGwgMTEgcHJvcGVydGllcyBpbiB1cmwgLS0+ DQogICAgPC9kaXYyPiA8IS0tIHdzZGwgMTEgZGV0YWlsIC0tPg0KDQogICAgPGRpdjIgaWQ9Indz ZGwtMjAtZGV0YWlsIj4NCiAgICA8aGVhZD5XU0RMIDIuMCBFeHRlbnNpb25zIERldGFpbDwvaGVh ZD4NCg0KICAgICAgPHA+U2VjdGlvbiA8c3BlY3JlZiByZWY9IndzZGwtMTEtZGV0YWlsIi8+ICBp bGx1c3RyYXRlcyBob3cgYSBzZXJ2aWNlIG9yaWdpbmFsbHkgYXZhaWxhYmxlIA0KICAgICAgb3Zl ciBIVFRQIGlzIG1hZGUgYXZhaWxhYmxlIG92ZXIgSk1TIHVzaW5nIFdTREwgMS4xLiAgDQogICAg ICBUaGlzIHNlY3Rpb24gaWxsdXN0cmF0ZXMgaG93IHRvIGluZGljYXRlIHRoZSBjb25maWd1cmF0 aW9uIGZvciB1c2luZyBTT0FQIG92ZXIgSk1TIHdpdGggV1NETCAyLjA8L3A+DQogICAgICANCjxl ZyByb2xlPSJuZWVkcy1udW1iZXJpbmciPjwhW0NEQVRBWzx3c2RsMjA6YmluZGluZw0KICAgbmFt ZT0iU3RvY2tRdW90ZVNvYXBKTVNCaW5kaW5nIiBpbnRlcmZhY2U9InRuczpTdG9ja1F1b3RlSW50 ZXJmYWNlIiANCiAgIHR5cGU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDYvMDEvd3NkbC9zb2FwIg0K ICAgd3NvYXA6cHJvdG9jb2w9Il1dPiZuc3VyaTs8IVtDREFUQVsiDQogICB4bWxuczpzb2Fwam1z PSJdXT4mbnN1cmk7PCFbQ0RBVEFbIj4NCiAgDQogIDwhLS0gV2Ugd2FudCB0aGlzIGJpbmRpbmcg dG8gdXNlIGEgcGFydGljdWxhciBDRiBjbGFzcyAtLT4NCiAgPHNvYXBqbXM6am5kaUNvbm5lY3Rp b25GYWN0b3J5TmFtZT4NCiAgICBzYW1wbGUuam1zLkNvbm5lY3Rpb25GYWN0b3J5DQogIDwvc29h cGptczpqbmRpQ29ubmVjdGlvbkZhY3RvcnlOYW1lPg0KICA8IS0tIFNwZWNpZnkgUEVSU0lTVEVO VCBkZWxpdmVyeSBtb2RlIC0tPg0KICA8c29hcGptczpkZWxpdmVyeU1vZGU+UEVSU0lTVEVOVDwv c29hcGptczpkZWxpdmVyeU1vZGU+DQo8L3dzZGwyMDpiaW5kaW5nPg0KDQo8d3NkbDIwOnNlcnZp Y2UgbmFtZT0iU3RvY2tRdW90ZVNlcnZpY2UiIGludGVyZmFjZT0idG5zOlN0b2NrUXVvdGVJbnRl cmZhY2UiPg0KICA8d3NkbDIwOmRvY3VtZW50YXRpb24+TXkgZmlyc3Qgc2VydmljZTwvd3NkbDIw OmRvY3VtZW50YXRpb24+DQogIDx3c2RsMjA6ZW5kcG9pbnQgbmFtZT0iU09BUEhUVFAiIGJpbmRp bmc9InRuczpTdG9ja1F1b3RlU29hcEhUVFBCaW5kaW5nIg0KCSAgICBhZGRyZXNzPSJodHRwOi8v ZXhhbXBsZS5jb20vc3RvY2txdW90ZSIvPg0KICA8d3NkbDIwOmVuZHBvaW50IG5hbWU9IkpNUyIg YmluZGluZz0idG5zOlN0b2NrUXVvdGVTb2FwSk1TQmluZGluZyINCgkgICAgYWRkcmVzcz0iam1z OmpuZGk6bXlRdWV1ZS9zdG9ja3F1b3RlIi8+DQo8L3dzZGwyMDpzZXJ2aWNlPl1dPjwvZWc+DQoN CjxwPkxpbmUgNCBzaG93cyB0aGUgcHJvdG9jb2wgVVJJIGluIHRoZSA8Y29kZT53c29hcDpwcm90 b2NvbDwvY29kZT4NCmF0dHJpYnV0ZSBvZiB0aGUgPGNvZGU+Jmx0O2JpbmRpbmcmZ3Q7PC9jb2Rl Piwgd2hpY2ggaW5kaWNhdGVzIHRoYXQNCnRoaXMgU09BUCBvdmVyIEpNUyBiaW5kaW5nIGlzIGlu IHVzZS48L3A+DQoJICANCiAgICAgIDxwPkxpbmVzIDctMTEgc2hvdyB0aGUgdXNlIG9mIFdTREwg Mi4wIGV4dGVuc2lvbiBlbGVtZW50cyB0byBzZXQNCiAgICAgIHNvbWUgb2YgdGhlIHByb3BlcnRp ZXMgb2YgdGhlIGNvbm5lY3Rpb24uICBJbiB0aGlzIGNhc2UsIHlvdSBzZWUNCiAgICAgIHRoZSA8 Y29kZT4mbHQ7c29hcGptczpqbmRpQ29ubmVjdGlvbkZhY3RvcnlOYW1lJmd0OzwvY29kZT4gYW5k DQogICAgICA8Y29kZT4mbHQ7c29hcGptczpkZWxpdmVyeU1vZGUmZ3Q7PC9jb2RlPiBlbGVtZW50 cyBkZWZpbmluZyB0aGUNCiAgICAgIHZhbHVlcyBmb3IgdGhlIDx0ZXJtcmVmDQogICAgICBkZWY9 ImpuZGlDb25uZWN0aW9uRmFjdG9yeU5hbWUiPmpuZGlDb25uZWN0aW9uRmFjdG9yeU5hbWU8L3Rl cm1yZWY+DQogICAgICBhbmQgPHRlcm1yZWYgZGVmPSJkZWxpdmVyeU1vZGUiPmRlbGl2ZXJ5TW9k ZTwvdGVybXJlZj4NCiAgICAgIHByb3BlcnRpZXMuICBNb3JlIGdlbmVyYWxseSwgZWFjaCBhbGxv d2VkIHByb3BlcnR5IG1heSBiZQ0KICAgICAgZXhwcmVzc2VkIGFzIGEgV1NETCAyLjAgZXh0ZW5z aW9uIGVsZW1lbnQsIHR5cGVkIGFwcHJvcHJpYXRlbHkNCiAgICAgIGZvciB0aGF0IHByb3BlcnR5 J3MgdmFsdWUgc3BhY2UuICBGb3IgZXhhbXBsZSwgb24gbGluZSAxMSBhYm92ZSwNCiAgICAgIDxj b2RlPiZsdDtzb2Fwam1zOmRlbGl2ZXJ5TW9kZSZndDs8L2NvZGU+IGlzIG9mIHR5cGUNCiAgICAg IDxjb2RlPnhzZDpzdHJpbmc8L2NvZGU+LiAgVGhpcyBYTUwgcmVwcmVzZW50YXRpb24gdGhlbiBz dXJmYWNlcw0KICAgICAgaW4gdGhlIFdTREwgMi4wIENvbXBvbmVudCBNb2RlbCAoc2VlIG5leHQg c2VjdGlvbikgYXMgYW4NCiAgICAgIGV4dGVuc2lvbiBwcm9wZXJ0eS48L3A+DQogICAgICAgICAg ICANCiAgICAgIDxwPkxpbmVzIDE4LTE5IGFyZSBhbHNvIGFkZGl0aW9ucyB0byBzcGVjaWZ5IHRo ZSBsb2NhdGlvbiBhdA0KICAgICAgd2hpY2ggdGhpcyBuZXcgaW1wbGVtZW50YXRpb24gZXhpc3Rz LiAgTGluZSAxOSBzaG93aW5nIHRoZSBKTVMNCiAgICAgIElSSSBTY2hlbWUgPGNvZGU+am1zOjwv Y29kZT4gaW4gdGhlIDxjb2RlPmFkZHJlc3M8L2NvZGU+DQogICAgICBhdHRyaWJ1dGUgb2YgdGhl IDxjb2RlPiZsdDtlbmRwb2ludCZndDs8L2NvZGU+IGVsZW1lbnQuICBBcyB3aXRoDQogICAgICB0 aGUgV1NETCAxLjEgYmluZGluZywgeW91IG1heSBhbHNvIHNldCBjb25uZWN0aW9uIHByb3BlcnRp ZXMgaW4NCiAgICAgIHRoZSBJUkkuPC9wPg0KDQogICAgPC9kaXYyPiA8IS0tIHdzZGwgMjAgZGV0 YWlsIC0tPg0KDQogICAgPGRpdjIgaWQ9IndzZGwtcHJvcGVydGllcyI+DQogICAgPGhlYWQ+UHJv cGVydGllczwvaGVhZD4NCg0KICAgICAgICA8cD48c3BlY3JlZiByZWY9J3RhYmxlMzEnLz4gbGlz dHMgdGhlIFNPQVAvSk1TIHByb3BlcnRpZXMgd2hpY2ggYXJlIGRlY2xhcmFibGUgaW4gV1NETCBk b2N1bWVudHMuIDwvcD4NCg0KICAgICAgICAgICAgPHRhYmxlIGlkPSd0YWJsZTMxJyBib3JkZXI9 IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNSI+DQoJICA8Y2FwdGlvbj5TT0FQL0pN UyBwcm9wZXJ0aWVzIHdoaWNoIGFyZSBkZWNsYXJhYmxlIGluIFdTREwgMS4xIGFuZCBXU0RMIDIu MCBkb2N1bWVudHM8L2NhcHRpb24+DQoJICA8dGhlYWQ+PHRyPjx0aD5Qcm9wZXJ0eSBsb2NhbE5h bWU8L3RoPjx0aD5WYWxpZCBXU0RMIExvY2F0aW9uczwvdGg+PC90cj48L3RoZWFkPg0KICAgIDx0 Ym9keT4NCiAgICA8dHI+PHRkPjx0ZXJtcmVmIGRlZj0iam5kaUNvbm5lY3Rpb25GYWN0b3J5TmFt ZSI+am5kaUNvbm5lY3Rpb25GYWN0b3J5TmFtZTwvdGVybXJlZj48L3RkPjx0ZD5zZXJ2aWNlLCBw b3J0L2VuZHBvaW50LCBiaW5kaW5nPC90ZD48L3RyPg0KICAgIDx0cj48dGQ+PHRlcm1yZWYgZGVm PSJqbmRpSW5pdGlhbENvbnRleHRGYWN0b3J5Ij5qbmRpSW5pdGlhbENvbnRleHRGYWN0b3J5PC90 ZXJtcmVmPjwvdGQ+PHRkPnNlcnZpY2UsIHBvcnQvZW5kcG9pbnQsIGJpbmRpbmc8L3RkPjwvdHI+ DQogICAgPHRyPjx0ZD48dGVybXJlZiBkZWY9ImpuZGlVUkwiPmpuZGlVUkw8L3Rlcm1yZWY+PC90 ZD48dGQ+c2VydmljZSwgcG9ydC9lbmRwb2ludCwgYmluZGluZzwvdGQ+PC90cj4NCiAgICA8dHI+ PHRkPjx0ZXJtcmVmIGRlZj0iZGVsaXZlcnlNb2RlIj5kZWxpdmVyeU1vZGU8L3Rlcm1yZWY+PC90 ZD48dGQ+c2VydmljZSwgcG9ydC9lbmRwb2ludCwgYmluZGluZzwvdGQ+PC90cj4NCiAgICA8dHI+ PHRkPjx0ZXJtcmVmIGRlZj0icHJpb3JpdHkiPnByaW9yaXR5PC90ZXJtcmVmPjwvdGQ+PHRkPnNl cnZpY2UsIHBvcnQvZW5kcG9pbnQsIGJpbmRpbmc8L3RkPjwvdHI+DQoNCiAgICA8IS0tIHJlbW92 ZWQgMjAwNy0wNi0yMSBSQU0NCiAgICA8dHI+PHRkPjx0ZXJtcmVmIGRlZj0iZGVzdGluYXRpb25U eXBlIj5kZXN0aW5hdGlvblR5cGU8L3Rlcm1yZWY+PC90ZD48dGQ+c2VydmljZSwgcG9ydC9lbmRw b2ludCwgYmluZGluZzwvdGQ+PC90cj4NCiAgICAtLT4NCiAgICANCiAgICA8dHI+PHRkPjx0ZXJt cmVmIGRlZj0idGltZVRvTGl2ZSI+dGltZVRvTGl2ZTwvdGVybXJlZj48L3RkPjx0ZD5zZXJ2aWNl LCBwb3J0L2VuZHBvaW50LCBiaW5kaW5nPC90ZD48L3RyPg0KICAgIDx0cj48dGQ+PHRlcm1yZWYg ZGVmPSJyZXBseVRvTmFtZSI+cmVwbHlUb05hbWU8L3Rlcm1yZWY+PC90ZD48dGQ+c2VydmljZSwg cG9ydC9lbmRwb2ludCwgYmluZGluZzwvdGQ+PC90cj4NCiAgICA8dHI+PHRkPjx0ZXJtcmVmIGRl Zj0ic29hcEFjdGlvbiI+c29hcEFjdGlvbjwvdGVybXJlZj48L3RkPjx0ZD5iaW5kaW5nIG9wZXJh dGlvbjwvdGQ+PC90cj4NCiAgICA8L3Rib2R5PjwvdGFibGU+DQoNCiAgICAgICAgPGRpdjMgaWQ9 IndzZGwyMC1jb21wb25lbnRzIj4NCiAgICAgICAgICAgIDxoZWFkPlJlbGF0aW9uc2hpcCB0byBX U0RMIDIuMCBDb21wb25lbnQgTW9kZWw8L2hlYWQ+DQogICAgICAgICAgICA8cD5XU0RMIDIuMCBp cyBkZXNjcmliZWQgYWJzdHJhY3RseSBpbiB0ZXJtcyBvZiBhIDx4c3BlY3JlZiBocmVmPSJodHRw Oi8vd3d3LnczLm9yZy9UUi93c2RsMjAvI2NvbXBvbmVudF9tb2RlbCI+Y29tcG9uZW50IG1vZGVs PC94c3BlY3JlZj4uDQogICAgICAgICAgICAgICAgRXh0ZW5zaW9ucyBzdWNoIGFzIHRoZSBTT0FQ L0pNUyBiaW5kaW5nIGV4dGVuZCB0aGUgcHJlZGVmaW5lZCBjb21wb25lbnRzIHdpdGggbmV3IHBy b3BlcnRpZXMNCiAgICAgICAgICAgICAgICBhbmQvb3IgY29tcG9uZW50cy4NCiAgICAgICAgICAg IDwvcD4NCg0KICAgICAgICAgICAgPHA+Rm9yIHRoaXMgc3BlY2lmaWNhdGlvbiwgZWFjaCBwcm9w ZXJ0eSBpbiB0aGUgdGFibGUgYWJvdmUgYWRkcyBhIFdTREwgQ29tcG9uZW50IE1vZGVsDQogICAg ICAgICAgICBQcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gdGhlIGNvbnRhaW5pbmcgV1NE TCAyLjAgY29tcG9uZW50LiAgRm9yIGluc3RhbmNlLA0KICAgICAgICAgICAgaWYgdGhlIDxlbXBo PiZsdDtkZWxpdmVyeU1vZGUmZ3Q7PC9lbXBoPiBleHRlbnNpb24gZWxlbWVudCBhcHBlYXJlZCB1 bmRlcm5lYXRoIHRoZSA8ZW1waD4mbHQ7c2VydmljZSZndDs8L2VtcGg+DQogICAgICAgICAgICBl bGVtZW50IGluIGEgV1NETCAyLjAgZGVzY3JpcHRpb24sIGl0IHdvdWxkIHJlc3VsdCBpbiBhIDx0 ZXJtcmVmIGRlZj0iZGVsaXZlcnlNb2RlIj5kZWxpdmVyeU1vZGU8L3Rlcm1yZWY+IHByb3BlcnR5 IGFkZGVkDQogICAgICAgICAgICB0byB0aGUgPHhzcGVjcmVmIGhyZWY9Imh0dHA6Ly93d3cudzMu b3JnL1RSL3dzZGwyMC8jU2VydmljZSI+U2VydmljZTwveHNwZWNyZWY+DQogICAgICAgICAgICBj b21wb25lbnQuPC9wPg0KDQogICAgICAgICAgICA8ZGl2NCBpZD0id3NkbDIwLXByZWNlZGVuY2Ui Pg0KICAgICAgICAgICAgICAgIDxoZWFkPlByZWNlZGVuY2U8L2hlYWQ+DQogICAgICAgICAgICAg ICAgPHA+DQogICAgICAgICAgICAgICAgICAgIFNpbmNlIHRoZSBzYW1lIHByb3BlcnR5IGNhbiBi ZSBzcGVjaWZpZWQgaW4gbXVsdGlwbGUgcGxhY2VzLCB3ZSBuZWVkIHByZWNlZGVuY2UgcnVsZXMs IGFuZCBpbiBmYWN0DQogICAgICAgICAgICAgICAgICAgIHRoZXkgYXJlIGV4YWN0bHkgYXMgc3Bl Y2lmaWVkIGluIHNlY3Rpb24gPHNwZWNyZWYgcmVmPSJ3c2RsLTExLXByb3BlcnRpZXMiLz4uICBU aGUgbW9zdC1zcGVjaWZpYyBzZXR0aW5nDQogICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlcyBs ZXNzLXNwZWNpZmljIG9uZXMsIHNvIGVuZHBvaW50IHdpbnMgb3ZlciBzZXJ2aWNlLCB3aGljaCB3 aW5zIG92ZXIgYmluZGluZy4gIEZvciBhIHBhcnRpY3VsYXINCiAgICAgICAgICAgICAgICAgICAg aW50ZXJhY3Rpb24sIHlvdSBtYXkgc2VhcmNoIGZvciBhIGdpdmVuIHByb3BlcnR5IG9uIHRoZSBF bmRwb2ludCBjb21wb25lbnQsIHRoZW4gU2VydmljZSwgdGhlbiBCaW5kaW5nLCB0YWtpbmcgd2hp Y2hldmVyDQogICAgICAgICAgICAgICAgICAgIHZhbHVlIHlvdSBmaW5kIGZpcnN0Lg0KICAgICAg ICAgICAgICAgIDwvcD4NCiAgICAgICAgICAgIDwvZGl2ND4NCiAgICAgICAgPC9kaXYzPg0KICAg IDwvZGl2Mj4gPCEtLSBwcm9wZXJ0aWVzIC0tPg0KDQogIDwvZGl2MT4gPCEtLSB3c2RsIHVzYWdl IC0tPg0KDQo8L2JvZHk+DQoNCjxiYWNrPg0KDQoNCg0KICA8ZGl2MSBpZD0icmVmZXJlbmNlcyI+ DQogIDxoZWFkPlJlZmVyZW5jZXM8L2hlYWQ+DQoNCiAgPGJsaXN0Pg0KDQogIDxiaWJsIGtleT0i SUVURiBSRkMgMjA0NSINCglocmVmPSJodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMDQ1LnR4 dCIgaWQ9Im1pbWUiPgkgICANCiAgICA8dGl0bGVyZWY+TXVsdGlwdXJwb3NlIEludGVybmV0IE1h aWwgRXh0ZW5zaW9ucyAoTUlNRSkgUGFydCBPbmU6DQogICAgRm9ybWF0IG9mIEludGVybmV0IE1l c3NhZ2UgQm9kaWVzPC90aXRsZXJlZj4sIE4uIEZyZWVkLA0KICAgIE4uIEJvcmVuc3RlaW4sIEF1 dGhvcnMuIEludGVybmV0IEVuZ2luZWVyaW5nIFRhc2sgRm9yY2UsIE5vdmVtYmVyDQogICAgMTk5 Ni4gQXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzIwNDUudHh0Lg0KICA8 L2JpYmw+DQoNCiAgPGJpYmwga2V5PSJJRVRGIFJGQyAyMTE5IiBocmVmPSJodHRwOi8vd3d3Lmll dGYub3JnL3JmYy9yZmMyMTE5LnR4dCINCglpZD0icmZjMjExOSI+DQogICAgPHRpdGxlcmVmPktl eSB3b3JkcyBmb3IgdXNlIGluIFJGQ3MgdG8gSW5kaWNhdGUgUmVxdWlyZW1lbnQNCiAgICBMZXZl bHM8L3RpdGxlcmVmPiwgUy4gQnJhZG5lciwgQXV0aG9yLiBJbnRlcm5ldCBFbmdpbmVlcmluZyBU YXNrDQogICAgRm9yY2UsIE1hcmNoIDE5OTcuICBBdmFpbGFibGUgYXQNCiAgICBodHRwOi8vd3d3 LmlldGYub3JnL3JmYy9yZmMyMTE5LnR4dC4NCiAgPC9iaWJsPg0KICAgICAgDQogIDxiaWJsIGtl eT0iSUVURiBSRkMgMzk4NyIgaHJlZj0iaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzk4Ny50 eHQiDQoJaWQ9InJmYzM5ODciPg0KICAgIDx0aXRsZXJlZj5JbnRlcm5hdGlvbmFsaXplZCBSZXNv dXJjZSBJZGVudGlmaWVycyAoSVJJcykNCiAgICA8L3RpdGxlcmVmPiwgTS4gIER1ZXJzdCBhbmQg TS4gU3VpZ25hcmQsIEF1dGhvcnMuIEludGVybmV0DQogICAgRW5naW5lZXJpbmcgVGFzayBGb3Jj ZSwgSmFudWFyeSAyMDA1LiBBdmFpbGFibGUgYXQNCiAgICBodHRwOi8vd3d3LmlldGYub3JnL3Jm Yy9yZmMzOTg3LnR4dC4NCiAgPC9iaWJsPg0KICANCiAgPGJpYmwgaHJlZj0iaHR0cDovL2phdmEu c3VuLmNvbS9wcm9kdWN0cy9qbXMvZG9jcy5odG1sIg0KCWtleT0iSmF2YSBNZXNzYWdlIFNlcnZp Y2UiDQoJaWQ9ImptcyI+DQogICAgPHRpdGxlcmVmPkphdmEgTWVzc2FnZSBTZXJ2aWNlIChKTVMp IDEuMTwvdGl0bGVyZWY+LCBNLiBIYXBuZXIsDQogICAgZXQuIGFsLiwgQXV0aG9ycy4gU3VuIE1p Y3Jvc3lzdGVtcywgSW5jLiwgMTIgQXByaWwgMjAwMi4gQXZhaWxhYmxlIGF0DQogICAgaHR0cDov L2phdmEuc3VuLmNvbS9wcm9kdWN0cy9qbXMvZG9jcy5odG1sDQogIDwvYmlibD4NCiAgDQogIDxi aWJsIGtleT0iVVJJIFNjaGVtZSBmb3IgSk1TIiBpZD0iam1zaXJpIiBocmVmPSJodHRwOi8vd3d3 LmlldGYub3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tZXJyaWNrLWptcy1pcmktMDMudHh0Ij4N CiAgICA8dGl0bGVyZWY+VVJJIFNjaGVtZSBmb3IgSmF2YSZ0cmFkZTsgTWVzc2FnZSBTZXJ2aWNl DQogICAgMS4wPC90aXRsZXJlZj4sIEQuIFhpYW8sIFIuIE1lcnJpY2ssIFAuIEVhc3RvbiwgYW5k IEQuIFJva2lja2ksDQogICAgQXV0aG9ycy4gSW50ZXJuZXQgRW5naW5lZXJpbmcgVGFzayBGb3Jj ZSwgMjIgQXByaWwgMjAwOC4gQXZhaWxhYmxlDQogICAgYXQNCiAgICBodHRwOi8vd3d3LmlldGYu b3JnL2ludGVybmV0LWRyYWZ0cy9kcmFmdC1tZXJyaWNrLWptcy1pcmktMDMudHh0DQogIDwvYmli bD4NCiAgICAgIA0KICA8YmlibCBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TT0FQLWF0dGFj aG1lbnRzIiBrZXk9IlNPQVAgTWVzc2FnZXMgd2l0aCBBdHRhY2htZW50cyIgaWQ9IlN3QSI+DQog ICAgPHRpdGxlcmVmPlNPQVAgTWVzc2FnZXMgd2l0aCBBdHRhY2htZW50czwvdGl0bGVyZWY+LCBK b2huIEJhcnRvbiwNCiAgICBTYXRpc2ggVGhhdHRlLCBhbmQgSGVucmlrIEZyeXN0eWsgTmllbHNl biwgQXV0aG9ycy4gSGV3bGV0dA0KICAgIFBhY2thcmQgTGFicywgTWljcm9zb2Z0IENvcnBvcmF0 aW9uLCAxMSBEZWNlbWJlciAyMDAwLiBBdmFpbGFibGUNCiAgICBhdCBodHRwOi8vd3d3LnczLm9y Zy9UUi9TT0FQLWF0dGFjaG1lbnRzDQogIDwvYmlibD4NCg0KICA8YmlibCBocmVmPSJodHRwOi8v d3d3LnczLm9yZy9TdWJtaXNzaW9uL3NvYXAxMW10b20xMC8iDQoJa2V5PSJTT0FQIDEuMSBCaW5k aW5nIGZvciBNVE9NIDEuMCIgaWQ9IlNPQVAxMS1NVE9NIj4NCiAgICA8dGl0bGVyZWY+U09BUCAx LjEgQmluZGluZyBmb3IgTVRPTSAxLjA8L3RpdGxlcmVmPiwgRGltaXRhcg0KICAgIEFuZ2Vsb3Ys IGV0LiBhbC4sIEF1dGhvcnMuIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMNCiAgICBD b3Jwb3JhdGlvbiwgTWljcm9zb2Z0IENvcnBvcmF0aW9uLCBJbmMuLCBPcmFjbGUgQ29ycC4gYW5k IFNBUCBBRywNCiAgICA1IEFwcmlsIDIwMDYuIEF2YWlsYWJsZSBhdA0KICAgIGh0dHA6Ly93d3cu dzMub3JnL1N1Ym1pc3Npb24vc29hcDExbXRvbTEwLw0KICA8L2JpYmw+DQoNCiAgPGJpYmwgaWQ9 IlNPQVAxMi1NVE9NIiBrZXk9IlNPQVAgTVRPTSIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv MjAwNS9SRUMtc29hcDEyLW10b20tMjAwNTAxMjUvIj4NCiAgICA8dGl0bGVyZWY+U09BUCBNZXNz YWdlIFRyYW5zbWlzc2lvbiBPcHRpbWl6YXRpb24NCiAgICBNZWNoYW5pc208L3RpdGxlcmVmPiwg Ti4gTWVuZGVsc29obiwgTS4gTm90dGluZ2hhbSwgYW5kDQogICAgSC4gUnVlbGxhbiwgRWRpdG9y cy4gV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgVzNDDQogICAgUmVjb21tZW5kYXRpb24sIDI1 IEphbnVhcnkgMjAwNS4gVGhpcyB2ZXJzaW9uIG9mIFNPQVAgTWVzc2FnZQ0KICAgIFRyYW5zbWlz c2lvbiBPcHRpbWl6YXRpb24gTWVjaGFuaXNtIGlzDQogICAgaHR0cDovL3d3dy53My5vcmcvVFIv MjAwNS9SRUMtc29hcDEyLW10b20tMjAwNTAxMjUvLiBUaGUgPGxvYw0KICAgIGhyZWY9J2h0dHA6 Ly93d3cudzMub3JnL1RSL3NvYXAxMi1tdG9tLyc+bGF0ZXN0IHZlcnNpb24gb2YgdGhlDQogICAg IlNPQVAgTWVzc2FnZSBUcmFuc21pc3Npb24gT3B0aW1pemF0aW9uIE1lY2hhbmlzbSIgZG9jdW1l bnQ8L2xvYz4NCiAgICBpcyBhdmFpbGFibGUgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9zb2Fw MTItbXRvbS8uDQogIDwvYmlibD4NCg0KICA8YmlibCBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U Ui9zb2FwMTItZW1haWwiIGtleT0iU09BUCAxLjIgRW1haWwgQmluZGluZyIgaWQ9IlNPQVAtRU1B SUwiPg0KICAgIDx0aXRsZXJlZj5TT0FQIFZlcnNpb24gMS4yIEVtYWlsIEJpbmRpbmc8L3RpdGxl cmVmPiwgSGlnaGxhbmQgTWFyeQ0KICAgIE1vdW50YWluLCBKYWNlayBLb3BlY2t5LCBTdHVhcnQg V2lsbGlhbXMsIEdsZW4gRGFuaWVscywgYW5kIE5vYWgNCiAgICBNZW5kZWxzb2huLCBBdXRob3Jz LiBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAzIEp1bHkgMjAwMi4NCiAgICBBdmFpbGFibGUg YXQgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMi9OT1RFLXNvYXAxMi1lbWFpbC0yMDAyMDcwMw0K ICA8L2JpYmw+DQoNCiAgPGJpYmwgaWQ9InNvYXAxMSIga2V5PSJTT0FQIDEuMSINCglocmVmPSJo dHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL05PVEUtU09BUC0yMDAwMDUwOC8iPg0KICAgIDx0aXRs ZXJlZj5TaW1wbGUgT2JqZWN0IEFjY2VzcyBQcm90b2NvbCAoU09BUCkgMS4xPC90aXRsZXJlZj4s DQogICAgRC4gQm94LCBldCBhbCwgRWRpdG9ycy4gRGV2ZWxvcE1lbnRvciwgSW50ZXJuYXRpb25h bCBCdXNpbmVzcw0KICAgIE1hY2hpbmVzIENvcnBvcmF0aW9uLCBMb3R1cyBEZXZlbG9wbWVudCBD b3Jwb3JhdGlvbiwgTWljcm9zb2Z0LA0KICAgIGFuZCBVc2VyTGFuZCBTb2Z0d2FyZSwgOCBNYXkg MjAwMC4gQXZhaWxhYmxlIGF0DQogICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9OT1RFLVNP QVAtMjAwMDA1MDgvLg0KICA8L2JpYmw+DQogICAgICANCiAgPGJpYmwgaWQ9InNvYXAxMiIga2V5 PSJTT0FQIDEuMiBNZXNzYWdpbmcgRnJhbWV3b3JrIg0KCWhyZWY9Imh0dHA6Ly93d3cudzMub3Jn L1RSLzIwMDcvUkVDLXNvYXAxMi1wYXJ0MS0yMDA3MDQyNy8iPg0KICAgIDx0aXRsZXJlZj5TT0FQ IFZlcnNpb24gMS4yIFBhcnQgMTogTWVzc2FnaW5nIEZyYW1ld29yazwvdGl0bGVyZWY+LA0KICAg IE0uICBHdWRnaW4sIE0uIEhhZGxleSwgTi4gTWVuZGVsc29obiwgSi1KLiBNb3JlYXUsIEguIEZy eXN0eWsNCiAgICBOaWVsc2VuLCBFZGl0b3JzLiAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwg MjQgSnVuZSAyMDAzLA0KICAgIHJldmlzZWQgMjcgQXByaWwgMjAwNy4gVGhpcyB2ZXJzaW9uIG9m IHRoZSBTT0FQIFZlcnNpb24gMS4yIFBhcnQNCiAgICAxOiBNZXNzYWdpbmcgRnJhbWV3b3JrIFJl Y29tbWVuZGF0aW9uIGlzDQogICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9SRUMtc29hcDEy LXBhcnQxLTIwMDcwNDI3Ly4gVGhlIDxsb2MNCiAgICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U Ui9zb2FwMTItcGFydDEvIj5sYXRlc3QgdmVyc2lvbiBvZiBTT0FQDQogICAgVmVyc2lvbiAxLjIg UGFydCAxOiBNZXNzYWdpbmcgRnJhbWV3b3JrPC9sb2M+IGlzIGF2YWlsYWJsZSBhdA0KICAgIGh0 dHA6Ly93d3cudzMub3JnL1RSL3NvYXAxMi1wYXJ0MS8uIA0KICA8L2JpYmw+DQogIDxiaWJsIGlk PSJzb2FwMTJwMiIga2V5PSJTT0FQIDEuMiBQYXJ0IDI6IEFkanVuY3RzIg0KCWhyZWY9Imh0dHA6 Ly93d3cudzMub3JnL1RSLzIwMDcvUkVDLXNvYXAxMi1wYXJ0Mi0yMDA3MDQyNy8iPg0KICAgIDx0 aXRsZXJlZj5TT0FQIFZlcnNpb24gMS4yIFBhcnQgMjogQWRqdW5jdHMgKFNlY29uZA0KICAgIEVk aXRpb24pPC90aXRsZXJlZj4sIE0uIEd1ZGdpbiwgZXQgYWwuLCBFZGl0b3JzLiBXb3JsZCBXaWRl IFdlYg0KICAgIENvbnNvcnRpdW0sIDI0IEp1bmUgMjAwNiwgcmV2aXNlZCAyNyBBcHJpbCAyMDA3 LiBUaGlzIHZlcnNpb24gb2YNCiAgICB0aGUgIlNPQVAgVmVyc2lvbiAxLjIgUGFydCAyOiBBZGp1 bmN0cyAoU2Vjb25kIEVkaXRpb24pIg0KICAgIFJlY29tbWVuZGF0aW9uIGlzDQogICAgaHR0cDov L3d3dy53My5vcmcvVFIvMjAwNy9SRUMtc29hcDEyLXBhcnQyLTIwMDcwNDI3Ly4gVGhlIDxsb2MN CiAgICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9zb2FwMTItcGFydDIvIj5sYXRlc3QgdmVy c2lvbiBvZiAiU09BUA0KICAgIFZlcnNpb24gMS4yIFBhcnQgMjogQWRqdW5jdHMiPC9sb2M+IGlz IGF2YWlsYWJsZSBhdA0KICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL3NvYXAxMi1wYXJ0Mi8uDQog IDwvYmlibD4NCiAgDQogIDxiaWJsIGtleT0iU09BUCAxLjIgUGFydCAzOiBPbmUtV2F5IE1FUCIg aWQ9InNvYXAtb25lLXdheS1tZXAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvTk9U RS1zb2FwMTItcGFydDMtMjAwNzA3MDIvIj4NCiAgICA8dGl0bGVyZWY+U09BUCAxLjIgUGFydCAz OiBPbmUtV2F5IE1FUDwvdGl0bGVyZWY+LCBEYXZpZCBPcmNoYXJkLA0KICAgIEF1dGhvci4gV29y bGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgMiBKdWx5IDIwMDcuIEF2YWlsYWJsZSBhdA0KICAgIGh0 dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvTk9URS1zb2FwMTItcGFydDMtMjAwNzA3MDIvDQogIDwv YmlibD4NCiAgICAgIA0KICA8YmlibCBpZD0id3NkbDExIiBrZXk9IldTREwgMS4xIg0KCWhyZWY9 Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvTk9URS13c2RsLTIwMDEwMzE1Ij4NCiAgICA8dGl0 bGVyZWY+V2ViIFNlcnZpY2VzIERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSAxLjE8L3RpdGxl cmVmPiwNCiAgICBFLiAgQ2hyaXN0ZW5zZW4sIGV0IGFsLCBBdXRob3JzLiBBcmliYSwgSW50ZXJu YXRpb25hbCBCdXNpbmVzcw0KICAgIE1hY2hpbmVzIENvcnBvcmF0aW9uLCBhbmQgTWljcm9zb2Z0 LCAxNSBNYXJjaCAyMDAxLiAgQXZhaWxhYmxlIGF0DQogICAgaHR0cDovL3d3dy53My5vcmcvVFIv MjAwMS9OT1RFLXdzZGwtMjAwMTAzMTUuDQogIDwvYmlibD4NCiAgICAgIA0KICA8YmlibCBpZD0i d3NkbDExZm9yc29hcDEyIiBrZXk9IldTREwgMS4xIGZvciBTT0FQIDEuMiIgaHJlZj0iaHR0cDov L3d3dy53My5vcmcvU3VibWlzc2lvbi8yMDA2L1NVQk0td3NkbDExc29hcDEyLTIwMDYwNDA1LyI+ DQogICAgPHRpdGxlcmVmPldTREwgMS4xIEJpbmRpbmcgRXh0ZW5zaW9uIGZvciBTT0FQIDEuMjwv dGl0bGVyZWY+LA0KICAgIEQuIEFuZ2Vsb3YsIGV0IGFsLCBBdXRob3JzLiBJbnRlcm5hdGlvbmFs IEJ1c2luZXNzIE1hY2hpbmVzDQogICAgQ29ycG9yYXRpb24sIE1pY3Jvc29mdCBDb3Jwb3JhdGlv biwgSW5jLiwgT3JhY2xlIENvcnAuIGFuZCBTQVAgQUcsDQogICAgNSBBcHJpbCAyMDA2LiDCoEF2 YWlsYWJsZSBhdA0KICAgIGh0dHA6Ly93d3cudzMub3JnL1N1Ym1pc3Npb24vMjAwNi9TVUJNLXdz ZGwxMXNvYXAxMi0yMDA2MDQwNS8uDQogIDwvYmlibD4NCg0KICA8YmlibCBrZXk9IldTREwgMi4w IENvcmUgTGFuZ3VhZ2UiIGlkPSJ3c2RsMjAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIw MDcvUkVDLXdzZGwyMC0yMDA3MDYyNi8iPg0KICAgIDx0aXRsZXJlZj5XZWIgU2VydmljZXMgRGVz Y3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIFZlcnNpb24gMi4wDQogICAgUGFydCAxOiBDb3JlIExh bmd1YWdlPC90aXRsZXJlZj4sIFIuIENoaW5uaWNpLCBKLiBKLiBNb3JlYXUsDQogICAgQS4gUnlt YW4sIFMuIFdlZXJhd2FyYW5hLCBFZGl0b3JzLiBXb3JsZCBXaWRlIFdlYiBDb25zb3J0aXVtLA0K ICAgIDI2IEp1bmUgMjAwNy4gVGhpcyB2ZXJzaW9uIG9mIHRoZSBXU0RMIDIuMCBzcGVjaWZpY2F0 aW9uIGlzDQogICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9SRUMtd3NkbDIwLTIwMDcwNjI2 Ly4gVGhlIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvd3NkbDIwLyI+bGF0ZXN0IHZl cnNpb24gb2YgV1NETA0KICAgIDIuMDwvbG9jPiBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy53 My5vcmcvVFIvd3NkbDIwLy4NCiAgPC9iaWJsPg0KICA8YmlibCBrZXk9IldTREwgMi4wIEFkanVu Y3RzIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L1JFQy13c2RsMjAtYWRqdW5jdHMt MjAwNzA2MjYiIGlkPSJ3c2RsMjBmb3Jzb2FwIj4NCiAgICA8dGl0bGVyZWY+V2ViIFNlcnZpY2Vz IERlc2NyaXB0aW9uIExhbmd1YWdlIChXU0RMKSBWZXJzaW9uIDIuMA0KICAgIFBhcnQgMjogQWRq dW5jdHM8L3RpdGxlcmVmPiwgUi4gQ2hpbm5pY2ksIEguIEhhYXMsIEEuIExld2lzLCBKLUouDQog ICAgTW9yZWF1LCBELiBPcmNoYXJkLCBTLiBXZWVyYXdhcmFuYSwgRWRpdG9ycy4gIFdvcmxkIFdp ZGUgV2ViDQogICAgQ29uc29ydGl1bSwgMjYgSnVuZSAyMDA3LiAgVGhpcyB2ZXJzaW9uIG9mIHRo ZSAiV2ViIFNlcnZpY2VzDQogICAgRGVzY3JpcHRpb24gTGFuZ3VhZ2UgKFdTREwpIFZlcnNpb24g Mi4wIFBhcnQgMjogQWRqdW5jdHMiDQogICAgUmVjb21tZW5kYXRpb24gaXMgYXZhaWxhYmxlIGF0 DQogICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNy9SRUMtd3NkbDIwLWFkanVuY3RzLTIwMDcw NjI2LiBUaGUgPGxvYw0KICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3dzZGwyMC1hZGp1 bmN0cyI+bGF0ZXN0IHZlcnNpb24gb2YgIldlYg0KICAgIFNlcnZpY2VzIERlc2NyaXB0aW9uIExh bmd1YWdlIChXU0RMKSBWZXJzaW9uIDIuMCBQYXJ0IDI6DQogICAgQWRqdW5jdHMiPC9sb2M+IGlz IGF2YWlsYWJsZSBhdA0KICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL3dzZGwyMC1hZGp1bmN0cy4N CiAgPC9iaWJsPiAgICAgICANCiAgDQogIDxiaWJsIGlkPSJ4bWwiIGtleT0iWE1MIDEuMCIgaHJl Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNi9SRUMteG1sLTIwMDYwODE2Ij4NCiAgICA8dGl0 bGVyZWY+RXh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkgMS4wIChGb3VydGgNCiAgICBF ZGl0aW9uKTwvdGl0bGVyZWY+LCBULiBCcmF5LCBKLiBQYW9saSwgQy4gTS4gU3BlcmJlcmctTWNR dWVlbiwNCiAgICBFLiBNYWxlciwgYW5kIEZyYW7Dp29pcyBZZXJnZWF1LCBFZGl0b3JzLiBXb3Js ZCBXaWRlIFdlYiBDb25zb3J0aXVtLCAxMCBGZWJydWFyeQ0KICAgIDE5OTgsIHJldmlzZWQgMTYg QXVndXN0IDIwMDYuIFRoaXMgdmVyc2lvbiBvZiB0aGUgWE1MIDEuMA0KICAgIFJlY29tbWVuZGF0 aW9uIGlzIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDYvUkVDLXhtbC0yMDA2MDgxNi4gIFRoZQ0K ICAgIDxsb2MgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8iPmxhdGVzdCB2ZXJz aW9uIG9mIFhNTA0KICAgIDEuMDwvbG9jPiBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy53My5v cmcvVFIvUkVDLXhtbC4NCiAgPC9iaWJsPg0KDQogIDxiaWJsIGlkPSJYTUwtTlMiIGtleT0iWE1M IE5hbWVzcGFjZXMiDQoJaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNi9SRUMteG1sLW5h bWVzLTIwMDYwODE2LyI+DQogICAgPHRpdGxlcmVmPk5hbWVzcGFjZXMgaW4gWE1MIDEuMDwvdGl0 bGVyZWY+LCBULiBCcmF5LCBELiBIb2xsYW5kZXIsIEEuDQogICAgTGF5bWFuLCBhbmQgUi4gVG9i aW4sIEVkaXRvcnMuIFdvcmxkIFdpZGUgV2ViIENvbnNvcnRpdW0sIDE0IEphbnVhcnkgMTk5OSwN CiAgICByZXZpc2VkIDE2IEF1Z3VzdCAyMDA2LiBUaGlzIHZlcnNpb24gb2YgdGhlIE5hbWVzcGFj ZXMgaW4gWE1MDQogICAgUmVjb21tZW5kYXRpb24gaXMgaHR0cDovL3d3dy53My5vcmcvVFIvMjAw Ni9SRUMteG1sLW5hbWVzLTIwMDYwODE2Ly4gVGhlDQogICAgPGxvYyBocmVmPSJodHRwOi8vd3d3 LnczLm9yZy9UUi9SRUMteG1sLW5hbWVzLyI+bGF0ZXN0IHZlcnNpb24gb2YNCiAgICBOYW1lc3Bh Y2VzIGluIFhNTDwvbG9jPiBpcyBhdmFpbGFibGUgYXQNCiAgaHR0cDovL3d3dy53My5vcmcvVFIv UkVDLXhtbC1uYW1lcy4gPC9iaWJsPg0KDQogIDxiaWJsIGlkPSJYTUxTY2hlbWFQYXJ0MSIga2V5 PSJYTUwgU2NoZW1hIFN0cnVjdHVyZXMiDQoJaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAw NC9SRUMteG1sc2NoZW1hLTEtMjAwNDEwMjgvIj4NCiAgICA8dGl0bGVyZWY+WE1MIFNjaGVtYSBQ YXJ0IDE6IFN0cnVjdHVyZXMgU2Vjb25kIEVkaXRpb248L3RpdGxlcmVmPiwgSC4NCiAgICBUaG9t cHNvbiwgRC4gQmVlY2gsIE0uIE1hbG9uZXksIGFuZCBOLiBNZW5kZWxzb2huLCBFZGl0b3JzLiBX b3JsZCBXaWRlIFdlYg0KICAgIENvbnNvcnRpdW0sIDIgTWF5IDIwMDEsIHJldmlzZWQgMjggT2N0 b2JlciAyMDA0LiBUaGlzIHZlcnNpb24gb2YgdGhlIFhNTA0KICAgIFNjaGVtYSBQYXJ0IDEgUmVj b21tZW5kYXRpb24gaXMNCiAgICBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1JFQy14bWxzY2hl bWEtMS0yMDA0MTAyOC4gVGhlIDxsb2MNCiAgICBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94 bWxzY2hlbWEtMS8iPmxhdGVzdCB2ZXJzaW9uIG9mIFhNTCBTY2hlbWENCiAgUGFydCAxPC9sb2M+ IGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi94bWxzY2hlbWEtMS4gPC9iaWJs Pg0KICA8YmlibCBrZXk9IlhNTCBTY2hlbWEgRGF0YXR5cGVzIiBpZD0iWE1MU2NoZW1hUGFydDIi DQoJaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwNC9SRUMteG1sc2NoZW1hLTItMjAwNDEw MjgvIj4NCiAgICA8dGl0bGVyZWY+WE1MIFNjaGVtYSBQYXJ0IDI6IERhdGF0eXBlcyBTZWNvbmQg RWRpdGlvbjwvdGl0bGVyZWY+LCBQLiBCeXJvbg0KICAgIGFuZCBBLiBNYWxob3RyYSwgRWRpdG9y cy4gV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgMiBNYXkgMjAwMSwgcmV2aXNlZCAyOA0KICAg IE9jdG9iZXIgMjAwNC4gVGhpcyB2ZXJzaW9uIG9mIHRoZSBYTUwgU2NoZW1hIFBhcnQgMiBSZWNv bW1lbmRhdGlvbiBpcw0KICAgIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvUkVDLXhtbHNjaGVt YS0yLTIwMDQxMDI4LiBUaGUgPGxvYw0KICAgIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3ht bHNjaGVtYS0yLyI+bGF0ZXN0IHZlcnNpb24gb2YgWE1MIFNjaGVtYQ0KICBQYXJ0IDI8L2xvYz4g aXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL3htbHNjaGVtYS0yLiA8L2JpYmw+ DQogIDwvYmxpc3Q+DQoNCiAgPC9kaXYxPiA8IS0tIHJlZmVyZW5jZXMgLS0+DQoNCiAgICA8aW5m b3JtLWRpdjEgaWQ9ImJpbmRpbmctZXhhbXBsZXMiPg0KICAgIDxoZWFkPlNPQVAvSk1TIFVuZGVy bHlpbmcgUHJvdG9jb2wgQmluZGluZyBFeGFtcGxlczwvaGVhZD4NCiAgICA8cD5UaGUgSk1TIG1l c3NhZ2UgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMsIHRoZSBmaXJzdCBvZiB0aGVzZSBpcyB0aGUN CiAgICBNZXNzYWdlIEhlYWRlciB0aGF0IGNvbnRhaW5zIGEgc2V0IG9mIGZpZWxkcyBkZWZpbmVk IGluIHRoZSBKTVMNCiAgICBzcGVjaWZpY2F0aW9uLCB0aGUgc2Vjb25kIHBhcnQgaXMgYSBzZXQg b2YgcHJvcGVydGllcyB0aGF0IHJlcHJlc2VudA0KICAgIG9wdGlvbmFsIGhlYWRlciBmaWVsZHMg dGhlIGxhc3QgcGFydCBpcyB0aGUgTWVzc2FnZSBCb2R5LjwvcD4NCg0KPGV4YW1wbGUgaWQ9J0pN U0lSSUV4YW1wbGUnPg0KPGhlYWQ+Sk1TIElSSTwvaGVhZD4NCjxlZz5qbXM6am5kaTpuZXdzP3Rh cmdldFNlcnZpY2U9Y3VycmVudC1hZmZhaXJzDQogICAgICAgICZhbXA7am5kaUNvbm5lY3Rpb25G YWN0b3J5PVNPQVBKTVNGYWN0b3J5DQogICAgICAgICZhbXA7ZGVsaXZlcnlNb2RlPVBFUlNJU1RF TlQNCiAgICAgICAgJmFtcDtwcmlvcml0eT04DQogICAgICAgICZhbXA7cmVwbHlUb05hbWU9aW50 ZXJlc3RlZA0KICAgICAgICAmYW1wO3VzZXJwcm9wPW15c3R1ZmY8L2VnPjwvZXhhbXBsZT4NCg0K ICAgICAgPGRpdjIgaWQ9InNvYXAtcmVxdWVzdC13aXRob3V0LWF0dGFjaG1lbnRzIj4NCiAgICAg IDxoZWFkPlNPQVAgUmVxdWVzdCB3aXRob3V0IGF0dGFjaG1lbnRzPC9oZWFkPg0KDQoNCiAgICAg IDxwPlRoZSBJUkkgaW4gPHNwZWNyZWYgcmVmPSdKTVNJUklFeGFtcGxlJy8+IHdpbGwgYmVjb21l OiA8L3A+DQoNCiAgICAgICAgPHRhYmxlIGlkPSd0YWJsZUhlYWRlcjEnIGJvcmRlcj0iMSIgY2Vs bHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI1Ij4NCgkgIDxjYXB0aW9uPkpNUyBNZXNzYWdlIEhl YWRlciBWYWx1ZXM8L2NhcHRpb24+DQoJICA8dGhlYWQ+PHRyPjx0aD5GaWVsZDwvdGg+PHRoPnZh bHVlPC90aD48dGg+Y29tbWVudHM8L3RoPjwvdHI+PC90aGVhZD4NCiAgICAgIDx0Ym9keT4NCiAg ICAgIDx0cj48dGQ+Sk1TTWVzc2FnZSBjbGFzczwvdGQ+PHRkPmptc19ieXRlczwvdGQ+PHRkPmEg Zml4ZWQgdmFsdWU8L3RkPjwvdHI+DQogICAgICA8dHI+PHRkPkpNU1R5cGU8L3RkPjx0ZD5udWxs PC90ZD48dGQgLz48L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNEZWxpdmVyeU1vZGU8L3RkPjx0ZD4y PC90ZD48dGQgLz48L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNFeHBpcmF0aW9uPC90ZD48dGQ+MDwv dGQ+PHRkIC8+PC90cj4NCiAgICAgIDx0cj48dGQ+Sk1TUHJpb3JpdHk8L3RkPjx0ZD44PC90ZD48 dGQgLz48L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNNZXNzYWdlSUQ8L3RkPjx0ZD48Y29kZT5JRDpk NDM4ZTAwMDAwMDE8L2NvZGU+PC90ZD48dGQgLz48L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNUaW1l c3RhbXA8L3RkPjx0ZD48Y29kZT4xMDkyMTEwNDc2MTY3PC9jb2RlPjwvdGQ+PHRkIC8+PC90cj4N CiAgICAgIDx0cj48dGQ+Sk1TQ29ycmVsYXRpb25JRDwvdGQ+PHRkPm51bGw8L3RkPjx0ZCAvPjwv dHI+DQogICAgICA8dHI+PHRkPkpNU0Rlc3RpbmF0aW9uPC90ZD48dGQ+QSA8Y29kZT5EZXN0aW5h dGlvbjwvY29kZT4gb2JqZWN0PC90ZD48dGQ+cmVzb2x2ZWQgYnkgSk5ESSBmcm9tIHRoZSBkZXN0 aW5hdGlvbiBuYW1lIDxjb2RlPm5ld3M8L2NvZGU+PC90ZD48L3RyPg0KICAgICAgPHRyPjx0ZD5K TVNSZXBseVRvPC90ZD48dGQ+QSA8Y29kZT5EZXN0aW5hdGlvbjwvY29kZT4gb2JqZWN0PC90ZD48 dGQ+cmVzb2x2ZWQgYnkgSk5ESSBmcm9tIHRoZSBkZXN0aW5hdGlvbiBuYW1lIDxjb2RlPmludGVy ZXN0ZWQ8L2NvZGU+PC90ZD48L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNSZWRlbGl2ZXJlZDwvdGQ+ PHRkPmZhbHNlPC90ZD48dGQgLz48L3RyPg0KICAgICAgPC90Ym9keT48L3RhYmxlPg0KDQogICAg ICAgIDx0YWJsZSBpZD0ndGFibGVQcm9wZXJ0aWVzMScgYm9yZGVyPSIxIiBjZWxsc3BhY2luZz0i MCIgY2VsbHBhZGRpbmc9IjUiPg0KCSAgPGNhcHRpb24+Sk1TIE1lc3NhZ2UgUHJvcGVydGllcyBW YWx1ZXM8L2NhcHRpb24+DQogICAgICA8dGhlYWQ+PHRyPjx0aD5GaWVsZDwvdGg+PHRoPnZhbHVl PC90aD48dGg+Y29tbWVudHM8L3RoPjwvdHI+PC90aGVhZD4NCiAgICAgIDx0Ym9keT4NCiAgICAg IDx0cj48dGQ+U09BUEpNU19iaW5kaW5nVmVyc2lvbjwvdGQ+PHRkPjEuMDwvdGQ+PHRkIC8+PC90 cj4NCiAgICAgIDx0cj48dGQ+U09BUEpNU190YXJnZXRTZXJ2aWNlPC90ZD48dGQ+Y3VycmVudC1h ZmZhaXJzPC90ZD48dGQ+dGhpcyBpcyBkZXJpdmVkIGZyb20gdGhlIDx0ZXJtcmVmIGRlZj0idGFy Z2V0U2VydmljZSI+dGFyZ2V0U2VydmljZTwvdGVybXJlZj4gcHJvcGVydHk8L3RkPjwvdHI+DQog ICAgICA8dHI+PHRkPlNPQVBKTVNfcmVxdWVzdElSSTwvdGQ+PHRkPmptczpqbmRpOm5ld3M/dXNl cnByb3A9bXlzdHVmZjwvdGQ+PHRkPnRoaXMgaXMgZGVyaXZlZCBmcm9tIHRoZSA8dGVybXJlZiBk ZWY9InJlcXVlc3RJUkkiPnJlcXVlc3RJUkk8L3Rlcm1yZWY+IHByb3BlcnR5PC90ZD48L3RyPg0K ICAgICAgPHRyPjx0ZD5TT0FQSk1TX2NvbnRlbnRUeXBlPC90ZD48dGQ+YXBwbGljYXRpb24vc29h cCt4bWw8L3RkPjx0ZD5pbmZlcnJlZCBmcm9tIHRoZSBTT0FQIEVudmVsb3BlIGFuZCBhYnNlbmNl IG9mIGF0dGFjaG1lbnRzLiBJbiB0aGlzIGNhc2UgaXQgaXMgU09BUCAxLjI8L3RkPjwvdHI+DQog ICAgICA8L3Rib2R5PjwvdGFibGU+DQoNCiAgICAgIDxwPlRoZSBmb2xsb3dpbmcgcmVwcmVzZW50 cyBhIGh1bWFuIHJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIEpNUw0KICAgICAgbWVzc2FnZSBib2R5 OjwvcD4NCiAgICAgIA0KPGV4YW1wbGUgaWQ9J2ptc3NvYXAxMmUxJz4NCjxoZWFkPlJlcHJlc2Vu dGF0aW9uIG9mIGEgSk1TIFNPQVAgMS4yIFJlcXVlc3Qgd2l0aG91dCBhdHRhY2htZW50czwvaGVh ZD4NCjxlZz48IVtDREFUQVs8ZW52OkVudmVsb3BlDQogICAgICB4bWxuczplbnY9Imh0dHA6Ly93 d3cudzMub3JnLzIwMDMvMDUvc29hcC1lbnZlbG9wZSIgDQogICAgICB4bWxucz0naHR0cDovL2V4 YW1wbGUub3JnL015QXBwbGljYXRpb24nDQogICAgICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMu b3JnLzIwMDEvWE1MU2NoZW1hIiANCiAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcv MjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KICAgIDxlbnY6Qm9keSBlbnY6ZW5jb2RpbmdTdHls ZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVuY29kaW5nIj4NCiAgICAgICA8cG9z dE1lc3NhZ2U+DQogICAgICAgICA8bmdOYW1lIHhzaTp0eXBlPSJ4c2Q6c3RyaW5nIj5uZXdzLmN1 cnJlbnQuZXZlbnRzPC9uZ05hbWU+DQogICAgICAgICA8bXNnIHhzaTp0eXBlPSJ4c2Q6c3RyaW5n Ij5UaGlzIGlzIGEgc2FtcGxlIG5ld3MgaXRlbS48L21zZz4NCiAgICAgICA8L3Bvc3RNZXNzYWdl Pg0KICAgIDwvZW52OkJvZHk+DQo8L2VudjpFbnZlbG9wZT5dXT48L2VnPjwvZXhhbXBsZT4NCiAg ICAgIDwvZGl2Mj4gPCEtLSByZXF1ZXN0IHcvbyBhdHRhY2htZW50cyAtLT4NCg0KICAgICAgPGRp djIgaWQ9InNvYXAtcmVxdWVzdC13aXRoLWF0dGFjaG1lbnRzIj4NCiAgICAgIDxoZWFkPlNPQVAg UmVxdWVzdCB3aXRoIGF0dGFjaG1lbnRzPC9oZWFkPg0KDQogICAgICA8cD5UaGUgSVJJIGluIDxz cGVjcmVmIHJlZj0nSk1TSVJJRXhhbXBsZScvPiB3aWxsIGJlY29tZTogPC9wPg0KDQogICAgICAg IDx0YWJsZSBpZD0ndGFibGVIZWFkZXIyJyBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxs cGFkZGluZz0iNSI+DQoJICA8Y2FwdGlvbj5KTVMgTWVzc2FnZSBIZWFkZXIgVmFsdWVzPC9jYXB0 aW9uPg0KCSAgPHRoZWFkPjx0cj48dGg+RmllbGQ8L3RoPjx0aD52YWx1ZTwvdGg+PHRoPmNvbW1l bnRzPC90aD48L3RyPjwvdGhlYWQ+DQogICAgICA8dGJvZHk+DQogICAgICA8dHI+PHRkPkpNU01l c3NhZ2UgY2xhc3M8L3RkPjx0ZD5qbXNfYnl0ZXM8L3RkPjx0ZD5hIGZpeGVkIHZhbHVlPC90ZD48 L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNUeXBlPC90ZD48dGQ+bnVsbDwvdGQ+PHRkIC8+PC90cj4N CiAgICAgIDx0cj48dGQ+Sk1TRGVsaXZlcnlNb2RlPC90ZD48dGQ+MjwvdGQ+PHRkIC8+PC90cj4N CiAgICAgIDx0cj48dGQ+Sk1TRXhwaXJhdGlvbjwvdGQ+PHRkPjA8L3RkPjx0ZCAvPjwvdHI+DQog ICAgICA8dHI+PHRkPkpNU1ByaW9yaXR5PC90ZD48dGQ+ODwvdGQ+PHRkIC8+PC90cj4NCiAgICAg IDx0cj48dGQ+Sk1TTWVzc2FnZUlEPC90ZD48dGQ+PGNvZGU+SUQ6ZDQzOGUwMDAwMDAxPC9jb2Rl PjwvdGQ+PHRkIC8+PC90cj4NCiAgICAgIDx0cj48dGQ+Sk1TVGltZXN0YW1wPC90ZD48dGQ+PGNv ZGU+MTA5MjExMDQ3NjE2NzwvY29kZT48L3RkPjx0ZCAvPjwvdHI+DQogICAgICA8dHI+PHRkPkpN U0NvcnJlbGF0aW9uSUQ8L3RkPjx0ZD5udWxsPC90ZD48L3RyPg0KICAgICAgPHRyPjx0ZD5KTVNE ZXN0aW5hdGlvbjwvdGQ+PHRkPkEgPGNvZGU+RGVzdGluYXRpb248L2NvZGU+IG9iamVjdCA8L3Rk Pjx0ZD5yZXNvbHZlZCBieSBKTkRJIGZyb20gdGhlIGRlc3RpbmF0aW9uIG5hbWUgPGNvZGU+bmV3 czwvY29kZT48L3RkPjwvdHI+DQogICAgICA8dHI+PHRkPkpNU1JlcGx5VG88L3RkPjx0ZD5BIDxj b2RlPkRlc3RpbmF0aW9uPC9jb2RlPiBvYmplY3QgPC90ZD48dGQ+IHJlc29sdmVkIGJ5IEpOREkg ZnJvbSB0aGUgZGVzdGluYXRpb24gbmFtZSA8Y29kZT5pbnRlcmVzdGVkPC9jb2RlPjwvdGQ+PC90 cj4NCiAgICAgIDx0cj48dGQ+Sk1TUmVkZWxpdmVyZWQ8L3RkPjx0ZD5mYWxzZTwvdGQ+PHRkIC8+ PC90cj4NCiAgICAgIDwvdGJvZHk+PC90YWJsZT4NCg0KICAgICAgPHRhYmxlIGlkPSd0YWJsZVBy b3BlcnRpZXMyJyBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNSI+DQoJ PGNhcHRpb24+Sk1TIE1lc3NhZ2UgUHJvcGVydGllcyBWYWx1ZXM8L2NhcHRpb24+DQoJPHRoZWFk Pjx0cj48dGg+RmllbGQ8L3RoPjx0aD52YWx1ZTwvdGg+PHRoPmNvbW1lbnRzPC90aD48L3RyPjwv dGhlYWQ+DQogICAgICA8dGJvZHk+DQogICAgICA8dHI+PHRkPlNPQVBKTVNfYmluZGluZ1ZlcnNp b248L3RkPjx0ZD4xLjA8L3RkPjx0ZCAvPjwvdHI+DQogICAgICA8dHI+PHRkPlNPQVBKTVNfdGFy Z2V0U2VydmljZTwvdGQ+PHRkPmN1cnJlbnQtYWZmYWlyczwvdGQ+PHRkPmRlcml2ZWQgZnJvbSB0 aGUgPHRlcm1yZWYgZGVmPSJ0YXJnZXRTZXJ2aWNlIj50YXJnZXRTZXJ2aWNlPC90ZXJtcmVmPiBw cm9wZXJ0eTwvdGQ+PC90cj4NCiAgICAgIDx0cj48dGQ+U09BUEpNU19yZXF1ZXN0SVJJPC90ZD48 dGQ+am1zOmpuZGk6bmV3cz91c2VycHJvcD1teXN0dWZmPC90ZD48dGQ+ZGVyaXZlZCBmcm9tIHRo ZSA8dGVybXJlZiBkZWY9InJlcXVlc3RJUkkiPnJlcXVlc3RJUkk8L3Rlcm1yZWY+IHByb3BlcnR5 PC90ZD48L3RyPg0KICAgICAgPHRyPjx0ZD5TT0FQSk1TX2NvbnRlbnRUeXBlPC90ZD48dGQ+bXVs dGlwYXJ0L3JlbGF0ZWQgdHlwZT0iYXBwbGljYXRpb24veG9wK3htbCI7IGJvdW5kYXJ5PSItLU1J TUVfYm91bmRhcnkiPC90ZD48dGQ+aW5mZXJyZWQgZnJvbSB0aGUgU09BUCBFbnZlbG9wZSBhbmQg cHJlc2VuY2UgYXR0YWNobWVudHMuICBJbiB0aGlzIGNhc2UgaXQgaXMgU09BUCAxLjI8L3RkPjwv dHI+DQogICAgICA8L3Rib2R5PjwvdGFibGU+DQoNCiAgICAgIDxwPlRoZSBmb2xsb3dpbmcgcmVw cmVzZW50cyBhIGh1bWFuIHJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIEpNUyBtZXNzYWdlIGJvZHk6 PC9wPg0KDQo8ZXhhbXBsZSBpZD0nam1zc29hcDEyZTInPg0KPGhlYWQ+UmVwcmVzZW50YXRpb24g b2YgYSBKTVMgU09BUCAxLjIgUmVxdWVzdCB3aXRoIGF0dGFjaG1lbnRzPC9oZWFkPg0KPGVnPjwh W0NEQVRBWw0KTUlNRS1WZXJzaW9uOiAxLjANCkNvbnRlbnQtVHlwZTogTXVsdGlwYXJ0L1JlbGF0 ZWQ7Ym91bmRhcnk9TUlNRV9ib3VuZGFyeTsNCiAgICB0eXBlPSJhcHBsaWNhdGlvbi94b3AreG1s IjsNCiAgICBzdGFydD0iPDk0NTQxNDM4OS4xMDkyMDg2MDExOTcwPiI7DQogICAgc3RhcnRpbmZv PSJhcHBsaWNhdGlvbi9zb2FwK3htbCINCg0KLS1NSU1FX2JvdW5kYXJ5DQpDb250ZW50LVR5cGU6 IGFwcGxpY2F0aW9uL3hvcCt4bWw7IA0KICAgIGNoYXJzZXQ9VVRGLTg7IA0KICAgIHR5cGU9ImFw cGxpY2F0aW9uL3NvYXAreG1sIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdA0KQ29u dGVudC1JRDogPDk0NTQxNDM4OS4xMDkyMDg2MDExOTcwPg0KDQo8ZW52OkVudmVsb3BlIHhtbG5z OmVudj0iaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlIiANCiAgeG1sbnM6 eG9wPSdodHRwOi8vd3d3LnczLm9yZy8yMDA0LzA4L3hvcC9pbmNsdWRlJyANCiAgeG1sbnM9J2h0 dHA6Ly9leGFtcGxlLm9yZy9NeUFwcGxpY2F0aW9uJw0KICB4bWxuczp4c2Q9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDEvWE1MU2NoZW1hIiANCiAgeG1sbnM6eG1sbWltZT0iaHR0cDovL3d3dy53My5v cmcvMjAwNS8wNS94bWxtaW1lIg0KICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEv WE1MU2NoZW1hLWluc3RhbmNlIj4NCiAgPGVudjpCb2R5IGVudjplbmNvZGluZ1N0eWxlPSJodHRw Oi8vd3d3LnczLm9yZy8yMDAzLzA1L3NvYXAtZW5jb2RpbmciPg0KICAgIDxwb3N0TWVzc2FnZT4N CiAgICAgIDxuZ05hbWUgeHNpOnR5cGU9InhzZDpzdHJpbmciPm5ld3MuY3VycmVudC5ldmVudHM8 L25nTmFtZT4NCiAgICAgIDxtc2cgeHNpOnR5cGU9InhzZDpzdHJpbmciPlRoaXMgaXMgYSBzYW1w bGUgbmV3cyBpdGVtLjwvbXNnPg0KICAgICAgPHBob3RvIHhtbG1pbWU6Y29udGVudFR5cGU9J2lt YWdlL3BuZyc+PHhvcDpJbmNsdWRlIA0KICAgICAgICBocmVmPSdjaWQ6aHR0cDovL2V4YW1wbGUu b3JnL3Bob3RvLnBuZycvPjwvcGhvdG8+DQogICAgPC9wb3N0TWVzc2FnZT4NCiAgPC9lbnY6Qm9k eT4NCjwvZW52OkVudmVsb3BlPg0KLS1NSU1FX2JvdW5kYXJ5DQpDb250ZW50LVR5cGU6IGltYWdl L3BuZw0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5DQpDb250ZW50LUlkOiA8aHR0 cDovL2V4YW1wbGUub3JnL3Bob3RvLnBuZz4NCg0KW24gbGluZXMgb21pdHRlZF0NCi0tTUlNRV9i b3VuZGFyeQ0KDQpdXT48L2VnPjwvZXhhbXBsZT4NCiAgICAgIDwvZGl2Mj4gPCEtLSByZXF1ZXN0 IHdpdGggYXR0YWNobWVudHMgLS0+DQogICAgPC9pbmZvcm0tZGl2MT4gPCEtLSBleGFtcGxlcyAt LT4NCg0KICAmYWNrbm93bGVkZ2VtZW50czsNCg0KICAgICAgICA8aW5mb3JtLWRpdjEgaWQ9ImNo YW5nZS1sb2ciPg0KICAgICAgICAgICAgPGhlYWQ+Q2hhbmdlIExvZzwvaGVhZD4NCgkgICAgPHA+ QEBUaGlzIHBhcmFncmFwaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBjaGFuZ2UgbG9nLiBETyBO T1QgVE9VQ0hAQDwvcD4NCgk8L2luZm9ybS1kaXYxPg0KPC9iYWNrPg0KDQo8L3NwZWM+DQo